List of C-family programming languages explained

The C-family programming languages share significant features of the C programming language. Many were developmentally 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.[1] [2]

C-family languages have features like:

C-family languages span multiple programming paradigms, conceptual models, and run-time environments.

Language Year begun Created by (at) Brief description, relationship to C References
1993 Dr. Patrick Steyaert A reflective, prototype-based, object-oriented programming language that is based exclusively on message passing and not delegation.
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. [3]
1993 Wouter van OortmerssenA combination of many features from several languages, but follows the original C language most closely in basic concepts.
1985 Robert Fourer, David Gay and Brian Kernighan (Bell Labs) An algebraic modeling language with elements of a scripting language.
1977 Alfred Aho, Peter Weinberger & Brian Kernighan (Bell Labs) Designed for text processing and typically used as a data extraction and reporting tool. [4]
2009 A domain specific concurrent language, based on the actor model.
1966 A procedural, imperative, and structured language. Precursor to C. [5]
1969-1973 Dennis Ritchie (Bell Labs) Enhancement of Ken Thompson's B language.
1978 Bill Joy (UC Berkeley) Scripting language and standard Unix shell.
1987 Object-oriented, data-parallel ANSI C superset.
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. [6]
1997 Simon Peyton Jones, Norman RamseyGenerated mainly by compilers for very high-level languages.
2002 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.
2001 Harry Cheng A C/C++ scripting language with extensions for shell programming and numerical computing. [7] [8]
2009 Aims to improve the programmability of parallel computers in general and the Cray Cascade system in particular.
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.
1994 MIT Laboratory for Computer Science General-purpose language designed for multithreaded parallel computing.
1997-1999? Masaharu Goto An interpreted version of C/C++, much in the way BeanShell is an interpreted version of Java.
1994 Yves CaseauA high-level functional and object-oriented language with rule processing abilities.
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#2000Developed by Microsoft in the early 2000s as a modern, object-oriented language for the .NET framework.
2001 Walter Bright (Digital Mars) Based on C++, but with an incompatible syntax having traits from other C-like languages like Java and C#.
2013 Lars Bak and Kasper Lund (Google) A class-based, single inheritance, object-oriented language with C-style syntax.
1997Mark 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.
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).
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.
2014 Julien Verlaguet, Alok Menghrajani, Drew Paroski (Facebook) A language for the HipHop Virtual Machine (HHVM).
1996 A high-level language which targets low-level hardware, most commonly used in the programming of FPGAs. It is a rich subset of C.
HolyC2005Terry A. DavisA dialect of C for Terry's own operating system TempleOS.[9] [10]
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.
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.[11] Standardized as ECMAScript. [12] [13]
1995 Limbo succeeded Alef and is used in Inferno as Alef was used in Plan9.
2003 Robin Liden Created for the Second Life virtual world by Linden Lab.
Lite-C 2007 A language for multimedia applications and personal computer games, using a syntax subset of the C language with some elements of the C++ language.
1995 Developed originally to facilitate MUD building on LPMuds. Though designed for game development, its flexibility has led to it being used for various purposes.
2005 Nicolas Cannasse (Motion-Twin) A high-level dynamically typed language.
2003 A general-purpose high-level statically typed language designed for platforms using the Common Language Infrastructure (.NET/Mono).
2003 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. [14]
1988 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). [15] [16]
2008 Andreas Rumpf An imperative, multi-paradigm, compiled language.
2009 Attempts to blend the best features of "old" and "new" languages, while syntactically encouraging good programming practice.
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. [17]
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. [18]
1991 James Gosling (Sun Microsystems) A language created initially for Sun Microsystems set-top box project, it later evolved to become Java.
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 OpenCL specifies a modified subset of the C language for writing programs to run on various compute devices, e.g., GPUs, DSPs.
1988 Scripting language used extensively for system administration, text processing, and web server tasks.
1995 Widely used as a server-side scripting language. C-like syntax. [19]
1994 Fredrik Hübinette An interpreted, general-purpose, high-level, cross-platform, dynamic programming language, with a syntax similar to that of C.
1985 Systems Management Associates A C-like language for MS-DOS, Commodore 64, and Apple II.
1993 A language and software environment for statistical computing and graphics. [20]
1974 Brian Kernighan (Bell Labs) A hybrid of C and Fortran, implemented as a preprocessor for environments with no easy access to C compilers.
2016 A general-purpose dynamic language for applications development. [21] [22] [23]
Ruby1995Yukihiro MatsumotoAn interpreted, high-level, general-purpose language which supports multiple programming paradigms.
2010 Graydon Hoare (Mozilla) A language empowering everyone to build reliable and efficient software.
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. [24]
2001 Cameron Project Single Assignment C (SA-C) is designed to be directly and intuitively translatable into circuits, including FPGAs.
1994 (Germany) Development spread to several institutions in Germany, Canada, and the UK. Functional language with C syntax. [25]
2005 Thomas Mertes An extensible general-purpose language.
1993 ? A parallel extension of the C language.
2003 Alberto Demichelis A light-weight scripting language.
2014 Chris Lattner (Apple) Swift can import any C library, optionally annotating C headers to map C types to Swift objects[26] and import libraries as Swift modules.[27] 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.
1990 An object-oriented language.
2012 JavaScript superset.
2008 A language for both object-oriented programming and modeling with class diagrams and state diagrams.
2003 ? An extension of the C language designed for high-performance computing on large-scale parallel machines.
2019 Alexander Medvednikov A general-purpose statically typed compiled language for ease of use, safety, speed, and maintainable software. [28]
2015 Andrew Kelley A general-purpose language and toolchain for maintaining robust, optimal, and reusable software. [29]

Notes and References

  1. Web site: Learn a C-style language . oreilly . O'Reilly . 12 February 2024.
  2. Book: Wang, Wally . Beginning programming for dummies . 2007 . Wiley Pub . 978-0-470-09968-1 . 4th . Indianapolis, IN . 359 . 773827811.
  3. Web site: Alef Language Reference Manual.
  4. Web site: Glossary (The GNU Awk User's Guide) . 2023-03-04 . www.gnu.org.
  5. Web site: The before-C language . 2023-03-04 . JeeLabs.org.
  6. Web site: The C Family.
  7. Web site: Scientific Numerical Computing.
  8. Web site: cross platform Ch Shell Programming.
  9. Web site: 2017-03-25 . The Temple Operating System . dead . https://web.archive.org/web/20170325000321/http://www.templeos.org/Wb/Doc/HolyC.html . 2017-03-25 . 2019-04-16.
  10. Web site: A Language Design Analysis of HolyC - Harrison Totty . 2023-03-04 . harrison.totty.dev.
  11. Web site: Chapter 4. How JavaScript Was Created. dead. https://web.archive.org/web/20200227184037/http://speakingjs.com/es5/ch04.html. 2020-02-27. 2020-06-13. speakingjs.com.
  12. Web site: JavaScript language overview - JavaScript . 2023-03-04 . developer.mozilla.org (MDN) . en-US.
  13. Book: Reid, Jonathan . JavaScript programmer's reference . 2013 . Apress . Thomas Valentine . 978-1-4302-4630-5 . [Berkeley, Calif.] . 2 . 852144161.
  14. Web site: The nesC Language: A Holistic Approach to Networked Embedded Systems.
  15. http://cdn.oreillystatic.com/en/assets/1/event/45/Go%20Presentation.pdf
  16. https://doc.cat-v.org/bell_labs/squeak/squeak.pdf
  17. Web site: NXC - Not eXactly C.
  18. Web site: NQC - Not Quite C.
  19. Web site: PHP: History of PHP: Manual . 2023-03-04 . www.php.net.
  20. Book: Mastering parallel programming with R : master the robust features of R parallel programming to accelerate your data science computations . 2016 . Simon R. Chapple, Eilidh Troup, Thorsten Forster, Terence Sloan . 978-1-78439-462-2 . Birmingham, UK . 156 . 951337124.
  21. Book: Ayouni. Mansour. Beginning Ring Programming - From Novice to Professional . Apress. en.
  22. Web site: Control Structures - Third Style — Ring 1.16 documentation.
  23. Web site: The Ring programming language and other languages . Ring Team . 23 October 2021 . ring-lang.net.
  24. Web site: S-Lang Library Information Page.
  25. Web site: Archived copy . 2015-05-11 . https://web.archive.org/web/20160305180814/http://www.sac-home.org/publications/GrelSchoIJPP06.pdf . 2016-03-05 . dead.
  26. Web site: Swift Programming Language Evolution. GitHub. 17 October 2021.
  27. Web site: Swift Programming Language Evolution. GitHub. 17 October 2021.
  28. Web site: The V Programming Language.
  29. Web site: The Zig Programming Language.