It’s time for a rant on dynamically typed languages.
Frankly, I’m embarrassed by the state of scripting languages these days.
I can’t recommend any of them to new programmers. Each has had their moment in the sun, usually shortly after the previous reigning scripting language has gone off the deep end.
Perl has long gone the way of esotericism, and if you’re interested in asking yourself (over and over again) — what is an object really, it’s a good language to revisit from a purely academic standpoint — or if you’re stuck at Amazon or maintaining an old media web site.
PHP frameworks struggled to catch up with Ruby on Rails, but I defy anyone to start with Rails as their first framework nowadays.
I’ve never tried Laravel, but PHP has made strides for improvement but it’s probably too late, with too ugly of a codebase to move forward.
Ruby refuses to test on anything but a Mac and is no longer supported on Windows (or operable with MySQL or SQLite or MongoDB on that platform). It’s pretty much a free for all on Linux. And while gem, bundler, rake, capistrano, less/compass, sinatra, etc are all nice tools, they should not be required for hello world. And unless talk like Yoda you do, read well it does not.
Python has always had the sore thumb of whitespace issues — suprise! people still cut and paste code from the internet. And suprise again! it’s in plain text, not your favorite editor’s in memory document map. Python has also had Ruby envy and a proliferation of tools. Pip is almost as easy to use as easy_install and almost as well supported. But watch out for Python 3, and beware of 32/64 bit compatibility across libraries in this text-based scripting language.
But creating cool apps fast got boring faster. Npm was a great package manager — only it only worked on the server. So create a different standard on the browser — or two or three. And use br^H mungify to convert! But then, why not use grunt, yeoman, and bower to really abstract the word “require” which really just does a good job of reading files into the interpreter.
And port every one use tool from ruby with a different syntax.
Scala — you could have been the next big thing. Optional dynamic typing — but maybe Groovy proved how hard it is to be a scripting language on the JVM and still have performance. So instead, you try as hard as you can to tell people you can only program Haskell in Scala.
Okay, I’m done ranting. Time to get some work done.