News for hackers. Stuff that matters.
Re:Tom Pinckney: Why I gave up on Java and switched to Python by ilcavero on Wednesday August 03, 2011 @08:52AM (#2840920)
I'm sure there are many reasons why such switch would make sense, but the ones provided here are just BS.

1)"No more XML config files" XML configs are slowly disappearing

2)"by omitting the type info a python program has fewer opportunities for bugs" this reason was just nonsensical

3)"It's free software and easier to hack on", go check the openJDK

4)"Things in the python world seem to "just work"" that's just a self delusion caused by an emotional reaction not a valid argument

5)"I can still relive the good old scheme days" ok so maybe this one is not BS

Re:Tom Pinckney: Why I gave up on Java and switched to Python by mattdeboard on Wednesday August 03, 2011 @08:59AM (#2840940)
There is a direct and measurable causal relationship between number of LOC and number of bugs. This was discussed at length on Stack Exchange podcast #9 (I believe) when the author of "Making Software" was a guest. This exact topic was discussed at length.

Java is for better or worse more verbose than Python, which means more lines of code which means more opportunity for bugs. It is hardly nonsensical. That opinion is a product of language-centric parochialism with no regard for actual fact.

Ditto for the "just work" line being a "delusion." Like it or not, Python does indeed "just work" in most cases. This isn't unique to Python of course, but I do think that is a fair opinion of the author to hold.

Re:Tom Pinckney: Why I gave up on Java and switched to Python by canadiansaur on Wednesday August 03, 2011 @10:33AM (#2841309)
'There is a direct and measurable causal relationship between number of LOC and number of bugs.'

So if i write unit tests, that increases the number of lines of code, thus increasing the bug count right? The static type information in java is more akin to unit tests than actual programming logic - they decrease the bug count, not increase it.

Whether they decrease the bug count enough to make up for the productivity loss is the part that is debatable

Re:Tom Pinckney: Why I gave up on Java and switched to Python by famousactress on Wednesday August 03, 2011 @11:44AM (#2841563)
I agree with you.. static type information reduces potential test cases which makes it more like unit tests than LOC which will impact the bug count negatively.. but even though the author argues that the 'extra' Java code is type information, I think that's overly simplistic. Java also lacks mechanisms for re-use that languages like python have.. that increases LOC and redundancy in a way that I think will tend to affect the bug count negatively.

In my experience, done right it's a bit of a wash. There's more potential cases to test in python.. but the tests are easier generally to write, and the code is more concise and easier to read.

With pretty extensive experience at this point in both languages I wouldn't say I've experienced a significant difference in bug trends at all, frankly.

Re:Tom Pinckney: Why I gave up on Java and switched to Python by arethuza on Wednesday August 03, 2011 @09:03AM (#2840953)
"There is a direct and measurable causal relationship between number of LOC and number of bugs"

I don't believe it is a simple linear relationship otherwise we'd all be using Perl or APL. More likely there is a "sweet spot" in the verbosity/terseness spectrum that is occupied by languages like Python.

Re:Tom Pinckney: Why I gave up on Java and switched to Python by sambeau on Wednesday August 03, 2011 @09:41AM (#2841081)
I think that the real relationship is between clauses and bugs and in many languages a line equates near 1:1 to a clause.

This is not the case for Perl & APL: each line can contain a multitude of clauses and the relationships between them can be complex to unravel.

Conversely some languages (e.g. at the extreme end assembly language) require multiple lines to express a complete clause.

Complex manually expressed type systems can be similar in effect to both cases. A single line can become complex to unravel e.g this kind of thing:

  int (*(*vtable)[])();
Reading complex regular expressions also exhibit similar problems in deciphering. Hence in Perl they are often broken over multiple lines with /x.

We seem naturally drawn to using lines as logical delimiters: code is maybe similar to poetry in this respect. Also, in similarity to poetry, single clause lines allow us to annotate our thinking on the same line by way of a comment.

One clause per line is probably a natural sweet spot.

If my theory is correct then the relationship between lines and bugs will still be linear but APL would have a multiplier greater than one while assembly's multiplier could be a fraction (e.g. 5 vs 1/5).

Re:Tom Pinckney: Why I gave up on Java and switched to Python by russell on Wednesday August 03, 2011 @03:48PM (#2842703)
If I had to nominate favorite chapters in a book, it would be the one in the Vax C manual that walked you through translating C declarations into English and English to C. There was also a program that would do the same They saved me from mental meltdown more than once.
Re:Tom Pinckney: Why I gave up on Java and switched to Python by mattdeboard on Wednesday August 03, 2011 @09:08AM (#2840969)
Well, I'm not going to carry the banner for the authors' research, but that is not the case they make. According to them, more lines of code = more bugs.
Re:Tom Pinckney: Why I gave up on Java and switched to Python by seabee on Wednesday August 03, 2011 @09:52AM (#2841121)
Maybe those Perl one-liners weren't so useless after all...
Re:Tom Pinckney: Why I gave up on Java and switched to Python by power on Wednesday August 03, 2011 @09:42AM (#2841089)
It could be linear with a different constant multiplier for each language. Perl would presumably have a higher multiplier than Java given its density.
Re:Tom Pinckney: Why I gave up on Java and switched to Python by seabee on Wednesday August 03, 2011 @09:55AM (#2841131)
Sounds like the kind of scaling tools like CLOC can display.

http://cloc.sourceforge.net/

Re:Tom Pinckney: Why I gave up on Java and switched to Python by smackfu on Wednesday August 03, 2011 @09:46AM (#2841099)
"There is a direct and measurable causal relationship between number of LOC and number of bugs"

Does that apply cross-language, or just within a given language?

Re:Tom Pinckney: Why I gave up on Java and switched to Python by mattdeboard on Wednesday August 03, 2011 @02:13PM (#2842264)
From what I understand, raw number of lines of code, taking absolutely nothing else into consideration, is the most reliable indicator of bug count by a wide margin. I bought the book this morning to read it for myself but haven't had a chance yet due to work. It's Chapter 8 of "Making Software" (which can legally be had for free I believe)
Re:Tom Pinckney: Why I gave up on Java and switched to Python by dustingetz on Wednesday August 03, 2011 @09:28AM (#2841036)
static type checking is like compile-time asserts -- it doesn't add to solution complexity, it just verifies assumptions about inherent existing complexity.
Re:Tom Pinckney: Why I gave up on Java and switched to Python by pekk on Wednesday August 03, 2011 @09:38AM (#2841070)
Satisfying a rigid, static type checking system often requires adding additional code which may not be significant to the solution. In other words, verifying assumptions requires additional code. Which assumptions actually need to be verified? Bondage-and-discipline languages do force you to do more thorough checking, but that doesn't necessarily mean the code is clearer or more concise. That isn't even the point of a bondage-and-discipline language.

Getting normal things done with static type checking is not always simple; sometimes code gets skewed toward satisfying the type system. This is not completely unlike the way some people pepper their code with statements that serve no purpose except to shut up a lint tool, or make their test code simpler by making their solution code more complex.

Assertions are an interesting case, as the programmer controls what gets verified and when, rather than being forced to code around an inflexible static checking system that inserts itself into language syntax.

Re:Tom Pinckney: Why I gave up on Java and switched to Python by bad_user on Wednesday August 03, 2011 @09:38AM (#2841071)

     it doesn't add to solution complexity
Yes it does.
Re:Tom Pinckney: Why I gave up on Java and switched to Python by andos on Wednesday August 03, 2011 @11:12AM (#2841449)
4)"Things in the python world seem to "just work"" that's just a self delusion caused by an emotional reaction not a valid argument

First, there are objective aspects to that perception. For example, Python affords trying stuff immediately through its REPL. When you commit it to “real” code, it just works. Opening an UTF-8 file is just `codecs.open`. Alas, there is Zope/Plone to serve as a counterexample.

Second, emotional reactions do affect how we, human programmers, perform. If I feel nice coding in Python, I am very probably more productive. If I hate XML configuration files, I'll be on my nerves when I write them and might perform poorly.

The relationship between a programmer and code is not (just) a mathematical thing and we really should stop seeing emotion as a cognitive defect and appreciate it as the evolutionary improvement that it indeed is.

(Sorry for ranting. I'm hungry.)

Re:Tom Pinckney: Why I gave up on Java and switched to Python by ilcavero on Wednesday August 03, 2011 @04:03PM (#2842774)
All you say is valid but if you are going to argument that A > B, you cannot say that one of the reasons is "because I like A" or its equivalent "because A just work"
Re:Tom Pinckney: Why I gave up on Java and switched to Python by andos on Thursday August 04, 2011 @08:02AM (#2845574)
Certainly so, but read the title again:

Tom Pinckney: Why I gave up on Java and switched to Python

The author is not arguing that Python is better than Java. (It's 2011, why would he do that?) He's telling his reasons for switching. We can disagree with all of them, but we cannot say any of them are invalid because they are “emotional” or “subjective”.

Re:Tom Pinckney: Why I gave up on Java and switched to Python by levigross on Wednesday August 03, 2011 @11:54AM (#2841615)
I agree that number 2 doesn't make any sense. I know that code quality is measured by defects in KLOC (1k lines of code) but this isn't a reason.

P.S Even though within the article the python the he explains what he means (with type bugs) such issues won't be by moving to python.

Re:Tom Pinckney: Why I gave up on Java and switched to Python by vegai on Wednesday August 03, 2011 @11:20AM (#2841480)
"that's just a self delusion caused by an emotional reaction not a valid argument"

It really is not, believe me.