Ch (computer programming): Difference between revisions

Content deleted Content added
Rescuing 1 sources and tagging 0 as dead. #IABot (v1.5beta)
No edit summary
Tags: Mobile edit Mobile web edit Advanced mobile edit
 
(37 intermediate revisions by 25 users not shown)
Line 1:
{{Multiple issues|
{{confusing|date=June 2011}}
{{COI|date=May 2011}}
}}
 
{{Infobox software
| name = ChCH C/C++ interpreter
| logo = =
| screenshot = =
| caption = =
| author = Harry H. Cheng
| developer = SoftIntegration, Inc.
| released = {{Start date and age|2001|10|01}}
| latest release version = 78.50.10
| latest release date = {{Start date and age|20152017|1211|0219}}
| status =
| programming language = [[C (programming language)|C]]
| operating system = [[Microsoft Windows|Windows]], [[OS X]], [[Linux]], [[IBM AIX|AIX]], [[HP-UX]], [[Solaris (operating system)|Solaris]] (SPARC and x86), [[QNX]], [[FreeBSD]]
| platform = [[x86]], [[SPARC]]
| size =
| language = English
| genre = [[Integrated development environment]]
| license = [[Proprietary software]]<br/>'''Standard edition:''' [[freeware]]<br />'''Student edition:''' [[freeware]] for students<br />'''Professional edition:''' [[trialware]] for 30 days
| website = {{URL|www.softintegration.com}}
}}
 
'''ChCH''' {{IPAc-en|ˌ|s|iː|ˈ|eɪ|tʃ}} is a proprietary [[cross-platform]] [[C (programming language)|C]] and [[C++]] [[Interpreter (computing)|interpreter]] and [[scripting language environment,]]. originallyIt was designed by '''Harry H. 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'''.. AFree versions include the student edition, isand freelythe available. Chnon-commercial Professional Edition for [[Raspberry Pi is free for non-commercial use]].
 
Ch can be embedded in C/C++ application programs. It has numerical computing and graphical plotting features. Ch is a combined shell and IDE.<ref>{{cite journal |last= Veeraraghavan |first= Sriranga |year= 2013 |title= An introduction to Ch: Implementing a temperature converter in Ch |url= http://www.techworld.com.au/article/452524/an_introduction_ch_implementing_temperature_converter_ch/ |publisher= ComputerWorld}}</ref> Ch shell combines the features of common shell and C language.<ref>[http://www.softintegration.com/docs/ch/shell/ Ch Shell]</ref> ChIDE provides quick code navigation and symbolic debugging. It is based on embedded Ch, Scite and Scintilla.<ref>[http://www.softintegration.com/docs/ch/chide/ Ch IDE]</ref><ref>{{cite journal |last= Wang |first= Gary |year= 2002 |title= Ch Solves Portability Headaches |url= http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1049264 |publisher= IEEE Spectrum}}</ref>
 
ChCH can be embedded in C/ and C++ application programs. It has [[numerical computing]] and graphical plotting features. ChCH is a combined of both '''shell and IDE'''.<ref>{{cite journal |last= Veeraraghavan |first= Sriranga |year= 2013 |title= An introduction to Ch: Implementing a temperature converter in Ch |url= http://www.techworld.com.au/article/452524/an_introduction_ch_implementing_temperature_converter_ch/ |publisher= ComputerWorld}}</ref> ChCH shell combines the features of common shell and C language.<ref>[http://www.softintegration.com/docs/ch/shell/ Ch Shell]</ref> ChIDE provides quick code navigation and symbolic debugging. It is based on embedded ChCH, [[SciTE|Scite]], and [[Scintilla (software)|Scintilla]].<ref>[http://www.softintegration.com/docs/ch/chide/ Ch IDE]</ref><ref>{{cite journal |last= Wang |first= Gary |year= 2002 |title= Ch Solves Portability Headaches |urljournal= http://ieeexplore.ieeeIEEE Spectrum |volume= 39 |issue= 6 |pages= 59 |doi= 10.org1109/xpl/freeabs_allMSPEC.2002.jsp?arnumber=1049264 |publishers2cid= IEEE32477309 Spectrum}}</ref>
Ch is written in C and runs on [[Microsoft Windows|Windows]], [[Linux]], [[macOS]], [[FreeBSD]], [[IBM AIX|AIX]], [[Solaris (operating system)|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.<ref>{{cite journal |last= Cheng |first= Harry |year= 1993 |title= Handling of Complex Numbers in the Ch Programming Language |pages= 76–106 |url= http://iospress.metapress.com/content/xml874m51x1w42w0/|journal=Scientific Programming}}</ref><ref>{{cite journal |last= Cheng |first= Harry |year= 1993 |title= Scientific Computing in the Ch Programming Language |pages= 49–75 |url= http://iospress.metapress.com/content/f225771541203807/ |publisher= Scientific Programming}}</ref><ref>{{cite journal |last= Cheng |first= Harry |year= 1995 |title= Extending C and FORTRAN for Design Automation |pages= 390–395 |url= http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=JMDEDB000117000003000390000001&idtype=cvips&gifs=yes&ref=no |publisher= ASME Trans., Journal of Mechanical Design}}</ref><ref>{{cite journal |last= Cheng |first= Harry |year= 1995 |title= Extending C with arrays of variable length |pages= 375–406 |url= http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TYV-3Y6PCHF-V&_user=10&_coverDate=09%2F15%2F1995&_alid=1737140035&_rdoc=1&_fmt=high&_orig=search&_origin=search&_zone=rslt_list_item&_cdi=5628&_sort=r&_st=13&_docanchor=&view=c&_ct=1&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=1369ffa56fdef3033135fa8fc1eb4c15&searchtype=a |publisher= Computer Standards & Interfaces |doi=10.1016/0920-5489(95)00007-H |journal= Computer Standards & Interfaces |volume= 17 |issue= 4}}</ref> An article published by ''Computer Reseller News'' ([[CRN Magazine|CRN]]) named Ch as notable among C-based virtual machines for its functionality and the availability of third-party libraries.<ref>{{cite journal |last= Morejon |first=Mario |year= 2006 |title= Ch Language Rivals Java Functionality |url= http://www.crn.com/reviews/applications-os/175804126/ch-language-rivals-java-functionality.htm |publisher= CRN}}</ref>
 
ChCH is written in C and runs on [[Microsoft Windows|Windows]], [[Linux]], [[macOS]], [[FreeBSD]], [[IBM AIX|AIX]], [[Solaris (operating system)|Solaris]], [[QNX]], and [[HP-UX]]. It supports [[C90 (C version)|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 ChCH before they became part of the [[C99]] standard.<ref>{{cite journal |last= Cheng |first= Harry |year= 1993 |title= Handling of Complex Numbers in the Ch Programming Language |pages= 76–106 |url= http://iospress.metapress.com/content/xml874m51x1w42w0/|journal=Scientific Programming}}</ref><ref>{{cite journal |last= Cheng |first= Harry |year= 1993 |title= Scientific Computing in the Ch Programming Language |pages= 49–75 |url= http://iospress.metapress.com/content/f225771541203807/ |publisher= Scientific Programming}}</ref><ref>{{cite journal |last= Cheng |first= Harry |year= 1995 |title= Extending C and FORTRAN for Design Automation |pages= 390–395 |url= http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=JMDEDB000117000003000390000001&idtype=cvips&gifs=yes&ref=no |publisher= ASME Trans., Journal of Mechanical Design}}</ref><ref>{{cite journal |last= Cheng |first= Harry |year= 1995 |title= Extending C with arrays of variable length |pages= 375–406 |url= http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TYV-3Y6PCHF-V&_user=10&_coverDate=09%2F15%2F1995&_alid=1737140035&_rdoc=1&_fmt=high&_orig=search&_origin=search&_zone=rslt_list_item&_cdi=5628&_sort=r&_st=13&_docanchor=&view=c&_ct=1&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=1369ffa56fdef3033135fa8fc1eb4c15&searchtype=a |publisher= Computer Standards & Interfaces |doi=10.1016/0920-5489(95)00007-H |journal= Computer Standards & Interfaces |volume= 17 |issue= 4}}{{dead link|date=March 2019|bot=medic}}{{cbignore|bot=medic}}</ref> An article published by ''Computer Reseller News'' ([[CRN Magazine|CRN]]) named ChCH as notable among C-based virtual machines for its functionality and the availability of third-party libraries.<ref>{{cite journal |last= Morejon |first=Mario |year= 2006 |title= Ch Language Rivals Java Functionality |url= http://www.crn.com/reviews/applications-os/175804126/ch-language-rivals-java-functionality.htm |publisher= CRN}}</ref>
Ch has many toolkits that extend its functions. For example, Ch Mechanism Toolkit is used for design and analysis of commonly used mechanisms such as fourbar linkage, five-bar linkage, six-bar linkage, crank-slider mechanism, and cam-follower system.<ref>{{cite journal |last= Cheng |first= Harry |year= 2006 |title= Object-Oriented Interactive Mechanism Design and Analysis |pages= 237–246 |url= http://link.springer.com/article/10.1007%2Fs00366-005-0008-4 |publisher= Engineering with Computers}}</ref> Ch Control System Toolkit is used for modeling, design, and analysis of continuous-time or discrete-time linear time invariant (LTI) control systems.<ref>{{cite journal |last= Zhu |first= Yong |year= 2003 |title= An Object-Based Software Package for Interactive Control System Design and Analysis |pages= 366–367 |url= http://computingengineering.asmedigitalcollection.asme.org/article.aspx?articleid=1399866f |publisher= ASME Trans. Journal of Computing and Information Science in Engineering}}</ref> Both toolkits includes the source code.
 
ChCH has many toolkitstool kits that extend its functions. For example, Chthe CH Mechanism Toolkit is used for design and analysis of commonly used mechanisms such as fourbar[[four-bar linkage]], [[five-bar linkage]], [[six-bar linkage]], crank-slider mechanism, and cam-follower system.<ref>{{cite journal |last= Cheng |first= Harry |year= 2006 |title= Object-Oriented Interactive Mechanism Design and Analysis |journal= Engineering with Computers |volume= 21 |issue= 3 |pages= 237–246 |urldoi= http://link.springer.com/article/10.1007%2Fs00366/s00366-005-0008-4 |publishers2cid= Engineering16996625 with Computers}}</ref> ChCH Control System Toolkit is used for modeling,the design, analysis, and analysismodelling of continuous-time or discrete-time linear time -invariant (LTI) control systems.<ref>{{cite journal |last= Zhu |first= Yong |year= 2003 |title= An Object-Based Software Package for Interactive Control System Design and Analysis |pages= 366–367 |urljournal= http://computingengineering.asmedigitalcollection.asme.org/article.aspx?articleid=1399866f |publisher= ASME Trans. Journal of Computing and Information Science in Engineering |volume= 3 |issue= 4 |pages= 366–367 |doi= 10.1115/1.1630815 |s2cid= 17908643 }}</ref> Both toolkitstool kits includesinclude the [[source code]].
Ch is now used and integrated into curriculum by many high schools and universities to teach computing and programming in C/C++.<ref>{{cite journal |last= Cheng |first= Harry |year= 2009 |title= C for the Course |pages= 50–52 |url= http://memagazine.asme.org/Articles/2009/september/C_Course.cfm |publisher= ASME Mechanical Engineering Magazine}}</ref><ref>{{cite journal |last= Huber |first= Tom |year= 2010 |title= An Introduction to C and Ch: Your One-Stop Shop for Scientific Computing |url= http://www.computer.org/portal/web/csdl/doi/10.1109/MCSE.2010.82 |publisher= IEEE Computing in Science and Engineering |doi=10.1109/MCSE.2010.82 |journal= Computing in Science & Engineering |volume= 12 |issue= 4 |page= 7}}</ref><ref>{{cite journal |last1=Liu |first1=Li |last2= Wang |first2= Zhaoqing|last3=Jiang |first3= Xusheng |year= 2010 |title= Anchor-based programming teaching embedded with Ch platform |pages= 49–52 |url= http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5552033 |publisher= Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference}}</ref><ref>{{cite journal |last1=Furman |first1=B. |last2= Wertz |first2= E. |year= 2010 |title= A first course in computer programming for mechanical engineers |pages= 70–75 |url= http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&arnumber=5552091 |publisher= Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference}}</ref><ref>{{cite journal |last1=Zhuang |first1=Hong |last2= Wang |first2= Zhao-qing |year= 2009 |title= Experience of Using Ch for Teaching Computer Programming in C |pages= TP311.11–4 |url= http://en.cnki.com.cn/Article_en/CJFDTOTAL-JYJS200907016.htm |publisher= Computer Education |id=[http://en.cnki.com.cn/Article_en/CJFDTOTAL-JYJS200907016.htm CKNI:SUN:JYJS.0.2009-07-016]}}</ref><ref>{{cite journal |last1=Wang |first1=Rong |year= 2009 |title= Study of C Language Programming Teaching Method on platform Ch |pages= TP312.1–4 |url= http://en.cnki.com.cn/Article_en/CJFDTOTAL-WOLF200905018.htm |publisher= Journal of Weinan Teachers University |id=[http://en.cnki.com.cn/Article_en/CJFDTOTAL-WOLF200905018.htm CNKI:SUN:WOLF.0.2009-05-018]}}</ref><ref>{{cite journal |last1=Stopforth |first1=Riaan |year= 2013 |title= Teaching and programming with Ch for tertiary-level mechatronics engineering education |pages= 146–149 |url= http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=6685507&punumber%3D6678934%26sortType%3Dasc_p_Sequence%26filter%3DAND%28p_IS_Number%3A6685470%29%26pageNumber%3D2 |publisher= Robotics and Mechatronics Conference (RobMech)}}</ref> 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 UC Davis Center for Integrated Computing and STEM Education (C-STEM). It offers the curriculum for K-12 students.
 
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.
ChCH supports [[Lego Mindstorms NXT|LEGO Mindstorms NXT]] and [[Lego Mindstorms EV3|EV3]], [[Arduino]], Linkbot, Finch Robot, RoboTalk and RasperryRaspberry PIPi, Pi Zero, and ARM for robot programming and learning.<ref>
[http://www.newtonium.com/public_html/Products/RoboWorks/chrobotalk.htm ch robot]</ref><ref>
[http://www.finchrobot.com/software/ch ch finch]</ref><ref>[http://www.softintegration.com/company/press/ch_arm_raspberry_pi_released.htm ch raspberry and arm]{{Dead link|date=June 2019 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> It can also be embedded into the [[LabVIEW]] system design platform and development environment.<ref>{{Cite web|url=http://iel.ucdavis.edu/projects/chlabview/|title=Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting}}</ref>
[http://www.finchrobot.com/software/ch ch finch]</ref><ref>
[http://www.softintegration.com/company/press/ch_arm_raspberry_pi_released.htm ch raspberry and arm]</ref>
 
== Features ==
ChCH 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 array|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 ChCH include:
 
* [[Member functionsfunction]]s
* Mixed code and declaration
* The ''[[this (computer programming)|this]]'' -> pointer
* [[Reference type (C++)|Reference type and pass-by-reference]]
* Function-style type conversion
* [[Classes in C++|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
Line 57 ⟶ 50:
* The new and delete operators
* Constructors and destructors
* [[Polymorphic functionsfunction]]s
* The [[scope resolution operator ::]]
* The I/O functions cout, cerr, and cin with endl
* Arguments for [[variadic functionsfunction]]s are optional
 
ChCH supports classes in C++ with added abilities, including:
 
* Classes inside member functions
* [[Nested functionsfunction]]s with classes
* Passing member function to argument of pointer-to-function type of functions
 
ChCH can interact with existing C/C++ libraries and call C/C++ functions from ChCH script.<ref>{{cite journalmagazine |last= Wilson |first= Matthew |year= 2004 |title= Open-RJ and Ch |url= http://drdobbs.com/184401877?queryText=ChSDK |publishermagazine= Dr. Dobb's Journal}}</ref>
As a C/C++ interpreter, ChCH 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 ChCH scripting contexts. One example of an embedded ChCH scripting application is Mobile-C, which has been used for collaborative visualization of distributed mesh model.<ref>{{cite journalmagazine |last= Cheng |first= Harry |year= 2009 |title= Speeding-Up Software Development Using Embedded Scripting |pages= 8–88 |url= http://drdobbs.com/architecture-and-design/212201774 |publishermagazine= Dr. Dobb's Journal}}</ref><ref>{{cite journalbook |last1=Wang |first1=Li-rong |last2title=2009 BoIEEE |first2=10th Yo|last3=HagiwaraInternational |first3=Conference Ion |title= MobileComputer-CAided basedIndustrial agentDesign management& forConceptual collaborativeDesign visualization|pages=1127–1132 of|last2= distributedBo mesh model|first2= Yo|urllast3=Hagiwara http://ieeexplore.ieee.org/search/freesrchabstract.jsp?tp|first3=&arnumber=5375178&queryText%3DMobile-C%26openedRefinements%3D*%26searchField%3DSearch+All I |publisher= Computer-Aided Industrial Design & Conceptual Design, 2009. CAID & CD 2009. IEEE 10th International Conference|doi=10.1109/CAIDCD.2009.5375178 |year=2009 |isbn=978-1-4244-5266-8 |s2cid=39307433 }}</ref><ref>{{cite journalbook |last1=Wang |first1=Li-rong |last2= Bo |first2= Yo|last3=Hagiwara |first3= Ichiro |title= An agent based collaborative simplification of 3D mesh model |pages=325–328 |url= http://dl.acm.org/citation.cfm?id=1813032 |year=2009 |publisher= CDVE'09 Proceedings of the 6th international conference on cooperative design, visualization, and engineering|isbn=9783642042645 |series=Cdve'09 }}</ref>
 
ChCH has a built-in [[string type]] (string_t) for automatic memory allocation and de-allocation. It supports shell aliases, history, piping,and etcpiping.<ref>{{cite journal |last= Campbell |first= Matt |year= 2003 |title= Ch, A C/C++ Interpreter – New possibilities for people who like C and Unix |url= http://www.mactech.com/articles/mactech/Vol.19/19.09/CInterpreter/index.html |publisher= MACTECH, the journal of Apple technology}}</ref><ref>{{cite book|last=Cheng|first=Harry|title=The Ch Language Environment|edition=6.3|year=2010|publisher= SoftIntegration , Inc.|___location=Davis, CA}}</ref>
 
ChCH has built-in 2D/3D graphical plotting features and computational [[array data type|arrays]] for numerical computing. A 2D [[linear equation]] of the form ''b = A*x'' can be written verbatim in Ch.<ref>{{cite journal |last= Glassborow |first= Francis |year= 2001 |title= The Ch Language Environment Version 2.0 |url= http://www.softintegration.com/company/pub/accu.html |pages= 36–37 |publisher= C Vu Magazine}}</ref>
 
== See also ==
Line 83 ⟶ 76:
 
== Further reading ==
* {{cite journal |last=Heller |first=Martin |year=2001 |title=The Ch Language Environment |url=http://www.byte.com/documents/s=1776/byt20011031s0002/1105_heller.html |publisher=[[Byte (magazine)|Byte]] |deadurlurl-status=yesdead |archiveurlarchive-url=https://web.archive.org/web/20011116220556/http://www.byte.com/documents/s%3D1776/byt20011031s0002/1105_heller.html |archivedatearchive-date=November 16, 2001 |df= }}
*{{cite journalmagazine |last= Cheng |first= Harry |year= 2002 |title= C99 & Numeric Computing |pages= 28–34 |url= http://drdobbs.com/cpp/184404993 |publishermagazine= Dr. Dobb's Journal}}
* {{cite journalmagazine |last= Cheng |first= Harry |year= 2006 |title= Ch: A C/C++ Interpreter for Script Computing |pages= 6–12 |url= http://drdobbs.com/184402054 |publishermagazine= Dr. Dobb's Journal}}
* {{cite book |last= Cheng |first= Harry |year= 2009 |title= C For Engineers & Scientists, An Interpretive Approach |url= http://highered.mcgraw-hill.com/sites/0073376051/ |publisher= McGraw-Hill|isbn= 978-0-07-729046-7}}
* {{cite book |last= Cheng |first= Harry |year= 2011 |title= C For Engineers & Scientists (Chinese edition) |url= httphttps://www.amazon.cn/C%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B-%E7%A8%8B%E8%BE%89/dp/B005JR8IW6/ref=sr_1_1?s=books&ie=UTF8&qid=1325463722&sr=1-1 |publisher= Higher Education Press|isbn= 978-0-07-729046-7|edition= Chinese }}
 
== External links ==