This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
No issues specified. Please specify issues, or remove this template. |
In computing, Ch (/[invalid input: 'icon']ˌsiːˈeɪtʃ/) is a proprietary cross-platform C and C++ interpreter originally designed by Harry H. Cheng as a scripting language for beginners to learn math, computing, numerics, and programming in C/C++. Ch is now developed and marketed by SoftIntegration, Inc. A student edition is freely available.
Ch is written in C and runs under Microsoft Windows, Linux, Mac OS X, 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 VLA features were supported in Ch before they became part of the C99 standard.[1][2][3][4] An article published by CRN named Ch as notable among C-based virtual machines for its functionality and the availability of third-party libraries.[5]
Ch is now used and integrated into curriculum by many universities and schools[dubious – discuss] for learning computing and programming in C/C++.[6][7][8][9][10][11]
Ch can also be run as an interactive shell to execute C statements and scripts, Unix commands in Unix environments, and Windows commands under Windows environments.[12]
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.
The following C++ features are available in Ch:
- 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 the following additional capabilities:
- Classes inside member functions
- Nested functions with classes
- Passing member function to argument of pointer-to-function type of functions
Ch can interface with existing C/C++ libraries and call C/C++ functions from Ch script.[13] 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.[14][15] [16]
Ch has a built-in string type (string_t) for automatic memory allocation and de-allocation. It supports shell aliases, history, piping, etc.[17][18]
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.[19]
See also
References
- ^ Cheng, Harry (1993). "Handling of Complex Numbers in the Ch Programming Language". Scientific Programming: 76–106.
- ^ Cheng, Harry (1993). "Scientific Computing in the Ch Programming Language". Scientific Programming: 49–75.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ 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) - ^ Cheng, Harry (1995). "Extending C with arrays of variable length". Computer Standards & Interfaces: 375–406. doi:10.1016/0920-5489(95)00007-H.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Morejon, Mario (2006). "Ch Language Rivals Java Functionality". CRN.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Cheng, Harry (2009). "C for the Course". ASME Mechanical Engineering Magazine: 50–52.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Huber, Tom (2010). "An Introduction to C and Ch: Your One-Stop Shop for Scientific Computing". IEEE Computing in Science and Engineering. doi:10.1109/MCSE.2010.82.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Liu, Li; Wang, Zhaoqing; Jiang, Xusheng (2010). "Anchor-based programming teaching embedded with Ch platform". Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference: 49–52.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Furman, B.; Wertz, E. (2010). "A first course in computer programming for mechanical engineers". Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference: 70–75.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ ZHUANG, Hong; WANG, Zhao-qing (2009). "Experience of Using Ch for Teaching Computer Programming in C". Computer Education: TP311.11–4. Template:CNKI.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ WANG, RONG (2009). "Study of C Language Programming Teaching Method on platform Ch". Journal of Weinan Teachers University: TP312.1–4. Template:CNKI.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Wang, Gary (2002). "Ch Solves Portability Headaches". IEEE Spectrum.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Wilson, Matthew (2004). "Open-RJ and Ch". Dr. Dobb's Journal.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Cheng, Harry (2009). "Speeding-Up Software Development Using Embedded Scripting". Dr. Dobb's Journal: 8–8.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Wang, Li-rong; Bo, Yo; Hagiwara, I. "Mobile-C based agent management for collaborative visualization of distributed mesh model". Computer-Aided Industrial Design & Conceptual Design, 2009. CAID & CD 2009. IEEE 10th International Conference.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Wang, Li-rong; Bo, Yo; Hagiwara, Ichiro (2009). "An agent based collaborative simplification of 3D mesh model". CDVE'09 Proceedings of the 6th international conference on cooperative design, visualization, and engineering.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ 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) - ^ 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: 36–37.
{{cite journal}}
: Cite journal requires|journal=
(help)
Further reading
- Heller, Martin (2001). "The Ch Language Environment". Byte Magazine.
{{cite journal}}
: Cite journal requires|journal=
(help) - Cheng, Harry (2002). "C99 & Numeric Computing". Dr. Dobb's Journal: 28–34.
{{cite journal}}
: Cite journal requires|journal=
(help) - Cheng, Harry (2006). "Ch: A C/C++ Interpreter for Script Computing". Dr. Dobb's Journal: 6–12.
{{cite journal}}
: Cite journal requires|journal=
(help) - Cheng, Harry (2009). C For Engineers & Scientists, An Interpretive Approach. McGraw-Hill. ISBN 978-0-07-729046-7.
- Cheng, Harry (2011). C For Engineers & Scientists (Chinese Edition). Higher Education Press. ISBN 978-0-07-729046-7.