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?

27 of 466 comments (clear)

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

  2. 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."
  3. 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.
  4. 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!
  5. 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.

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

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

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

  10. 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.
  11. 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.

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

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

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

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

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

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

  18. 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
  19. 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.:-/

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

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

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

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

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

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