From PHP to Perl: What's hot, what's not in scripting languages
- 18 October, 2011 02:43
Scripting languages are the hot technology today for application and Web development -- no longer the backwater afterthought of the early days running in a pokey interpreter. Nor are scripting languages any longer merely the tool used for quick-and-dirty patching (someone once called Perl the duct tape of the Internet, and it stuck so well that Perl lovers wear the label proudly). No, today, scripting languages are popular for "real" programming work. In fact, entire systems and large-scale enterprise-grade projects are built from them.
To confuse matters more, many so-called compiled languages are now bundled with just-in-time compilers that make them as agile as scripting languages. First, Java got Java Server Pages, allowing programmers to tweak Web pages just like PHP and Cold Fusion programmers could. Lately Java programmers have been using Groovy, a language that's structurally integrated with Java and runs on the JVM. The main draw? It has more of a scripting language syntax.
[ Find out which 7 programming languages are on the rise and verse yourself in the 12 programming mistakes to avoid. | Keep up on key application development insights with the Fatal Exception blog and Developer World newsletter. ]
Not-hot scripting language: ActionScript
The iPhone remains a challenge for Adobe and ActionScript lovers. Apple's long resistance to the platform means that ActionScript authors can't write ActionScript and expect it to work in the iPhone's browser. Of course, that doesn't mean the platform is completely closed. The clever programmers at Adobe built a "packager" that turns the ActionScript in Flex and AIR bundles into something that runs in a native app.
Will this be enough? A startup called Ansca also makes Corona, a framework for building iPhone apps that uses Lua, a language the company promotes as being very close to ActionScript. The ideas live on even if they're not called exactly the same name.
Not-hot scripting language: Perl
This former giant laid the foundation of some of the best sites on the Web -- one of several accomplishments that earned Perl its worthy comparison to duct tape. Slashdot, the trendsetting blog, was coded in Perl more than 14 years ago. As the website grew, and stayed up, people began to realize that C++ was not the only way to write fast code.
There are numerous practical indicators of Perl's fading from its heyday, but one of the most prominent may have been the lack of success for MovableType. The tool was one of the first content management systems, but its first-mover enthusiasm didn't translate into a flood of plug-ins. Some might point to MovableType's architecture, but Perl should share some of the blame. Other CMSes, like WordPress, get 35 times as many searches on Google Trends. Is it any wonder why people are spending plenty of time on the forums asking how to embed PHP code inside a MovableType template?
The long downward trend is also found in searches for the language itself. The word "perl" may be one-tenth as trendy on Google as it was only eight years ago. (Search results are normalized according to worldwide traffic, so the rise in overall traffic exaggerates the dip.)
To make matters worse, it's harder and harder to find the latest State of the Onion talks online. In the early years, these discussions were touchstones for developers, with some enthusiasts reading them like dispatches from the Kremlin to decipher hidden indications about how the next version of Perl might behave. Others read them for the jokes, which Larry Wall, Perl's creator, includes in a way that is not very Kremlinesque. No one seems to have transcribed them, and furtive searches reveal little. To make matters worse, sites like Perl.org don't even seem to offer search.
Hot scripting language: Python
In a sense, the tipping point for Python came when the housing market crashed.
For those stuck trying to decode bond market prospectuses to figure out who got paid what when the bankruptcy dominoes were done falling, one thing became clear: English is a weaselly language, and some weaselly folks revel in its ambiguities to profit from complicated derivatives.
Enter one smart group that offered a compelling solution: Force every bond to come with a Python program that defined who got paid and when they were paid. While they may have been a bit too hopeful about the power of computer languages, the proposal spoke to Python's growing acceptance in the greater world of smart people who aren't computer geeks. Relatively easy to pick up, Python is becoming increasingly popular in economic research, science departments, and biology labs.
The popularity of Python has been noted by O'Reilly Books, which groups Python with top-selling languages like Java and C. Web searches like "python -monty" show healthy trend lines, and searches for the Python-based CMS "django -jazz" are rising, albeit not as fast as better-known tools such as Drupal or WordPress.
No doubt Python's appeal to the casual programmer is its lack of brackets. While many long-term programmers have grown used to letting the editor handle indentation, Python uses it to signify the beginning and end of blocks. Whatever the reason, it's easy to find Python lovers who prefer indentation over brackets.
Lukewarm scripting language: Ruby
Yukihiro Matsumoto developed Ruby way back in 1995 because he wanted to do his system chores with objects instead of just strings. But the language that marries the structure of object-oriented programming with the quick and easy development cycle of scripting didn't really take off until 2004, when David Heinemeier Hansson added the Rails database access layer and produced Ruby on Rails.
These days, most Ruby development consists of website prototypes crafted with Ruby on Rails. Ruby without Rails is rare, but that dominance is starting to crack, thanks to Web frameworks like Sinatra, as well as Matsumoto's focus on flexibility and agility.
This agility is perhaps most evident in the Ruby Gems repository of open source modules. By December 2010, the Ruby community reported it was adding 18 new modules to Ruby Gems a day, a pace that meant it would surpass Perl's CPAN collection within weeks. The most popular modules continue to be ones like Rack for juggling HTTP requests and mime types, a tool for wrapping the data delivered over the Web with the right tag.
Ruby programmers have many of the latest platforms available to them. Heroku, for instance, is a leader in Ruby hosting, and many people continue to run Ruby wherever Java's JVM can operate through the magic of JRuby.
Ruby's syntax is remarkably clear of punctuation. The structure is simple and direct. The biggest strength may be the Rails framework's idea of coding by convention, a bundle of assumptions that saves the programmer a number of hassles like aligning objects with database tables. This idea has been adopted by Java programmers who used a Ruby-like dialect with the JVM to build Grails.
Hot scripting language: Scala
If its use by high-profile startups is any indication, then Scala is on the rise. Running on servers at Foursquare and Twitter, this functional language brings type-safety to the JVM, meaning it can run wherever the JVM works, including Android phones.
Scala is bound to attract more attention as people begin to unpack the lessons from Node.js. Much of the speed and success of Node.js are due to the way it brings a functional programming approach to a stripped-down processor.
That said, the book market suggests that Scala could remain a niche market. Only time will tell whether the general developer populace will follow their startups' Scala lead, but the language shows growth potential among the more experiment-minded set.
Hot scripting language: R
One of the more obscure languages to attract attention lately is R, a tool for compiling statistics. This shouldn't be surprising, given the increasing attention being paid to the terabytes of data sitting around on servers just waiting for someone to try to make some sense of the bits.
The language is a nice collection of classic scripting features borrowed from Lisp and mathematics, married to a large set of routines for statistical analysis. You suck the data into big matrices, then push the button; out comes linear fits, graphs, and other analyses.
The biggest news lately has been two parallel efforts to compile R instead of interpreting it. One, Rcpp, converts R into C++ and pushes the resulting code through a C++ compiler. The other compiles R into bytecode inside the interpreter. Both dramatically speed up the results.
My favorite detail is the way that some clever scientists have hacked R's routines into LaTeX so that you can start with raw data and build the final document. Some call it "reproducible research."
Hot scripting language: PHP
Judging by book sales, you would think that PHP's heyday was done, as PHP book sales dropped 25 percent from 2009 to 2010.
But a collapse in interest in learning the finer points of PHP is not the same thing as a collapse in PHP use. If anything, it seems to suggest that the platform is quite stable and there's no need to crack the books to learn something new.
The major Web platforms continue to be written in PHP, and if anything, their domination is growing. WordPress, Joomla, and Drupal still attract new developers, and they're all written in PHP. Django, an excellent Python-based framework, continues to lose ground against them in terms of Google Trends search frequency, with WordPress receiving seven times as many searches as Django (minus "jazz," of course, to reduce the effect of the framework's namesake, Django Reinhardt, on trending search results).
A quick scan of the PHP change logs reinforces this stability. There's a nice, reassuring stream of lines that begin "Fixed Bug" and just a few that begin with "Implemented Feature Request." What new features there are seem less aimed at developers and more at helping the server maintenance team with better dashboards and performance.
Newbie scripting language: Java
Scripting purists will look at Java, point to the existence of javac, and say it doesn't belong in the same pile as the simple-to-debug languages mentioned above. Perhaps that's true, but the Java ecosystem is changing, as more and more Java programmers have taken one look at the cool ideas from the scripting world and copied them.
Grabbing ideas, of course, is fair, and the Java world often improves them. Grails, for instance, offers much of the flexibility of a scripting language with the foundation of the JVM. Java Server Pages are so old that people forget them, but the standard server containers for Java all have the compiler built in.
I'm waiting, though, for the Java community to jump on the Node.js bandwagon and write their own unthreaded container that sits on the port and directs the messages to the right object. In the right hands, the performance could be amazing.