« Golfing in Emmett, ID | Main | Goodbye Bruce »

July 11, 2005

Finding a New Programming Language

I'm looking into changing to a new language for our web development. We're using Perl for everything; Perl modules for data access and business logic and Mason (Embperl in old code) for templating. As we've attempted to find Perl programmers to fill open positions, we have a hard time finding developers with solid Perl experience, or developers who are interested in working in Perl. This has prompted a lot of discusson about leaving Perl for a language that will give us a larger pool of people to work with.

The question is almost more about the longevity of a language than about it's technical merits, but we need to look at both. There's also an element of interoperability in that we'd like to be exchanging data with other schools and potentially bolt our system together with others. That suggests we'll need to look at language adoption trends etc.

I've started digging around a bit to see what other languages might be a good fit for our application. We've got 400+ Perl modules, and around 650 presentation pages (including Mason, Embperl, XSLT and CSS stylesheets). 104,648 lines of presentation code and 99,770 lines of object code. Java has been suggested many times over many years, and I suspect that upper management will push us in that direction unless we find something more compelling.

I ran across an article from the Journal of Defense Software Engineering and liked a few paragraphs that talked about system languages and scripting languages:

System programming languages (C, Ada, Java, C++, etc.) are designed to develop applications from scratch with the help of a few class libraries. Scripting languages assume the existence of the necessary components and quickly and easily join those components together to form a larger application. System programming languages have high overhead in terms of their structure (try writing a Hello World! program in Java). Scripting languages can do quite a lot with just a few lines. A single line of scripting code may execute hundreds of machine code instructions where a system language may only execute tens of machine code instructions.

Scripting languages will never replace system languages, as scripting languages are not very good at programming complex algorithms and complex data structures, or for manipulating large data sets. However, scripting languages have their own strengths, including easily connecting pre-existing components, robustly manipulating a variety of data types from a variety of sources, rapidly developing GUIs, straightforward text manipulation, and creating and executing code on the fly. Scripting languages are the duct tape of the programming world.

Scripting languages are still very young compared to system languages. In all likelihood, many more evolutionary improvements will be made to them to make their strengths even greater. We predict that the easy work of complex algorithms, elaborate data structures, and brute force processing of large data sets will continue to be accomplished by system programming languages. More and more reusable components and services will be constructed using systems programming languages. However, the more difficult part of programming, that of developing a robust, easy-to-use application that is easily extended and modified as requirements change and the operational environment varies, will become more and more the job of scripting languages. Both types of languages will continue to evolve, but toward their strengths.

So what kind of language do we need? In addition to finding something that will facilitate organization of our code base, we need the following functionality:

That's the initial summary, we're having a developer meeting tomorrow to discuss this very topic and to build a list of language requirements as well as get some initial pro/con ideas for different language options.

More to come . . .

Posted by mike at July 11, 2005 3:09 PM

Hard Drive Recovery Group offers hard disk data recovery services for RAID, laptops and servers. Complete clean room and hard drive repair service.

Trackback Pings

TrackBack URL for this entry:
http://mike.kruckenberg.com/mt/mt-tb.cgi/275

Comments

Assuming that you're already ready to pass on PHP and Python and their associated web frameworks and content management code bases, you might want to have a look at Ruby (www.ruby-doc.org) and the Ruby on Rails (www.rubyonrails.com) web framework.

Ruby's been around for a few years now and seems to have gathered enough of a developer community to hang on for a while.

Posted by: Bob Webber at July 11, 2005 8:47 PM

We use Cold Fusion @ U.Arizona. It can connect to a wide variety of databases and it can execute perl modules, so you could keep alot of your code. I don't think Macromedia/Adobe will be going anywhere anytime soon, so I think it is a safe adoption option. The scripting language has definitely evolved over time and it is pretty powerful.

Posted by: Matt Stoner at July 11, 2005 10:17 PM

Well,

To answer your initial concern about lack of candidates who are a) proficient and b) interested in working with Perl, I think that you would have the opposite issue with PHP. There are an enormous number of PHP developers out there (many of whom are admittedly amateurish). But as far as sheer number of developers, no other language will come close to it.

Java, IMHO, is complete overkill for most web-based projects. A scripting language like PHP will allow you to code up a project in a quarter of the time and a quarter of the number of lines of code. Less lines of code, less bugs. Period. PHP will also be faster than Java (proven over and over again) when combined with a good accelerator like Turck MMCache.

As for all the stuff in your list of needed functionality, PHP provides all of those and more, with the PEAR library, Eclipse for PHP, ADODB, Metabase, Smarty for templating and more... plus a lot cleaner, more intuitive interface than Perl for doing object-oriented coding. Though PHP's object-oriented capabilities are clearly less developed than Java's, you will rarely see a need for anything more than PHP offers.

Just my 2 cents.

Posted by: Jay Pipes at July 24, 2005 10:21 PM

Maybe you should take a look at Python(http://python.org/) or REBOL(http://rebol.com/). In my opinion, you should loook at using another systems language for handling system calls.

Posted by: Vaibhav at August 16, 2005 11:35 PM

Post a comment




Remember Me?