views:

376

answers:

8

Variations of this question have been asked before and sometimes it's even taken for granted, so let me be very clear exactly what I'm looking for. A lot has happened to has made programming easier, but I'm not sure if the languages are actually better. For evidence we have a study, showing TCL comparable to Python. And there is the famous story from Paul Graham, claiming their success is due to Lisp.

We do have better libraries, IDEs, static analysis, search engines, and processors, but assume everything except the language is equal. Compared to modern languages (like Ruby, C#, D, Go, ...), would you be less productive in a good, but "obsolete" language?

Evidence, preferably more than anecdotal, is greatly appreciated. Thanks

A: 

I remember doing assembly language on my Texas Instruments TI99 4/a & Apple II+ : it is not hard to argue that I am more productive with Python & Erlang these days :-)

To me, design patterns account for a lot of the productivity boost: as far as I recall, design patterns weren't very well documented at the time.

jldupont
+5  A: 

In a nutshell, yes, newer languages can make you more productive than older ones. New languages have built in support for multi-threading, dynamic types, the list goes on. New languauges sacrifice the ability to minutely handle memory management for ease of use. I can type maybe 1 line in python or ruby to accomplish the same task that would have taken me 10 in C++. There is no argument that I'm more productive with a newer language over many old ones.

To say this is always the case, isn't true. I am sure there are situation where older languages will outperform newer ones. What each language is created to do in what environment etc. etc. But for the most part, yes newer languages make things easier. Garbage collectors are an excellent example of this. There are so many fewer things that I don't have to worry about, because of this.

(Although I could argue new languages don't really make me more productive, because I spend more time on SO :) ).

Kevin
A: 

just think back when you had to wait for time to compile a fortran program then wait to get a mainframe output report indicating that your program failed to compile due to some bug upon which you went back fixed the bug, re-submitted, got back another report etc,, etc., etc. It could take 2 weeks to even get it to compile!!!

Are modern programming languages/environments more productive? Its like traveling by airplane as opposed to horse and buggy!!

I would also go out on a limb here and say dynamic languages in general are more productive than statically typed languages, and most if not all of the ancient languages are statically typed.

ennuikiller
Yes; but because it took 2 weeks to compile, the whole style and approach to development was different. My guess is that programmers then had a lot fewer compilation cycles per finished app than we do now
oxbow_lakes
@oxbow_lakes true but the apps were also much less complex!
ennuikiller
What you are describing has nothing to do with the language, but with the environment which existed back then. If python existed back then, it would go through the same procedure.I personally, think it was good, from one point of view. Like @oxbox indicated, programmers used to think more (good thing!).@ennuikiller - not necessarily. They just had a lot less of useless code (code which does nothing except to "support" other code).
ldigas
Hmm, interesting thing really ... whenever someone wants to give an example of old language, he will think of fortran and then bash on it, even if they've never used it, and practically don't know anything about it. There are several other examples in here, for example vim and python first jump to mind - as all good, all mighty tools for whatever ... although the tool one is using now is just as good.
ldigas
+3  A: 

Sadly, the question as posed is flawed. You ask us to compare languages without the libraries, IDE's and everything else that supports them.

It's like asking what mode of transport is better, the car or the space rocket, but please don't take into account the cost of fuel and the destination.

A language is inextricably tied into its libraries (in anything other than an obtuse academic discussion), so your question is too focused, take a step back and ask this bigger question. Are we more productive now than we ere 20 years ago? The answer to that question doesn't get asked much because the answer is so clear. Yes, we are more productive.

ilivewithian
Libraries and languages are not the same thing. Python's great standard libraries could have been written for C, for example.
Devin Bayer
@ilivewithian: For most real world tasks, anything missing from the standard library can be found in a (usually free) third-party library. Of course, it is better if the standard library is extensive, but it is usually not a great hindrance if something is not available there.
MAK
@MAK - for most real world tasks, anything missing from a standard library is a drawback. Since when you start developing large apps, libraries start to "overlap" and problems usually arise. So *it is* good to compare languages alone as a common denumerator, so to say.
ldigas
+3  A: 

I'd recommend "The Mythical Man-Month" book to anyone who asks this question. This is because of it was published second time after 20 years with some reviews about what was changed in software development. Obviously programmer's work now is much more productive. But it is not only because of more productive programming languages.

Modern programming languages are much more productive because of higher abstraction level. But this is not the main factor of whole productivity improvement. I suggest most important thing that really changed productivity is re-usability of third-party components.

Well, let's limit only by programming language itself.

  • We actually can't compare old and modern languages productivity because of much more difficult 'average project' complexity these time and now.
  • But 'average coding time' and time to market is now much less. But what is the key reasons of this?
  • Well, modern languages have obviously higher abstraction level so this should lead to much rapid development but ... I see myself using generally only about 60% of C++ (for example). And average level of programmers qualification is lower now as I see (yes, this is my opinion based on what I personally see around).

So actually I'd prefer to ask '... well, they (languages) are more productive but what are we given from this?" ;).

Roman Nikitchenko
+3  A: 

Programmers are more productive today because of the libraries and tools available today not the languages. In fact a lot of Lisp features are being implemented in newer languages and Lisp is 50+ years old! The GC is a perfect example, despite what some have said garbage collecting has been around for 50 years. I don't believe syntax makes enough of a difference relative to the increased productivity we have seen to attribute languages themselves to this productivity boost. I would agree that libraries have made a huge difference but I would disagree with anyone who would claim that a specific language is necessary to implement a library. Take a look at the most popular languages (C/C++/Java/C#/Python/Perl) and what they have in common, an abundance of libraries. The reasons for the development of so many libraries for these languages seem to be mostly incidental and not anything to do with the semantics of the language. If you still don't believe me, take a look at any newer language and you will see clear influences from one or more languages that have been around for 25+ years. There isn't anything special about the language itself.

Chris
+1  A: 

Languages per se do not make you productive or unproductive. Working environments do: Look at the posting above re fortran. Nothing ennuikiller says pertain to FORTRAN, it is all about what it took to develop a program.

Taking it a step further, today' environment would make you more productive in creating the SAME program, unfortunately today's tools also have allowed for an expanded requirement, so the end result is hard to measure except for trivial cases. How long does it take now to create "Hello World" in language x vs. what it took ten years ago? The answer is the same in both cases for the actual typing of the code.

+1  A: 

Paul Graham's argument about the superiority of LISP is a joke. I have argumented against it with detail here. What made LISP superior in his case was not LISP itself, but the deep knowledge of LISP that the development team had of LISP. That is very important.

That kind of social aspect is crucial in order to answer the question about whether today's programming languages are better than those of yesteryear.

CesarGon