Welcome to Kodok Marton's homepage

Professional work from professionals!

  • Increase font size
  • Default font size
  • Decrease font size
Home Programming Web Programming What makes each major language “special”?

What makes each major language “special”?

It's been said that any language that doesn't change your way of thinking about programming isn't worth learning. It would be interesting to compile a list of what makes every major language "special". These would be the features that are unique to the language (at least compared to languages of similar or greater popularity and/or in terms of the level of emphasis placed on them), that one has to understand to "think in" the language, and that make the language worth learning even if you can't make any money by learning it. Here are some examples:

  • C: Pointers, manual memory management, low-level unchecked programming.
  • C++: RAII, templates.
  • D: Templates on steroids, compile time function evaluation, insanely powerful compile time introspection/reflection, the ability to program at a very high level and a very low level in the same language.
  • PHP: Excellent integration with Apache and easy set up for web applications.
  • RealBasic: RAD, compile your applications down to machine code. No interpreter or virtual machine is required.
  • Visual Basic: verbose and intuitive even for children. I wonder if there is a possibility to talk-program via microphone.
  • Lisp: Macros, the idea of having first-class access to the language itself.
  • Python: List comprehensions, insanely powerful runtime reflection/introspection, metaclasses, duck typing.
  • Ruby: Blocks, metaclasses, everything is an object, First-class continuations.
  • Java: Inner classes, super efficient garbage collection. Proof that when you design a language for stupid programmers, you will end up with a stupid language, despite the fact that the people who designed the language are crazy smart and really should have known better.
  • C#: LINQ, Proof that when you design a language for slightly less stupid programmers, you will still only end up with a slightly less stupid language, despite the fact that the people who designed the language arecrazy smart and took Java's failure into account.
  • Haskell: Pure functional programming w/o mutable state, monads, laziness, purity, static typing to the max.
  • smalltalk: Pure OO language. The ability to override the compiler.
  • Perl: looks the same before and after encryption.
  • Clojure: transactional memory for mutable reference, built-in concurrency mechanisms
  • Erlang: Builtin actor system for message-passing concurrency
  • F#: Quotations (possibility: reflection of own code and self-compilation to shader- oder SQL), computation expressions
  • Prolog: Logical programming language. Built-in backtracking; A single predicate (function you write) can solve multiple problems depending on what parameters do you give it
  • LabviewCompletely graphical interface that allows you to manipulate hardware directly, but also program fairly high level tasks easily.
  • Assembly language: The ability to structure your program any way you like (including defining your own calling conventions, multiple entry points into a function), self-modifying code, complete control over the hardware.