Slashdot Mirror


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?

60 of 466 comments (clear)

  1. Clojure ? by boorack · · Score: 2

    With ClojureScript it now covers both client side and server side.

  2. Programming language in 2 hours ? Yeah, right. by Anonymous Coward · · Score: 4, Insightful

    You have never been able to learn a programming language in a couple of hours.

    It's just that some languages manage to trick you into thinking you can - and then those of us who actually do know what we are doing have to come along and fix the resultant mess.

    In answer to your actual question, my first suggestion is Python. It's used everywhere, not only on the Internet, but also as the scripting language in a wide range of traditional type applications.

  3. Python + Qt by CQDX · · Score: 5, Informative

    With Qt you can develop for desktop or mobile, with a GUI or not. With Python you can do simple scripting all the way up to full-blown apps. Once you become familiar with Qt you can also fallback to C++ if you need the performance. You also have the option using Qt's GUI as traditional widget or Javascript based Qt Quick.

    1. Re:Python + Qt by MrEricSir · · Score: 3, Interesting

      I'd second the QtQuick recommendation. What I like about it is you can easily slap together a standalone UI prototype and worry about the backend later.

      --
      There's no -1 for "I don't get it."
    2. Re:Python + Qt by rmarshasatx · · Score: 2

      I absolutely agree with Python for programming most anything, Qt for GUI, and Javascript so you can use packages like D3 for anything visual or Mapbox for maps. You can pick them up to the detail you need.

  4. Re:Python by buchner.johannes · · Score: 5, Informative

    There are two possible answers to the question: Python and Javascript.

    Python is a general-purpose language, with a large number of user areas. It is your best bet for general applicability.
    However, if you want to aim for the web market -- which, granted, is huge -- go with Javascript.

    That's pretty much all you need to know to make your decision.

    --
    NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
  5. Re:What's wrong with html and javascript? by PolygamousRanchKid+ · · Score: 5, Funny

    javascript takes about 17 minutes to learn --

    . . . and 17 hours to debug . . .

    --
    Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
  6. Re:Python by mrvan · · Score: 3, Insightful

    Python: 'Nuff said

    +1

    Python is quick to learn, portable, has great libraries, both the standard-library and frameworks such as django and sqlalchemy. You can use it OO or more "imperatively", and it has some great primitives for functional-style programming. It is easy to use in a command-line script sense and just as easy to use in a web (backend) role, from very lightweight flask to all-bells-and-whistles django. The documentation and community are also suberb, and you can find a good answer to almost every question online.

  7. C + Lua by Kensai7 · · Score: 2

    Since you already know C, you good get really fast Lua. Lua with C (and C-like) libraries will lead you fast to productivity.

    --
    "Sum Ergo Cogito"
  8. Re:Python by petes_PoV · · Score: 5, Insightful
    Did you forget to read the post?

    The guy says:

    I'm not looking to start a new career as a programmer—I already have a career

    So forget a strategic language to base a career on, he just wants to get stuff done

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
  9. I agree Python by Joe+Tennies · · Score: 5, Informative

    My vote is for Python. My reasons are that it'[s very good for the rapid part. There's also tons of libraries to do darn near everything under the sun (see pypi.python.org). Finally, one thing in their mantra is that readability counts. This means that you can pick up your project several months later and know what it does... maybe even someone else's! Try doing this with Perl or Ruby, and it's much harder.

    Python works quite well on the UNIX like systems, decently on Windows, has good command line helper libraries (argparse or optparse), and has several really good web frameworks. Heck, you can use IronPython or Jython and mix into your .NET or Java code!

    The biggest weak point is probably full GUIs. It's not that there's not any good ones, there's just not a good default one. TkInter is built-in, but it's based on Tcl/Tk, the interface isn't very Pythonic, and the end result isn't great. WxPython is good for a basic GUIs, but adding custom widgets is hard. PyQt and PySidehas a more complete collection of widgets, but it again is tough to add new widgets. PyGTK has the large collection of widgets, and widgets can be written in Python and become first class widgets even in other languages. The new kid on the block is Kivy, which is kind of like QML for Python. Kivy defines very low level functionality that builds up widgets, but it makes it easy to combine them together to make a complete widget. This sounds like a lot of work, but it turns out to not be as bad as you'd expect.

    Also, PyDev, PyCharm, and WingIDE are all pretty amazing IDEs for Python.

    Finally, there's a good amount of jobs asking for Python, especially in big cities.

    1. Re:I agree Python by Anonymous Coward · · Score: 2, Informative

      Like the OP, I also came up through university when everyone was learning Lisp (mostly Scheme) and C. Early in my career, I did a lot of distributed systems programming in C, and far too much scripting in SH for both multi-platform build systems and actual runtime systems (monitoring, data reformatting, etc.). I made a transition from developer to architecture/management roles and then eventually found my way back to a kind of mentoring and special projects role where I do a mix of rapid prototyping for new products and also one-off stuff where the outputs matter more than the resulting code. I reevaluated a lot of my background, skills, and biases throughout this period and have become pretty mercenary in how I choose tools.

      I can also endorse Python for the OP's needs. You don't need to, and shouldn't, use it where a bit of BASH would suffice. You also need to realize Python diverges from Lisp in quite a few regards, so be willing to learn and adapt to its quirks. But it serves a nice purpose for that step where you wish you could apply an obvious algorithm or data structuring method that is beyond a line-record data stream, yet you don't have an existing C framework nor the budget/priorities to develop one yourself. In Python, you can quickly import a few existing modules and evaluate their fit your problems, getting the value of scripted/dynamic prototyping that is hard to accomplish using C. An IDE or even just the basic read-eval-print loop is very useful here. Usually, the available Python bindings for different packages are well-designed enough to easily mix-and-match in ways that would require vast amounts of glue code or data restructuring in raw C.

      I've gotten a lot of mileage out of Python for cleaning and pre-processing CSV and JSON datasets, using the obviously named "csv" and "json" modules. I've more recently been using numpy and scipy modules to do numerical work and image processing experiments, where we needed some preliminary results to decide if and how to pursue more funding and launch a new project at work. In a few cases, I've shifted from CPython to pypy runtimes to execute a particular CSV or JSON data-processing step at scale, also mixing in bits of BASH to run parallel work on different data files, etc.

      However, if you are doing very much manipulation of tabular data, I'd recommend learning a bit of SQL too. It is very easy to use Python for pre-processing to load data into a temporary SQLlite or PostgreSQL database and then use SQL directly to do the heavy-lifiting of data analysis. If you have to do statistical work on large datasets like this, also take a look at MADlib, which is a very interesting integration of PostgreSQL, Python, and C libraries to do a range of standard methods on large tables within the database. For example, principal components analysis (PCA), k-means clustering, and other data-mining/statistical methods become simple SQL queries using stored procedures defined by the MADlib package. I've used these on tables with 100M to 1B rows to good effect.

      These things all give you the flexibility to compose new data pipelines, in the spirit of BASH/sed/grep/awk, but with more complex data formats and more intensive processing at each stage. You don't have to dump all your systems/architecture thought processes if you view them as a larger set of tools to integrate into a pipe. You just replace the basic Unix line-record stream with structured data files and/or database connections. However, you need to develop the ability to recognize and steer clear of the framework/stovepipe cults that seem to exist with all the newer programming languages. There seem to be a lot of people who want to build "pure" environments that disavow all methods from outside and suffer serious second-system effects, and this creates a lot of false leads when you are searching the web for tools and techniques.

    2. Re:I agree Python by Coryoth · · Score: 3, Informative

      I've gotten a lot of mileage out of Python for cleaning and pre-processing CSV and JSON datasets, using the obviously named "csv" and "json" modules. ... However, if you are doing very much manipulation of tabular data, I'd recommend learning a bit of SQL too.

      You may want to look into pandas as a middle ground. It's great for sucking in tabular or csv data and then applying statistical analysis tools to it. It has a native "dataframe" object which is similar to database tables, and has efficient merge, join, and groupby semantics. If you have a ton of data then a database and SQL is the right answer, but for a decent range of use cases in between pandas is extremely powerful and effective.

  10. Re: Python by rubycodez · · Score: 4, Interesting

    python has threads; no one cares about your definition of "correct print statement" since it always could print; Python has libraries for specific data processing that needs to be done very quickly, but the truth is 90% of a program won't be dedicated to that

    What Python does have that makes it good candidate are mature libraries for all the use cases mentioned (web, server scripting, client gui, etc.) So does Perl 5, and to lesser extent Ruby has good libraries though not nearly as encompassing as either Perl 5 or Python

  11. Re:Python by rubycodez · · Score: 3, Insightful

    the current craze of using javascript for other than embedded in web page is just passing fad, it does not have the mature libraries of other languages to be general purpose. No one is going to write Linux configuration/admin systems in javascript, nor making general purpose cron jobs. Python and Perl and Ruby excel at that sort of thing, on the other hand.

  12. Scala by bunratty · · Score: 4, Informative

    I've preferred Python for small projects and Java for larger projects. I like Java, but it's so verbose that it's annoying to write short programs in it. I've been learning Scala over the past few months, and it looks like it combines the best of both worlds. Programs are much terser than they are in Java, often looking more like what I would write in Python. But Scala is typechecked like Java is so you see errors at compile time rather than when conditions are right to trigger a problem as in Python. Scala also runs on the JVM, so it's fast as opposed to Python.

    --
    What a fool believes, he sees, no wise man has the power to reason away.
    1. Re:Scala by Phillip2 · · Score: 2

      "Scala also runs on the JVM, so it's fast as opposed to Python."

      This is so wide of the mark that I had to comment. The JVM is a fast virtual machine, but that is a poor benchmark. Java and Python run at roughly equitable speeds, but where Python wins out is that it has a much stronger interface to C or Fortran. For hard core number crunching, python wins because you can either call existing scientific or numerical libraries, or use tools like numpy which do the stuff that needs to be fast in C.

      Phil

    2. Re:Scala by styrotech · · Score: 2

      Scala also runs on the JVM, so it's fast as opposed to Python.

      It's probably wan't your intention, but you make it sound like it is the running on the JVM part that makes Scala fast, rather than Scalas design and implementation eg static typing etc.

      By itself, just running on the JVM is not some magic fairy dust that's enough to make highly dynamic languages run like Scala. ie most of the time Jython is actually slower than CPython.

    3. Re:Scala by Anonymous Coward · · Score: 2, Interesting

      Scala is the language that came to my mind as the counterexample to a "rapid development" language. There are other functional languages just as terse (or even moreso) that do not suffer from Scala's slow compilations and strict typing (two other big factors for rapid prototyping).

      The best rapid development language has got to be Perl. I would even say, yes, do consider learning it (even today). It shines at small one-off scripts but also scales extremely well to large projects. The Perl community has also managed to maintain the fun "hacker" culture that is so-obviously missing from the "Enterprise" languages (esp. Java and, to a lesser extent, Scala).

    4. Re:Scala by epine · · Score: 2

      I'm presently reading Assholes: A Theory by Aaron James, a surfer-dude professor of philosophy from Harvard University trying to cash in on the On Bullshit surge, which sold surprisingly well for what it is. I don't totally agree with Mr James, but there are some great passages. We'll see after I finish the book.

      That just screams "Ruby is dog slow".

      Sorry, that screams asshole entitlement—but maybe just because I was reading that book yesterday evening, and having a shiny new book is a lot like having a shiny new toy.

      At least we have a new snowclone: Three-word-cliche The-Shit three-word-cliche. Interesting, both "just screams" and "dog slow" are high on the list of the asshole lexicon. We all know it when we hear it.

      Many scripting languages appear to be almost as fast as C not because it came easily (it never does with a scripting language) but because immense amounts of talent and clever optimizations were poured into the brew behind the scenes to perfect this illusion.

      This isn't so different that the story of x86 vs ARM. x86 is reviled for having one of the worst instruction sets of all time, and after thirty-five years it's still holding its own. How many technologies born in a gutter manage that? True, Intel has poured more ingenuity behind the scenes to enable this illusion than any sane person wishes to contemplate. If Borges were an engineer, he wouldn't have written El inmortal, he would have just killed himself.

      Nevertheless, bottom line, x86 is NOT dog slow. Aren't you happy they care? Is your little world complete now? I personally don't think the standard for inventing a useful scripting language ought to be Nelson Mandela's eighteen-year term breaking rocks in a rock quarry so that some entitled asshole enjoys the perfect crunch on the flower paths of his estate garden. Why should it be, when it's a simple matter to just call out to C or Boost when the need arises? No wait, that's what you hate most. That's the dog that cries slow in the night.

      Awwooooooooooooooooo.

      My how that sound chills the soul.

  13. Re:What's wrong with html and javascript? by Splab · · Score: 2, Informative

    Are you insane?

    There is no way your shot-gun approach to debugging is ever faster or better than dropping JS into a debugger; having something like intellij hook into your browser and debug your code running in an IDE is by miles better and faster than what you suggest.

    Especially if you are doing something difficult and not just trying to load an ajax request...

  14. Re:Seriously? by mrvan · · Score: 5, Insightful

    Maybe you should leave the coding to people who actually know what they're doing? If you're just a 'dabbler' then your code will always suck in every language and 'real' coders will smell it a mile away. Looking for the latest, greatest, buzzword to add to your resume will not improve your skills.

    I really disagree with this. I think everybody who touches computers and data for a living (and who doesn't, nowadays?) should know some essential programming. They might never use it, but they'll understand so much more on what is going on.

    I am very far from a car geek, but I can point to the basic components of my car and has some clue about what they do; same for small jobs around the house, basic management skills, etc etc.

  15. Global Interpreter Lock by tepples · · Score: 3, Informative

    CPython threads are made for nonblocking I/O. Its memory management model puts all of a process's reference counts behind a Global Interpreter Lock. To do multiple CPU-bound things, you have to shortcut the GIL by using multiple processes. Python provides tools for message-passing IPC, but there are limits as to what kinds of objects can be pickled into a message, and you have to mind the overhead of pickling and unpickling.

  16. Stop Stalling. Use Python. by conoviator · · Score: 4, Interesting

    Tons of online books and tutorials. See https://wiki.python.org/moin/P... . Python is my go-to language for just getting stuff done. I use it for damn near everything these days, except mobile apps, which I code natively.

  17. Re:I'd like to give swift a try by Gibgezr · · Score: 4, Insightful

    Never waste your time on a language with only one deployment target platform if you can help it.

  18. Re:Python by narcc · · Score: 2

    It's a fine language. The two biggest problems, which have caused most of the confusion, can easily be ignored: new and constructor functions. (They're why every half-wit on Slashdot thinks that 'this' is 'broken' or 'confusing'.) Avoid those while you're learning and you'll find a surprisingly sophisticated language. You'll wonder how you ever put up with Java and C#.

    You'll want to learn them later, of course. But only because you'll see them inexplicably used in other people's code.

  19. Re:Python by thoth_amon · · Score: 5, Interesting

    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.

  20. Re:Python by mrvan · · Score: 2

    Yeah, although I understand the reasoning for the whitespace and don't object on principled grounds, it can be quite annoying practically if you are copy/pasting code, need to (de)indent a large block, and especially if you are forced to develop somewhere where your favourite editor/IDE that actually handles these cases well is unavailable and you have to work with something that actually inserts a tab when you press tab... *shudders*

    It's also a shame that some of the things corrected in python3 were not corrected earlier, but at least they did have the courage to make some breaking changes, instead of waiting for the next language to come around and start without the excess baggage but also without the built-up community and design experience...

  21. Re:What's wrong with html and javascript? by narcc · · Score: 2

    If younlearned JavaScript in 17minutes you likely use less than 17% of its features.

    You're right about that. A big part of the "hate" seems to come from people unwilling to learn the language. I assume because they assume they already know it, due to it's familiar syntax.

    I'd argue that it's rather easy to learn. Easier than, for example, Java or C# for a beginner. Prototypal OO is much simpler and more "powerful" than Classical OO. Half the problems people new to JS suffer seems to come from dragging all that classical baggage with them. I suspect it's why so many people seem to have trouble with the 'this' keyword.

  22. Re:Python by thoth_amon · · Score: 2

    I'd much rather code in Scala or Clojure than Java. And these languages have good, and increasing, user bases who can provide support for those languages. An increasing number of companies are adopting these languages for production tasks, too -- apparently they feel they can find people who can support them.

    I'm not saying Groovy per se is a good choice (or not a good choice), just rejecting the general argument that we should stick to the core language of a system for support reasons. If that argument were valid, then we should use assembler instead of C, we should dump CoffeeScript and the like in favor of JavaScript, and of course we shouldn't use any of the great new JVM languages, presumably sticking with Java 6 or something so we can make the lives of lowest-common-denominator programmers maximally easy.

  23. seems you missed the point of C by rewindustry · · Score: 4, Insightful

    i spent most of my working career in C, and as advised by my early mentors, over the decades, i have build, and have continued to hone my own little collection of useful functions.

    i have learned interpreted languages, bash scripts, also postscript and forth along the way, various others...

    in the end what remains best is C code, and my own little legacy collection of solutions to the problems i have encountered.

    to answer your heads as best as i can:

    archaic - C is not - underneath every "other" language you will almost always find C source and a C compiler.

    text based - think AJAX if you want instant and easy access to gooey bling stuff. these days almost everything that can do GUI can also do an RPC text based interface of some form or another, and if you don't want the fuss off rolling your own interface, there are plenty of stock C libs out there will do this for you.

    not a hotshot - you know C, you are not only hot, you are a rare breed, and an essential part of the future - as i said above, C lies beneath just about everything out there, and large parts of the Original Framework is now inscrutable to the script kids, despite their whole world would collapse, if there were no-one left to maintain it.

    update your coding skills - in short please stick with C as much as you can, and think about building bridges - in my opinion your time would be best spent studying the C and text interfaces exported by other languages, and working out for yourself how best to leverage their abilities from within C - as opposed to jumping ships.

    help out - get yourself a git account, share your work, if you can.

    in all of these except the last i speak from 30 years experience, and in regard to the last - i'm working on it - most of my stuff is still bound in commercial licence, however i continue to hope this will change, eventually, and i continue to prepare for that day.

  24. Re:Python by Anonymous Coward · · Score: 2, Interesting

    This is written by someone who clearly doesn't really get the power of JS (Object oriented, Event driven for free, functional at will for free). It's got warts, yes, but the power of the language and the ability to pick almost any paradigm you want and have it built in easily is phenomenal.

    Ruby isn't worth it. You still have to learn JS to do anything with the web (which, if you are using Ruby you probably are). If you are writing just desktop applications then fuck it - go Groovy/Grails and get access to the JVM and the infinite java libraries. Not to mention the neverending job market that is Java.

  25. C# for Q&D by WinstonWolfIT · · Score: 3

    The learning curve for a C programmer isn't bad, you can self pace into some elegance if you get painted into a corner, it's very easy to bang out a console application or service, deployments are pretty easy, and it's pretty well documented how to interface web services and web applications from the console. Given the OP's background and the objective, it seems the best fit for me.

  26. Seriously? (Yes, seriously.) by aussersterne · · Score: 4, Insightful

    I do this all the time in my line of work. Someone hands us a data dump of 2 million lines in a messy CSV file with dozens of columns that's old collected data. We benefit if we can make use of it--but we have to clean it up first.

    It's a one-time job--script something up to process the data into cleaner data and format it as we need it to make use of it ourselves. Then, toss the script away.

    There's a big difference between "software engineering" and "coding." Coding skill is useful in all kinds of edge cases that mainstream applications don't handle, and when you're just looking to finish an edge-case task, you don't need to think about correctness or maintainability. You certainly don't want to pay a contractor $$$ to cook something up if it's only three dozen lines and will only be used for two weeks. For those casesÃ"the "who cares if it works six months from now, we just need it to do something specific for us this afternoon" caseÃ"you just need it to work once or twice, during the current project, as a part of the *process* of getting it done, not as an *asset* to monetize over time.

    I totally get where he/she is coming from.

    --
    STOP . AMERICA . NOW
    1. Re:Seriously? (Yes, seriously.) by pjt33 · · Score: 2

      Don't you need to keep the original file and the code you used to transform it, so that you have an audit trail which shows how you got the current data?

    2. Re:Seriously? (Yes, seriously.) by johnjaydk · · Score: 2

      Don't you need to keep the original file and the code you used to transform it, so that you have an audit trail which shows how you got the current data?

      Only if it gets down to covering your ass and then you're fucked anyway. Nobody gives a shit how you contributed to a success.

      --
      TCAP-Abort
  27. Re:What's wrong with html and javascript? by Anonymous Coward · · Score: 2, Funny

    I've never listened to anyone who's attempted to teach me anything in this industry.

    Wow! I'd hire you on the spot if I could. I'm off to check out some of your code.

  28. Re:Python by savuporo · · Score: 2

    And if you are really claiming that packages here https://www.npmjs.org/browse/d... are not stable and dependable, you sir are an idiot.
    Same with this http://stats.bower.io/

    --
    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
  29. Re:Python by Anonymous Coward · · Score: 3, Insightful

    Learn one and use it. It doesn't have to be 'new' and 'sexy' and, and, and...just use what works for you. For me it's perl.

    I write perl code for CGI that also incorporates javascript, css and even PHP. JQueryUI has a hella pile of UI goodies that scale across mobile and desktop devices and perl has a deep, DEEP bench of available modules.

    Undoubtedly you can do the same in python or ruby; but I have a perlhammer, so every problem is perlnail.:-/

  30. Re:Python by indeterminator · · Score: 2

    I expect server side JS to be about as passing fad as writing operating systems in C.

    It's not great for typical cron jobs or admin scripts. What it is great for, is small server damons. The single threaded everything-is-asynchronous model works so well for that, you don't want to go back once you get started.

  31. Re:Converting to "simple strings" itself takes tim by pthisis · · Score: 2

    If you have a CPU-intensive thing, you can use shared memory and binary structs to share it, no need to turn everything into a string.

    --
    rage, rage against the dying of the light
  32. C# and JQuery by Anonymous Coward · · Score: 2, Insightful

    *ducks tomatoes*

    I've had no problem neither finding employment nor developing projects that were truly fulfilling by working in nothing but MS shops my entire (albeit short) career. Career Aspirations aside, even if you're looking to be a happy go lucky, change the world hippy anti-establishment coder C# has still (*gasp*) surpasses Java.

  33. Re: Two languages by tdelaney · · Score: 3

    So exactly what do you get with Groovy that you don't get with Jython (Python on the Java VM)? Apart from different syntax of course ...

    One of the great things about Python is it runs just about anywhere. There are even embedded versions.

    The only real problem with Jython is it doesn't implement Python 3 yet.

  34. I'm a Ruby guy but... by MrBandersnatch · · Score: 4, Insightful

    sorry there is no one-size fits all solution. The *closest* is Javascript and client-side development isn't that painfull these days but its still Javscript and WILL bite you on the ass.

    So I'd say it boils down to either Python or Ruby + Javascript and if I'm honest, I'd say Python has the edge in terms of general applicability. I *personally* prefer the Ruby language, but that's not what you're asking. Breaking it down:

    Server side, backend = Python+Django OR Ruby+Rails if you want to get stuff done and stay sane. Ruby should be considered Linux only server side, but then server-side should be considered *nix only. Node works but...its javascript.
    Server side Scripting = Python/Ruby are both sensible choices. I prefer Ruby as a language but Python is a safer choice given the library support and performance. The exception is server/cloud management for which Ruby still has an edge (debatable, I know).
    GUI/Desktop Clients, Python + QT. Great combination. Its possible to use QT with Ruby, it just doesnt feel right though.
    OSX/IoS/Android - Ruby/Rubymotion. Really, really nice if you're developing for the Apple side. Android support is early days.
    Browser - Javascript + Framework + UI components of choice. Learn javascript, one framework and one set of UI components and you're set. Well, until you need something a bit different....but its Javascript.

    BTW I said I'm a Ruby guy but I've 10 years of Python experience. If the project is suitable though I'm more productive with Ruby (with 18 months experience) but it really is a case of the right tool for the right job.

  35. Re:Java in an IDE by techfilz · · Score: 2

    Java is the new COBOL. Lots of developers use it a work but few use it at home because it is so tedious. You will spend most of your time learning how to drive frameworks and not coding.

  36. Re:Type of applications by pthisis · · Score: 2

    awk is fine for one-liners and for simple takes on moderately large files can be 5-6x faster than Perl.  For all that perl has the reputation for being a grep/sed/awk replacement, it's incredibly slow at the job.  Sometimes that matters.

    For anything larger than a one-off, I'd go with python/pypy (ruby and lua are also fine choices).

    $ time awk '{print $1}' < f4.txt >/dev/null

    real    0m0.296s
    user    0m0.288s
    sys    0m0.004s

    $ time perl -pale '$_="@F[0]"' < f4.txt >/dev/null

    real    0m1.920s
    user    0m1.896s
    sys    0m0.020s

    $ time python -c "import sys;[sys.stdout.write(line.split()[0]+'\n') for line in sys.stdin]" < f4.txt >/dev/null

    real    0m0.618s
    user    0m0.604s
    sys    0m0.008s

    $ time pypy -c "import sys;[sys.stdout.write(line.split()[0]+'\n') for line in sys.stdin]" < f4.txt >/dev/null

    real    0m0.531s
    user    0m0.508s
    sys    0m0.020s

    --
    rage, rage against the dying of the light
  37. Re:I'd like to give swift a try by BasilBrush · · Score: 3, Interesting

    There's been more money to be made with Objective-C than most other languages these last few years. Possibly than any other language. And that has only one serious target. Well two if you count iOS and OSX separately.

    That should make Swift a very good bet. However, it's early days yet - the language is certainly not finalised even for a 1.0 release, and the documentation is skimpy. Most people would probably be best to wait a year.

  38. Re:Avoid taking it in the backdoor by BasilBrush · · Score: 2

    It's in beta. It's likely to be open sourced once it's ready. Apple have far more to gain than to lose by doing so, and in such circumstances Apple does release source. Expect to find it here:

    http://opensource.apple.com/

    Of course it won't be GPL though. It'll be one of the truly free licenses, such as BSD.

  39. It's Ruby and here's why by MillerHighLife21 · · Score: 2

    There is no language that seems to have more web relevance these days. The community and available libraries are amazing. For rapid web dev you have Rails, pretty much "the" web framework.

    It's great for quick shell scripts. It's excellent as a DSL language (think Vagrant, Puppet, Chef, Capistrano, Rails).

    It's extremely flexible too. Just about every web start up that you've managed to hear of is a Rails shop. Rails programmers are in "write your own ticket" levels of demand too.

    JRuby is under extremely heavy and active development, giving you access to do everything you can do with Java as well. Thanks to jRuby you get access to native threading, best of breed garbage collection, the insane library of Java tools that are out there and Java's JIT compiler. You can deploy to servers anywhere Java can too which even makes it viable for many enterprise shops and means you'll have access to excellent database drivers for...anything.

    Lastly, thanks to RubyMotion you can write Ruby to code apps for iOS and more.

    People love to hate on Ruby, but it's everywhere for a reason.

    --
    "Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
  40. Re:Seriously? by muridae · · Score: 3, Informative

    It takes special skills to program? Maybe if you are doing some rather complex operations, but in the same regard I wouldn't want to re-gear the transmission or rebuild the engine of a car while I'm perfectly capable of customizing other aspects of a vehicle. Programming is the same way, someone can be capable of doing something they want to do (run a website and manage the database; or script their everyday crap into a few lines of code) without being 'an uber hax0r' who understands OS theory at the assembly level and capable of dealing with the full range of network security threats.

    Mythologizing programming is what leads to the nephew who knows a little html being assigned as the head of IT; after all that little html takes all that programming knowledge!

    And since your opinion of other programmers is so low:

    Even most programmers who program for a living suck at their jobs, and I don't expect someone who's not serious about it to be any better.

    might I suggest that the D-K effect is in full show and, on behalf of all coders, hackers, code monkeys, keyboard jockies, and everyone who's ever touched a computer, may I ask, beg, and plead, that you to please never write another line of code again.

  41. test drive a simple problem... by Fubari · · Score: 2

    I encourage you to test drive the languages that sound interesting. Choose a small slice of a problem (parsing & reformatting a *.CSV file perhaps); something small enough that you solved it with < 1000 lines of C code. Then try coding up the same with Python and one or two more languages recommended here.

    One of the scripting things I look for is portability. While Java itself is pretty awful for rapid development (at least for me Java is painfully verbose), if you want to piggyback on Java's virtual machines you can go a long way with Groovy, Clojure, and maybe Python (here's an interesting review of JVM languages). It turns out for my day job there is always a JVM in the environments I need to work in, so I look for easier languages to work with in that regard.

    My current personal favorite is Clojure; great leverage, you get a lot of bang for your buck for a line of clojure vs. a line of Java or C.

  42. Your problem by AchilleTalon · · Score: 2, Insightful

    Your problem is hidden in the list of requirements which have absolutely nothing to do with the programming language itself and all with the APIs. No matter how fluent you are in a programming language, if you don't know the specific APIs for GUI desktop, Web, mobile, etc, you will not succeed.

    Frankly, I don't feel your question is serious given you are describing yourself as an occasional programmer which needs to be able to program code for almost all platforms and type of interfaces. Seems to me like a forged question to try to find a one-size-fits-all solution for your hypothetical needs.

    Nobody learn all the APIs in the world in case. You learn them as you go along and some of them requires major time investment which you will surely avoid to do if you are really an occasional programmer without time to learn in detail the API for perhaps a one-time-shot usage.

    --
    Achille Talon
    Hop!
  43. Responsive CSS by ArcadeMan · · Score: 2

    Be very careful with the so-called "responsive CSS" that some people use. Sending a five megapixel JPEG to a cellphone and resize it via CSS is one of the stupidest thing I've ever seen.

    People with no technical background who only know Photoshop and print media have no idea of the requirements they're pushing onto the hardware.

  44. Re:Python by thoth_amon · · Score: 4, Interesting

    I think we're back to the "it can do X" argument (JavaScript can do OO, it can do functional, etc). The problem with this argument is that any language can do X if you try hard enough. Unfortunately, to do OO in JavaScript, you do have to try, because JavaScript is not an OO language, but rather a prototype-based language. Compatibility layers such as CoffeeScript that offer clean OO have to produce somewhat wordy JavaScript to provide that support, precisely because even though you can emulate OO in JavaScript, it's not concise, easy, elegant or fun, unless you are using something like Coffee, which is a different language than JavaScript.

    Certainly Ruby and Python have beautiful OO models, much more attractive and natural than JavaScript's. And like JavaScript, both Python and Ruby can be programmed in a functional manner if you choose to do that; indeed, their libraries support functional behavior out of the box much better than JavaScript's. And, as with the OO example above, if you really want to do functional-style programming, you might be better off using a language designed with that in mind, for example with default currying and pattern-matching built in.

    But I don't think OP cares about any of that. I think OP just wants to whip some scripts together fast. JavaScript was designed with a browser in mind. It was not architechted with single standalone scripts in mind, and it continues to be a poor tool for that purpose.

  45. Re:Python by Alien1024 · · Score: 2

    As others have pointed out, what the OP is asking for is, basically, a language that does it all across many platforms, a tool that does all jobs, and I'm afraid that doesn't exist. The closest thing, IMHO, would be the oh-so-obvious answer "Java", except it's not interpreted.

    Anyway, a question to those who are answering Python and Javascript: since the OP is asking for something that has, among other things, "mobile relevance, GUI desktop applications relevance", are there any decent IDEs/APIs/whatever that facilitate Rapid development of desktop programs and what these days is referred to as "mobile" (meaning, mainly, iStuff and Android Apps)?

  46. Re:Python by aminorex · · Score: 2
    --
    -I like my women like I like my tea: green-
  47. Re:I'd like to give swift a try by aminorex · · Score: 3, Insightful

    > There's been more money to be made with Objective-C

    Only for the mediocre. For skilled persons, most of the money has been in matlab.

    --
    -I like my women like I like my tea: green-
  48. I strongly vote PERL/CPAN by Wycliffe · · Score: 2

    That concept of multitude is completely foreign to a C programmer. It makes them fail every time. You simply cannot introduce a C programmer to Perl and expect them to have any kind of easy time with it. You might as well introduce a cyclist to a horse.

    I disagree with this. I learned applebasic as a kid and learned c++ in college. I've never had formal
    training in perl but I find it the quickest and easiest to pick up, use, and to teach others.
    CPAN can't be beat and Perl is very mature, very modern, and still being developed as well as being cross-platform.
    The OP stated he wanted to do quick and dirty and I don't think anything can beat PERL/CPAN for quick/dirty.
    You can't do native apps for iphone/android with it but you can't with anything other than objective C/java respectively.
    It is very capable for web apps though so building decent apps is also still possible.
    For what the OP is asking for Perl seems the closest to match his needs.

  49. Re: Python by PC_THE_GREAT · · Score: 2

    Python breaks a lot. Libraries keeps changing a lot, I have no idea whether they heard about keeping backward compatibility when they started developping Python.

    Python Engineering wise is a nice language, usage wise, it is not something i consider mature, many will disagree, and well i am not here to impose my view, so please feel free to disagree.

    Want something nice to learn, Try Perl, Try GoLang.

  50. Unity and C# by CNTOAGN · · Score: 2

    Probably not very popular here, but I've been having a lot of fun lately with Unity using c# as my scripting language. Writing a networked game, and the RPC hookups and message passing is all pretty cool. State machines are such a different animal than business event driven programs (my normal job).