Ch (computer programming)

CH C/C++ interpreter
Original author(s)Harry H. Cheng
Developer(s)SoftIntegration, Inc.
Initial releaseOctober 1, 2001; 23 years ago (2001-10-01)
Stable release
8.0.0 / November 19, 2017; 6 years ago (2017-11-19)
Written inC
Operating systemWindows, OS X, Linux, AIX, HP-UX, Solaris (SPARC and x86), QNX, FreeBSD
Platformx86, SPARC
Available inEnglish
TypeIntegrated development environment
LicenseProprietary software
Standard edition: freeware
Student edition: freeware for students
Professional edition: trialware for 30 days
Websitewww.softintegration.com

CH /ˌsˈ/ is a proprietary cross-platform C and C++ interpreter and scripting language environment. It was designed by Harry 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.. Free versions include the student edition, and the non-commercial Professional Edition for Raspberry Pi.

CH can be embedded in C and C++ application programs. It has numerical computing and graphical plotting features. CH is combined of both 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 the design, analysis, and modelling of continuous-time or discrete-time linear time-invariant (LTI) control systems.[11] Both tool kits include the source code.

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, offering 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.[12][13][14] It can also be embedded into the LabVIEW system design platform and development environment.[15]

Features

[edit]

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:

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.[16] 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.[17][18][19]

CH has a built-in string type (string_t) for automatic memory allocation and de-allocation. It supports shell aliases, history, and piping.[20][21]

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.[22]

See also

[edit]

References

[edit]
  1. ^ Veeraraghavan, Sriranga (2013). "An introduction to Ch: Implementing a temperature converter in Ch". ComputerWorld. {{cite journal}}: Cite journal requires |journal= (help)
  2. ^ Ch Shell
  3. ^ Ch IDE
  4. ^ Wang, Gary (2002). "Ch Solves Portability Headaches". IEEE Spectrum. 39 (6): 59. doi:10.1109/MSPEC.2002.1049264. S2CID 32477309.
  5. ^ Cheng, Harry (1993). "Handling of Complex Numbers in the Ch Programming Language". Scientific Programming: 76–106.
  6. ^ Cheng, Harry (1993). "Scientific Computing in the Ch Programming Language". Scientific Programming: 49–75. {{cite journal}}: Cite journal requires |journal= (help)
  7. ^ Cheng, Harry (1995). "Extending C and FORTRAN for Design Automation". ASME Trans., Journal of Mechanical Design: 390–395. {{cite journal}}: Cite journal requires |journal= (help)
  8. ^ 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.[dead link]
  9. ^ Morejon, Mario (2006). "Ch Language Rivals Java Functionality". CRN. {{cite journal}}: Cite journal requires |journal= (help)
  10. ^ Cheng, Harry (2006). "Object-Oriented Interactive Mechanism Design and Analysis". Engineering with Computers. 21 (3): 237–246. doi:10.1007/s00366-005-0008-4. S2CID 16996625.
  11. ^ 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. S2CID 17908643.
  12. ^ ch robot
  13. ^ ch finch
  14. ^ ch raspberry and arm[permanent dead link]
  15. ^ "Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting".
  16. ^ Wilson, Matthew (2004). "Open-RJ and Ch". Dr. Dobb's Journal.
  17. ^ Cheng, Harry (2009). "Speeding-Up Software Development Using Embedded Scripting". Dr. Dobb's Journal. p. 8.
  18. ^ 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. S2CID 39307433.
  19. ^ 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.
  20. ^ Campbell, Matt (2003). "Ch, A C/C++ Interpreter – New possibilities for people who like C and Unix". MACTECH, the journal of Apple technology. {{cite journal}}: Cite journal requires |journal= (help)
  21. ^ Cheng, Harry (2010). The Ch Language Environment (6.3 ed.). Davis, CA: SoftIntegration, Inc.
  22. ^ Glassborow, Francis (2001). "The Ch Language Environment Version 2.0". C Vu Magazine: 36–37. {{cite journal}}: Cite journal requires |journal= (help)

Further reading

[edit]
[edit]