This article needs additional citations for verification .(June 2015) |
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:
{}
), a.k.a. braces, a.k.a. curly brackets()
)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 |
---|---|---|---|---|
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. | [3] |
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. | [4] |
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. | [5] |
C | 1969-1973 | Dennis Ritchie (Bell Labs) | Enhancement of Ken Thompson's B language. | [2] |
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. | [6] [2] |
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. | [7] [8] |
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 | Anders Hejlsberg | Developed by Microsoft in the early 2000s as a modern, object-oriented language for the .NET framework. | [2] |
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 | Terry A. Davis | A dialect of C for Terry's own operating system TempleOS. | [9] [10] |
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. | [2] |
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. [11] Standardized as ECMAScript. | [12] [13] |
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. | [14] [15] |
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). | [16] [17] |
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. | [18] |
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. | [19] |
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. | [6] |
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. | [2] |
PHP | 1995 | Rasmus Lerdorf | Widely used as a server-side scripting language. C-like syntax. | [20] |
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. | [21] |
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. | [22] [23] [24] |
Ruby | 1995 | Yukihiro Matsumoto | 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. | [25] |
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. | [26] |
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 [27] and import libraries as Swift modules. [28] 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. | [29] |
Zig | 2015 | Andrew Kelley | A general-purpose language and toolchain for maintaining robust, optimal, and reusable software. | [30] |
KDevelop is a free and open-source integrated development environment (IDE) for Unix-like computer operating systems and Windows. It provides editing, navigation and debugging features for several programming languages, and integration with build automation and version-control systems, using a plugin-based architecture.
In computer programming, indentation style is a convention, a.k.a. style, governing the indentation of blocks of source code. An indentation style generally involves consistent width of whitespace before each line of a block, so that the lines of code appear to be related, and dictates whether to use space or tab characters for the indentation whitespace.
DOT is a graph description language, developed as a part of the Graphviz project. DOT graphs are typically stored as files with the .gv
or .dot
filename extension — .gv
is preferred, to avoid confusion with the .dot
extension used by versions of Microsoft Word before 2007. dot
is also the name of the main program to process DOT files in the Graphviz package.
Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber created Markdown in 2004, in collaboration with Aaron Swartz, as a markup language that is intended to be easy to read in its source code form. Markdown is widely used for blogging and instant messaging, and also used elsewhere in online forums, collaborative software, documentation pages, and readme files.
This comparison of programming languages compares the features of language syntax (format) for over 50 computer programming languages.
Svelte is a free and open-source component-based front-end software framework, and language created by Rich Harris and maintained by the Svelte core team members.
Geany is a free and open-source lightweight GUI text editor using Scintilla and GTK, including basic IDE features. It is designed to have short load times, with limited dependency on separate packages or external libraries on Linux. It has been ported to a wide range of operating systems, such as BSD, Linux, macOS, Solaris and Windows. The Windows port lacks an embedded terminal window; also missing from the Windows version are the external development tools present under Unix, unless installed separately by the user. Among the supported programming languages and markup languages are C, C++, C#, Java, JavaScript, PHP, HTML, LaTeX, CSS, Python, Perl, Ruby, Pascal, Haskell, Erlang, Vala and many others.
Clojure is a dynamic and functional dialect of the Lisp programming language on the Java platform.
CodeLite is a free and open-source IDE for the C, C++, PHP, and JavaScript (Node.js) programming languages.
Sass is a preprocessor scripting language that is interpreted or compiled into Cascading Style Sheets (CSS). SassScript is the scripting language itself.
CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python, and Haskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehension and destructuring assignment.
Less is a dynamic preprocessor style sheet language that can be compiled into Cascading Style Sheets (CSS) and run on the client side or server side. Designed by Alexis Sellier, Less is influenced by Sass and has influenced the newer "SCSS" syntax of Sass, which adapted its CSS-like block formatting syntax. Less is an open source project. Its first version was written in Ruby; however, in the later versions, use of Ruby has been deprecated and replaced by JavaScript. The indented syntax of Less is a nested metalanguage, as valid CSS is valid Less code with the same semantics. Less provides the following mechanisms: variables, nesting, mixins, operators and functions; the main difference between Less and other CSS precompilers is that Less allows real-time compilation via less.js by the browser.
Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.
Mustache is a web template system. Mustache is described as a logic-less system because it lacks any explicit control flow statements, like if
and else
conditionals or for loops; however, both looping and conditional evaluation can be achieved using section tags processing lists and anonymous functions (lambdas). It is named "Mustache" because of heavy use of braces, { }
, that resemble a sideways moustache. Mustache is used mainly for mobile and web applications.
In certain computer programming languages, the Elvis operator, often written ?:
, is a binary operator that returns the evaluated first operand if that operand evaluates to a value likened to logically true, and otherwise returns the evaluated second operand. This is identical to a short-circuit or with "last value" semantics. The notation of the Elvis operator was inspired by the ternary conditional operator, ? :
, since the Elvis operator expression A ?: B
is approximately equivalent to the ternary conditional expression A ? A : B
.
ZPE Programming Environment, formerly the Zenith Parsing Engine is a general-purpose compiler, parser and runtime environment for the YASS language designed for educational use as well as for its general use. The language it interprets, YASS, is an interpreted, high-level, general-purpose programming language. YASS is largely built upon making the language easy to read and use, with optional support for syntaxes such as curly-bracket syntax. YASS supports dynamic typing or static typing, as well as strong typing and weak typing.
PureScript is a strongly-typed, purely-functional programming language that transpiles to JavaScript, C++11, Erlang, and Go. It can be used to develop web applications, server side apps, and also desktop applications with use of Electron or via C++11 and Go compilers with suitable libraries. Its syntax is mostly comparable to that of Haskell. In addition, it introduces row polymorphism and extensible records. Also, contrary to Haskell, the PureScript language is defined as having a strict evaluation strategy, although there are non-conforming back ends which implement a lazy evaluation strategy.
{{cite book}}
: CS1 maint: location missing publisher (link) CS1 maint: others (link){{cite web}}
: CS1 maint: archived copy as title (link)