We are still actively working on the spam issue.

Difference between revisions of "Programming languages"

From InstallGentoo Wiki
Jump to: navigation, search
m
m (Perl)
Line 96: Line 96:
 
* Hated by Python fanboys worldwide
 
* Hated by Python fanboys worldwide
 
* Can be OO, imperative, and even has functional elements.
 
* Can be OO, imperative, and even has functional elements.
 +
* Avoids the use of reserved keywords, prefers keyboard squiggles (&, $, @, ->, etc.)
  
 
== [[PHP]] ==
 
== [[PHP]] ==

Revision as of 05:02, 20 February 2014

Practical Language Comparison.jpeg

Quick summary of programming languages.

Assembly

  • Terse, but pedantic as fuck.
    • Small programs are simple to write, but larger ones become an unwieldy and complex mess in most cases.
  • 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.
  • Not portable. This is as close to the metal as you get without writing actual machine op codes. Each instruction IS a 1:1 mapping to a machine opcode. Each CPU architecture has a different set of instructions.
  • Currently, Intel x86-64 ASM is the largest instruction set.
  • Two main ASM syntaxes: AT&T syntax and Intel Syntax

BASIC

  • >It can do anything C can do, guise!!1
  • Lots of proprietary implementations, only a few decent FOSS ones.
  • Still slower than C
  • >muh goto

C

  • Designed to be a "portable assembly language"
  • Small, simple language whose parts compose well
  • Very small standard library
  • Lingua franca for big libraries and APIs
    • If it has no C API, it's probably shit
  • Very mature compilers that produce extremely fast, well-optimized code
  • Implementations for pretty much every architecture or platform imaginable
    • If some hardware doesn't have a C compiler for it, chances are it doesn't matter in the first place
  • Lots of things are left undefined so that implementations can make the best choice possible in terms of speed
  • Potentially dangerous to write for the uninitiated
    • You manage your own resources yourself
    • You perform your own safety checks if you want them
    • Absolutely no hand-holding
    • Undefined behavior where anything can happen
  • Will force you to learn a lot about memory and lower level issues
  • Pretty much the only sane choice for systems and embedded programming
  • Can also be used for applications programming

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 (Mono framework allowing you to run it on GNU/Linux)
  • 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 patent.

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.

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

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

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

Pascal

  • Very strong, safe, and featured type system
  • Simple syntax that prefers words over symbols, and is highly-structured
  • Originally designed for teaching, and very easy to get started with
  • Fast, single-pass compilers
  • Covers both low-level and relatively high-level concepts well
  • Not very popular anymore, you won't find a job using it, and newer learning resources for it are lacking
  • The syntax is considered too verbose by some
  • Bias carried over from problems with earlier versions of the language
  • Large number of varied modern dialects and compilers may confuse newcomers

Perl

  • Very tacit and unreadable syntax
  • Called a "swiss army chainsaw" for its versatility
  • Slow for non-procedural tasks
  • Dynamic grammar makes it fun to write impossible code
  • Hated by Python fanboys worldwide
  • Can be OO, imperative, and even has functional elements.
  • Avoids the use of reserved keywords, prefers keyboard squiggles (&, $, @, ->, etc.)

PHP

No.

Go is a sane alternative to PHP and webapps and seems almost the only sane one. Heck, even Python is far more sane than PHP. Don't use Node.js, it's considered harmful.

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
  • Can be OO, imperative, and even has functional elements.

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