Products > Ch Professional Edition

Ch Professional
Introduction
System Requirements
FAQ
Demos
Documentation
Ch Professional Edition
Buy now Try Now
Ch Professional Edition is a C/C++ compatible interactive platform for scientific computing and scripting.

Ch Professional for Raspberry Pi and ARM based computers such as Orange Pi is free for non-commercial use, subject to the license agreement set forth in the license. Ch Professional for Raspberry Pi is bundled in C-STEMbian.

Ch
Ch is especially effective for teaching and learning Computing, Mathematics, and Robotics as well as interfacing with hardware.

Ch offers a very high-level language (VHLL) environment for general-purpose computing. Ch can execute C/C++ code directly without lengthy compile/link/execute/debug cycle and without intermediate code. Ch can also easily call functions in binary C/C++ libraries.

Ch has the following major features:

1. A cross-platform C/C++ interpreter

Ch is a cross-platform C/C++ interpreter for scripting. It supports many industry standards such as TCP/IP socket, POSIX, OpenGL, GTK+, CGI, ODBC, X/Motif, Windows toolkit over 8,000 C functions with the following features.


"We are using Ch for teaching computer science and scientific computing. We are very pleased to have such a scientific computing environment with C as programming language. It is as powerful as Matlab."

-- Francois Auger, Professor, University of Nantes, France.

"When I want to satisfy my numerical interests, I can just extend my use of Ch. I do not have to learn an entirely new language with subtly different semantics to one that I am used to. The time it will save in programming mathematical problems will soon justify the cost."

--- Francis Glassborow, Chairman of the Association of C & C++ Users in C Vu Magazine

Read More Testimonials

2. Interactive for rapid prototyping and learning C/C++

C/C++ expressions, statements, functions, and programs can be executed interactively in a Ch Command Window. It can be used for rapid prototyping. It is also perfect solution for classroom demos using a laptop. As an instructional tool, instructors can use it in a classroom quickly and intuitively for illustration and answering student questions. It lowers the barrier for learning C/C++. It helps students understand and master difficult topics in C/C++ such as data types, input/output format, pointers, structures, arrays. Students can easily learn C/C++ like learning BASIC. For example

> double f = 12.345  // declare variable f
> 2*f                // calculate 2f
24.6900
> printf("%8.2lf", f)// field with 8, precision 2
  12.35
> double *p          // declare variable p 
> p = &f             // p points to f
00AC81A0             // the address of f
> *p                 // the value pointed by p
12.3450
> p[0]               // treat p as an array
12.3450

As another example, after the random number generator is seeded with a time value in srand(time(NULL). the function rand() is called to generate two random numbers. The function add() which calls the mathematical function sqrt() is defined at the prompt and then used.

> srand(time(NULL))
> rand()
4497
> rand()
11439
> double add(double a, double b) { return a+b+sqrt(2);}
> double c
> c = add(10.0, 20)
31.4142

3. The most user-friendly integrated development environment (IDE) for learning C/C++

ChIDE is the most user-friendly IDE for beginners to learn fundamentals of computer programming in C/C++ across different platforms.

  • ChIDE supports the user interface in over 30 local languages such as Japanese, German, French, and Chinese on different platforms. It has many abbreviations for quickly writing and editing C/C++ code, including a convenient header for homework assignment. It can automatically indent code with syntax highlighting.

  • Extensive and user-friendly debug features. You can set breakpoints, run a program step by step, watch and change values of variables during the program execution, inspect variables in different stacks with different colors, etc. ChIDE is especially developed for teaching and learning computer programming in C/C++. For example, step-by-step execution of a function helps students understand and master difficult topics such as program logic, control flow, selection statements, loops, functions, function argument pass-by-value, pass-by-reference, local and global variables, etc.

    ChIDE for plotting

  • ChIDE is the most pedagogically effective IDE for instructors to make classroom presentations while quickly modifying programs to demonstrate different programming features and concepts, or respond to students' questions. The font size can be changed quickly for classroom presentation.
  • ChIDE can be used with your favorite C/C++ compilers. It is pre-configured to work with Microsoft Visual Studio C++ compiler in Windows and GNU gcc/g++ in Unix. It is flexible and can be configured to use other compilers. You can easily switch back-and-forth between interpretive and compile/link based execution of C/C++ programs. It helps students understand how compiler works.

4. Very high-level shell programming for automating tasks and system administration

Ch is an interactive portable shell across different platforms. Ch is a C compatible shell, similar to Unix and MS-DOS shells. Ch in Windows includes more than 250 commonly-used Unix commands such as vi, ls, awk, sed, find, grep for portable shell programming. Ch bridges the gap between the C language and shell languages. With its built-in string type and many enhanced scripting features, Ch can be used for cross-platform scripting to automate repetitive tasks, system administration, regression test, and hardware test. Ch can be used to learn Unix/Linux in a familiar Windows environment. C/C++ programs can also be compiled in a Ch comman shell.

Ch is a C-compatible shell, while csh is a C-like shell. To leverage your C/C++ skills for shell programming, please check here.

Below are two sample Ch scripts. If the code runs in a Ch shell, or the file name has extension .ch in Windows, #!/bin/ch can be removed.
#!/bin/ch
printf("Set pin 0 as output and high in a Raspberry Pi\n");
gpio mode  0 out
gpio write 0 1
#!/bin/ch
#include <stdio.h>
int main() {
    printf("Hello world!\n");
}

5. The simplest numerical computing in C/C++

Ch has built-in type-generic mathematical functions and computational arrays for linear algebra and matrix computations. It contains advanced high-level numerical functions. Complicated engineering and science problems can be solved conveniently in Ch. For example, the linear system equation b = A*x can be written verbatim in Ch.

For MATLAB® and Mathematica® users, the functions and feature comparison between Ch and MATLAB/Mathematica can be found at below.

The example below shows interactive execution for arithmetic of computational arrays, transpose and inverse of matrices.


> array double a[2][3] = {1,2,3,4,5,6}, b[2][2]
> b = a*transpose(a)
14.0000 32.0000
32.0000 77.0000
> b*inverse(b)
1.0000 0.0000
0.0000 1.0000
> a = 100*a + 5
105.0000 205.0000 305.0000
405.0000 505.0000 605.0000

6. The simplest 2D/3D graphical plotting in C/C++

Ch provides the simplest possible solution for two- and three-dimensional graphical plotting within the framework of C/C++ for rapid application development and visualization. It can be used conveniently for visualizing engineering and science problems. Its plotting engine is based on Gnuplot.

  • Ch contains a plotting class in C++ with over 100 member functions for conveniently creating and manipulating two- and three-dimensional plots.
  • Ch has easy-to-use high-level plotting functions plotxy(), fplotxy(), plotxyf(), plotxyz(), fplotxyz(), and plotxyzf() using data from arrays, functions, and data files conveniently.

    Here is a simple code from Ch Shell to generate plotting: 
    
                       > array double x[36], y[36]
                       > linspace(x, 0, 6.28)
                       > y = sin(x)                            
                       > plotxy(x, y)
    

  • Numerous plot types in different coordinates and shapes
  • Plots can be generated for display on the screen, display inside a Web browser through a Web server, or saved in a file with a variety of different file formats, including PNG, JPEG, GIF, Postscript, LaTeX, etc.
  • A displayed plot can be conveniently copied and pasted into other applications such as Word in Windows.
  • Ch is compatible with SoftIntegration Graphical Library (SIGL). The plotting class and functions in Ch are supported in SIGL. The program using the plotting feature can be either run in Ch interpretively without compilation or compiled using a C++ compiler with SIGL.

7. Quick animation

Ch contains QuickAnimation, a program for quick animation and display of various objects. It can be used to conveniently visualize and simulate engineering and science problems. QuickAnimation is especially suitable for animation of two-dimensional mechanical systems. It can stimulate students' interest in computing and computer programming.

Ch QuickAnimation Ch QuickAnimation
Ch QuickAnimation

9. Ch Mechanism Toolkit

Ch Mechanism Toolkit included in Ch can be used conveniently for design and analysis of various mechanisms.

8. Ch SDK for interfacing with binary C/C++ libraries

Ch SDK can easily integrate the existing C/C++ libraries as Ch scripting libraries. Functions and classes in static or dynamical libraries can be invoked in a Ch script file or Ch command shell. Ch SDK requires neither any modification of your C/C++ source code and libraries, nor re-compilation of your applications and libraries. It enables you to have a powerful C/C++ interpreter to control your systems and applications across different platforms. Your binary modules can readily be executed interpretively and shared with other users with Ch SDK. It creates a greater benefit for code reuse.

10. A rich set of C/C++ libraries, toolkits, and packages

As Ch is a superset of C, it can effectively support all C libraries through Ch SDK. Therefore, Ch supports an increasing number of C/C++ libraries, third party products, and user contributed code, as well as toolkits and packages developed using Ch with advanced numerical, graphical, and animation capabilities such as Ch Control System Toolkit.