Ch interpreter

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search
Ch (pronounced /ˌsiːˈeɪtʃ/) is a cross-platform C and C++ interpreter. It is provided by SoftIntegration, Inc for C/C++ users. Ch is useful for scripting, shell programming, 2D/3D plotting, numerical computing, and can be embedded in other applications to add scripting capability. Ch can be used for both server-side and client-side web development. It runs under Windows, Linux, Mac OS X and some versions of Unix. Ch supports C90 and major C99 features, but it doesn't support full C++ features.

Contents

Features

C/C++ interpreter

Ch supports the 1999 ISO C Standard (C99) and C++ classes. It is superset of C with C++ classes. C99 major features such as complex numbers, variable length arrays (VLAs), IEEE-754 floating-point arithmetic and generic mathematical functions are supported. Wide characters in Addendum 1 for C90 is also supported.

Embeddable scripting

As a C/C++ interpreter, Ch can be used as a scripting engine for your applications. It extends your applications with a C compatible scripting language.

Shell programming and cross-platform scripting

Ch is a C-compatible shell similar to C-shell (csh). It can be used as login shell. Ch has a built-in string type for automatic memory allocation and de-allocation.

2D/3D plotting and numerical computing

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.

Examples

"Hello, world!" in Ch

There are two ways to run Ch code. One is:

   printf("Hello world!\n");

Another is:

   #include <stdio.h>
   int main() {
       printf("Hello world!\n");
   }

Ch also supports interactive shell command and C statements.

 > int i, *p, **p2     // i is an integer, p pointer, p2 double pointer
 > i=10                // i is assigned value 10
   10
 > p=&i                // p points to address of i
   00D847C0
 > *p                  // the memory pointed by p has value 10 
   10
 > p2=&p               // p2 points to address of p
   00D84D30
 > **p2                // the memory pointed by the pointer at p2 has value 10
   10
 >

Numerical computing in Ch

   #include <stdio.h>
   #include <array.h>
   int main() {
       array double A[2][3] = {1, 2, 3,
                           4, 5, 6};
       array double B[3][2];
       printf("A= \n%f \n", A+A);
       B = 2*transpose(A);
       printf("B= \n%f \n", B);
   }

The output is:

   A=
   2.000000 4.000000 6.000000
   8.000000 10.000000 12.000000 
   B=
   2.000000 8.000000
   4.000000 10.000000
   6.000000 12.000000 

Shell programming

Find and compile all .c files into .o in the current directory for which the .o file is old or absent:

   #!/bin/ch 
   #include <sys/stat.h> 
   struct stat cstat, ostat; 
   string_t c, o; 
   foreach (c; `find . -name "*.c"`) 
   { 
       o=`echo $c | sed 's/.c$/.o/'`; 
       stat(o, &ostat); stat(c, &cstat); 
       if (ostat.st_mtime > cstat.st_mtime) 
       {  
           echo "compiling $c to $o"; 
           gcc -c -o "$o" "$c"; 
       } 
   } 

2D/3D plotting in Ch

To plot a sine wave:

  #include <math.h>
  #include <chplot.h>
  int main() {
       int numpoints = 36;
       array double x[numpoints], y[numpoints];
       linspace(x, 0, 360); // assign x with values from 0 to 360 linearly
       y = sin(x*M_PI/180);
       plotxy(x, y, "Ch plot", "xlabel", "ylabel");
   }

See also

External links

Personal tools

Served in 0.082 secs.