• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Java programmers lack mental agility ?

 
Ranch Hand
Posts: 148
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi,

I came across this article when doing a google search on 'great programmers' ;0)
It essentially states that using Java doesnt develop great programmers..

Would love to know what you guys think of this ?

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

thanks,

J.C
 
Ranch Hand
Posts: 1608
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It has been common knowledge for many years and thankfully is becoming more and more common. The sooner the better - and so as an industry, we can *finally* get on with writing decent software.

Joel does talk a bit of crap though - and to his credit, he's acknowledged it (citation?)
 
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
No single programming language develops a good programmer - knowing many very different languages does, in my not so humble opinion.

The problem with Java as a learning language, in my opinion, is that it isn't a good language to learn the OO paradigm, because there are still too many procedural parts in it.

Perhaps universities will start using Ruby at some time - that would be a step in the right direction...
 
Bartender
Posts: 6663
5
MyEclipse IDE Firefox Browser Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I wonder what he has to say about .NET and I wonder why he calls java "easy". Sure, Java does not have pointers which makes a really big difference. There are many application the world over that dont require the use of pointers like he acknowledges. The focus should be to move away from complexity so that applications are easier to maintain. I know many developers that do not understand pointers. I myself have not worked with C for a very long time now and I am probably bound to make mistakes with pointers. To say Java programmers lack mental agility is ridiculous.
 
Sheriff
Posts: 10445
227
IntelliJ IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I agree Java is much simpler compared to C/C++. But that's what is in demand today - simplicity. I do remember in my college days when the more you were good at writting/debugging complex pointer related code, the more intelligent you would be considered. But practically, when you are writing a production application no one wants it to be unnecessarily complex. That's where Java plays a huge factor, you can have the product ready without having to spend your time doing some tricks with pointers.
 
Jaikiran Pai
Sheriff
Posts: 10445
227
IntelliJ IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I also remember, during our last year at college when we got introduced to Java, the most asked question was "What's the difference between C and Java". And most of us would (happily) answer "Java does not have pointers"
 
Ranch Hand
Posts: 2412
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
What I find funny is that at my University we switched from C++ to Java as the intro programming language in 1998, and the failure rate in that initial course was huge. And since then the students constantly complain about how hard Java is.

What is sad is that they do not realize that what they are having trouble with is the concept of thinking. They just blame Java because that is the only language they see.
[ February 25, 2007: Message edited by: Keith Lynn ]
 
author
Posts: 23951
142
jQuery Eclipse IDE Firefox Browser VI Editor C++ Chrome Java Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Like the writer of the article, I also did a few years of working with punch cards (fortran). And I must admit, that working with an IDE is *much* easier than working with a card deck. However, I didn't come to the same conclusion as the article...

<Really Bad Analogy>
I once had a debate with a fellow archer, who hunted with a bow. He complained that hunters with rifles were not really "skilled" as it was much easier to hunt with a rifle than with a bow.

My response was, that while it was easier to hunt deer, or even bear, with a rifle, you can't really shoot ducks with a bow. Just because a hunter used a rifle didn't mean that he wasn't skilled, as he could be hunting something that needs the rifle.
</Really Bad Analogy>

Now, just because Java takes care of many details that isn't taken care of by C or assembly language doesn't mean that they are less skilled -- a skilled programmer who doesn't need to deal with pointers, can devote his mental agility to other issues, or to solving problems faster.

What I do agree with is that programmers who have never used assembly or C, seems to lack the ability in managing pointers. Which is why I think schools should not focus on any particular language. IMHO, Assembly, SQL, and probably prolog should be required languages.

Henry
 
(instanceof Sidekick)
Posts: 8791
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Per Joel ...

Instead what I'd like to claim is that Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers.



That's probably quite correct given his definition of "great" programmers. And quite beside the point in my daily life.

We need some his great programmers to develop the next langauges and operating systems and such. Companies like mine rarely need them to, as Tom & Mary say, convert "concept to cash". In the 1950s we had real CS giants who wrote a langauge, compilers, runtime libraries and utilities, made patches via the switches on the front panel, etc because COBOL wasn't quite ready yet. But nowadays we can focus on delivering business value just fine with a langauge like Java.

BTW: His attitude remindes me of this:

A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a well, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. - Robert Heinlein

 
Ranch Hand
Posts: 209
1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The simplicity of Java does not limit the complexity of any piece of java program. So, I don't see why Java programmers should be discredited because java language is easy. There's the fact that java SDKs and servers may be accessed free of charge and anyone who has read Learn Java in 21 days can call himself/herself a Java programmer; this necessarily lowers the overall quality of java developers. Not to mention the watered-down CS programs that keeps on whoring out CS degrees like thrash bonds from a bankrupt company. Without any experience, the first market to try to enter is the Java job market as it is the easiest skill to put on the resume.
Even if half of the interviewees are inexperienced "java-only" developers, the language cannot be considered even as a remote cause.
[ February 26, 2007: Message edited by: Chu Tan ]
 
Tony Morris
Ranch Hand
Posts: 1608
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
All these posts seem to have missed the point by a long shot. Joel is referring to what is also called the Blub Paradox (Paul Graham). Java is a language designed specifically for novices. It requires very little skill and mental discipline to produce thousands of lines of Java source code that does relatively little - despite masquerading (to other novies) to the contrary.

Joel (as is PG) is alluding to the fact that once you learn more powerful programming paradigms, namely loose functional programming (Lisp, Python, et. al.), that this becomes clear - but not before then (as in the case of previous posts). Further, once you learn pure functional programming (Haskell, Clean, Epigram), you have taken yet another large(r) leap again and you can see clearly how weak other languages are (a leap that Paul Graham is yet to take given his writings).

Of course, this realisation brings about accusations of elitism, arrogance and what have you, but this is the "real world" that I am describing (your term remember? ) - not some fanciful, wishfully thought up, convenient delusional state.
 
James Clarke
Ranch Hand
Posts: 148
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Well Tony its strange that in the 'real world' so many large organisations have choosen Java even though "thousands of lines of Java can only do very little".

Admittedly, Java is the only language that I have any significant experience with, hence my concerns about the validity of this article by Joel. The reality of the IT industry is that we have to work with the technologies that project managers choose, regardless of our personal preferences.

If Haskell, Clean or Epigram were such great programming languages why is it that they have not been adopted as widely as Java ?
My take on this is that Java can be used to efficiently provide solutions in a timely and cost-effective manner, whereas these other languages cannot.

James
 
Marshal
Posts: 28193
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Tony, I am sure that Spolsky would not care about accusations of elitism. On the contrary, I suspect he would welcome them, pointing out that yes, he does want to get only the best programmers to work for him.

(I never understood how people can think elitism is a bad thing and then watch professional basketball, but it's done every day.)

But remember that 90 percent of everything is crud. There has to be somebody to produce software crud, and for that we need Blub.
 
Stan James
(instanceof Sidekick)
Posts: 8791
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think the real point of this is that there is no point.

People who have learned to do the hard things - write compilers, invent new algorithms - are necessary to write more hard things. They are not necessary to drive a lot of businesses, conclusively proven by companies full of Blub and Crud making fine money. Could they do a better job than I do? More economically for the company? Maybe, but would they last to the 150th web service integration? My company has used computing technology to distinguish itself in the marketplace since the late 50s and seems to be doing ok with guys like me.

Art for art's sake - beautiful or "strong" languages - mean little to me. I listen to Mozart. I listen to Gil Evans charts. I listen to one-chord Rolling Stones tunes. I have a favorite language for small, productive, human-friendly programs that cannot be compilied and is not even block oriented - you can write overlapping functions (!) for goodness sake.

BTW: I'd count Google as one company driven by lots of those really smart people who can do hard things. They had to invent much of their infrastructure but they didn't advance language science in the direction of beauty and strength to do it, they wrote an agressive little thing called Sawzall. I admire them. Don't want to be them. Not ashamed of my Java work. Going back to work now.
 
Ranch Hand
Posts: 212
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think his points are good ones, but does not mean that Java is not worth learning, or not useful in the real world. Java clearly is worth learning and can produce great software. That is not the point.

From my prospective(a CS student at a school that teaches Java as its core language) his point is valid. A computer science degree is supposed to be a theoretical one as well as a practical one. A CS student needs to learn computer architecture, automata, algorithm design and analysis, basic programming language design, networking(and not just at a high level), and the theoretical underpinnings, along with a concentration in a specific area. This is why you see people posting here about implementing some data structure, even though it exists in the API, learning a language or two and its API's are not enough. I have seen people go through the program barely knowing the basics of Java and enough of the rest to pass, but not necessarily understand it, luckily that is not the norm, we have great students and instructors, but it can happen. So because of Java as a core language, it is possible to get a CS degree but not necessarily be a computer scientist.

Java is a high level language that hides all the important details that a CS grad should know. From a programming prospective, this abstraction is a good thing, but a CS degree is far more then just banging out code.

In short what Java hides from the learner is the difference between a quality computer science grad, and a programmer. Don't take this as a slight to a non-computer science programmer, it is not meant to be.
[ February 27, 2007: Message edited by: David McCombs ]
 
Tony Morris
Ranch Hand
Posts: 1608
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by James Clarke:
Well Tony its strange that in the 'real world' so many large organisations have choosen Java even though "thousands of lines of Java can only do very little".
James



I don't find it strange at all, rather, entirely able to be explained without contradiction whatsoever. But I'll leave that for now

You must remember, I once worked with Java, even on the Java implementation itself. I understand the religion better than many of its fanatics - this too, is capable of being explained.
 
James Clarke
Ranch Hand
Posts: 148
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

I don't find it strange at all, rather, entirely able to be explained without contradiction whatsoever. But I'll leave that for now



Well since you had brought this 'issue' up please do explain the seeming contradiction.

You must remember, I once worked with Java, even on the Java implementation itself. I understand the religion better than many of its fanatics - this too, is capable of being explained.



Please do not spare the explanation, do tell.. whats the point of posting on a forum otherwise ?

J.C
 
Ranch Hand
Posts: 131
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
i think he says 'start with a lang like c or lisp then come to java'.

i have talked about it here.

[ March 01, 2007: Message edited by: Arul Jose ]
[ March 01, 2007: Message edited by: Arul Jose ]
 
Ilja Preuss
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think if we look at the world as a whole, it becomes quite obvious that popularity has not much to do with quality.

One reason why Java is so popular today is that it was specifically designed to look very similar to C++, syntaxwise. After all, "how easy is it to get a significant number of programmers" is at least as important for a manager as "how good is the language". Java simply was designed to serve that need - it simply was clever marketing.

I agree that Java is not a good language for CS courses. I don't think that is because Java is too easy, though. I think CS courses shouldn't teach languages, they should teach concepts. And there are simply better languages to teach the OO paradigm than Java - "more pure OO languages" if you will. (I also agree that there is much more to learn for a CS student than just OO.)
reply
    Bookmark Topic Watch Topic
  • New Topic