I'm very surprised that Javascript gets left out in the cold once  
again. Perhaps because the original article was written before many  
people were seriously looking at Javascript as a useful language,  
despite how widespread it is (there are more instances of Javascript  
compiler/interpreters than any other compiler ever made). The author  
also conflates object-orientation with classical inheritance: nobody  
would argue that Javascript is not object-oriented, but it does not  
support traditional polymorphism or classical inheritance.

Javascript offers a garbage collector, exception handling, object- 
oriented programming, functional programming and a highly-expressive  
syntax. It doesn't offer static type checking, but mainly because  
there are few real types in Javascript (those are Number, String, and  
Object) and deep type checking (checking what kind of object an object  
is) isn't part of the "Javascript way." Javascript instead relies on  
feature checking instead. It's the difference between asking "Is this  
a car? (And therefore I know it has wheels)" and asking "Does this  
thing have wheels?" In Javascript, not all objects of similar kind  
implement the same sets of methods because instance methods can be  
added, removed, or modified at run time by other parts of the code. In  
this context it would be unsafe to statically check the type of an  
object and make assumptions about its structure as a result; in the  
Javascript world, not all cars have wheels, so statically determining  
if an object is of type "car" means nothing.


On Oct 23, 2009, at 6:44 PM, Gary Johnson wrote:

> Howdy h4x0rs,
>  Here's a great article (a bit old but still very relevant) by a CS
>  Professor at Caltech which discusses many features of programming
>  languages that make them good (or terrible) for building programs  
> much
>  larger than a few hundred lines.  Some very good stuff here, and I'd
>  recommend it as fundamental reading for any of you who are still
>  wondering about the differences between programming languages (yes,
>  there are BIG differences).
>  Happy hacking,
>    ~Gary
>  P.S. Can one of you web guys add this link to the CSSA Resources  
> page?