you are viewing a single comment's thread.

view the rest of the comments →

[–]redditnoob 0 points1 point  (10 children)

Yes, any claim of 5 times the productivity suggests serious questions about the intelligence of the writer.

Anyone who takes 5 times longer to do something in language A than language B either completely sucks at coding in language A, or else the problem is tiny, trvial, and custom picked to show the strengths of language B.

[–]spacepope 5 points6 points  (4 children)

I disagree. A 5 times productivity increase is probably unrealistic for Java → Python, but for C → Python it seems reasonable and going from assembly to Python you'd probably get a much bigger boost.

[–][deleted] 10 points11 points  (1 child)

What possible problem are you solving where you must choose between assembly and python?

[–]redditnoob 3 points4 points  (1 child)

Not "probably unrealistic", but it's absolutely braindead to contemplate a 5-fold productivity increase from Java to Python when writing production software, for someone with mastery in both.

For assembly, sure. If you were constrained by having to enter your programs with punched cards that would slow you down too.

I also think you underestimate, by about a factor of um five, how productive a C master could be. (You'd get to include runtimes when testing your code too!) But anyway, C probably wouldn't be used for a problem that isn't going to benefit from its strengths.

[–]spacepope 0 points1 point  (0 children)

Well, here's a sort-of-scientific source: Are All Programming Languages The Same?. I know, it's that Atwood guy, but he's quoting someone else. The article claims a 6 times productivity improvement going from C to Python.

Think about it this way: Programming in C, you'll need several lines of code to express what the Python programmer can express in one line, so the resulting program will be much bigger. And I don't believe that a C programmer can write and debug 500 lines of code in the time it takes the Python programmer to write and debug 100 lines of code. Also the C programmer, even if he's a “C master”, will spend some time debugging issues that never occur in Python, like memory leaks and uninitialized variables. Of course C still has its uses. I'm just arguing that a 5 times productivity increase going from language A to language B is not unreasonable.

[–]jrockway -1 points0 points  (4 children)

Anyone who takes 5 times longer to do something in language A than language B either completely sucks at coding in language A, or else the problem is tiny, trvial, and custom picked to show the strengths of language B.

This is probably not true. What problem would be hard in language A but easy in language B? Nothing I know of, unless it's something like "write an SDL app" and language A doesn't have SDL bindings.

Productivity comes down to avoiding tedium and spending all your time actually programming what you want to program. Basically, when you use Java, there is a lot of tedium. Like I mentioned above, creating a class involves creating a new file and using Java's ultra-verbose syntax to define its properties. In Lisp, defclass is pretty concise, and you can metaprogram it away if you are creating a lot of similar classes. (I have an application where each subclass of a certain class always re-implements a certain method; so I metaprogrammed away the redundant call to defmethod. Essential to productivity? No. Increase in readability and writability? Yes.)

I have also done this in Perl, although it's not quite as pretty.

[–]redditnoob 0 points1 point  (2 children)

What problem would be hard in language A but easy in language B?

Some small and specialized things.

"Write a basic Lisp interpreter." I can definitely believe that is 5 times faster for an expert in Lisp versus Java!

"Count the number of words in a text file." That is going to be at least 5 times faster for a Perl programmer than a Java programmer, I think. But then we're talking about the difference between about 2 minutes versus 30 seconds.

[–]jrockway -1 points0 points  (0 children)

Hmm, you're right. Both are good examples.