Programming language
lastmod 2026-04-20created 2015-04-0429 edits
A programming language is a language for writing software that runs computer systems. The higher-level the language, the closer it is to the languages humans use.
In everyday usage, the term often refers to software that supports a programming language, that is, software for writing software, and in this case the programming language and the software are not distinguished, and the software itself is regarded as a programming language. For example, Delphi is merely software for writing software that supports the programming language Object Pascal, but Delphi is more often regarded as a separate programming language.
Category
- BNF
- First-class function
- Machine code
- Computer Language
- Read–eval–print loop (REPL)
- Glue code
- C/C++
- Python
- JavaScript
- TypeScript
- Bourne-again shell; Bash
Bruce Tate's Seven Languages
- Korean: 루비 - Flexible yet powerful dynamic typing
- Io - The prototype system at the core of JavaScript
- Korean: 프롤로그 - Pattern matching, which strongly influenced the development of Scala and Erlang
- Korean: 스칼라 - The actor model underpinning concurrency design
- Korean: 얼랭 - The ‘Let it crash’ strategy for building fault-tolerant systems
- Korean: 클로저 - Solving concurrency problems through versioning
- Korean: 하스켈 - Pure functional programming
The seven programming ur-languages (2022)
Low-level programming language
A low-level programming language is a programming language that can be processed directly inside the computer, generally referring to machine code and assembly language. It is powerful, but its drawback is that it is hard to learn, and today it is not used except in special cases. The opposite of low-level languages is high-level programming languages.
High-level programming language
A high-level programming language is a programming language written to be easy for humans to understand, with the advantages of higher readability and simpler handling than low-level programming languages. It is translated into a low-level programming language by a compiler or interpreter and then executed. Most programming languages, such as the C language, Java, and BASIC, are high-level languages.
Comparison of programming language usage
- [Recommended] Hyperpolyglot - commonly used features in a side-by-side format 1
- Wikipedia (en) Comparison of programming languages
- Wikipedia (ko) Comparison of programming languages
| Language | Execution model | Influenced by | Programming paradigm | Type system | Appeared |
| Compiler | ALGOL (Ada 83), Korean: 파스칼, C++ (Ada 95), Smalltalk (Ada 95), Java (Ada 2005) | Concurrent, distributed, generic, imperative, object-oriented | static, strong, safe, nominative | 1983 | |
| ALGOL | Compiler | Imperative | static, strong, safe | 1958 | |
| ALGOL 60 | Compiler | ALGOL 58 | Imperative | static and dynamic typing, strong, safe | 1960 |
| ALGOL 68 | Interpreter / compiler / JIT compiler | ALGOL 60 | Concurrent, imperative | static and dynamic typing, strong, safe, structural | 1968 |
| APL | Mostly interpreter, some compiler | Array-oriented | 1964 | ||
| B | Interpreter, compiler | BCPL, Bon | Imperative | 1969 | |
| BASIC | Interpreter, compiler | 1963 | |||
| C | Compiler | ALGOL 68, B | Imperative, flow-driven | static, weak, unsafe | 1973 |
| C++ | Compiler | C, Simula, ALGOL 68 | Imperative, object-oriented, generic, multi-platform | static, strong, unsafe, nominative | 1985 |
| C# | JIT compiler | Delphi, Java, C++, Python | Imperative, object-oriented, generic | static, strong, both safe and unsafe | 2000 |
| COBOL | Compiler | FLOW-MATIC, COMTRAN | Imperative, object-oriented | weak/strong | 1959 |
| ColdFusion | JIT compiler | HTML | Procedural, functional, object-oriented | dynamic (duck typing), weak | 1995 |
| Common Lisp | Compiler | Korean: 리스프, Smalltalk | Imperative, functional, object-oriented | dynamic, strong, safe | 1984 |
| D | Compiler | C , C++, Java, C# | Imperative, object-oriented, generic | static, strong, unsafe, contracts | 2000 |
| Eiffel | Compiler | Korean: 에이다, Simula | Imperative, object-oriented, generic | static, strong, safe, nominative, contracts | 1985 |
| Compiler / interpreter / JIT compiler | Korean: 프롤로그, Ericsson Pascal, CSP | Functional, concurrent, distributed, multi-platform | dynamic, weak | 1987 | |
| F# | JIT compiler | C#, Objective Caml | Functional, object-oriented, imperative, generic | static, strong, safe, nominative, type inference | 2005 |
| Forth | Interpreter / compiler | RPN, assembly language | Imperative, stack-oriented | typeless | 1977 |
| Fortran | Compiler | APL (Fortran 90), ALGOL 68 (Fortran 90), C (Fortran 2003) | Imperative, procedural, object-oriented | static, strong, safe, nominative | 1957 |
| Haskell | Interpreter / compiler | Miranda, ML, λ-calculus | Functional, generic, lazy evaluation | static, strong, type inference | 1990 |
| Io | Interpreter | Smalltalk, Self, Lua, NewtonScript, Act1 | Imperative, object-oriented | dynamic | 2002 |
| Java | Interpreter / JIT compiler | C++, Objective-C, C# | Imperative, object-oriented, multi-platform, generic | static, strong | 1994 |
| JavaScript | Interpreter,JIT compilation | C, Self, awk, Perl | Imperative, object-oriented, functional | dynamic | 1995 |
| Joy | Interpreter | RPN, Forth, PostScript | Functional, stack-oriented | typeless | 2005 |
| Interpreter, compiler | λ-calculus | Functional | dynamic, strong | 1958 | |
| Lua | Interpreter, JIT compiler | Korean: 파이썬, Korean: 아이콘, Korean: 리스프, Scheme | Procedural, imperative, reflective | dynamic, strong, safe | 1993 |
| Mathematica | Interpreter | Korean: 리스프, APL | Functional, procedural | dynamic, strong | 1986 |
| Objective-C | Compiler | C, Smalltalk | Imperative, object-oriented | static/dynamic hybrid, strong | 1986 |
| Objective Caml | Interpreter / compiler | ML, Korean: 리스프 | Object-oriented, functional, imperative, generic | static, safe, structural, type inference | 1996 |
| Object Pascal (Delphi) | Compiler | Imperative, object-oriented, multi-platform | static, strong, safe (but unsafe allowed), nominative | 1985 | |
| Oz | Compiler / interpreter | Logic,functional, imperative, object-oriented, concurrent | 1991 | ||
| Compiler | ALGOL 60 | Imperative | static, strong, safe | 1970 | |
| Interpreter | C, shell, awk, sed, Korean: 리스프 | Functional, object-oriented, procedural | dynamic | 1987 | |
| Interpreter | Perl, C, C++, Java | Imperative, object-oriented | dynamic, weak | 1995 | |
| Compiler (WAM) | Logic-oriented | dynamic, strong | 1972 | ||
| Interpreter / JIT compiler | ABC, ALGOL 68, C, Perl, Modula-3 | Imperative, object-oriented, functional, aspect-oriented | dynamic (duck typing), strong | 1991 | |
| Interpreter | Smalltalk, Perl, Korean: 파이썬, Korean: 리스프 | Imperative, object-oriented, functional, aspect-oriented | dynamic (duck typing), strong | 1995 | |
| Interpreter / compiler | Java | Object-oriented, functional, generic | static, strong, partial type inference | 2003 | |
| Scheme | Interpreter / compiler | Korean: 리스프, ALGOL 60 | Functional | latent | 1975 |
| Bourne shell | Interpreter | ALGOL 68 | Imperative | weak | 1977 |
| Smalltalk | JIT compiler | Sketchpad, Simula, Korean: 리스프 | Object-oriented, functional, concurrent, event-driven, imperative, declarative | dynamic, strong, safe, duck typing | 1971 |
| Interpreter / JIT compiler | C, Korean: 리스프, shell, awk, sed | Functional, object-oriented, imperative, procedural, event-driven | dynamic | 1988 | |
| Visual Basic | Compiler | QuickBASIC | Component-oriented, event-driven | static/dynamic hybrid, weak/strong hybrid, safe, nominative | 1991 |
| Visual Basic .NET | JIT compiler | Visual Basic | Object-oriented, event-driven | static, strong | 2001 |
| Visual Prolog | Compiler | Korean: 프롤로그, C++, C#, Korean: 하스켈, SML | Logic, object-oriented, functional, event-driven, imperative, declarative | static, strong, safe, nominative/structural | 1985 |
Favorite site
- Wikipedia (en) description of programming languages
- [Recommended] Learn X in Y minutes (a "learn it in minutes.." series ~ feels like cheat sheets for many programming languages)
- PYPL PopularitY of Programming Language
- [Recommended] Riju: fast online playground for every programming language (very fast online playground; currently supports 224 languages and environments; Programming language; REPL)
- Github - EbookFoundation/free-programming-books - List of Free Learning Resources In Many Languages (collection of free programming learning resources)
- Writings that changed how I think about programming languages | GeekNews
- [Original] Writing that changed how I think about PL | Max Bernstein
- Introduces various writings, papers, and videos that fundamentally changed the author's view of programming languages and compilers
- Resources that greatly broadened understanding of practical GC implementation, optimizer design, register allocation, regular expression engines, and more
- Practical algorithms and structures such as Z3 and abstract domains, SSA form, and E-Graphs are explained clearly with real code examples
- Each resource explains complex concepts in a way that is concise, extensible, and easy to understand
- [Original] Github - EbookFoundation/free-programming-books
- The EbookFoundation/free-programming-books project is the most widely used repository of free programming learning resources in the world
- Provides book lists systematically categorized by programming language, topic, difficulty, country, and more
- Available in dozens of languages, including not only English but also Korean, Japanese, Chinese, and French
- With thousands of books, courses, podcasts, cheat sheets, and more organized by language, technology, and level, it is an essential reference for engineers, students, and working developers who want to learn programming
References
-
Hyperpolyglot.org.zip ↩