hello friends! new(ish)!
Programming languages: Difference between revisions
Jump to navigation
Jump to search
>Ebin (→Lisp) |
>Gahnoo (Added remarks to C, legal stuff for C#, lines about abstraction. Added PHP and Haskell.) |
||
Line 13: | Line 13: | ||
* Used mainly for systems/microcontroller programming | * Used mainly for systems/microcontroller programming | ||
* Small language, with very small standard library | * Small language, with very small standard library | ||
* Lingua franca for big libraries and APIs. If it has no C API, it's probably shit. | |||
== C++ == | == C++ == | ||
* Very, very large and feature-filled language | * Very, very large and feature-filled language | ||
* Considered verbose at times | * Considered verbose at times | ||
* C, but with OOP on top, and massive set of massive libraries | * C, but with OOP on top, and massive set of massive libraries | ||
* Considered dangerous to write in because, like C, there is no memory management | * Considered dangerous to write in because, like C, there is no memory management | ||
* Almost as fast as C | * Almost as fast as C | ||
* Not very orthogonal and features frequently clash with each other | |||
* Despite being called C/C++ frequently, good C++ is completely different from good C | |||
== C# == | == C# == | ||
* What Java should have been | * What Java should have been | ||
* Runs on .NET or the Mono framework | * Runs on .NET or the Mono framework | ||
* Is very similar to Java, with some extra stuff borrowed from C++ | * Is very similar to Java, with some extra stuff borrowed from C++ and Haskell | ||
* Dubious legal situation because parts of the language are encumbered with MS patents | |||
== Java == | == Java == | ||
Line 37: | Line 41: | ||
== Haskell == | == Haskell == | ||
* | * Extremely expressive, offers abstraction capabilities near Lisp | ||
* | * Focuses on pure functional programming and type systems | ||
* Very rigid language, if you do something wrong, it probably won't even compile | |||
* Takes a lot of time to learn completely | |||
* Can be unwieldy for inherently stateful problems | |||
== Lisp == | == Lisp == | ||
Line 44: | Line 51: | ||
* Intially appeared in 1958. | * Intially appeared in 1958. | ||
* Lisp is said to change the way one thinks about programming, because it exposes the [http://en.wikipedia.org/wiki/Abstract_syntax_tree abstraxt syntax tree] to the programmer for modification and extension of the language itself to fit the domain-specific needs of a particular task. | * Lisp is said to change the way one thinks about programming, because it exposes the [http://en.wikipedia.org/wiki/Abstract_syntax_tree abstraxt syntax tree] to the programmer for modification and extension of the language itself to fit the domain-specific needs of a particular task. | ||
* No (visible) limit to abstraction | |||
== Python == | == Python == | ||
Line 69: | Line 77: | ||
* Still slower than C | * Still slower than C | ||
* >muh goto | * >muh goto | ||
== PHP == | |||
No. | |||
[[Category:Programming]] | [[Category:Programming]] |
Revision as of 00:30, 10 February 2014
Quick summary of programming languages.
Assembly
- Terse, but pedantic as fuck
- Based Motorola ASM, so many variants, so much serial port downloading.
- x86 ASM is pretty neat too, also known as PC ASM. Pain in the ass because AT&T is the UNIX standard, and Intel is the DOS standard and they are so close but its the little things that are different. Enough different to be a pain in the dick.
C
- Designed to be a "portable assembly language"
- Very fast, but dangerous to write in because no memory management or bounds checking
- Will teach you a lot about memory and lower level computing
- Used mainly for systems/microcontroller programming
- Small language, with very small standard library
- Lingua franca for big libraries and APIs. If it has no C API, it's probably shit.
C++
- Very, very large and feature-filled language
- Considered verbose at times
- C, but with OOP on top, and massive set of massive libraries
- Considered dangerous to write in because, like C, there is no memory management
- Almost as fast as C
- Not very orthogonal and features frequently clash with each other
- Despite being called C/C++ frequently, good C++ is completely different from good C
C#
- What Java should have been
- Runs on .NET or the Mono framework
- Is very similar to Java, with some extra stuff borrowed from C++ and Haskell
- Dubious legal situation because parts of the language are encumbered with MS patents
Java
- Very portable; compiling down to bytecode, which is then executed by the JVM
- Object oriented language
- Very large and enterprise
- Huge libraries and a lot of software is written in it
- Very verbose APIs
- Receives a lot of undue criticism
- Can be convoluted to write in sometimes
- Is made fun of for the design patterns people use with it, and for the verbose naming schemes often used
Haskell
- Extremely expressive, offers abstraction capabilities near Lisp
- Focuses on pure functional programming and type systems
- Very rigid language, if you do something wrong, it probably won't even compile
- Takes a lot of time to learn completely
- Can be unwieldy for inherently stateful problems
Lisp
- Family of programming languages which have the most notable features of using fully parenthesized prefix notation and being homoiconic.
- Intially appeared in 1958.
- Lisp is said to change the way one thinks about programming, because it exposes the abstraxt syntax tree to the programmer for modification and extension of the language itself to fit the domain-specific needs of a particular task.
- No (visible) limit to abstraction
Python
- Very easy to read and simple (and fun) to write
- Kinda slow
- Uses whitespace indentation to separate logical blocks
- Excellent for scripting
- Considered the antithesis of Perl
Ruby
- Focus on programmer happiness
- Fully object-oriented
- Elegant, readable code
- As slow as any dynamic language will be
- Excellent for general-purpose programming, scripting, text processing and web dev
- Best of Perl without the Rest of Perl
Erlang
- Makes concurrency/multithread shit a breeze.
- Uses a specialised VM that has a hard time crunching numbers, and an even harder time handling strings.
BASIC
- >It can do anything C can do, guise!!1
- Lots of property implementations, only a few decent FOSS ones.
- Still slower than C
- >muh goto
PHP
No.