An interesting article at SitePoint.com on programming languages caught my eye while trolling through various sites. (I’ve been on a Python kick lately as it’s a language I’ve always wanted to learn but haven’t had time.) It occurred to me in reading Craig Butler’s article that there may be times where ChurchMag readers might be interested in building decent web applications for their churches and ministries. But if you’re a newb or maybe a computer science student still in your first year, perhaps a volunteer with a limited budget, this can be a daunting task.
I’ve written a lot of applications in myriad languages. I’ve worked with Java, perl, PHP, C++, C#, Visual Basic, JavaScript, and more variants of SQL than I care to count. So when it comes to making a decision about what to use to solve a particular problem, I give careful consideration to the language that will best serve the needs of those for whom I’m doing the work. We can call them stakeholders for the sake of this context.
Programming Languages Overview
The trouble is, you’d be hard pressed to mix and match technologies for the applications within your churches and organizations, particularly when it comes to the web-based stuff. So which way to go? While I’d love to say you should dabble with all of them and make your own decision, I realize that’s unrealistic. So I’ll highlight those on the list in the referenced article from top to bottom that, in my opinion, are the best choices for churches and other non-profit organizations.
PHP
This is a server-side, fully object-oriented programming language and arguably the most used across the WWW today. It’s relatively easy to learn for those of a mind for it, but it’s a lot of work to implement in custom programs, and it can suffer from “spaghetti-code” syndrome. It’s able to talk to a wide range of databases (e.g., MySQL, NoSQL, SQL Server, PostgreSQL), however, and the support community out there is tremendous. It’s also free to download and use, and when you get the bundled packages like XAMPP or WampServer that makes it much easier to test and learn before you try to publish to a web server. It’s also the platform of many different blogging engines, including the ubiquitous WordPress.
JavaScript
With the advent of powerful libraries (e.g., jQuery, node.js), there’s little doubt about the value of using JavaScript in your web-based applications and websites. It’s no longer the bane of web development as it once was, having that dubious reputation for being clunky and difficult to work with. While at times JavaScript personally frustrates me it’s very easy to learn and can provide you with just about everything you need to deploy your content to target audiences. You also don’t need any special editors or other tools to get started using it, and the amount of free information on how to write JavaScript borders on the absurd. I do recommend if you use a lot of JavaScript in your sites that you at least run it in Mozilla Firefox and utilize the Firebug extension to help you with debugging.
Python or Ruby (on Rails)
Let me begin with the caveat that I know just enough about these two languages at this stage of my career to be dangerous. Nonetheless, I have tinkered with them enough over the years I believe I can speak sensibly about them. I rank them together because in very many ways they seem to be about equal in their features, sustainability and ease of use. Python is a programming language written by Guido van Rossum and one of the strongest arguments for using it is the excellent community support. On March 23, 2013, Python 2.7.4, was released for community testing but the most current stable versions are 2.7.3 and 3.3, respectively. Ruby on Rails seems like one of those web platform frameworks that bodes a love-hate relationship with developers; that is, some developers hate it and others love it and wouldn’t think of using anything else. Like Python, it has a great community that’s friendly and receptive to newcomers. I didn’t find it as easy to learn as other languages but here’s a pretty good site to get you started.
ASP.NET (C# or Visual Basic)
I found it difficult to rank ASP.NET at the bottom, being that’s been my home turf for the past eight years. Unfortunately, it’s not as practical for newcomers. You can use either C# or Visual Basic to program ASP.NET websites. While Microsoft has really raised the bar on encouraging widespread adoption of this technology through a combination of advertising, free licensing of tools through Webspark and Devspark, Visual Studio Express Editions, and (most recently) WebMatrix 2, I still can’t recommend it as the #1 candidate for churches and non-profits. There are two reason: learning curve and the cost of hosting plans (although the latter has improved in recent years). The complexity of integrating utilities like AJAX, PowerShell and IronPython are also considerations.
Summary
You may to play around and find what interests you or even what will suit your needs. Whatever your choices, thoroughly investigate to find out what you’re getting into. And if you can get most of your work done using a turnkey solution like a content management system (CMS) or even a WordPress blog, I’d highly recommend you go down that path first.
P.S. I found the list in the reference article I used for this post quite interesting in contrast to our venerable editor‘s post from 3 years ago.
Raoul Snyman says
PHP is brain dead. I was a PHP developer for more than 5 years, and I’ve used it across a number of projects. I always knew it is a brain dead language, but it was only when I started learning Python that I learned how truly brain dead it is. Avoid PHP if you have any say in your sanity.
Python is quick and simple to pick up, it is straight forward to develop in, but it is extremely powerful. This is why companies like Dropbox, Reddit, Industrial Light and Magic (the guys who did the effects for Star Wars, Pirates of the Carribbean), Pixar and others use it.
A great tutorial to get your teeth into Python is A Byte of Python[0]. This tries to take you from beginner programmer to sufficiently capable in Python, and is truly a great book. It is FREE!
So, from a PHP veteran, my advice is to drop PHP and use Python instead.
[0] http://swaroopch.com/notes/python/
Jon Guenther says
Thanks for your comments, Raoul. I, too, am a PHP veteran and now an ASP.NET veteran (and quickly working my way through Python/Ruby simultaneously). And while I agree that Python is a great language to learn and have in your toolbox, I can’t agree PHP is “brain dead”.
It’s undisputed that PHP holds a pervasive lead in the industry. As far as easiest languages to learn, I think Python has a steeper learning curve, especially when you consider having to learn all the inner workings of a full-stack web framework (e.g., Django, web2py, Zope2, etc) on top of it, if you want to develop web apps.
Based on much of the above criteria, I still maintain PHP (despite its web-only implementation) is the best place to start for its global influence, ease of setup and ease of learning/community support. But let us also consider the wisdom of learning several of these languages, particularly for those in the professional setting.
As Bjarne Stroustrup (creator of C++) once said in an interview, a programmer should know at least 5 languages if he or she wants to be considered a professional. I’d say that gives all of us plenty of wiggle room. 😉
Brad Rhoads says
I’m a big fan of http:///www.grails.org. “Grails is an Open Source, full stack, web application framework for the JVM. It takes advantage of the Groovy programming language and convention over configuration to provide a productive and stream-lined development experience.”
Jon Guenther says
Thanks for the information, Brad. That one’s new to me and I’ll have to play around with it. I was also introduced recently to another framework called Pyramid. You can learn more at http://pylonsproject.org.