I have fallen in love with several programming languages in the past, with C++ being the most dominate of them.
During the last years though, I have become a Python fan boy, trying to use it as much as I can, something that translates to use it almost everywhere except the rare cases that I have to rely to C++ strictly for performance reasons.
A programming language can be characterized by the following attributes:
– Standard library
– Community base, maturity and future potential
The ability to express algorithms classifies a language as imperative or declarative… A good example of an imperative language is C while SQL in the other hand is another good example of a declarative one.
Imperative languages tend to be verbose limiting their expessibility by polluting the code with low level details while declarative ones are allowing the programmer to be produce more compact code that is both easier to understand and write.
The Standard library of a language is another critical factor I am considering when choosing a programming language. No matter how expressive or fast a language is without a sufficiently extensive standard library will have to rely to third party implementations for things like data base access, XML parsing and network programming. Although from a purely theoretical perspective such an approach keeps the language lean propagating responsibility to third parties, which can either be an individual developer, a software development company or even the open source community, it is proven that such an approach might lead to a non standardized platform that suffers from multiple implementations resolving the same concept following slightly different approaches. This pluralism can lead to purely written documented and supported interfaces that in many cases can be accounted for the failure of a well designed language to gain popularity as for example happened to LISP and SCHEME.
Python’s Standard Library is very comprehensive and it design fits perfectly with its spirit while has almost the same feeling across the board… It covers data base, flat files, csv, xml, Unicode and almost everything that can be considered a ‘standard’ need minimizing the need for custom development.. The concept of a complete standard library is such a fundamental ‘pythonic’ concept that was nicked named as ‘batteries included’.