Ask Slashdot: Best Rapid Development Language To Learn Today?
An anonymous reader writes "Many years ago, I was a coder—but I went through my computer science major when they were being taught in Lisp and C. These days I work in other areas, but often need to code up quick data processing solutions or interstitial applications. Doing this in C now feels archaic and overly difficult and text-based. Most of the time I now end up doing things in either Unix shell scripting (bash and grep/sed/awk/bc/etc.) or PHP. But these are showing significant age as well. I'm no longer the young hotshot that I once was—I don't think that I could pick up an entire language in a couple of hours with just a cursory reference work—yet I see lots of languages out there now that are much more popular and claim to offer various and sundry benefits I'm not looking to start a new career as a programmer—I already have a career—but I'd like to update my applied coding skills to take advantage of the best that software development now has to offer. (More, below.)
Ideally, I'd like to learn a language that has web relevance, mobile relevance, GUI desktop applications relevance, and also that can be integrated into command-line workflows for data processing—a language that is interpreted rather than compiled, or at least that enables rapid, quick-and-dirty development, since I'm not developing codebases for clients or for the general software marketplace, but rather as one-off tools to solve a wide variety of problems, from processing large CSV dumps from databases in various ways to creating mobile applications to support field workers in one-off projects (i.e. not long-term applications that will be used for operations indefinitely, but quick solutions to a particular one-time field data collection need).
I'm tired of doing these things in bash or as web apps using PHP and responsive CSS, because I know they can be done better using more current best-of-breed technologies. Unfortunately, I'm also severely strapped for time—I'm not officially a coder or anything near it; I just need to code to get my real stuff done and can't afford to spend much time researching/studying multiple alternatives. I need the time that I invest in this learning to count.
Others have recommended Python, Lua, Javascript+Node, and Ruby, but I thought I'd ask the Slashdot crowd: If you had to recommend just one language for rapid tool development (not for the development of software products as such—a language/platform to produce means, not ends) with the best balance of convenience, performance, and platform coverage (Windows, Mac, Unix, Web, Mobile, etc.) what would you recommend, and why?
I'm tired of doing these things in bash or as web apps using PHP and responsive CSS, because I know they can be done better using more current best-of-breed technologies. Unfortunately, I'm also severely strapped for time—I'm not officially a coder or anything near it; I just need to code to get my real stuff done and can't afford to spend much time researching/studying multiple alternatives. I need the time that I invest in this learning to count.
Others have recommended Python, Lua, Javascript+Node, and Ruby, but I thought I'd ask the Slashdot crowd: If you had to recommend just one language for rapid tool development (not for the development of software products as such—a language/platform to produce means, not ends) with the best balance of convenience, performance, and platform coverage (Windows, Mac, Unix, Web, Mobile, etc.) what would you recommend, and why?
Python is a good language, but it can be a little tedious to do simple one-off text-parsing tasks. Regexes aren't first-class elements of the language. You have to know what libraries to import. And Python as a language has an ongoing, controversial split between Python 2 and Python 3 that makes myself and others a little uncomfortable. Having said that, there's a lot of good stuff going on in Python. It's a worthy language.
JavaScript, to me, is less worthy as a language. Yes, you "can do" pretty much anything in JavaScript (as you can with any Turing-complete language, meaning all of them), and yes, it has some desirable language features. But, it's typically hard to do simple things, at least if you want compatibility with older platforms. JavaScript has a substantial number of warts and language design problems. If JavaScript were a newly-introduced language, I think it would pretty much go nowhere. It's compelling because all the browsers use it, and because we now have some nice frameworks, like Node, that use it, and because of the browsers, some great debuggers and related tooling. Still, for quick programming of one-off tasks, I would not pick JavaScript.
I would give Ruby strong consideration. Although you can write complex, large programs in Ruby, including web apps using frameworks like Rails, the language is very well-suited to small text-processing tasks as well. Check out Practical System Administration Using Ruby.
None of these languages have a lot of the cool new language features that are coming out (it seems like) on a weekly basis lately. By this standard, they all seem a little backward. But these newer languages are almost always immature in important ways -- either the language is evolving too much, the docs are weak, there's not much community yet, they have no module system (gem/egg/CPAN) or a weak one, they're only good at a small subset of tasks, etc. In a few years, these languages might displace Python or Ruby, just as Python and Ruby largely displaced Perl. But the newcomers are not yet strong enough for that. In the meantime, Ruby or Python would make better here-and-now answers.