Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 233
CMircea Avatar asked Feb 28 '10 07:02

CMircea


6 Answers

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)

  • I have no experience with building releases from Python (I find Ant or even Make a better tool for this particular task).
  • "Messing" with databases : a breeze !
  • Moving files around, inspecting directories etc. : a breeze!

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.

like image 157
2 revs Avatar answered Sep 28 '22 07:09

2 revs


Ruby is decent, but python is excellent. Python comes with great documentation, is easy to learn, has a large community, sports a very useful standard library, will be pre-installed on most unix-like systems, and is not too painful to install on Windows.

like image 39
A B Avatar answered Sep 28 '22 07:09

A B


Python is a great scripting language and very portable. It's my choice when portability of my scripts is the main issue.

But portability is seldom my main issue. Most of my scripts deal rather intimately with OS issues. So when I know I'm running on Windows and may not have python available, I use JScript under Windows Script Host.

like image 35
John Knoeller Avatar answered Sep 29 '22 07:09

John Knoeller


http://ant.apache.org/

I use it for both Java and PHP projects. And to answer to your points:

  • portability: 100%
  • libraries for db, networking, i/o, svn: yes, some are built in, for the rest you use extensions
  • community: many books and online resources
  • extendability: yes, ant was designed to be extensible
  • installation: dead easy
  • easiness of learning: pretty easy
like image 32
cherouvim Avatar answered Sep 28 '22 07:09

cherouvim


Python, without a doubt. It meets all of your objectives and has the benefits of being concise and easy to learn.

like image 44
Miles D Avatar answered Sep 27 '22 07:09

Miles D


iconiK,

This answer is only peripherally related to your question, but you're gathering more information than you need to solve this problem. Your analysis and preliminary research are pretty impressive, and the cost of postponing your decision is higher than the marginal value of Python over Ruby or vice versa.

I am also looking for your experiences

My experience is that there's a limit to the amount you can learn about a technology through research, and my gut tells me you've already reached that limit. You'll be better off if you stop researching and get on with your project. If you can do a small pilot project, that will be great, but if not, you are at the point where you will learn more by just diving in than you can possibly learn by asking questions.

Probably my most recent salient experience is that in 1999 I had to decide whether a major compiler project would be written in Objective Caml or Haskell. We choose Caml, and there have been many times I wished I had chosen Haskell, but in fact in 1999 Caml was probably the better choice, and certainly we did a lot of good work with that compiler. The worst choice of all would have been to wait to gather more information.

I think the other lesson here is that because no technology is perfect, whatever technology you choose, you will have regrets. Just because you have regrets does not mean you made the "wrong" choice.

Code in good health!

like image 27
Norman Ramsey Avatar answered Sep 29 '22 07:09

Norman Ramsey