scriptingcross-platform

What scripting language to use for utility scripts?


I am currently working on a large project and will relatively soon need a scripting language for utility scripts, like deploying the project in full from source, checking and fixing the database, building a ready to deploy bundle, and so on. The project is written in PHP and I thought about using it, but I dismissed that as not suitable for the task.

What I would mainly require would be, ordered by improtance:

  1. Portable across the top three OSs: Windows, Linux and OS X
  2. Lots of good libraries available, raging from file and directory manipulation to database access. GUI is not needed, though networking might be (download some stuff via FTP or HTTP). A big plus would be ability to natively checkout a Subversion repository.
  3. Good community support is required. Both Python and Ruby are excellent in this area.
  4. Extendability: if there is no good library available to do something, how easy is it for me to implement one or to use a native solution (execute a program, call a native function).
  5. Ease of deployment: how easy is it to get up and running on Windows (XP & 7, Server 2003+), Linux (CentOS 5.2, Ubuntu & Ubuntu Server 8.04+) and OS X (10.5+).
  6. Easiness of learning. While all scripting languages are not hard to learn for any programmer worth his salt, I'm interested in one that's rather quick and easy to learn.

That's all I can think of for now. I have reviewed Python and Ruby; Python satisfies all the requirements, and Ruby seems to as well, though I am not sure about ease of deployment on Windows and the availability of libraries. However, I am also looking for your experiences with using this sort of scripts written in the language of your choice.


Solution

  • You said it: Python meets all the requirements. That's my "vote" though I may be somewhat biased.

    Edit: (on my first hand experience, in the context of tasks described in question)

    A the risk of seeming either cocky or inexperienced, with regards to scripting-type activities, I've never painted myself in corner that Python didn't allow me to get out of.

    A possible "critique" of Python however is, somewhat paradoxically, its extensive package library (in addition to its generous standard library); while it's nice to have all theses "3rd party" libraries, it can be sometimes difficult to gage the maturity, and effectiveness of some of these packages, and one sometimes wastes some time selecting these (or deciding whether to write "from scratch"). Yet, such evaluations can be fast enough however, thanks to the interactive nature of the interpreter.