Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming

Ask Slashdot: Best Rapid Development Language To Learn Today? 466

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?
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Best Rapid Development Language To Learn Today?

Comments Filter:
  • Coffeescript, compiles to JavaScript and obviously runs in any JavaScript environment
    Groovy, an enhanced lazy typed Java, running on the JVM

  • by boorack ( 1345877 ) on Sunday June 15, 2014 @12:38PM (#47240699)
    With ClojureScript it now covers both client side and server side.
    • by Trepidity ( 597 )

      How compatible are Clojure and ClojureScript? Can you expect a typical program to run in both?

  • by Anonymous Coward on Sunday June 15, 2014 @12:38PM (#47240715)

    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.

    • Hell I'm one of the guys that harps on how quickly you can learn a language and even I agree with this. I mean I know I say that since I know C++ I was able to learn C# very quickly since the syntax is largely the same. But I'd still say it was at least a couple of weeks before I was pretty comfortable in C#. (No, I don't think it'd take any decent C++ guy months or years to get as good in C# but still it's not nothing either.) Mod the parent up. (I know I know, the mods can't because they're too busy moddi
    • You have never been able to learn a programming language in a couple of hours.

      You can learn Snobol (the original, not Snobol4) in a couple of hours. Unfortunately, you probably can't actually do anything useful with it, but that was not required by your original post!

  • Python + Qt (Score:5, Informative)

    by CQDX ( 2720013 ) on Sunday June 15, 2014 @12:45PM (#47240767)

    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.

  • Re: (Score:2, Insightful)

    Comment removed based on user account deletion
    • C++ would be absurd for systems admin and operations scripting, however. Other langauges do all those things and also excel in the operations/admin/batch processing realm - Python, Perl, Ruby

      • by arth1 ( 260657 )

        Most ops/admin/batch processing can be done with sh, sed and awk. Perl and python are nice fourth and fifth languages after these, but proficiency with the first three tends to be more valuable for an admin than the latter two. It's a certainty that you will have to maintain other people's shell scripts, and expanding them with a well placed inline sed or awk program can be oh so helpful.

        There's no question that perl gives you the most bang for the buck, but maintaining perl scripts can be painful. Like

        • I do all of those languages in my daily job, but awk/sed/sh is inferior because of the chances for bugs are greater in a script with any complexity due to the arcane rules and syntax, and topic is of languages good for "programs" not just dozen-liners. I don't see how maintaining Perl scripts is any more painful than effort required for any other scripting langauge. Note the built-in tools packaging and admin are already done in Perl and Python in most (most being all the dozen or so I deal with 8D ) BSD

        • There's no question that perl gives you the most bang for the buck,

          In particular, any time you are considering using awk inside sh, you probably should be using perl instead, because of that complexity you mentioned. Why use two languages (plus an additional utility to handle regexps) when you can just use one?

          • by pthisis ( 27352 )
            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
  • by Kensai7 ( 1005287 ) on Sunday June 15, 2014 @12:58PM (#47240835)

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

  • Java in an IDE (Score:2, Insightful)

    Java in Eclipse or NetBeans. It's not interpreted but you can create it and run it in-situ ('Run As' in Eclipse). It also ticks most of the other boxes (web - Apache Tomcat. Mobile - not looked int this but there's mobile Java or there's Dalvik. GUI - Swing, SWT or JavaFX). I believe that NetBeans may be better for visual GUI development (I'm not familiar with NetBeans. I use Eclipse and set things up manually with Swing if required).

    The only down-side is the learning curve. However there are lots of res
    • by mrvan ( 973822 )

      Sure, if you like typing stuff such as


      Set s = new LinkedHashSet()

      Just because the compiler needs to know advance every method of everything you are ever going to put into your container...

      Java has its uses, and for certain hard-core back-end software it might be the most appropriate language; but for writing quick and dirty scripts to get stuff done, for prototyping, and for UI I would stay very far away from it.

      (but then I'm an ex-Java developer so probably biased ;-))

      • by mrvan ( 973822 )

        (frigging slashdot ate my generics!)

        Sure, if you like typing stuff such as

        Set<? super TreeMap> s = new LinkedHashSet<TreeMap>()

        Just because the compiler needs to know advance every method of everything you are ever going to put into your container...

        Java has its uses, and for certain hard-core back-end software it might be the most appropriate language; but for writing quick and dirty scripts to get stuff done, for prototyping, and for UI I would stay very far away from it.

        (but then I'm an ex-Java developer so probably biased ;-))

      • Actually, it's worse. Ideally it would be:

        Set<Object> s = new LinkedHashSet<Object>();

        Or, I believe in java 8 you can infer the type as follows:

        Set<Object> s = new LinkedHashSet<>();

        That's why I suggested in an IDE. It will generally help the coder. However, I take your point!
    • by Splab ( 574204 )

      If you are doing any serious Java programming, buy an IntelliJ license (or apply for a free OS license). It is miles ahead of Eclipse and NetBeans.

      • by Z00L00K ( 682162 )

        For most cases Eclipse is sufficient.

        So unless you are prepared to put up money Eclipse is not a bad choice.

  • I agree Python (Score:5, Informative)

    by Joe Tennies ( 564856 ) on Sunday June 15, 2014 @01:03PM (#47240873) Homepage

    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.

  • Scala (Score:5, Informative)

    by bunratty ( 545641 ) on Sunday June 15, 2014 @01:09PM (#47240903)
    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.
    • "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

    • 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.

  • by conoviator ( 1991610 ) on Sunday June 15, 2014 @01:22PM (#47240977)
    Tons of online books and tutorials. See https://wiki.python.org/moin/P... [python.org] . 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.
  • by rewindustry ( 3401253 ) on Sunday June 15, 2014 @01:53PM (#47241159)

    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.

  • Python, Ruby, scsh--but the latter doesn't really have relevance to the web, while the first two have popular and well-designed web-app-serving frameworks built on them.

  • by WinstonWolfIT ( 1550079 ) on Sunday June 15, 2014 @02:26PM (#47241311)

    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.

  • Sure, all the rest of these languages are fancy and some startups are actually using them (when boiled down just ends up between node.js, Scala(Java) and a NoSQL database du jour).

    No company uses python outside of scientific use (where it can be very powerful). No company uses Ruby anymore besides the odd legacy app.

    Facebook, Google, Twitter, OkCupid ... Average startup - PHP, JS, C-variants, HTML, CSS, Java-flavor. It's powerful, plenty of established applications and COTS will generally be a good enough s

  • Oh, wait...perhaps you meant most useful on the market? Well, that's where things get ugly!
  • by MrBandersnatch ( 544818 ) on Sunday June 15, 2014 @04:46PM (#47241949)

    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.

  • by MillerHighLife21 ( 876240 ) on Sunday June 15, 2014 @05:39PM (#47242197) Homepage

    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.

  • by Fubari ( 196373 ) on Sunday June 15, 2014 @05:51PM (#47242255)
    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 [drdobbs.com]). 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 [clojure.org]; great leverage, you get a lot of bang for your buck for a line of clojure vs. a line of Java or C.
  • Your problem (Score:3, Insightful)

    by AchilleTalon ( 540925 ) on Sunday June 15, 2014 @06:42PM (#47242533) Homepage

    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.

  • by ArcadeMan ( 2766669 ) on Sunday June 15, 2014 @06:53PM (#47242571)

    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.

THEGODDESSOFTHENETHASTWISTINGFINGERSANDHERVOICEISLIKEAJAVELININTHENIGHTDUDE

Working...