SoftIntegration Documentation
Getting Started
Ch-Based Books
White Papers
Ch Reviews
ToolKit Documents
Ch Mechanism
Ch Control System
Library Documents
C++ Graphical Library
Package Documents
Ch NAG Statistics

White Papers

Below are some white papers that provide additional information about Ch related to its design, implementation, and applications. Some of new features first added in Ch are part of C99 now.

Harry H. Cheng, Ten Reasons to Teach and Learn Computer Programming in C.

Harry H. Cheng, C for the Course, ASME Mechanical Engineering Magazine, September, 2009, pp 50-52. on line

Kabileshkumar G Cheetancheri, Harry H. Cheng, Spreadsheet-Based Interactive Design and Analysis of Mechanisms, Advances in Engineering Software, Vol. 40, Issue 4, April 2009, pp.274-280.

Harry H. Cheng Speeding-Up Software Development Using Embedded Scripting Dr. Dobb's Journal, No. 416, Januray 2009, pp. 8.

Harry H. Cheng, Dung T. Trang, Object-Oriented Interactive Mechanism Design and Analysis, Engineering with Computers, An International Journal for Simulation-Based Engineering, May 2006, Vol. 21, No. 3, pp. 237-246.

Harry H. Cheng, Dung Trang, Web-Based Interactive Analysis and Animation of Mechanisms, ASME Trans. Journal of Computing and Information Science in Engineering, March 2006, Vol. 6, No. 1, pp. 84-90.

Harry H. Cheng, Ch: A C/C++ Interpreter for Script Computing in C/C++ User's Journal, Vol. 24, No. 1, Januray, 2006, pp. 6-12.

Zhaoqing Wang, Harry H. Cheng, Portable C/C++ Code for Portable XML Data, Portable C/C++ Code for Portable XML Data, IEEE Software, Vol. 23, No. 1, January/February, 2006, pp. 76-81.

Bo Chen, Harry H, Cheng, Interpretive OpenGL for Computer Graphics, Computers and Graphics, Vol. 29, No. 2, 2005, pp. 331-339.

Qingcang Yu, Bo Chen, Harry H. Cheng, Web-Based Control System Design and Analysis, IEEE Control Systems Magazine, Vol. 24, No. 3, June 2004, pp. 45-57.

Yong Zhu, Bo Chen, Harry H. Cheng, An Object-Based Software Package for Interactive Control System Design and Analysis, ASME Trans. Journal of Computing and Information Science in Engineering, Vol. 3, No. 4, December 2003, pp. 366-367.

Integrating Portable XML Data with Portable C/C++ Code
by Zhaoqing Wang and Harry H. Cheng
Oracle Technology Network.
Abstract. An embeddable C/C++ interpreter is the answer for overcoming the limitations presented by writing XML-based applications with nonportable C/C++ code.

Ch and OpenCV: An Open Relationship With Vision
by Gary Bradski etc
Advanced Imaging Vol. 18, Num 5, May 2003, pp.18, 33-35.
Abstract. Ch OpenCV, a C-based environment for open-architecture computer vision, lets users interactively develop vision programs in an efficient coding environment. This is achieved with Ch, an embeddable C/C++ interpreter with advanced visualization and numerics, and OpenCV, a free, optimized open source library.

C99 & Numeric Computing
by Harry H. Cheng
Dr. Dobb's Journal, March 2002, pp. 28-34.
Abstract. Although C is a powerful system programming language that can deliver much the same control over devices as assembly language, it has deficiencies when it comes to scientific and engineering applications that require extensive numerical computing. C99, ratified as the ANSI/ISO C Standard (ISO/IEC IS 9899), is a milestone in C's evolution into a viable programming language for scientific and numerical computing. Among other features, C99 supports IEEE floating-point arithmetic, complex numbers, and variable-length arrays (VLAs) for numerical programming. Complex numbers and VLAs were added mainly based on the prior art of implementation of Ch from SoftIntegration, SCC from Cray Research, gcc from Free Software Foundation, and some others. In this article, what's involved with C99 compliance in Ch, a C virtual machine produced by SoftIntegration, will be examined.

Extending C with Arrays of Variable Length
by Harry H. Cheng
Computer Standards and Interfaces, Vol. 17, 1995, pp. 375-406.
Abstract. Extending C with arrays of variable length is critical in evolving C as a primary scientific programming language. Arrays of variable length whose size is known only at program execution time are implemented in the Ch programming language. Ch is designed to be a superset of C. This paper describes the current implementation of arrays of variable length in the Ch programming language. It also makes comparison studies of variable length arrays in Ch with those implemented in GNU C compiler gcc and Cray Research standard C compiler SCC as well as other alternate proposals.

Extending C and FORTRAN for Design Automation
by Harry H. Cheng
ASME Trans., Journal of Mechanical Design Vol. 117, No. 3, 1995, pp. 390-395.
Abstract. The Ch programming language is designed to be a superset of C. Ch bridges the gap between C and FORTRAN; it encompasses all the programming capabilities of FORTRAN 77 and consists of features of many other programming languages and software packages. Unlike other general-purpose programming languages, Ch is designed to be especially suitable for applications in mechanical systems engineering. Because of our research interests, many programming features in Ch have been implemented for design automation, although they are useful in other applications as well. In this paper we will describe these new programming features for design automation, as they are currently implemented in Ch in comparison with C and FORTRAN 77.

Pedagogically Effective Programming Environment for Teaching Mechanism Design
by Harry H. Cheng
Computer Applications in Engineering Education, Vo. 2, No. 1, 1994, pp. 23-39.
Abstract. The Ch programming environment is an open system. Users can enhance the system through its various user interfaces. Ch is specially designed for applications in mechanical systems engineering, although it is applicable to many other disciplines as well. Ch has been successfully used as a teaching and learning tool for an undergraduate course, Computer-Aided Mechanism Design, at the University of California, Davis in Fall 1993. In this paper we will present the Ch programming environment and programming features developed for teaching and student learning. We will describe how a teaching toolbox is developed and used for teaching mechanism design. Source codes in the teaching toolbox are available to students so that they can study the software implementation of algorithms and modify the codes to solve the similar problems. Although the developed teaching toolbox is specific for instruction on mechanism design, the Ch programming environment and ideas presented in this paper are general, and they are applicable to instructional improvement for a wide range of subjects in engineering.

Scientific Computing in the Ch Programming Language
by Harry H. Cheng
Scientific Programming, Vol. 2, No. 3, Fall, 1993, pp. 49-75.
Abstract. We have developed a general-purpose block-structured interpretive programming language. The syntax and semantics of this language called Ch are similar to C. Ch retains most features of C from the scientific computing point of view. In this paper, the extension of C to Ch for numerical computation of real numbers will be described. Metanumbers of -0.0, 0.0, Inf, -Inf, and NaN are introduced in Ch. Through these metanumbers, the power of the IEEE-754 arithmetic standard is easily available to the programmer. These metanumbers are extended to commonly used mathematical functions in the spirit of the IEEE 754 standard and ANSI C. The definitions for manipulation of these metanumbers in I/O; arithmetic, relational, and logic operations; and built-in polymorphic mathematical functions are defined. The capabilities of bitwise, assignment, address and indirection, increment and decrement, as well as type conversion operations in ANSI C are extended in Ch. In this paper, mainly new linguistic features of Ch in comparison to C will be described. Example programs programmed in Ch with metanumbers and polymorphic mathematical functions will demonstrate capabilities of Ch in scientific computing.

Handling of Complex Numbers in the Ch Programming Language
by Harry H. Cheng
Scientific Programming, Vol. 2, No. 3, Fall, 1993, pp. 76-106.
Abstract. The handling of complex numbers in the Ch programming language will be described in this paper. Complex is a built-in data type in Ch. The I/O, arithmetic and relational operations, and built-in mathematical functions are defined for both regular complex numbers and complex metanumbers of ComplexZero, ComplexInf, and ComplexNaN. Due to polymorphism, the syntax of complex arithmetic and relational operations, and built-in mathematical functions are the same as those for real numbers. Besides polymorphism, the built-in mathematical functions are implemented with a variable number of arguments, which greatly simplies computations of different branches of multiple-valued complex functions. The valid lvalues related to complex numbers are defined. Rationales for the design of complex features in Ch are discussed from language design, implementation, and application points of views. Sample Ch programs show that a computer language which does not distinguish the sign of zeros in complex numbers can also handle the branch cuts of multiple-valued complex functions effectively so long as it is appropriately designed and implemented.