Ask Slashdot: Best Rapid Development Language To Learn Today?
An anonymous reader writes "Many years ago, I was a coder—but I went through my computer science major when they were being taught in Lisp and C. These days I work in other areas, but often need to code up quick data processing solutions or interstitial applications. Doing this in C now feels archaic and overly difficult and text-based. Most of the time I now end up doing things in either Unix shell scripting (bash and grep/sed/awk/bc/etc.) or PHP. But these are showing significant age as well. I'm no longer the young hotshot that I once was—I don't think that I could pick up an entire language in a couple of hours with just a cursory reference work—yet I see lots of languages out there now that are much more popular and claim to offer various and sundry benefits I'm not looking to start a new career as a programmer—I already have a career—but I'd like to update my applied coding skills to take advantage of the best that software development now has to offer. (More, below.)
Ideally, I'd like to learn a language that has web relevance, mobile relevance, GUI desktop applications relevance, and also that can be integrated into command-line workflows for data processing—a language that is interpreted rather than compiled, or at least that enables rapid, quick-and-dirty development, since I'm not developing codebases for clients or for the general software marketplace, but rather as one-off tools to solve a wide variety of problems, from processing large CSV dumps from databases in various ways to creating mobile applications to support field workers in one-off projects (i.e. not long-term applications that will be used for operations indefinitely, but quick solutions to a particular one-time field data collection need).
I'm tired of doing these things in bash or as web apps using PHP and responsive CSS, because I know they can be done better using more current best-of-breed technologies. Unfortunately, I'm also severely strapped for time—I'm not officially a coder or anything near it; I just need to code to get my real stuff done and can't afford to spend much time researching/studying multiple alternatives. I need the time that I invest in this learning to count.
Others have recommended Python, Lua, Javascript+Node, and Ruby, but I thought I'd ask the Slashdot crowd: If you had to recommend just one language for rapid tool development (not for the development of software products as such—a language/platform to produce means, not ends) with the best balance of convenience, performance, and platform coverage (Windows, Mac, Unix, Web, Mobile, etc.) what would you recommend, and why?
I'm tired of doing these things in bash or as web apps using PHP and responsive CSS, because I know they can be done better using more current best-of-breed technologies. Unfortunately, I'm also severely strapped for time—I'm not officially a coder or anything near it; I just need to code to get my real stuff done and can't afford to spend much time researching/studying multiple alternatives. I need the time that I invest in this learning to count.
Others have recommended Python, Lua, Javascript+Node, and Ruby, but I thought I'd ask the Slashdot crowd: If you had to recommend just one language for rapid tool development (not for the development of software products as such—a language/platform to produce means, not ends) with the best balance of convenience, performance, and platform coverage (Windows, Mac, Unix, Web, Mobile, etc.) what would you recommend, and why?
'Nuff said
Coffeescript, compiles to JavaScript and obviously runs in any JavaScript environment
Groovy, an enhanced lazy typed Java, running on the JVM
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
There are a lot of anti apple people on Slashdot, but I'd like to give swift a try. Having worked with many IDE's and development environments, I think Apple has the easiest to use, most supportive tools. So I am curious to see what they have done with this new supposedly modern, advanced language. The playground demo at WWDC was pretty enticing.
Flame away you bastards.
javascript takes about 17 minutes to learn -- same basic syntax as C, plus a document object model -- a big hash structure full of values defining the html. Wrap it in an HTA, and you've got an executable with full access to the entire machine (windows only, of course), including the file system, ODBC connectivity, system ports, et cetera.
I'll always prefer perl for data processing, but you don't want to learn perl. That's a very very steep learning curve -- because that's the point.
But javascript is dead-simple. You can make a quick-tool HTA in seconds. Being HTML, the GUI comes for free. It's the same html and javascript for any mobile or web anything.
Really? No. If you want a job, learn Javascript. It's used frontend everywhere, now backend with node, and the pay is good.
It's easy to learn and easy to use. Works on a lot of platforms. Includes good support for GUI development. Works for small and simple projects but scales up to large and advanced projects too.
With ClojureScript it now covers both client side and server side.
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.
Pathologically eclectic rubbish lister?
I don't really get the segregation of the languages. Actually i think you would still be able to pick up a language in a couple of hours. The only problem would be when you have to clue yourself into a library's idiosyncratic double think. This is probably truer when you're used to some conveniences afforded by your language of choice.
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.
Swift is a modern language with all sorts of cool features. There may be a few languages that are even cooler, but they do not have what Swift has: a first rate IDE, one of the very best frameworks for writing GUI apps, a billion dollar company that pumps out documentation, and a massive developer base all running on a platform with hundreds of millions of users who are willing to pay money for good software. Seriously, even though it has been out for like a week it has more developers than Haskell, Scala, O'Caml, SML, Erlang, etc... combined. By this time next year there will probably be more Swift libraries and packages than all those other languages/platforms too.
Just being realistic, I don't even own an iPhone.
It all depends on what kind of applications you need to write.
If you're looking to write back-end or network applications that do not require a GUI, then I would still recommend C++ with one caveat. Get and use the Boost libraries. You will find that these libraries fix most of the crap that was broken about C and C++. C++ is not necessarily the easiest language to use, but you already know it which is a tremendous advantage.
If you need to do front end / GUI development, I recommend JavaScript. Not because its easy to use, but because web browsers are everywhere, and largely platform agnostic at this point. There are plenty of systems out there that build on top of JavaScript, and any of them would be worth a look.
I wish I had a good sig, but all the good ones are copyrighted
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"
A choice for a general purpose language for server scripting, web, client gui, non-web server apps,etc. should have mature set of libraries and frameworks for all those things. Most of the people here are posting their favorite or pet language rather than anything that has that property. Yes, Python has the libraries for all those uses, Perl 5 even moreso. Ruby does to lesser extent than those two.
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 resources on the Web, and many books available. It is also cross-platform, maintained (by Oracle) and free (Gratis and, if you use OpenJDK, Libre). There are also plenty of third-party libraries you can download.
If I need something quick and dirty, it's what I use. (But then, I'm a Java developer so probably biased!)
You never know what is enough unless you know what is more than enough. - Blake
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.
Slashdot has had ads for a very long time. However, for long-time registered users the "Disable Ads" checkbox is broken and ads are still shown.
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.
I'm not a huge fan of the language, but it is absolutely everywhere. Completely pervasive and very accessible.
By learning javascript you can:
Build cross platform web based front ends
Do cross platform mobile development (Cordova/Phonegap/Titanium)
Build backend systems, apis (Node.js)
Interface with tons of third party systems and services which have exposed restful/json apis.
So from a practical perspective it is definitely the way to go, most bang for your buck. Shallow learning curve, lots of use cases. If you are already programming in C and Lisp this will be a breeze.
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.
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.
[Apple Swift] is not a good choice until it is available as free software.
Let me elaborate on why this is true: Unless a compiler is available in source code form, you don't know whether it has a backdoor. And unless a language has multiple independent compilers, you can't use David A. Wheeler's diverse double-compiling construction to rule out self-propagating backdoors.
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.
It takes one week to become expert.
Maybe you should leave driving to people who actually know what they are doing. Or talking, leave it to the lawyers, and don't ever talk. Hey, some things you gotta do yourself in life, unless you were born as nobility, with special birth privileges, and then you don't even have to do the walking yourself, because some people, called slaves, will carry you around in a box, called a litter, http://en.wikipedia.org/wiki/L...
It's one of the most concise and expressive languages out there, and this combined with the static typing makes it a fantastically maintainable languages.
There are a tonne of brilliant libraries available on hackage, all of which are barely known outside the Haskell world. Many of them offer capabilities unavailable in any other open source software. For example:
http://hackage.haskell.org/package/regexpr-symbolic
As a drawback, you'll spend a lot of time fixing typing errors. But your software will be correct!
And you'll be adding to the critical mass of functional programmers in the world, aiding more widespread adoption by PHBs around the world.
Of course, my 'best' is more of a global/personal one than in your own interest. But perhaps you'd really enjoy it. It's nothing if not wonderfully exotic to anyone coming from an imperative/OOP programming background.
Just pick one of the fruity languages and learn it for a few weeks and watch it go into obscurity in a few months. Develop lots of mission critical software in it and watch everything fall to pieces.
Most Rapid dev languages don't have as broad capabilities as C does. Just about every library has a C/C++ API, not all libraries have ported APIs for other languages. Plus Rapid Dev Languages come and go. 10 years ago Perl with King, Today its Python. Who knows, in 10 Years Python will probably be replaced. Also C programs can usually run on any machine without having to install the RapidDev tools on the machine. If you want to run a Python app, you need to make sure that Python is installed along with any API libraries that you app needs. With Python there are also multiple versions and often the code isn't compatible. for instance some older python apps won't run on Python 3.3 and apps written for 3.3 won't always run on 2.7. If you upgrade/downgrade python on a production box you might break something that is already using that version.
I also need to write code for both windows and Linux. On windows it can be a pain to install RapidDev languages, and I prefer not to load up windows machine with RapidDev tools, especially if it just for a one-time job. Also a lot of the code I write for Windows there is no RapidDev libraries, such as MAPI, VSS, COM, etc.
For scripting I stuck with bash on Linux and cmd\cscript on windows (I never bothered to to switch to powershell).
If you're looking for the most relevant RAD Language today and the one that's the strongest upcoming, that would be JavaScript. No two ways about it. Python is definitely the more interesting, simply because its syntax is more modern - JS is basically a member of the C + Java line of languages and a prime objective of Python was to do away with the clutter.
But in terms of momentum, there's no single doubt about the rapidly increasing significance of JS. With Node.js it has gotten hold on the serverside again, as it used to have back when Netscape Webserver was the only webserver around, and since the dimishing importance of Flash and the parallel increase in importance of mobile web-centric devices it has become the got-to technology for client-side logic in the mobile space. It's cross-platform and there's an engine for it in every browser. It's that simple. The increasing fragmentation of end-user devices is driving battalions of developers to JS as we speak and with the second half of humanity to be connected to the intarweb via cheap mobile devices within the next few years I don't think JSs' momentum is going to dimish anytime soon.
Bottom line:
If you need or want to bet on a single RAD PL today, JavaScript it is. Frontend to backend. Strange but true.
We suffer more in our imagination than in reality. - Seneca
[Apple Swift] is not a good choice until it is available as free software.
Let me elaborate on why this is true: Unless a compiler is available in source code form, you don't know whether it has a backdoor. And unless a language has multiple independent compilers, you can't use David A. Wheeler's diverse double-compiling construction to rule out self-propagating backdoors.
Of course, unless you have unlimited time, are already an expert at writing production-quality compilers and are willing to go line-by-line through a huge pile of source code with the incredible care needed to identify subtle backdoors you won't actually do that. Instead you will simply assume that because it is open source that someone else must have done so - and look how well that worked for OpenSSL. Look, I like f/oss too, but let's be realistic...
You want powerful that works on all platforms with one code base..? Check out LiveCode.
Dumbest comment of the day award. Congrats!!
Filemaker meets all your requirements almost perfectly. I'm sure a bunch of coders will pile on and bash but considering what you asked for I strongly recommend you give it a serious look. I often find myself turning to it when I need to whip up a quick solution to a data problem and sometimes end up using my quick solution as a full on production platform. The fact that the same effort works damn near seamlessly in OSX, Windows, Web and iOS simultaneously with no extra coding makes it very slick for what you seem to be looking for. My only gripes are lack of android fat client and no built in rollback.
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.
If the lack of braces on blocks drives you nuts, as it did for me, I'll recommend ruby instead of python. I also regularly use it for interfacing with java using jruby. I especially like the iterator feature in ruby once you get your head around it you can write some really clean, quick code. I've even started replacing some things I used to use bash scripts for, especially if it invovles working with json or regexes.
It sounds like you already have the answer. Since you already know lisp, just use common lisp. It's powerful, the development cycle is fast, Apache modules are available to support it, and is pretty good at data processing. Unless your goal is to learn a language for the sake of learning a language (or for changing jobs) and it doesn't sound like that is the goal, just go with the powerful language that you already have. There's really nothing wrong with lisp.
I never checked it anyway, but I still never see ads here, because they are apparently all ecmascript monstrosities.
I would actually be fine with seeing ads but apparently the advertisers are not fine with being web-accessible.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Friends don't let friends enable ecmascript.
Java - Many Libraries To Leverage - Strong String Support - Can be compiled to Javascript (GWT) - Strong Community ...
Where I work we recently have begun transitioning from PHP/Etc to Java/GWT for both web-based (GWT) and non web-based (CLI) utilties and sundries that we use "to get it done". We have found that we spend more time creating code that works and alot less time debugging type issue, undelcared variable issues, etc and the performance gain over PHP was also a nice improvement.
An additional benefit is if you add GWT to the mix you get Java->Javascript compilation combined with simplified AJAX/RPC for any thing web-based you are needing to create.
The Apache Commons, XOM, JSOUP, and other 3rd party packages greatly simply stuff like XHTML processing, data extraction, format conversions, looping through files, and directories, reading files line by line, etc. And for some of our more heavy data stream processing type stuff, the built in threading stuff can give a definate peformance benefit when designed for.
While it is a compiled language, the development cycle for basic "get it done" stuff is extremely rapid because the applications we are creating are not large and the language is alot more flexible than basic Bash scripting, etc.
Eclipse also goes along with with automatic code completion, etc, in greatly speeding things up.
The core 'Java' syntax is similar enough to core 'C' syntax that you can spend your time actually learning the higher level stuff and alot less time learning where different punctuations go.
A good a quick introduction to the language would be something like: "Linda Java Essential Training" - http://www.lynda.com/Java-tuto... (Not saying this one is better than any other quick introductions...)
Whichever language(s) you choose ... best of luck.
-Mike
leather-dog muksihs
Blog: @muksihs
While I started programming in '62, and have used more than 50 languages, I'm now semi-retired and don't write code for a living. While I'll dash off a CMD script on Windows for a "quicky" I write my final code in AutoIt (http://www.autoitscript.com/site/). It's free, and you can go from novice to Windows-innards programming in one tool. While it's a native interpreter (like LISP) you can compile it into an executable program (like C).
You already know the four basic operations (Sequence, Condition, Iteration and Functions; see http://en.wikipedia.org/wiki/S...), and the comparable four basic data types (Value, List, Matrix and Linked), because you've used C...but Lots of Irritating Single Parentheses (LISP) is not much use as a utility program creator.
Go download AutoIt's Quick Guide and "Learning to Script with AutoIt," and you'll have a practical tool that's easy to learn, but incredibly deep in the use of Functions (your LISP experience will help), and great on-line community who've shared lots of code and offer ready help as you're starting out.
Enjoy!
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.
I don't think there is a single language which really is an absolute panacea for everything the OP is asking for. Honestly, Javascript probably is the closest thing... but, even so, I think I'd recommend taking a look at Python first.
A lot of folks are claiming that Python is slow. It is not slow if you write 'Pythonic' code and use the proper libraries. Most cross language performance benchmark studies I have seen use Python code that written like C++ or Java... AND, do not take advantage of any mainstream Python libraries. Once you compare 'best' python code against best Java code... any performance advantage of Java often entirely evaporates. It may take more libraries and more artful coding to get that speed out Python...
A comment mentioned the Boost library, you can use Boost from Python directly. Twisted Python for networking and async IO provides all kinds of tools for getting around the GIL issue. Big Data type of operations can be done quite elegantly with Disco. Python can be compiled to JVM bytecode, can easily be compiled to C using Cython, and the Numba project is fast developing excellent capability to compile to well-optimized LLVM using simple function decorators to type cast and essentially nothing else. Python can be compiled to MFC CLI use most all of MS' .NET and windows forms capability.
I second the Qt API recommendation which is useable with C++ and Python. Layouts can also be done using enaml, Qt-QML. Within Python, there are even more simple libraries for generating basic GUI's super quick: guidata and guiqwt. You can also use Python's own GUI libraries, wxpython, kivy, and others.
Nothing against Java (and Scala,Clojure), JS, Lua...
For the OP, Python is maybe the best compliment to C/C++ expertise and will be quite easy to pick up.
Slashdot also multiplies it...
LISP? Really?
It seems to me that you want to do simplistic meta-programming with no attention paid to performance. Go VB if you are a Micro$lop-uber-alles "programmer". Yes, I DO understand dynamic language overhead (I'm a compiler developer) so don't waste your time promoting how wonderful things like Java[script] are. There is a good reason that Operating Systems are NOT implemented in languages with hidden dynamic memory allocation such as C--, C#Inept, Java*, etc.
The point is that higher level languages can and do provide simplicity of programming for specific domains, but they are dependant upon the domain.
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.
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
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 solution for most people. It's foolish to write from the ground up these days in an odd language given the existence of open source solutions for just about anything. And with PHP getting faster and more efficient it scales very well.
I just implemented an open source CRM with a bunch of custom work on a 300MB VPS - Nginx, PHP 5.5 with OpCache, MariaDB, JS, CSS, HTML - can sustain 50MBps of traffic to the CRM without a single drop (3ms response); 2000 complex queries on the CMS per second under 100ms response, I can simply throw more hardware at it if I need more but for a 300-member club, that's plenty.
Custom electronics and digital signage for your business: www.evcircuits.com
LabVIEW has C# backbone, very fast develop and deploy and seems acceptable (or even ideal) for web-based applications. You might consider it.
rapid development of what? websites? mobile? prototyping? try meteorjs if you want to do something in websites.
If you are clever, there are ways to use python w/ffi C++ and get around limitations of the GIL. I had a colleague that worked in HFT--his company was responsible for 10% of Nasdaq--and so was their python/C++ hybrid code.
For GUIs, Python + Qt is an amazing combination--very fast to develop with.
As for speed, people bag on Javascript. However, they are probably ignorant of the fact that the most advanced compiler technology development is currently going into the javascript vms--they are already more advanced than anything java or lisp has ever had--standing on the shoulders of those giants and taking some further leaps forward.
Use Ada *ducks*
NumPy and SciPy are a superset of APL and J, so there really is no reason to use APL anymore.
Personally I don't care if the thing is "text based" -- it's what Unix is all about.* There's a reason greybeard Unix admins will use C for "scripting" if that fits the problem best. If not, well, you know there's shell and sed and awk and whatnot, and hey, for quickly whipping up something that works pretty well. There are even shops selling point of sale solutions customised and built out of (their own) components glued together with shell. Nothing wrong with that solution if it fits the problem well.
Though I have no experience with it, a classic rapid prototyping thing for GUIs is Tcl/Tk. Remember that you were talking prototyping, not production-ready solution baking, so it only has to show what the production code should be doing. If that's not enough you're not rapidly prototyping.
Beyond that there's the "best of breed best business practice" bullshit like javascript and all its derivatives or the vb-of-the-web, php. Vaguely usable for things that fit in about half a html page worth, everything else is taking it too far. If not hip enough, hey, ruby is pretty rad, and python is popular. Of course, there's many more options in computing land, these are but recently popular general ones. What are you really after?
But if that's all not to your liking, you probably should leverage that old lisp learning. Modern lisps come with plenty things to do GUI and webpage things, good enough for prototyping if not production, then again that often enough too.
* For proper shell scripting stick to posix / bourne shell, no bash. bash is typical gn00 fare that doesn't play well with others.
Oh, wait...perhaps you meant most useful on the market? Well, that's where things get ugly!
Ezekiel 23:20
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.
No need to pickle objects for IPC if you are forking, pass simple strings of JSON or whatever.
I was using pickling in a general sense of any serialization. (Different languages have different preferred names for this concept: Python has pickle, Java has serialize, etc.) So let me rephrase: There are limits as to what kinds of objects can be turned into "simple strings of JSON or whatever", and you have to mind the overhead of turning the object into a string and back into an object.
Perhaps my point is that it's still purpose-defeating if the CPU-intensive thing is parsing a multi-megabyte XML or JSON or CSV feed returned from some service.
Once you learned some basics like functions, loops, conditionals or classes, there are some huge families (object-oriented, functional, procedural,...) but inside a family there are little differences. Like "def" in python is "sub" in perl. You should care more about questions like tool-support (is there an IDE?) and libraries or frameworks. You should never start coding without wondering "am I the first person on this planet solving this particular problem or might there be libraries I could use instead of reinventing the wheel?" Since you are using bash/grep/sed/awk/bc/etc anyway, I believe you are pretty close to perl anyway. And perl has CPAN, a central repository where people can show off their code and find great libraries. Personally, I believe perls huge success wasn't caused by the language (which I consider to be quite annoying), but by CPAN. You need a perl-library? Go to CPAN. You need a C-library? Aehm, try google... But I often have the feeling that perl-coders don't really cooperate. Perhaps that's not their mindset, perhaps they just can't agree on a common coding style ("there is more than one way to do it" and you will understand what that means after reading some code from different programmers), but in the end they seem to be more likely to start a new module at CPAN instead of improving an existing one, so looking for a module can quickly result in evaluating five different modules done for the same purpose, just to find out that three of them have seen no updates for at least a year and another one is lacking documentation. Pythons CPAN is PIP and to me it seems like there are fewer modules, but it is easier to fond good ones. For example ,try finding a good library for logging and a good one for reading config-files in CPAN and PIP.
tl;dr: try defining some aspects like "tool support" or "top 5 libraries I will need" and check perl, python and ruby. Then decide by those aspects.
There is more to a car than simply the engine.
Once you learned some basics like functions, loops, conditionals or classes, there are some huge families (object-oriented, functional, procedural,...) but inside a family there are little differences. Like "def" in python is "sub" in perl. You should care more about questions like tool-support (is there an IDE?) and libraries or frameworks.
You should never start coding without wondering "am I the first person on this planet solving this particular problem or might there be libraries I could use instead of reinventing the wheel?" Since you are using bash/grep/sed/awk/bc/etc already, I believe you are pretty close to perl anyway. And perl has CPAN, a central repository where people can show off their code and find great libraries. Personally, I believe perls huge success wasn't caused by the language (which I consider to be quite annoying), but by CPAN. You need a perl-library? Go to CPAN. You need a C-library? Aehm, try google...
But I often have the feeling that perl-coders don't really cooperate. Perhaps that's not their mindset, perhaps they just can't agree on a common coding style ("there is more than one way to do it" and you will understand what that means after reading some code from different programmers), but in the end they seem to be more likely to start a new module at CPAN instead of improving an existing one, so looking for a module can quickly result in evaluating five different modules done for the same purpose, just to find out that three of them have seen no updates for at least a year and another one is lacking documentation.
Pythons CPAN is PIP and to me it seems like there are fewer modules, but it is easier to find good ones. For example, try finding a good library for logging and a good one for reading config-files in CPAN and PIP.
tl;dr: try defining some aspects like "tool support" or "top 5 libraries I will need" and check perl, python and ruby. Then decide by those aspects. There is more to a car than simply the engine.
From someone who used Perl for over a decade: as soon as your project evolves beyond a couple of package files Perl degrades into a nightmare. I learned Python from scratch a few months ago and it is easier to code and manage by leaps and bounds. Character encoding and number of existing libraries also shines compared to Perl, even for Python 3
Slashdot ate my '>' sign
in those extreme cases ofttimes the objects (or data structures) and messages are handled in libraries called by python (e.g. the popular science and engineering analysis packages)
Try ELM [elm-ang.org], which is FRP [wikipedia/FunctionalReactiveProgramming] in action.
I never tried it but I want to as soon as possible - it looks really promising.
The only language that is capable of all those specifications is Javascript. (Java could but requires more time, knowledge, and compilation)
I would not limit myself to Javascript for data analysis though, because the environment is more important than the language here:
- Excel for viewing, maniuplating, and simple forms (VBA)
- Access for joining many tables together, instant forms/reports, can also do transactional forms (VBA)
- Matlab for interactive statistics/engineering
- Perl for quick scrubbing and regex
- iPython
So, if you want one language for everything, Javascript. If you add VBA to that, you can rapidly analyze and develop on a windows machine (Excel/Access/ASP/vbscript). You could even map a common set of functions from your RAD environment to your multi-platform environments.
What can you really expect from a different language? Your code isn't going to look that much different in a different language unless you're taking advantage of something rather unique. There are going to be quirks in any language you learn, so just get used to them and don't worry about it. I'm only 22 and I have no problem using PHP, I don't understand what the big deal is with all these other languages. You mentioned C, I was actually intending on learning C++ (which is pretty much an extension of C) because I liked it more than the other ones I looked at... I just had no reason to make a native program and I wasn't too interested in helping out any OSS projects I saw.
Maybe I'm really just an old geezer in some kid's body.
Really, think about it, especially if he's using windows. No other app language is as flexible as VB / VBScript. It does command line (.vbs), it does server side (ASP), it does client side HTML apps (.hta), builds macros (Vba) and full blown apps with only minor tweaks among the environments. It's also dead-simple to learn. The OP said he doesn't want to be a programmer, that he just wants to get stuff done. I am of a similar mind; when I just want to get some stuff done, I fire up notepad and do it.
Tcl/Tk is a rapid language to produce in. Its slightly slower to learn.
Its platform independent, extensible, its even fast if you code properly.
It sucks at number crunshing and graphics like 2D/3D engines, thou.
Python is compelling because you can use Jython and learn one syntax for systems programming and embedding a language in your Java code. With the bewildering number of languages which have similar but difficult syntax, which causes me cognitive problems when switching languages so much, I like to keep things simple. Python/Jython helps.
Yet Python has committed language suicide by breaking itself between version 2 and 3. I used to use the fact that Jython was apparently frozen in version 2 as an excuse to ignore Python 3, but now Jython is catching up. This breakage is just as bad as switching languages. (Breaking your own print statement, really?)
So there's JavaScript, which is widely used on the client in browsers, usable on the server as a scripting language (Node.js isn't just for web servers), and has a Java implementation as an embedded language.
REXX is what you want. I could make arguments why but this article does a decent job. I'll get lambasted for recommending such a dinosaur for recommendations to a modern language but if the tool works who cares how old it is? In fact the latest version of the Regina interpreter for REXX was released just last week. If nothing else read up on some of the ways REXX has been used to "GLUE" other systems/ programming languages together. It should be just what you need to tackle those tricky situations that nobody around you will care about but make your day a living nightmare.
"A person is smart. People are dumb, panicky dangerous animals and you know it." - K
I really think it's something you should try. RAD with Linux/windows/mac support....generates single executables, good performance....and if you were a programmer years ago, i'm sure you touched pascal anyway. Also android support it's getting in shape.... Really dont know why it doesnt get more traction.... P.S. Sorry for my english...
You said: "as web apps using PHP"
How about just using PHP from the command line? It's dead simple and just extends all of the things you already know how to do: sed, grep, shell scripts and C. Just read from stdin and write to stdout and you have access to a lot of capability with very little new learning. You don't need web pages to write PHP. It can be used like any other scripting language (Perl, awk, etc.)
"Almost every wise saying has an opposite one, no less wise, to balance it." - George Santayana
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
*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.
I'm going to break with the others here and recommend Haskell. These days, Haskell can be used to write basically everything except desktop apps and mobile apps. And learning the important ideas of Haskell will prepare you for the new features in each version of languages like C# and C++.
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.
The difference, of course, is that talking (or communication) and driving aren't special skills, and are essential. 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. It takes a special aptitude to program well, just like it takes a special aptitude to truly comprehend why more complex math works (Most people don't, and wouldn't even without our useless rote memorization system.).
With it's roots in Apple Hypercard, Livecode by RunRev expands on the ease of Hypercard's English-like language with multi-platform support including mobile OS. I've never found anything quite as useful for little one-shot applications and tools, rapid prototyping, and eventual releasable products.
Visual Basic is nice for quickly making a prototype GUI.
Then you can use C to build a working program.
Despite what the neck beards tell you.
I've been using the Meteor framework for about a year, and it's fantastic for rapid prototyping, especially for multi-user apps where keeping data synchronized real-time is important. Its Javascript on front and back-end, provides a simple templating system, and a really cool feature called latency compensation, so that calls to the server are simulated on the client and respond immediately. www.meteor.com.
People will tell you that you absolutely must use this language or that language like there is no alternative. Ignore those people. There is no one correct answer to this question. It's a matter of taste and choosing the right language for the job.
I get the impression you want quick shell script type programs. If so you might like Perl or Python. Perl has better regular expression support and lets you do more with less typing, Python is easier to master.
Much the same can be said of people who have failed to learn elementary courtesy.
Practical Common Lisp by Peter Seibel is available online for free.
For me, having invested immensely more in Clojure than other languages (I think that's an anomaly), it's faster for me to write Clojure than anything else going forward. I've been having a lot of fun using the same knowledge on multiple platforms, be it JVM-Clojure or JS with Clojurescript. I've also used python and ruby (and PHP), but I'm finding that node.js is a lot of fun, and npm is a coherent package manager. If you're just starting out, I recommend doing Javascript + Node for max bang for your time-buck. You'll get your backend and frontend at the same time, and it's quite a fast runtime. Javascript itself has some thorny edges, but it's a relatively simple language compared to the others you're considering.
Swift!
I am in the same boat as the poster. I would recommend Lua. My company "codemeisters" are all Python addicts. Lua is easy to learn, fast, and interfaces with C libraries easily. And it is embeds well.
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
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:
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.
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.
I've actually found Dart extremely easy to use for web projects lately. I only learned it a few months ago, but I am already creating web apps in half the time it used to take me in Javascript/PHP. It's a very familiar C++-ish/JS-ish syntax, but with types and more supporting libraries. The downsides are mostly that it is new (and so has less supporting frameworks and such), and has to be compiled to JavaScript to run outside of the dev environment. It's actually made writing web apps exciting for me again.
that the yahoos who have to maintain your code 5 years from
now put the right thing in the container.
Strong type checking is GOOD for large projects with lots of people that are developed and supported for a long time.
One wonderful thing is if you need to change a method, you change it, clean and rebuild, fix the 200 error messages then it works.
First, there is no best programming language. Depending on the type of program you want to create C can be a rapid development language. It would however suck very much if you want to write an web-service. If you need console tools you might use python or a JVM based langauge with an IDE, like Java (very verbose), Xtend, Scala or Clojure. You could use groovy if you want to develop web UIs quickly. There are so many options what you can do. In general iff you are a real programmer you can learn any language in two weeks plus some extra time for the APIS you have to learn too. You should not learn JavaScript, as it is one of the worst ever engineered languages, as it contains any number of concepts which allow you to shot yourself in the foot without knowing it. It might even shoot you in the back after working for some time. The other no-go is PHP. If did extensive coding with it back in the days, and it requires too much debugging time.
As a LISP programmer, you might find a lot of concepts very familiar with Clojure, Scala or Xtend.
If you actually just writing scripts with sed, awk, and bash you could use Perl. Even though Perl is a write only language.
GUI for web, mobile and desktop. One language?
Even if you could get away with that, the language itself is the most trivial part of learning a platform.
Just don't bother. Seriously. If you don't have time, reign in your expectations.
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!
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.
Get free satoshi (Bitcoin) and Dogecoins
Of course, JavaScript has a C-like syntax, but its object structure is better understood in terms of good old Lists.
If you know about lambda, defining methods or functions will not seem weird in JavaScript.
(No one ever seems to mention this similarity, but there is no point having to discover it on your own.)
If you skip all the answers with php (you already know), Python, javascript (you already mentioned), you might discover this: Gambas, a programming language + IDE. I use it for the cases you describe: - interpreted rather than compiled - web enabled select "CGI Web Application" and / or "network programming". - desktop solution (quick and dirty): select Graphical application. - command line code to start from a script (Gambas code without GUI: select new project, "Command line application"; reported to work on Raspberry Pi. - cvs dumps / log file processing (Regular expressions option) - database enabled (I use it mostly with MySQL) so you might go readonly to a database instead of making the tour via dumps; I use it a lot to generate management information straight from the database used by software used in the company. - I never used it for software development for software "products", but I wouldn't know why it wouldn't work. It is very nice for quick problem solving; from the IDE with syntax highlighting, you can choose to make a source code package as .tar.gz (what I use mostly together with a client-side shell script to download and unpack).
You don't want to learn a new language but know the general concepts: gambas syntax is based on "visual basic like", but it started from principles close to java (object-orientation - but you can also just write traditional code).
Easy application "local settings" storage, internationalisation (I mostly write the code in English and use the internationalisation to make the needed local strings for on screen use), Subversion repository, QT/GTK specific interface, SDL, etc. The Gambas IDE is programmed in Gambas itself, and a lot of examples are included in the IDE.
No "check" for platform-independant; no windows version available, use on Mac I'm not sure, but I read you do most things now in Unix shell scripting, so might be Linux.
Gambas is now at version 3, I use it since end of version 1/start of version 2. It is included in the most Linux distributions (in repositories you might have to switch on). They have a very active mailing list.
For anything quick or small, Python is my first choice. It makes programming a pleasure.
I'm a long-time C++ programmer and big enthusiast for the language and I often use Qt as a GUI. Big, powerful languages and big, powerful IDEs are fine for my day-job, but programming should be easy and fun.
I've looked at a lot of other languages along the way, so hopefully that qualifies me to make a comparison; I regularly use Objective-C and GNU Unix tools like awk, sed and grep and have played around a decent amount with Perl, Java, LISP(s) and Javascript.
Points in favour of Python:
1) I still can't believe how often my Python code works first time
2) Things that are common and ought to be easy, are easy: list processing, string slicing, parsing, formatting etc.
3) The code is neat, readable and usually well structured
4) It runs in a REPL, so it's simple to play with the code mid-program and quickly try things out
5) The natural solution is usually easy in Python and sometimes Python offers an even better way (Python's generators are awesome)
6) It has so many great libraries readily available for practically any job, usually you can find something simple (eg. EasyGUI and itertools) as well as brilliant powerful tools when you need them (eg. Qt and Numpy)
7) There is no irritating nonsense: no boilerplate, no endless class creation, no impossible to remember formats
8) It is incredibly easy to learn for anyone with a C background - you can often guess the command name and how it works
9) Basic text processing and OS commands are easy and good. Almost as powerful as UNIX GNU tools such as awk for example, but much easier to learn and use
10) It has a huge user base and great online support
Compared to the obvious alternatives:
Perl - I think it's fair to say that Python trumps Perl for basic system scripts and text mashing. It's just easier and more readable.
Ruby - Python is as simple as Ruby, and almost as class-oriented, but with a bigger user base and better libraries.
LISP/Haskell - Functional languages are fun, but many of the things that make them useful are in Python, except with out the mind-bending syntax.
Javascript - Python is simpler, more capable and more rational.
(I can't speak to PHP, but I don't know anyone who prefers PHP to Python.)
The only things I would say against Python are:
1) Simple web hacks are non-trivial (the one time I would recommend Javascript, which is otherwise not a particularly nice language to deal with)
2) It's not a great language for low-level memory manipulation, typed data structures or fast, custom-built low-level algorithms (use C instead, in fact most Python libraries are written in C), but I would say that the Python libraries are great and I rarely have to turn to C, but it is not too hard to integrate C functions back into Python
3) It doesn't have a built-in notification centre, or run-time class extension like Smalltalk/Objective-C, so some design patterns are not quite so simple to implement. But if you're doing a project big enough to be worried about these design patterns, you're probably asking a different question
4) It you are a complete nut for hyper-terse syntax you might still want to torture yourself with Perl, or try to pick up something really painful like K
IDEs: Some people have recommended using Python with an IDE like PyCharm. PyCharm is great, but I prefer to write simple Python programs with something much simpler like Code Runner or an iPython Notebook. For simple things there is no need for the overhead of a big IDE, and as I said, Python works first time so often and the REPL is so handy, that I rarely find myself needing a debugger. It's so nice to be able to just type and go.
And a novice can write some really ugly code in Perl... which gets stuff done and pronto.
There are gazillion of Perl modules on CPAN so there's usually you can find that is similar to what you're trying to do, or can be easily tweaked what you want to do.
And (GASP!!), you can write enterprise worthy code in Perl. (.. no, it's true, I've actually seen it, and currently do it).
A decent code editor (aka Komodo) will make the job much easier but even the lowly notepad++, kate/gedit, vim/emacs, ultraedit/uex will yell at your syntax errors in a supportive yet loving way.
Still Delphi!
Back in the school days it was List and C for me too.
They also taught some machine/assembly languages, Fortran, Cobol, Ada, and one functional programming language they called "FP".
Since then I've been paid to work in C++ and then Java when that came along, plus a smidgen of perl and bash/csh scripts. Java cleaned up the syntax and brought us closer to pure OOP (hey there smalltak!). It also gave us a very nice class library. Others have built some very useful frameworks in Java. You might find Java interesting but for rapid development no.
Last year I had the opportunity to learn and use Python (urgently!) on the job. That was a very rewarding experience and I think it makes for a great rapid development language. The syntax is clean. The semantics are powerful. Just like Perl and shell scripting it's interpreted so you can try things out very quickly.
So do try Python but (and you know everyone has a big but), to really achieve rapid development you need to leverage good code libraries and frameworks. Start with the standard python stuff, a good way to go is "Dive Into Python" which is available free online.
Javascript for rapid development? Not convinced, have not tried it beyond some very simple browser funness.
If performance with Python will not meet your needs, maybe Java. And if that is not good enough (shiver) back to C++.
There may be an interpreted language leveraging the JVM, dunno but it might be a good way to go too.
Best and do enjoy the journey.
NO, it's not a member of the C+Java line of languages. Syntax looks similar on the surface, but it is nothing like those languages. People who believe this are also usually the ones who think it sucks because they fundamentally misunderstand the nature of JS. It's at minimum an interpreted hybrid of java syntax and LISP with an embedded asynch loop. This makes how you think about things (or should think about things) VERY VERY different from Java. I work on both constantly and while the syntax is similar, the real issues are nowhere near the same - for both good and ill.
Otherwise I agree...
I think JS is a fantastic language. Certainly worthy of future development. Most of it's warts are from being birthed in like... 10 days or something. But for raw productivity and prototyping and Getting Things Done it just can't be beaten if you know it well. Especially since it plays so happily on the web and you can use the DOM/Web as your GUI.
It's also one of a very few languages which are truly cross platform - mobile, all desktop OSes, Node for the server, etc.
Amen to that, bro!
I'm an embedded system designer and honestly I find it horrible how no one can use or programming on Linux / Unix and how no one can program in C. C is a perfectly fine language for quick prototyping, you can design a reasonably large logging system with database integration in a hour or two, which is quicker then even PHP. If you use GTK, X or several of the other GUI toolkits, you can add a nice GUI to an application in a 1/2 hour. The fact is C is still quick and it can out preform the bulk of most language, don't give it up, stick with it! I might be 26 ( 4 days until 27 ) but honestly C and Linux or Unix is still the best way to go.
you're the runner up
-I like my women like I like my tea: green-
Give LiveCode a look. Rapid prototyping, GUI, good support, etc.
http://en.m.wikipedia.org/wiki/LiveCode
Given everything you've said, I suggest you keep using bash and PHP. Invest your effort in mastering the tools you're using. You may be surprised at just how powerful bash can be, for example.
The thing is, unless you really invest the time to master a new technology, it isn't likely to be of much use to you. So master the technologies you're using.
FileMaker.
Laugh all you want. If you are you know nothing about it and didn't read what this person needs.
A subsidiary of Apple, been around longer than most of the people that read this site are old and actually does amazing things cross plat, mobile and Web.
Doesn't scale, and you won't build the next FaceBook on it, that's a different tool set. But it will handle millions of records per easily, give you rich UI elegantly where you need it faster than almost anything else, and can easily access external SQL sources.
I'd be amazed if anybody on this list will agree with this rather dismiss it out of hand. We'll see.
That's not cosmonaut, it's confidant. None of the gals was Russian AFAIK, and probably none of them had been higher than a commercial airliner normally flies.
'The Economy' is a giant Ponzi scheme whose most pitiable suckers are the youngest among us and the yet-unborn.
Go is worth mentioning. While not yet able to easily cope with GUI or iOS/android, it's quick to learn, readible, and pragmatic (geting things done, fast). It works best for servers and console based tools (big or small). As others have mentioned, compilation and static type checking are an advantage over a scripting languages like python, especially for a beginner.
SmallBASIC - runs on Windows / Linux / Android / others
Great for super quick and dirty hacks.
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.
First I will address Python because that is what 80% of the comments are about. The reason I chose not to use it on a regular basis and used RUBY instead is because of the whitespace significance. Coming from a C background, I did not like it. Funny thing, after using HAML for a few years, I now think it one of the most awesome things about it.
I have been thinking about this very thing for quite a while and here is where I am on it.
1) Javascript. once upon a time, there was hope that frontend web work would have a choice. Those days are gone. If you work on web frontends, you are using javascript. Coffeescript can make it more convenient but if you don't understand the core concepts, you will be at a disadvantage.
2) RUBY or PYTHON. I learned RUBY years before RAILS came out. The backend was slow and the libraries were not as fleshed out as Python but I liked the whole idea of programmer happiness. I just saw something there that that looked like the future. I think PYTHON would be just as good, both are portable and will get you a lot of milage.
3) GO. If I could only learn one language, it would be this one. While not a perfect language, I think this will be the dominate language for systems and maybe scripting for years to come. I always had a dislike for the verbosity of C++. I like the pedigree of the founders. I love the idea of the cheap "threads" ( not really threads but even more useful I think ). It has most of the things I love about Erlang but in a more human readable form. I like the idea of a language that can be procedural , object oriented AND functional. I never minded the hiding of pointers in JAVA too much, I just hated that you could not get around it. Systems programming sometimes need to use real pointers. I think the parallel nature of chip designers makes this THE language or at least language type of the future.
Just my 2 cents.
.sig
I have almost the same background as you (considered by many a UNIX and C guru)
Lot of people tend to go for Python which is a good choice but I prefer R and / or PERL + TK
I recommend Haskell.
Just because it will take you a week to get your head around how a Functional Language works, the syntax is subtle and terse, and the whole programming model is different should be no reason to put you off. At least it's not Malbolge...
I mean - pure functions, no side effects, infinite lists, lazy evaluation, indentation sensitive, the list goes on...
A convenient 'out' that lets you handle that awful non-deterministic I/O, what's not to like?
(note sarcasm)
(note for the humour or intelligence deficient!)
Seriously, I like Haskell, I just can't imagine working in it, and I'm not suggesting you should learn it in preference to (say) Python.
Javascript underpins the web and is not going away soon. All UIs will be HTML given a few years. Enterprise Javascript with Node.JS has only just got started - it will rival Java and .net on the back end, and eventually relegate them to maintain status languages like C++.
You could learn something that compiles to javascript, but best to understand it first. And given half a chance, Javascript turns out to be a nice language with some cute features. It's not perfect, but it has unstoppable momentum and they're fixing the 'broken' bits pretty quickly now.
I've been writing perl since the camel was pink (~20 years?). I've done projects with 30K+ lines of perl code and 100+ classes. No nightmare.
Maybe you're not doing it right?
Now if you want to argue that more is happening with Python development than perl these days, I might go there. :-)
It greatly depends on the environment in which your data processing and glue scripts runs: if it's homogenous enough to go for an installer runtime like python or ruby, then so be it.
As a matter of fact, Perl is often available, and the CPAN is a trove of readily available solutions.
This kind of scripts is typically what I'm doing on frequent occasion, and I've always found that portable shell scripting has always trumped any other solution as long as your environment is unix driven - and then for this rare cases where Windows is the platform of choice, I package a few cygwin exes and dlls with the script. I'm working on a very controlled environment though, and expecting to have access to CPAN, much less to Python or Ruby runtimes is a recipe for a great deception.
Shell scripts I say: it's a default on so many plaforms that it's worth keeping it fresh.
As for the next step, I'd say Perl because of its pervasiveness - and the fact that it's a still alive and mightily kicking language - then Python as it's quite common on Linux distributions now.
A closing word: don't dismiss a language because it feels old. If C is a bit overkill for glue and data manipulation code, shell scripting is not going away soon. IMO, the important part of doing our type of job is to know to use the pertinent tool to get a result quickly enough without compromising maintainability too much.
Sure, you can grasp stuff you google and simply repeat the trick over and over again. If you don't want to learn a new language then that's probably the way to go.
However, if you invest a few hours here and there, you will start to master a language that suits your purpose. I myself learned Perl back when C and LISP were still taught. Any quick, one-time transformation I can do in Perl. There are a bunch of other languages out there that so similar stuff for you purpose (Python, Ruby, etc...)
I also sense you'd be happy to graphically click your transformation together. I advocate against such practice as the solutions I've seen so far work well for Hello Worlds but start to stink at anything half complex.
If you have a career you will understand that unless you invest (in yourself) you will remain at the mercy of others.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
Pyhton is dead as a dead snake! (just for the troll)
try Typescript, Clojure or Dart !
I would like to mention my pet project, IOVAR, hosted on Google Code. One of its goals is to aid in rapid development/prototyping as it bring shell scripting concepts to the web. IOVAR is currently in a usable state but lacks a "getting started" guide so I won't yet call it a beta release. I've licensed it with MIT license and would love some feedback or help!
-IOVAR Web Dev Platform
You can do anything in MATLAB. Everyone knows this. And if you can't, you just pay $200 and then you can. Then if you find you can't do something, just pay another $200 and you can again.
You can even have your MATLAB application converted in C, then compile it and distribute it standalone - for $200.
"Best Rapid Development Language To Learn Today?"
Well sure, you could try using...
"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"
Ah, um, hmmmm.
Look, I'm going to give you a protip about us "young folks": You seem to be under the assumption we are masochists. We are not.
If there was such a language, we'd all be using it daily for our development. The reason we use the tools we do are because they are the easiest tools for the job we do. Do you want to learn the most relevant tool for mobile development that is also the easiest? It's likely the one everyone else is using. If there was some hidden shortcut to do highly relevant development very quickly for every single platform, we'd all be using it. I don't like writing more code than I have to for the fun of it.
It sounds like you're trying to double dip here. You want a language that you can use for data modeling, but on the side you want it to be usable for about every single other arena for software development. Again, us young folks are already taking the easiest path. If you want to hit all those targets as well, learn the same languages that everyone else has already determined are the easiest paths, or keep focused on data modeling. The needs you're trying to specify for each language are totally different. Data modeling likes interpreted, but mobile strongly avoids the overhead of interpreted languages. All your requirements are exclusive, which is why there are a bunch of different languages and APIs to begin with.
Matlab is one tool I see frequently used by engineers who are mostly data modeling focused. For each of the other focus areas you've mentioned, I could probably list off several languages, usually with no overlap to the other platforms. Java possibly comes close, but you're not going to cover all your platforms, and it's not interpreted.
And to be honest, what you really haven't even scratched the surface of is that even if there was a language that covered all those platforms, you'd need to actually know all those platforms. Know the ins and outs of code signing on iOS or the Mac? Permissions on Android? 32 bit vs. 64 bit differences on Windows? The specifics of a bunch of different web browsers? If not, a language that covers all the platforms won't get you far anyway.
Have a look at Servoy. It is not a language, but rather an environment that encapsulates all the SQLs, Javascript, Java, XML, HTML, CSS etc. and allows the building of web, mobile and GUI apps that leverage data from easy to interact with back ends.
One particularly useful feature is the ability to relate SQL databases from different vendors to one another (stock data in Postgres, web data in mysql, link the two.)
Well, my household has three Macs, three iPhones and two iPads, and I don't think Swift is even close to being suited for OP's needs.
Right now, you need to pay $99/year just to get access to a beta compiler and a beta IDE. It'll be free to Mac users after the beta period is over, but even then you have no hope of deploying it on non-Mac/iOS platforms anytime soon.
I'm planning to start playing with Swift as soon as they release it officially, but I'm only interested in writing an OS X application. If I wanted to write something cross-platform, I'd be working on anything but Swift.
Then you could use SmallBASIC. Write your 2 minute hacky program in the desktop IDE, then export it directly to the running app in your device.
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).
Embarcadero (Borland) Delphi XE2 & C++ Builder -> http://www.embarcadero.com/pro...
* Look @ that featureset & you can target pretty much everything & anything widely used today in PC's & Servers (MacOS X & Windows), + Android & iPhones!
(What more could you want?)
APK
P.S.=> It's LONG been my favorite tools for development (even moreso than Visual Studio) for a GOOD reason: Back in 1993-1997 I was primarily a Microsoft VB6 - MSVC++ developer on the job - then, of ALL PLACES in a competing industry trade journal, "Visual Basic Programmer's Journal" Sept./Oct. 1997 issue "Inside the VB5 compiler" (when VB got a watered-down C++ compiler that produced "stand-alone" executables) is what "turned the tide" for me!
Especially when Delphi won 7/10 tests (ranging in all types of programming tasks) & even DOUBLED msvc++ in MATH & STRINGS WORK (almost tripling it in strings, & face it - EVERY PROGRAM WORKS WITH THOSE)...
That tell you anything? It did me!
Being a competing trade rage, they *tried* to downplay that fact, only noting it in 1 line of a 4 page article, but the charts & graphs "told the tale" & the truth: Delphi, rocks! & their C++ Builder "ain't too shabby" either!
It's a combination of C++ & VB imo (very C++ OOP language, only REAL MAJOR diff.'s, pretty much, are instead of curly { } braces, you use BEGIN-END statements, each line ends in semi-colons, but pretty close to C++ in its Object Pascal 7.1 engines, + you can use "NESTED FUNCTIONS" inside procedures &/or other functions (which is GREAT for scope control, no other language I know of does it, & it makes hunting them down easier & faster too, without using object inspectors etc.) & yet you build in a VB form template easy paradigm for user screens in GUI apps... easy as it gets & FAST)
Overall, it beats the hell out of old-school C/C++ SDK work that took ages to do the same on those forms, that is certain...
Anyhow/anyways - there you go! It stole me away from MS stuff (though I use that @ work the most usually) for my personal projects & also employment paid ones too...
... apk
Javascript is great for prototyping - it even has a keyword/property thing called "prototype", and also another one called "__proto__" :)
I use Excel VBA, because it's installed on just about every computer there is.
It also has tools for making data look pretty, which always impresses management.
one thing you wrote:
"I don't think that I could pick up an entire language in a couple of hours with just a cursory reference work—"
I'll offer that back then you probably _thought_ you were doing a good job in a new language after just a couple hours (if you did that).
The fact is that you are now more experienced, and realize that only a couple hours and a reference tome available doesn't equal doing a good job in that new language. You're just hacking around and being cocky while doing so.
Python is great for quick programs if you don't need a GUI and don't plan to give your programs away or sell them. But what about a rapid development language that is inherently GUI aware? Of course this ties you to an OS, but this guy sounds like he's asking for the modern version of Visual Basic. I'm not a Mac person, but it sounds like Swift might become VB on OS X. I'm not sure Visual Express is the modern version of Visual Basic for Windows anymore - so what is? And did Unix/Linux ever have something like VB?
Without a GUI, programming is text based, and that can be cool if we don't mind writing programs that look like those of the 1980s.
R is made for cleaning and analyzing mounds of data (though R requires all that data to reside in memory so there are limits). Its interpreted, RStudio is an AWESOME free GUI, and there are libraries (AKA packages) for just about any data task you'd like to do. You can do sophisticated things quickly in the REPL and writing short analysis scripts is pretty easy. It is a functional language (mostly) and sort of OOP (not really) but it'll get the job done for data tasks.
Be More, Be Manly, The Manly Geek Ubergeek Extraordinaire Blogger: www.manlygeek.com/blog Podcaster: podcast.man
TypeScript has the best of both worlds in the JS space: the ubiquity of JavaScript (all browsers, everything else with Node) and also an optional static typing system to catch more errors faster.
I'd recommend JavaScript. Even though some people say it's "hell", it's actually not if you learn it *right*. And it's easy to get started with both client (browser) programming, and server-side programming (with node.js).
My personal experience is I spend 10% of my learning curve learning whatever language and 90% of my learning curve learning the available libraries for that language.
So I tend to want to use Java for everything not because the language is better than some other (it isn't, but arguing about it is pointless) but because I am proficient in a lot of class libraries that come with it. Also it has a defacto-standard project structure pretty much enforced by Apache Maven.
Most recent case in point for me is learning Objective-C to do IOS applications. Learning the language itself is not that big a deal even if you do stumble a lot (at first) over the square-bracket syntax of its message statements. The only thing that makes it usable at all is Xcode's excellent IDE support for the library documentation always just a context-sensitive click or two away.
That, to me is the biggest problem with Javascript. The language itself is pretty cool in some ways yet full of pitfalls and more prone to abuse and misuse than almost any other language I can think of. Netbeans does a decent job of making a debugging platform workable but the class libraries alway require web searches for examples and tutorials. Until you are proficient (months of coding maybe) it is really slow going.
BTW, if you really want to go the Javascript route but still yearn for Python you should look into CoffeeScript.
This is another (non-anonymous) vote for Go (golang). Here are some reasons:
* Type Safety
For any serious project type safety provides a massive boost to productivity and correctness. Go's type system is powerful but not too intrusive to more generic coding.
* Fast compilation
Although it is not interpreted the language and package design allow very fast compilation so that it can be treated as a scripting language and compiled at run time.
* Good libraries
There is a large and growing collecting of libraries, mainly focussed on web service applications but other areas are also supported. You can create a web server that handles multiple concurrent requests in a single page of code.
* Good package (module) support
Go provides the ability to create packages with a certain amount of encapsulation and data hiding without it being a burden on development time.
* Built-in concurrency
Language support for concurrent execution and synchronised communication makes it very easy to develop modular applications that support multiple activities.
* Clean Syntax
Go code is easy to read and missing lots of fluff from other languages. The gofmt command tidies up code and makes it consistent throughout a project
* Built-in unit test framework
Go makes it easy to check that you code does what it is supposed to
* Good performance
Not quite up to C++ standards but faster than interpreted solutions
* Can generate JavaScript!
There are at least two solutions for converting Go code to JavaScript, so you can can use one language for client and server code.
I also like the type system (interfaces) and other language features, but these are more a matter of taste.
Haxe is all you need, supports everything you said, mobile, desktop, cli in one single language that compiles to different targets including native ones. http://haxe.org/
http://livecode.com
It's a modern version of HyperTalk, and one that runs on Windows, Mac, Linux, iOS, Android.
Though verbose compared to most other languages, it's *very* good with text manipulation, and is very quick to knock together a self-contained program.
The problem, in my mind, with javascript/perl/python/ruby/etc is that you don't by default get a standalone install. If you want to run your program on a given computer, you need to also install all the support libraries required to perform your task.
Then again, the support libraries for those languages are incredibly rich, so it really kinda depends on how broad your usage is going to be. If it's text manipulation, LiveCode could actually be pretty good for you. If you're trying to manipulate TCP/IP packets directly, LiveCode probably isn't for you.
-Ken
Since you already know C, Cython would seem to be an optimal choice. In learning Python first and then picking up Cython, you get the general language and a compilable C like subset -or as far as I understand right now, I am doing this right now- giving you most of the speed of C with the much higher level convenience of Python.
Objective C should not be all that hard for someone that is already well versed in C to pick up but -again, still learning- it really isn't that much higher level a language than C. That being said, I love my Mac and I haven't had any headaches (yes, a UNIX refugee but it is one thing to know and another to have to; Macs give you the option to turn off your brain) since I left windoze behind. Consider that Microsoft developed Office in the protected environment of the Mac (way back when) and then slammed wordperfect out of the market seemingly instantaneously. So it is not without precedent to polish an app in a Mac and then translate to C++ and port to windows and unlike then, there is a significant amount of money to be made with OS X and iOS apps in the meantime.
In summary, leverage the C you know well to pick up both Python and Objective C. Use Objective C for the GUI development (Tk isn't as bad as some make it sound but the tools in OS X are great) and use Python for the quick development of the program. Cython gives you the ability to compile your creation and give it most of the speed of C.
Swift may well be as fast as Apple claims; however, as others have stated, it is very very new and it really is an incremental improvement on Objective C. Once it matures a bit more, it should not be all that hard to make the transition when the time comes.
To learn Python, I recommend Learn Python The Hard Way by Zed Shaw.
Hope this helps and for those that will come afterwards, be gentle with whatever criticisms might be warranted, we are all always learning.
Try LiveCode for real productivity and a lot of fun. (livecode.com) They went open source last year and the community version is free. As and xTalk language it has been around since the days of Hypercard. But it's not a "kids thing"... If Nasa can use it to monitor satellites, you know it works. You can code in one language and deploy desktop apps to Mac, Windows, Linux, iPhone and Android and use it on the back end as a server language for the web. It has it's limitations, but if you want to build stuff fast and efficiently, there is nothing like it out there.
sorry, is the air i breathe, forgot the microsofties might not know about it.
Unix is still the go-to OS and is syntax has remained largely unchanged for decades. What's wrong with PHP and C? Most of the online/offline world so runs on these
If you live in the Wintel world the best is powershell
Gasp... I stopped using Python after using powershell (heresy!!!!)
Please do not pitch fork me, I have a family
You are asking for a number things that are in the wheelhouse of Xojo (www.xojo.com). It creates compiled applications that run on Mac, Windows, Linux for console, desktop, and web apps (on the server), and soon iOS (in testing now). The IDE itself is the same on all three platforms and compiles apps into all three platforms regardless of host platform. So it doesn't matter if you are using Windows to create a Mac or Linux application and visa-versa. We generally develop on Mac OS X and use VMWare running various versions of Windows and Linux (and old versions of Mac OS X) to do testing. The same IDE creates console, desktop, and web apps. There are platform differences but the framework is mostly the same between all of them. This means that creating a rich UI on a desktop app is very similar to a rich UI on a web app and so on. File handling, database I/O, sockets, email, etc are the same on all platforms too so once you learn one you pretty much know the other platforms and targets too. Learning the language is very easy. It is a modern object oriented language that has a lot of stable and mature features. The Xojo IDE has a decent auto-complete so it is easy to figure out. The Xojo community is also very friendly and helpful and I highly recommend that you check out their forums when you have questions. So where do I fit in all this? I've been a Xojo developer for fourteen years and a Xojo consultant, trainer for twelve, and been blogging about Xojo (then Real Studio) since 2005. My firm has done commercial projects of all types all over the world for clients from big to small. We also offer training videos for people who like to learn via video and also offer one-on-one training. Three of our four Xojo developers have spoken at developers conferences.
If money is not an issue then Delphi ticks all your boxes; it's compiled, targets Windows, Mac, iOS, and Android. The language is Pascal so it's easy to learn and understand. There is huge support for it, both historically and with live webinars, a youtube channel (with videos from the webinars). It is also a RAD tool with strong UI designing elements. It has all the most language features except it has strong typing (which makes it easier to debug and understand, but slows development compared to Python).
I`d have to say Delphi in my experience if you`re keen on developing Windows native code apps. Recently added support for native code android and iPhone which isn`t too shabby being able to work from the same code base and there`s even a cross platform framework like VCL for them so most code not specific to platform will compile seamlessly. Not to mention the visual designer and newly added support for theme based apps. A great system for mapping graphics widgets to actual controls that equates to UV mapping in a 3d app though I've not delved far into it. Not to mention the compiler is quick as can be even for large projects with most build times taking less than five to ten seconds. Microsoft build engine under the hood for ease of linking you object files from other languages. Options for managing multiple build configurations and the IDE helps you along the gui design process via great tools and the application framework itself. Integrated debugger with support for a lot of features, map files etc. If they have native android compilation with expanding support how long will it be before they add closely related linux targets into the loop. Object Pascal is very sweet too, now supporting similar functionality to C++ like multiple inheritance (without interfaces), friend classes and strict private class members and operator overloading and records types that operate with the same functionality and diversity as C++ structs. Delphi is nearly as beautiful as her namesake...
Everything is relative. I admit that Perl is heaven compared to C or MASM. It is possible to write millions of lines of code in Perl. It is, however, a nightmare compared to Python: just the appearance of Perl code is an eyesore.
maintainability and "correctness" from the CS class perspective aren't important. Are the data and data processing valid, and did the job get done as quickly and as cheaply as possible—that's all that matters.
STOP . AMERICA . NOW
Coldfusion, is the rapid web development language, nothing i have seen is faster, so easy anyone with basic HTML can learn it. Also with a J2EE java back end it can do all sorts of other stuff outside its own strengths using JAVA. Unfortunately for people who love CFML (Coldfusion Markup Language) Adobe are a bunch of stupid fucks who have done their best to destroy it and kill it. Luckily for us there are alternatives, the best of which is Railo. Open source and faster than the CF server by Adobe. Supported by the open CFML foundation. I have a lot of hopes for it. Also Blue Dragon is a good CFML server
PLEASE DO
-- 29A the number of the Beast
Learning the basics of new language is easy. Or as least, easier than doing things with an inadequate language. And because you want "quick and dirty", you don't need to know all the subtilities of you language of choice before you start coding.
You are talking about web dev, mobile dev, desktop GUIs and text file processing. These are very different use cases and I think that using the same language for all would be silly, especially for one-shot apps. I couldn't find something that beats Perl for text-file processing, PHP is really good for web pages, if you make GUIs for windows, don't forget about VB. I don't know much about the mobile world so I can't help you there.
As for Python, it is certainly a very nice language but I wouldn't recommend it : too "clean". With one-shot dev, you can throw away readability, modularity, maintainability, etc... so you'll probably want a very permissive (ugly) language like Perl. Of course, it also depends on the available libraries. Both Perl and Python have a large catalog but if the ones you need are only available in one language, then use it.
I've been in the software development world for a long time and now mostly work with web sites and the associated details - like importing a membership list into a database table. I think PHP and the associated web application frameworks are best for the smaller sites and Java for the larger ones - like Chase. This is because of the support structure that is available and resulting complexity. Frankly, I don't see much difference between C, C++, Java, PHP and Python (having coded in them all). The minor syntactical differences are the issue and mostly you just need to respond to the error indications (Duh – like typing a comma for a semi). I wonder if the question is more – how do you import/manipulate data in a web/database environment – I use TOAD. Does everything I might every want (along with some SQL) and I’m certainly not going to write a Python script if TOAD will handle it. Last – I signed up for the Microsoft partner program back when they released NT 4. I was impressed by the rapid development scenarios they presented for IIIS / ASP. Thing is, I could not modify the system beyond the basics and had to abandon that line of development. So – forgive me – but I’m not a fan of the rapid development craze. Give me a well structured language, superior library support and the best IDE and I’ll be most productive.