Programming Languages
List of Programming Languages
Language | Application Area | Paradigm | Year | Creator | Origin of Name |
---|---|---|---|---|---|
FORTRAN | Scientific and Engineering Applications | Procedural | 1957 | John W. Backus at IBM | FORmula TRAnslating System |
LISP | Artificial Intelligence | Functional | 1958 | John McCarthy (designed), Steve Russell (implemented) | LISt Processing |
COBOL | Business data processing | Procedural | 1959 | The CODASYL Committee | Common Business-Oriented Language |
Pascal | Teaching Programming | Procedural | 1970 | Niklaus Wirth, Kathleen Jensen | Blaise Pascal |
C | System Programming | Procedural | 1972 | Dennis Ritchie | predecessor language was named B |
Prolog | Artificial Intelligence | Logic | 1972 | Alain Colmerauer | PROgrammation en LOgique (French) |
SQL | Database Management | Declarative | 1974 | Donald D. Chamberlin, Raymond F. Boyce at IBM | Structured Query Language |
Bourne Shell (sh) | System Administration | Procedural | 1977 | Stephen R. Bourne | Stephen R. Bourne |
Ada | Real-time systems | Multi-paradigm | 1980 | Jean Ichbiah at CII Honeywell Bull | Ada Lovelace |
Smalltalk | Object-Oriented Programming (GUI) | Object-Oriented | 1980 | Adele Goldberg, Dan Ingalls, Alan Kay at Xerox PARC | Objects “talk” to one another via messages |
MATLAB | Numerical Computing | Multi-paradigm | 1984 | Cleve Moler | MATrix LABoratory |
LaTeX | Typesetting | Macro | 1985 | Leslie Lamport | Lamport's TeX |
C++ | System Programming, Game Development | Multi-paradigm | 1985 | Bjarne Stroustrup | Incremental modification of C (++ is the C increment operator) |
Perl | System Administration, Web Development | Multi-paradigm | 1987 | Larry Wall | Practical Extraction and Reporting Language |
Haskell | Functional Programming | Functional | 1990 | Simon Peyton Jones | Haskell Curry, a logician |
Python | Web Development, Data Science, Machine Learning | Multi-paradigm | 1991 | Guido van Rossum | Monty Python comedy group |
Lua | Game Development, Web Development | Multi-paradigm | 1993 | Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes | Moon in Portuguese |
Java | Web Development, Android Development | Object-Oriented | 1995 | James Gosling at Sun Microsystems | Named after the coffee |
JavaScript | Web Development, Game Development | Multi-paradigm | 1995 | Brendan Eich at Netscape | JavaScript is not related to Java |
PHP | Web Development | Multi-paradigm | 1995 | Rasmus Lerdorf | Personal Home Page (PHP: Hypertext Preprocessor) |
Ruby | Web Development | Multi-paradigm | 1995 | Yukihiro Matsumoto | Ruby is a gemstone |
CSS | Web Development | Declarative | 1996 | Håkon Wium Lie, Bert Bos | Cascading Style Sheets |
C# | Web Development, Game Development | Multi-paradigm | 2000 | Anders Hejlsberg, Microsoft (ECMA) | Pronounced as C sharp |
Go | System Programming, Web Development | Multi-paradigm | 2009 | Robert Griesemer, Rob Pike, Ken Thompson at Google | Go is a common English word |
Rust | System Programming | Multi-paradigm | 2010 | Graydon Hoare at Mozilla | Rust is a fungus |
Kotlin | Android Development | Multi-paradigm | 2011 | JetBrains | Named after Kotlin Island |
TypeScript | Web Development | Multi-paradigm | 2012 | Anders Hejlsberg, Microsoft | TypeScript is a superset of JavaScript |
Zig | System Programming | Multi-paradigm | 2016 | Andrew Kelley | Zig is a programming language |
Programming Language Paradigms
Read more about Programming Paradigms
Source Files
A source file is a file containing code, written in a particular programming language, that is used to create a program. Source files are typically text files, containing text that is readable by humans. Source files are usually stored on disk, and are read by the compiler or interpreter to create the program
Compiler
A compiler is a program that translates source code into object code. The compiler reads the source file, and generates an object file containing machine code. The compiler also performs other tasks, such as syntax checking, optimization, and code generation
Interpreter
An interpreter is a program that reads source code and executes it directly. The interpreter reads the source file, and executes the code line by line. The interpreter also performs other tasks, such as syntax checking, optimization, and code generation
Object Files
An object file is a file containing machine code, created by the compiler from the source file. Object files are typically binary files, containing machine code that is not readable by humans. Object files are usually stored on disk, and are read by the linker to create the program
Linker
A linker is a program that combines object files into an executable file. The linker resolves references between object files, and combines them into a single executable file. The linker also performs other tasks, such as allocating memory for variables, and setting up the program's entry point
Executable Files
An executable file is a file containing machine code, created by the linker from the object files. Executable files are typically binary files, containing machine code that is not readable by humans. Executable files are usually stored on disk, and are run by the operating system to create the program
Loader
A loader is a program that loads an executable file into memory, and starts its execution. The loader reads the executable file from disk, and loads it into memory. The loader also performs other tasks, such as setting up the program's stack and heap, and initializing the program's data
Syntax and Semantics
Grammar rules of a programming language are called syntax. Semantics is the meaning of the syntax