List of C-family programming languages
{{Short description|none}}
{{More citations needed|date=June 2015}}
The C-family programming languages share significant features of the C programming language. Many of these 70 languages were influenced by C due to its success and ubiquity. The family also includes predecessors that influenced C's design such as BCPL.
Notable programming sources use terms like C-style, C-like, a dialect of C, having C-like syntax. The term curly bracket programming language denotes a language that shares C's block syntax.{{cite web |title=Learn a C-style language |url=https://www.oreilly.com/content/learn-a-c-style-language/#:~:text=The%20broadest%20definition%20is%20if,but%20C%20itself%20is%20not. |website=oreilly | date=29 June 2015 |publisher=O'Reilly |access-date=12 February 2024}}{{Cite book |last=Wang |first=Wally |url=https://www.worldcat.org/oclc/773827811 |title=Beginning programming for dummies |date=2007 |publisher=Wiley Pub |isbn=978-0-470-09968-1 |edition=4th |location=Indianapolis, IN |pages=359 |oclc=773827811}}
C-family languages have features like:
- Code block delimited by curly braces (
{}
), a.k.a. braces, a.k.a. curly brackets
- Parameter list delimited by parentheses (
()
)
- Infix notation for arithmetical and logical expressions
C-family languages span multiple programming paradigms, conceptual models, and run-time environments.
class="wikitable sortable" | ||||
Language | Year begun | Created by (at) | Brief description, relationship to C | References |
---|---|---|---|---|
Agora | 1993 | Dr. Patrick Steyaert | A reflective, prototype-based, object-oriented programming language that is based exclusively on message passing and not delegation. | |
Alef | 1995 | Phil Winterbottom (Bell Labs) | Created for systems programming on the Plan 9 from Bell Labs operating system; published in 1995 and eventually abandoned. It provided substantial language support for concurrent programming. | {{cite web|url=http://doc.cat-v.org/plan_9/2nd_edition/papers/alef/ref|title=Alef Language Reference Manual}} |
Amiga E | 1993 | Wouter van Oortmerssen | A combination of many features from several languages, but follows the original C language most closely in basic concepts. | |
AMPL | 1985 | Robert Fourer, David Gay and Brian Kernighan (Bell Labs) | An algebraic modeling language with elements of a scripting language. | |
AWK | 1977 | Alfred Aho, Peter Weinberger & Brian Kernighan (Bell Labs) | Designed for text processing and typically used as a data extraction and reporting tool. | {{Cite web |title=Glossary (The GNU Awk User's Guide) |url=https://www.gnu.org/software/gawk/manual/html_node/Glossary.html |access-date=2023-03-04 |website=www.gnu.org}} |
Axum | 2009 | Microsoft | A domain specific concurrent language, based on the actor model. | |
BCPL | 1966 | Martin Richards | A procedural, imperative, and structured language. Precursor to C. | {{Cite web |title=The before-C language |url=https://jeelabs.org/202x/bcpl/ |access-date=2023-03-04 |website=JeeLabs.org}} |
C | 1969-1973 | Dennis Ritchie (Bell Labs) | Enhancement of Ken Thompson's B language. | |
C shell/tcsh | 1978 | Bill Joy (UC Berkeley) | Scripting language and standard Unix shell. | |
C* | 1987 | Thinking Machines | Object-oriented, data-parallel ANSI C superset. | |
C++ | 1979 | Bjarne Stroustrup (Bell Labs) | Named as "C with Classes" and renamed C++ in 1983; it began as a reimplementation of static object orientation in the tradition of Simula 67, and through standardization and wide use has grown to encompass generic programming as well as its original object-oriented roots. | {{Cite web|title = The C Family|url = http://www3.sympatico.ca/cbbrowne/c.html}} |
C-- | 1997 | Simon Peyton Jones, Norman Ramsey | Generated mainly by compilers for very high-level languages. | |
Cg | 2002 | Nvidia | Based on the C language and although they share the same syntax, some features of C were modified and new data types were added to make Cg more suitable for programming graphics processing units. This language is only suitable for GPU programming and is not a general programming language. | |
Ch | 2001 | Harry Cheng | A C/C++ scripting language with extensions for shell programming and numerical computing. | {{cite web|url=http://www.softintegration.com/docs/ch/numeric/|title=Scientific Numerical Computing}}{{cite web|url=http://www.softintegration.com/docs/ch/shell/|title=cross platform Ch Shell Programming}} |
Chapel | 2009 | Cray Inc. | Aims to improve the programmability of parallel computers in general and the Cray Cascade system in particular. | |
Charm | 1996 | P. Nowosad | An object-oriented language with similarities to the RTL/2, Pascal and C languages in addition to containing some unique features of its own. | |
Cilk | 1994 | MIT Laboratory for Computer Science | General-purpose language designed for multithreaded parallel computing. | |
CINT | 1997-1999? | Masaharu Goto | An interpreted version of C/C++, much in the way BeanShell is an interpreted version of Java. | |
Claire | 1994 | Yves Caseau | A high-level functional and object-oriented language with rule processing abilities. | |
Cyclone | 2001 | Greg Morrisett (AT&T Labs) | Intended to be a safe dialect of the C language. It is designed to avoid buffer overflows and other vulnerabilities that are endemic in C programs, without losing the power and convenience of C as a tool for system programming. | |
C#
|2000 |Developed by Microsoft in the early 2000s as a modern, object-oriented language for the .NET framework. | ||||
D | 2001 | Walter Bright (Digital Mars) | Based on C++, but with an incompatible syntax having traits from other C-like languages like Java and C#. | |
Dart | 2013 | Lars Bak and Kasper Lund (Google) | A class-based, single inheritance, object-oriented language with C-style syntax. | |
E
|1997 |Mark S. Miller, Dan Bornstein (Electric Communities) |Designed with secure computing in mind, accomplished chiefly by strict adherence to the object-oriented computing model. | | ||||
eC | 2004 | Jérôme Jacovella-St-Louis (Ecere) | A super-set of C adding object-oriented features (inspired by C++), properties, dynamic modules and reflection developed as part of the Ecere SDK project, an open-source cross-platform SDK. | |
Fantom | 2005 | Brian Frank and Andy Frank | An object-oriented, functional, actor concurrent with a null-able aware type system emphasizing pragmatism in building enterprise systems running on top of the JVM or the CLR or JavaScript. | |
Fusion (formerly Ć) | 2011 | Piotr Fusik and Adrian Matoga | Fusion is a language based on C and C#. Aimed at crafting portable programming libraries, with syntax akin to C#. The translated code is lightweight (no virtual machine, emulation nor large runtime). | |
Go | 2007 | Rob Pike, Ken Thompson, and Robert Griesemer (Google) | Released to public in 2009, it is a concurrent language with fast compilations, Java-like syntax, but no object-oriented features and strong typing. | |
Hack | 2014 | Julien Verlaguet, Alok Menghrajani, Drew Paroski (Facebook) | A language for the HipHop Virtual Machine (HHVM). | |
Handel-C | 1996 | Oxford University Computing Laboratory | A high-level language which targets low-level hardware, most commonly used in the programming of FPGAs. It is a rich subset of C. | |
HolyC
|2005 |A dialect of C for Terry's own operating system TempleOS. |{{Cite web |date=2017-03-25 |title=The Temple Operating System |url=http://www.templeos.org/Wb/Doc/HolyC.html |url-status=dead |archive-url=https://web.archive.org/web/20170325000321/http://www.templeos.org/Wb/Doc/HolyC.html |archive-date=2017-03-25 |access-date=2019-04-16}}{{Cite web |title=A Language Design Analysis of HolyC - Harrison Totty |url=https://harrison.totty.dev/p/a-lang-design-analysis-of-holyc |access-date=2023-03-04 |website=harrison.totty.dev}} | ||||
Java | 1991 | James Gosling (Sun Microsystems) | Created as Oak, and released to the public in 1995. It is an OODL based inspired heavily by Objective-C, though with a syntax based somewhat on C++. Compiles to its own bytecode, and is strongly typed. | |
JavaScript | 1995 | Brendan Eich (Netscape) | Created as Mocha and LiveScript, announced in 1995, shipped the next year as JavaScript. Primarily a scripting language used in Web page development as well as numerous application environments such as Adobe Flash and QtScript. Though initially based on Scheme and Self, it is primarily a prototype-based object-oriented language with a syntax based on Java.{{Cite web|title=Chapter 4. How JavaScript Was Created|url=http://speakingjs.com/es5/ch04.html|url-status=dead|archive-url=https://web.archive.org/web/20200227184037/http://speakingjs.com/es5/ch04.html|archive-date=2020-02-27|access-date=2020-06-13|website=speakingjs.com}} Standardized as ECMAScript. | {{Cite web |title=JavaScript language overview - JavaScript |url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Language_Overview |access-date=2023-03-04 |website=developer.mozilla.org (MDN) |language=en-US}}{{Cite book |last=Reid |first=Jonathan |url=https://www.worldcat.org/oclc/852144161 |title=JavaScript programmer's reference |date=2013 |publisher=Apress |others=Thomas Valentine |isbn=978-1-4302-4630-5 |location=[Berkeley, Calif.] |pages=2 |oclc=852144161}} |
Limbo | 1995 | Limbo succeeded Alef and is used in Inferno as Alef was used in Plan9. | ||
LSL | 2003 | Robin Liden | Created for the Second Life virtual world by Linden Lab. | |
Lite-C | 2007 | Atari Inc | A language for multimedia applications and personal computer games, using a syntax subset of the C language with some elements of the C++ language. | |
LPC | 1995 | Lars Pensjö | Developed originally to facilitate MUD building on LPMuds. Though designed for game development, its flexibility has led to it being used for various purposes. | |
Neko | 2005 | Nicolas Cannasse (Motion-Twin) | A high-level dynamically typed language. | |
Nemerle | 2003 | Kamil Skalski, Michał Moskal, Prof. Leszek Pacholski, Paweł Olszta at Wrocław University | A general-purpose high-level statically typed language designed for platforms using the Common Language Infrastructure (.NET/Mono). | |
nesC | 2003 | David Gay, Philip Levis, Robert von Behren, Matt Welsh, Eric Brewer, & David Culler | Pronounced "NES-see", it is an extension to the C language designed to embody the structuring concepts and execution model of TinyOS, an event-driven operating system designed for sensor network nodes with very limited resources. | {{Citation|title=GitHub - tinyos/nesc: Master nesc repository.|date=2019-03-05|url=https://github.com/tinyos/nesc|publisher=TinyOS|access-date=2019-03-17}}{{cite web|title=The nesC Language: A Holistic Approach to Networked Embedded Systems|url=http://nescc.sourceforge.net/papers/nesc-pldi-2003.pdf}} |
Newsqueak | 1988 | Rob Pike | A concurrent language for writing application software with interactive graphical user interfaces, the syntax and semantics are influenced by the C language, but its approach to concurrency was inspired by Communicating sequential processes (CSP). | http://cdn.oreillystatic.com/en/assets/1/event/45/Go%20Presentation.pdf {{Bare URL PDF|date=March 2022}}https://doc.cat-v.org/bell_labs/squeak/squeak.pdf {{Bare URL PDF|date=March 2022}} |
Nim | 2008 | Andreas Rumpf | An imperative, multi-paradigm, compiled language. | |
Noop | 2009 | Attempts to blend the best features of "old" and "new" languages, while syntactically encouraging good programming practice. | ||
Not eXactly C (NXC) | 2006 | John Hansen | A high-level language for the Lego Mindstorms NXT. NXC, which is short for Not eXactly C, is based on Next Byte Codes, an assembly language. NXC has a syntax like C. It is part of the BricX IDE that integrates editor, tools for interfacing with the brick, and the compiler, but supports more languages. | {{cite web|url=http://bricxcc.sourceforge.net/nxc/|title=NXC - Not eXactly C}} |
Not Quite C (NQC) | 1998 (approx.) | David Baum | An embedded systems programming language, application programming interface (API), and native bytecode compiler toolkit for the Lego Mindstorms RCX platform, Cybermaster and LEGO Spybotics systems. It is intended as a drop-in replacement for the LabVIEW-based ROBOLAB IDE. It is primarily based on the C language but has specific limits, such as a maximum number of subroutines and variables allowed. Later replaced with Not eXactly C (NXC), an enhanced version created for the Mindstorms NXT platform. | {{cite web|url=http://bricxcc.sourceforge.net/nqc/|title=NQC - Not Quite C}} |
Oak | 1991 | James Gosling (Sun Microsystems) | A language created initially for Sun Microsystems set-top box project, it later evolved to become Java. | |
Objective-C | 1986 | Brad Cox and Tom Love | An object-oriented dynamic language based heavily on Smalltalk. A loosely defined de facto standard library by the original developers has now largely been displaced by OpenStep FoundationKit variants. | |
OpenCL C | 2009 | Apple, Khronos Group | OpenCL specifies a modified subset of the C language for writing programs to run on various compute devices, e.g., GPUs, DSPs. | |
Perl | 1988 | Larry Wall | Scripting language used extensively for system administration, text processing, and web server tasks. | |
PHP | 1995 | Rasmus Lerdorf | Widely used as a server-side scripting language. C-like syntax. | {{Cite web |title=PHP: History of PHP: Manual |url=https://www.php.net/manual/en/history.php.php |access-date=2023-03-04 |website=www.php.net}} |
Pike | 1994 | Fredrik Hübinette | An interpreted, general-purpose, high-level, cross-platform, dynamic programming language, with a syntax similar to that of C. | |
PROMAL | 1985 | Systems Management Associates | A C-like language for MS-DOS, Commodore 64, and Apple II. | |
R | 1993 | Ross Ihaka and Robert Gentleman | A language and software environment for statistical computing and graphics. | {{Cite book |url=https://www.worldcat.org/oclc/951337124 |title=Mastering parallel programming with R : master the robust features of R parallel programming to accelerate your data science computations |date=2016 |others=Simon R. Chapple, Eilidh Troup, Thorsten Forster, Terence Sloan |isbn=978-1-78439-462-2 |location=Birmingham, UK |pages=156 |oclc=951337124}} |
Ratfor | 1974 | Brian Kernighan (Bell Labs) | A hybrid of C and Fortran, implemented as a preprocessor for environments with no easy access to C compilers. | |
Ring | 2016 | Mahmoud Samir Fayed | A general-purpose dynamic language for applications development. | {{Cite book |last1=Ayouni|first1=Mansour|url=https://www.apress.com/gp/book/9781484258323|title=Beginning Ring Programming - From Novice to Professional |work=SpringerLink |publisher=Apress|language=en}}{{Cite web|url=https://ring-lang.github.io/doc1.16/controlstructures3.html|title = Control Structures - Third Style — Ring 1.16 documentation}}{{cite web |url=http://ring-lang.github.net/doc1.16/introduction.html#ring-and-other-languages |title=The Ring programming language and other languages |author=Ring Team |date=23 October 2021 |work=ring-lang.net}} |
Ruby
|1995 |An interpreted, high-level, general-purpose language which supports multiple programming paradigms. | | ||||
Rust | 2010 | Graydon Hoare (Mozilla) | A language empowering everyone to build reliable and efficient software. | |
S-Lang | 1991 | John E. Davis | A library with a powerful interpreter that provides facilities required by interactive applications such as display/screen management, keyboard input, keymaps, etc. | {{cite web|url=http://www.jedsoft.org/slang/|title=S-Lang Library Information Page}} |
SA-C | 2001 | Cameron Project | Single Assignment C (SA-C) is designed to be directly and intuitively translatable into circuits, including FPGAs. | |
SAC | 1994 | (Germany) | Development spread to several institutions in Germany, Canada, and the UK. Functional language with C syntax. | {{Cite web |url=http://www.sac-home.org/publications/GrelSchoIJPP06.pdf |title=Archived copy |access-date=2015-05-11 |archive-url=https://web.archive.org/web/20160305180814/http://www.sac-home.org/publications/GrelSchoIJPP06.pdf |archive-date=2016-03-05 |url-status=dead}} |
Seed7 | 2005 | Thomas Mertes | An extensible general-purpose language. | |
Split-C | 1993 | ? | A parallel extension of the C language. | |
Squirrel | 2003 | Alberto Demichelis | A light-weight scripting language. | |
Swift | 2014 | Chris Lattner (Apple) | Swift can import any C library, optionally annotating C headers to map C types to Swift objects{{Cite web|url=https://github.com/apple/swift-evolution/blob/master/proposals/0044-import-as-member.md|title=Swift Programming Language Evolution|website=GitHub|date=17 October 2021}} and import libraries as Swift modules.{{Cite web|url=https://github.com/apple/swift-evolution/blob/master/proposals/0038-swiftpm-c-language-targets.md|title=Swift Programming Language Evolution|website=GitHub|date=17 October 2021}} Swift has two-way bridging with Objective-C on platforms which support Apple's Objective-C runtime. Unlike Objective-C, Swift does not currently support C++ interoperation or exposing Swift types as C structs. | |
Telescript | 1990 | Marc Porat | An object-oriented language. | |
TypeScript | 2012 | Microsoft | JavaScript superset. | |
Umple | 2008 | University of Ottawa | A language for both object-oriented programming and modeling with class diagrams and state diagrams. | |
Unified Parallel C | 2003 | ? | An extension of the C language designed for high-performance computing on large-scale parallel machines. | |
V (Vlang) | 2019 | Alexander Medvednikov | A general-purpose statically typed compiled language for ease of use, safety, speed, and maintainable software. | {{cite web|url=https://vlang.io/|title=The V Programming Language}} |
Zig | 2015 | Andrew Kelley | A general-purpose language and toolchain for maintaining robust, optimal, and reusable software. | {{cite web|url=https://ziglang.org|title=The Zig Programming Language}} |