This commit is contained in:
Miloslav Ciz 2023-05-06 21:16:32 +02:00
parent f1848a0f4b
commit 879a37fd2b
14 changed files with 55 additions and 19 deletions

View file

@ -11,15 +11,16 @@ We divide programming languages into different groups. Perhaps the most common d
- **compiled** languages: Meant to be transformed by a [compiler](compiler.md) to a [native](native.md) (directly executable) binary program. These languages are more efficient but usually more difficult to program in, less flexible and the compiled programs are non-portable (can't just be copy-pasted to another computer with different [architecture](isa.md) and expected to run). These languages are usually [lower level](low-level), use static and strong [typing](typing.md) and manual [memory management](memory_management.md). Examples: [C](c.md), [C++](cpp.md), [go](go.md), [rust](rust.md), [Haskell](haskell.md) or [Pascal](pascal.md).
- **interpreted** languages: Meant to be interpreted by an [interpreter](interpreter.md) "on-the-go". Basically to run the program you need the interpreter of the language installed on your computer and this interpreter reads the [source code](source_code.md) as it is written and performs what it dictates. These languages are generally less efficient (slower, use more RAM) but also more flexible, easier to program in and [independent of platforms](platform_independent.md). These languages usually [higher-level](high_level.md), use weak and dynamic [typing](typing.md) and automatic [memory management](memory_management.md) ([garbage collection](garbage_collection.md)). Examples: [Python](python.md), [Perl](perl.md), [JavaScript](js.md) and [BASH](bash.md).
Sometimes the distinction here may not be completely clear, for example Python is normally considered an interpreted language but it can also be compiled into [bytecode](bytecode.md) and even native code. [Java](java.md) is considered more of a compiled language but it doesn't compile to native code (it compiles to bytecode).
Sometimes the distinction here may not be completely clear, for example Python is normally considered an interpreted language but it can also be compiled into [bytecode](bytecode.md) and even native code. [Java](java.md) is considered more of a compiled language but it doesn't compile to native code (it compiles to bytecode). [C](c.md) is traditionally a compiled language but there also exist C interpreters etc.
We can divide language in many more ways, for example based on their paradigm ([impertaive](imperative.md), [declarative](declarative.md), [object-oriented](oop.md), [functional](functional.md), [logical](logical.md), ...), purpose (general purpose, special purpose), computational power ([turing complete](turing_complete.md) or weaker), level of abstraction (high, low), [typing](data_type.md) (strong, weak, dynamic, static) or function evaluation (strict, lazy).
We can divide language in many more ways, for example based on their **[paradigm](paradigm.md)** ([impertaive](imperative.md), [declarative](declarative.md), [object-oriented](oop.md), [functional](functional.md), [logical](logical.md), ...), **purpose** (general purpose, special purpose), computational power ([turing complete](turing_complete.md) or weaker), level of **[abstraction](abstraction.md)** (high, low), [typing](data_type.md) (strong, weak, dynamic, static) or function evaluation (strict, lazy).
## Nice Languages
{ *THIS IS NOT A COMPREHENSIVE LIST, I can only include languages that I am familiar with, please add more* ~drummyfish }
- [C](c.md): the one and only, the go-to language of the [suckless](suckless.md) community and of compiled languages in general, greatly [future-proof](future_proof.md), uncontested in performance and with nice oldschool [meme](meme.md)-free design, our beloved C
- [Comun](comun.md): official [LRS](lrs.md) language
- [Scheme](scheme.md): the minimal/elegant member of [lisp](lisp.md) family of [functional](functional.md) languages
- [Forth](forth.md): beautifully simple stack-based language
- [Lambda calculus](lambda_calculus.md): ultra extremely [minimal](minimalism.md) [mathematical](math.md) [functional](functional.md) language