php.org is written in ColdFusion

I just thought it was too surprising and funny not to post - http://php.org/ appears to be written completely in ColdFusion.

Doh!

A Few Thoughts About Various Programming Languages

In my role leading development shops, I am constantly having to learn and evaluate new programming languages and tools in order to keep us current as well as in order to discover better ways to accomplish goals. As a developer, I am also constantly learning simply because I want to get better at what I do, I love what I do, and learning new languages is a fun and rewarding undertaking. From time to time, someone writes a blog entry or gives a conference presentation about the importance of knowing more than one language... of not being a 'one trick pony'. I was reading Sean Corfield's recent blog post about Clojure and realized that I've never written about my recommendations or opinions of various languages that I've used or evaluated... until now. In no particular order, here are several of the technologies that I know and my thoughts about them:
  • Python
    • I've recently been spending a decent amount of time learning and using Python - it's very fast and powerful, and is syntactically one of the most concise and elegant languages I've ever seen... it's VERY readable and the more I use it, the more I like it. Python is definitely one of my favorite languages.
  • Java
    • I've used Java off and on since 1995, and somehow keep ending-up having to use it on projects from time to time. The language has gotten larger, faster, and for the most part, better over the past decade and a half - I found the language improvements in Java 5 particularly useful in that they clearly tried to make it easier to do what you want in your code. That said, I don't find Java programming particularly clever or challenging and on many projects I see, deployment is a terribly painful process. Java applications tend to have ridiculous file/directory structures and I'm not a huge fan of how strict it is. Java is everywhere and does have a huge job market, so it's worth knowing for those reasons... but it would never be my first choice of languages to use based on any merits other than the large talent pool and number of open source projects.
  • PowerShell
    • Powershell is probably the coolest new thing I've seen in a long time. For those of you unfamiliar with it - it's a fully OO scripting environment for Windows (runs on .NET) and is free from Microsoft. The syntax is slick and simple, and the power you can pack into a single line of code makes it a no-brainer for anyone who needs or wants to administer a Windows network or machine. With powershell, windows finally has a shell that's better and more powerful than those available on nix systems. Bottom line: if you use Windows you REALLY should learn Powershell.
  • PHP
    • PHP is yet another free technology - we use PHP and CF for most of our projects, and I like PHP a lot. A long time ago, some people called PHP "poor man's ColdFusion"... well, I think it's more true today than it was back then. It's simple, lightweight, and fast... and development times really aren't much longer than with CFML provided you're not trying to do something that CF does out of the box that there's no PHP module to do. I don't see it having many advantages over CF aside from price, the huge talent pool, and the number of open source projects. There's a good job market for PHP but those jobs don't typically pay as well, so I'd learn it because of it's popularity but I wouldn't choose a career focused exclusively on it.
  • Flex/ActionScript
    • I've used Flex since beta 1, and I enjoy seeing how it evolves with each new release. I don't particularly like programming with ActionScript for the same reasons I don't like Java - but unlike Java, I do love the end result you get with Flex... enough to want to do it. No technology to date that's tried to compete with Flash has been compelling enough to use in lieu. There's also a great job market for Flex - especially here in New York City, and it's one of the top 3 or 4 technologies I'd recommend learning to anyone who wants a successful web development career right now.
  • ColdFusion
    • I've used CF since the beginning and continue to use it heavily. It's not the best performing technology available but it performs well enough for most needs. No, it's not free, but development/debugging time is rapid enough to easily justify the cost. These days, CF's closed architecture and code base is a real turn-off for me personally, but it's the lack of talent (and the poor quality of most "talent") that is it's only solid turn-off from a business perspective. The native support for Flex is probably its most compelling unique feature... that, and it's rapid development nature. It's a good choice when you want a very robust user-friendly platform in a turn-key solution.
  • LISP
    • LISP is, hands down, personally my favorite language. Five or six years ago I set-out to spend 6 months of my free time teaching myself LISP, and I enjoyed it so much that I just never stopped. The syntax took a little getting used to, and emacs takes even longer to get used to - which is probably the most annoying part of learning LISP (I haven't found a better free IDE for LISP yet). LISP is beautiful in the simplicity of its design - most notably in the interchangeable nature of code and data. It is definitely the most expressive and flexible language I've used - as well as the most powerful. Be warned; it takes a while to un-train yourself and learn how to really harness the power of LISP (particularly of macros and, if you're new to it, thinking in functional terms). I also, surprisingly, find the implementation of OOP in LISP (CLOS) much nicer and cleaner than that of any other language. I strongly recommend learning LISP. Not because there's a huge job market for it (there isn't) but because it puts other languages into perspective and because it WILL make you a better developer (I've learned more from 'tinkering' with LISP than any other language).

So, those are the main languages I've played with and developed feelings for recently (within the past 2 years). It's worth noting that there are other languages I left off for brevity. I've also been getting back into JavaScript these days - I have a new appreciation for it's functional nature and closures, and I think JQuery is pretty slick. I've taken a pretty good look at Objective C - it's a decent language but not worth learning unless you want to do a lot of Apple development. I've also played around with Clojure - which is essentially a pseudo-LISP implementation for the JVM - I liked it, but prefer to use 'pure' LISP... though it's attractive being able to write LISPy code that I can run on a JVM, since Java is everywhere. There are a few other languages I haven't had time to take a good enough look at yet but hope to very soon. Specifically, I'm interested in looking at Scala and Caml... and I've begun learning some Haskell and hope to dig into that a little deeper.

Zend Releases PHP Application Server

Zend released a PHP Application Server beta today called "Zend Server" - http://www.zend.com/en/products/server/. It looks interesting, especially given the recent addition of AMF support to the Zend framework. I hope to find time to "play" with it in the very near future and, when I do, will post about my thoughts and experiences with the product. I'd also be curious to hear what experiences other people have with it.

How does this affect ColdFusion? To be honest, I won't be surprised to see some companies decide to use the Zend Server instead of CF - simply because it's PHP (not to say that there aren't some benefits inherent in that fact). That said, I don't see it as a technical competitor to ColdFusion because the decision to use one application server over another should be based on the features of that platform - the Zend Application Server appears to be a vanilla server out of the box whereas CF is integrated with dozens of features. Having support for these same features on the Zend Server would require writing or downloading the PHP code necessary for that functionality and then integrating it into the server environment. Of course, business decisions about software and programming languages aren't always based entirely on 100% sound technical merit.

If you're in the New York area, next month Ricky Robinett will be giving a presentation on Flex integration with the Zend Application Server at the New York Flex User Group (http://www.nyflex.org).

Ricky Robinett on PHP and AIR

Ricky Robinett, who is a Zend Certified PHP developer and an Adobe Certified ColdFusion Developer who works with me at Nylon Technology, has just published a great article about using PHP and AIR to power desktop applications. You have to shell out $3 to get the PDF (or buy the print copy when it is on the shelves next week) - http://phparch.com/c/magazine/author/294.

PHP Driven Flex Applications Finally Becomes a Reality

Zend just announced that they're collaborating with Adobe to make PHP-driven Flex applications easier to build. The major component to this is the addition of AMF support to PHP. Though I've been a long time and well known ColdFusion evangelist, I have been spending a lot of my time lately playing with and learning PHP... and I like it. A LOT.

It's also a solution I find myself recommending clients more and more these days. I'll discuss those reasons in another post, as I don't want to sidetrack from the big news. I'm very happy to see Adobe making PHP powered Flex applications an attractive and legitimate option for companies, and I'm really looking forward to see the applications that result as well as the impact this has on the adoption of Flex by organizations.

The Zend press release is online at http://www.zend.com/en/company/news/Press/zend-to-collaborate-with-adobe.

This site is hosted by HostMySite and runs off of BlogCFC - thanks, Ray.