Posted by
CowboyNeal
on from the eye-to-the-future dept.
newdaemon writes "Fortune
has a candid
interview
with Bill Joy about what he plans to do after leaving Sun and his opinions on many other topics, including his strong dislike of the C programming language and how the internet could evolve to take care of the problem of spam and viruses."
He is correct, but it's really not all the feasable in the real world. For all the people that say programmers should be grossly ineffecient, and let the newer processors take up the slack, there are thousands of companies that can't get their important programs to run fast enough, even after spending millions on computer hardware... Making everything in Java is only going to make the situation a couple orders of magnitude worse.
If Sun, or someone else, would come along and modify C slightly by removing unsafe functions, and providing alternatives, you could have the best of both, while not having to completely rewrite all the old code.
(Oddly enough, there isn't a company that bears the name of the missing planet you're thinking of...)
-- "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
Idiot or Liar?
by
Anonymous Coward
·
· Score: 5, Insightful
Again, because that program is written in C, it's quite easy to design a virus to go through your e-mail address book and broadcast spam to all the people you know.
The problem with Outlook isn't "C," the problem with outlook is Javascript, VBScript, and Windows Scripting Host, which are PRECISELY the sorts of high-level languages [and their interpreters] that this little terd is advocating.
Or is he just a common liar? I dunno - you be the judge.
Re:Idiot or Liar?
by
sir_cello
·
· Score: 5, Informative
You're wrong as well.
The issue isn't with the programming language _per se_. Obviously some programming languages are more dangerous then others. Obviously some programmers are worse than others.
The issue is with secure and contained execution environments. Properly "jailing" software (whether a process in an operating system, or a thread and window box on a preview pane in Outlook) is the real answer. Engineering has long known that compartmentalisation is key to minimising risk and impact. Operating systems are getting better at doing it. Programming languages are gradually working towards it.
You can have all of the aforementioned and current problems with buffer overflows, language defects, etc: but if the impact is limited (say, to a display pane in Outlook) then the worst that can happen is psychological damage, nothing more. From one point of view, the preview pane should only be doing that: showing me a preview - it shouldn't be granting access to resources around it.
I think that one of the key technologies that Java brought to the computing landscape was the concept of a secure machine (JVM) for a programming language (at a lower granuality than for a monolithic operating system). Argue as much as you like about how succesfull this was (I do remember much debate and technical attention given to it in the early days of Java), but the concept is far more important than the incremental language innovations in Java (i.e. a next-generation SmallTalk or C++).
Give the guy some credit - he's done some very useful technical work - and Java will be one of the technologies in the timeline of the development of computer history. Even if Java itself wasn't succesfull, it's been an interesting experiment and a lot of learning has come out of it.
I recommend this paper as a good read on the bus, just so you can appreciate the technical innovations surrounding the language.
http://www.jot.fm/issues/issue_2003_09/column3 ps. It's obvious he's still pulling the Sun line, but what do you expect ? He put a lot of effort and passion into Sun's technical direction - only a fool would think he's going to drop that overnight.
Re:Java : C :: Emacs : vi
by
jemfinch
·
· Score: 5, Insightful
In the end, an experienced C programmer can get the same job done with the same quality in C as an experienced Java program can in Java, and that ought to be good enough for anybody.
This simply isn't the case.
Studies have shown (if you're interested, the relevant studies are referenced in "Code Complete" by Steve McConnell) that programmers are capable of writing approximately the same number of lines of code per unit of time in whatever language they program in. Whether it's C, Java, or Sparc Assembler, they'll write pretty much the same number of lines of code in day.
The catch, however, is the expressivity of the languages used. A thousand lines of C will certainly "do more" than the same number of lines of Sparc assembler. Likewise (though arguably not on the same scale), a thousand lines of Java will certainly "do more" than the same number of lines of C. So disregarding errors for the moment, programmers are more productive in a higher level language like Java than they are in C or Sparc assembler.
Now, as far as errors go: it's true that experienced programmers (in whatever language) will make fewer mistakes than less experienced programmers. But they're still human, and even if you're Donald Knuth himself, you're still going to make mistakes. The fact is that mistakes in C are far more costly than mistakes in Java. You can have off-by-one errors in both languages. In Java, however, your program will raise an out of bounds exception and, at worst, halt. In C, such a mistake could easily lead to a buffer overflow security flaw that can be exploited for elevated privilege. The same error in C and in Java is far more costly in C than in Java.
With even higher level languages, entire classes of mistakes cannot even exist, but I don't have time to go into the advantages of such languages like SML or Haskell.
Programmers no matter how experienced, are going to make mistakes. What matters is how costly those mistakes are. And they cost a whole lot more in C than in Java.
He is correct, but it's really not all the feasable in the real world. For all the people that say programmers should be grossly ineffecient, and let the newer processors take up the slack, there are thousands of companies that can't get their important programs to run fast enough, even after spending millions on computer hardware... Making everything in Java is only going to make the situation a couple orders of magnitude worse.
If Sun, or someone else, would come along and modify C slightly by removing unsafe functions, and providing alternatives, you could have the best of both, while not having to completely rewrite all the old code.
Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
Bill Joy could join Mercury, Venus, Earth, Mars, Jupiter, Saturn, Neptune or Pluto.
...)
(Oddly enough, there isn't a company that bears the name of the missing planet you're thinking of
"A door is what a dog is perpetually on the wrong side of" - Ogden Nash
Again, because that program is written in C, it's quite easy to design a virus to go through your e-mail address book and broadcast spam to all the people you know.
The problem with Outlook isn't "C," the problem with outlook is Javascript, VBScript, and Windows Scripting Host, which are PRECISELY the sorts of high-level languages [and their interpreters] that this little terd is advocating.
Or is he just a common liar? I dunno - you be the judge.
This simply isn't the case.
Studies have shown (if you're interested, the relevant studies are referenced in "Code Complete" by Steve McConnell) that programmers are capable of writing approximately the same number of lines of code per unit of time in whatever language they program in. Whether it's C, Java, or Sparc Assembler, they'll write pretty much the same number of lines of code in day.
The catch, however, is the expressivity of the languages used. A thousand lines of C will certainly "do more" than the same number of lines of Sparc assembler. Likewise (though arguably not on the same scale), a thousand lines of Java will certainly "do more" than the same number of lines of C. So disregarding errors for the moment, programmers are more productive in a higher level language like Java than they are in C or Sparc assembler.
Now, as far as errors go: it's true that experienced programmers (in whatever language) will make fewer mistakes than less experienced programmers. But they're still human, and even if you're Donald Knuth himself, you're still going to make mistakes. The fact is that mistakes in C are far more costly than mistakes in Java. You can have off-by-one errors in both languages. In Java, however, your program will raise an out of bounds exception and, at worst, halt. In C, such a mistake could easily lead to a buffer overflow security flaw that can be exploited for elevated privilege. The same error in C and in Java is far more costly in C than in Java.
With even higher level languages, entire classes of mistakes cannot even exist, but I don't have time to go into the advantages of such languages like SML or Haskell.
Programmers no matter how experienced, are going to make mistakes. What matters is how costly those mistakes are. And they cost a whole lot more in C than in Java.
Jeremy
(P.S.: I'm a Python and SML fan, myself.)
Looking for a Python IRC bot?