Software:Ch (computer programming)
Original author(s) | Harry H. Cheng |
---|---|
Developer(s) | SoftIntegration, Inc. |
Initial release | October 1, 2001 |
Stable release | 8.0.0
/ November 19, 2017 |
Written in | C |
Operating system | Windows, OS X, Linux, AIX, HP-UX, Solaris (SPARC and x86), QNX, FreeBSD |
Platform | x86, SPARC |
Available in | English |
Type | Integrated development environment |
License | Proprietary software Standard edition: freeware Student edition: freeware for students Professional edition: trialware for 30 days |
Website | www |
CH /ˌsiːˈeɪtʃ/ is a proprietary cross-platform C and C++ interpreter and scripting language environment. It was originally designed by Harry H. Cheng as a scripting language for beginners to learn mathematics, computing, numerical analysis (numeric methods), and programming in C/C++. Ch is now developed and marketed by SoftIntegration, Inc., with multiple versions available, including a freely available student edition and CH Professional Edition for Raspberry Pi is free for non-commercial use.
CH can be embedded in C/C++ application programs. It has numerical computing and graphical plotting features. CH is a combined shell and IDE.[1] CH shell combines the features of common shell and C language.[2] ChIDE provides quick code navigation and symbolic debugging. It is based on embedded CH, Scite, and Scintilla.[3][4]
CH is written in C and runs on Windows, Linux, macOS, FreeBSD, AIX, Solaris, QNX, and HP-UX. It supports C90 and major C99 features, but it does not support the full set of C++ features. C99 complex number, IEEE-754 floating-point arithmetic, and variable-length array features were supported in CH before they became part of the C99 standard.[5][6][7][8] An article published by Computer Reseller News (CRN) named CH as notable among C-based virtual machines for its functionality and the availability of third-party libraries.[9]
CH has many tool kits that extend its functions. For example, the CH Mechanism Toolkit is used for design and analysis of commonly used mechanisms such as four-bar linkage, five-bar linkage, six-bar linkage, crank-slider mechanism, and cam-follower system.[10] CH Control System Toolkit is used for modeling, the design, and analysis of continuous-time or discrete-time linear time-invariant (LTI) control systems.[11] Both tool kits include the source code.
CH is now used and integrated into the curriculum by many high schools and universities to teach computing and programming in C/C++.[12][13][14][15][16][17][18] CH has been integrated into free C-STEM Studio, a platform for learning computing, science, technology, engineering, and mathematics (C-STEM) with robotics. C-STEM Studio is developed by the UC Davis Center for Integrated Computing and STEM Education (C-STEM). It offers a curriculum for K-12 students.
CH supports LEGO Mindstorms NXT and EV3, Arduino, Linkbot, Finch Robot, RoboTalk and Raspberry Pi, Pi Zero, and ARM for robot programming and learning.[19][20][21] It can also be embedded into the LabVIEW system design platform and development environment.[22]
Features
CH supports the 1999 ISO C Standard (C99) and C++ classes. It is a superset of C with C++ classes. Several major features of C99 are supported, such as complex numbers, variable length arrays (VLAs), IEEE-754 floating-point arithmetic, and generic mathematical functions. The specification for wide characters in Addendum 1 for C90 is also supported.
C++ features available in CH include:
- Member functions
- Mixed code and declaration
- The this -> pointer
- Reference type and pass-by-reference
- Function-style type conversion
- Classes
- Private/public data and functions in classes. Ch is compatible with C++ in that by default, members of a class definition are assumed to be private until a 'public' declaration is given
- Static member of class/struct/union
- Const member functions
- The new and delete operators
- Constructors and destructors
- Polymorphic functions
- The scope resolution operator ::
- The I/O functions cout, cerr, and cin with endl
- Arguments for variadic functions are optional
CH supports classes in C++ with added abilities, including:
- Classes inside member functions
- Nested functions with classes
- Passing member function to argument of pointer-to-function type of functions
CH can interact with existing C/C++ libraries and call C/C++ functions from CH script.[23] As a C/C++ interpreter, CH can be used as a scripting engine and extension language for applications. Pointers to arrays or variables can be passed and shared in both C-compiled and CH scripting contexts. One example of an embedded CH scripting application is Mobile-C, which has been used for collaborative visualization of distributed mesh model.[24][25][26]
CH has a built-in string type (string_t) for automatic memory allocation and de-allocation. It supports shell aliases, history, piping, etc.[27][28]
CH has built-in 2D/3D graphical plotting features and computational arrays for numerical computing. A 2D linear equation of the form b = A*x can be written verbatim in Ch.[29]
See also
References
- ↑ Veeraraghavan, Sriranga (2013). An introduction to Ch: Implementing a temperature converter in Ch. ComputerWorld. http://www.techworld.com.au/article/452524/an_introduction_ch_implementing_temperature_converter_ch/.
- ↑ Ch Shell
- ↑ Ch IDE
- ↑ Wang, Gary (2002). "Ch Solves Portability Headaches". IEEE Spectrum 39 (6): 59. doi:10.1109/MSPEC.2002.1049264.
- ↑ Cheng, Harry (1993). "Handling of Complex Numbers in the Ch Programming Language". Scientific Programming: 76–106. http://iospress.metapress.com/content/xml874m51x1w42w0/.
- ↑ Cheng, Harry (1993). Scientific Computing in the Ch Programming Language. Scientific Programming. pp. 49–75. http://iospress.metapress.com/content/f225771541203807/.
- ↑ Cheng, Harry (1995). Extending C and FORTRAN for Design Automation. ASME Trans., Journal of Mechanical Design. pp. 390–395. http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=JMDEDB000117000003000390000001&idtype=cvips&gifs=yes&ref=no.
- ↑ Cheng, Harry (1995). "Extending C with arrays of variable length". Computer Standards & Interfaces 17 (4): 375–406. doi:10.1016/0920-5489(95)00007-H.[|permanent dead link|dead link}}]
- ↑ Morejon, Mario (2006). Ch Language Rivals Java Functionality. CRN. http://www.crn.com/reviews/applications-os/175804126/ch-language-rivals-java-functionality.htm.
- ↑ Cheng, Harry (2006). "Object-Oriented Interactive Mechanism Design and Analysis". Engineering with Computers 21 (3): 237–246. doi:10.1007/s00366-005-0008-4.
- ↑ Zhu, Yong (2003). "An Object-Based Software Package for Interactive Control System Design and Analysis". Journal of Computing and Information Science in Engineering 3 (4): 366–367. doi:10.1115/1.1630815.
- ↑ Cheng, Harry (2009). C for the Course. ASME Mechanical Engineering Magazine. pp. 50–52. http://memagazine.asme.org/Articles/2009/september/C_Course.cfm.
- ↑ Huber, Tom (2010). "An Introduction to C and Ch: Your One-Stop Shop for Scientific Computing". Computing in Science & Engineering 12 (4): 7. doi:10.1109/MCSE.2010.82.
- ↑ Liu, Li; Wang, Zhaoqing; Jiang, Xusheng (2010). "Anchor-based promgramming teaching embedded with Ch platform". Proceedings of 2010 IEEE/ASME International Conference on Mechatronic and Embedded Systems and Applications. Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference. pp. 49–52. doi:10.1109/MESA.2010.5552033. ISBN 978-1-4244-7101-0.
- ↑ Furman, B.; Wertz, E. (2010). Proceedings of 2010 IEEE/ASME International Conference on Mechatronic and Embedded Systems and Applications. Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference. pp. 70–75. doi:10.1109/MESA.2010.5552091. ISBN 978-1-4244-7101-0.
- ↑ Zhuang, Hong; Wang, Zhao-qing (2009). Experience of Using Ch for Teaching Computer Programming in C. Computer Education. pp. TP311.11–4. CKNI:SUN:JYJS.0.2009-07-016. http://en.cnki.com.cn/Article_en/CJFDTOTAL-JYJS200907016.htm.
- ↑ Wang, Rong (2009). Study of C Language Programming Teaching Method on platform Ch. Journal of Weinan Teachers University. pp. TP312.1–4. CNKI:SUN:WOLF.0.2009-05-018. http://en.cnki.com.cn/Article_en/CJFDTOTAL-WOLF200905018.htm.
- ↑ Stopforth, Riaan (2013). "Teaching and programming with Ch for tertiary-level mechatronics engineering education". 2013 6th Robotics and Mechatronics Conference (Rob Mech). Robotics and Mechatronics Conference (RobMech). pp. 146–149. doi:10.1109/RoboMech.2013.6685507. ISBN 978-1-4799-1518-7.
- ↑ ch robot
- ↑ ch finch
- ↑ ch raspberry and arm[yes|permanent dead link|dead link}}]
- ↑ "Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting". http://iel.ucdavis.edu/projects/chlabview/.
- ↑ Wilson, Matthew (2004). "Open-RJ and Ch". Dr. Dobb's Journal. http://drdobbs.com/184401877?queryText=ChSDK.
- ↑ Cheng, Harry (2009). "Speeding-Up Software Development Using Embedded Scripting". Dr. Dobb's Journal: 8. http://drdobbs.com/architecture-and-design/212201774.
- ↑ Wang, Li-rong; Bo, Yo; Hagiwara, I (2009). 2009 IEEE 10th International Conference on Computer-Aided Industrial Design & Conceptual Design. Computer-Aided Industrial Design & Conceptual Design, 2009. CAID & CD 2009. IEEE 10th International Conference. pp. 1127–1132. doi:10.1109/CAIDCD.2009.5375178. ISBN 978-1-4244-5266-8.
- ↑ Wang, Li-rong; Bo, Yo; Hagiwara, Ichiro (2009). An agent based collaborative simplification of 3D mesh model. Cdve'09. CDVE'09 Proceedings of the 6th international conference on cooperative design, visualization, and engineering. pp. 325–328. ISBN 9783642042645. http://dl.acm.org/citation.cfm?id=1813032.
- ↑ Campbell, Matt (2003). Ch, A C/C++ Interpreter – New possibilities for people who like C and Unix. MACTECH, the journal of Apple technology. http://www.mactech.com/articles/mactech/Vol.19/19.09/CInterpreter/index.html.
- ↑ Cheng, Harry (2010). The Ch Language Environment (6.3 ed.). Davis, CA: SoftIntegration , Inc..
- ↑ Glassborow, Francis (2001). The Ch Language Environment Version 2.0. C Vu Magazine. pp. 36–37. http://www.softintegration.com/company/pub/accu.html.
Further reading
- Heller, Martin (2001). The Ch Language Environment. Byte. http://www.byte.com/documents/s=1776/byt20011031s0002/1105_heller.html.
- Cheng, Harry (2002). "C99 & Numeric Computing". Dr. Dobb's Journal: 28–34. http://drdobbs.com/cpp/184404993.
- Cheng, Harry (2006). "Ch: A C/C++ Interpreter for Script Computing". Dr. Dobb's Journal: 6–12. http://drdobbs.com/184402054.
- Cheng, Harry (2009). C For Engineers & Scientists, An Interpretive Approach. McGraw-Hill. ISBN 978-0-07-729046-7. http://highered.mcgraw-hill.com/sites/0073376051/.
- Cheng, Harry (2011). C For Engineers & Scientists (Chinese ed.). Higher Education Press. ISBN 978-0-07-729046-7. https://www.amazon.cn/C%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B-%E7%A8%8B%E8%BE%89/dp/B005JR8IW6/ref=sr_1_1?s=books&ie=UTF8&qid=1325463722&sr=1-1.
External links