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."
Java is only one of the languages that completely prevent stuff like buffer overrun exploits etc. In fact, pretty much every single language except C and C++ do.
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.
Joy may not be with Sun...
by
Bloodshot
·
· Score: 3, Insightful
...but he's acting like he still is.
This article is one big "Java can solve all the internet's problems" troll. As if Microsoft's problem is because their code is written in C instead of Java. That's ludicrous.
A programming language can't change people's behaviour. Only PEOPLE can change people's behaviour. Bill Joy's obviously a smart guy, but his railing against what he calls "antiquated" languages and his lack of understanding on why programming languages have nothing to do with e-mail viruses being able to spread so easily shows why Sun is no longer in such a position of prominence.
His statement about how he "designed solutions for problems that people didn't yet know they had" either shows a complete lack of understanding of the way NORMAL people use technology or he's started believing his own marketing spin about Java and Sun's other technologies.
It makes me wonder if Joy is leaving Sun because he's bitter that Sun couldn't take down Microsoft and that Java, while a very powerfull programming language that definitely has it's place in certain types of projects, isn't the language of choice for programmers everywhere.
Re:Joy may not be with Sun...
by
AdamBa
·
· Score: 3, Insightful
Indeed. Part of the interview is interesting, but the parts about Java and Windows are just market-speak. vi is a great editor, but Joy seems to have turned into a giant tool.
- adam
Re:Joy may not be with Sun...
by
alext
·
· Score: 2, Insightful
That's ludicrous.
Not really. If one had to describe Windows' vulnerabilities in a few phrases, buffer overflows, untrusted code and uncontrolled access would be a reasonable summary.
These vulnerabilities are all properly and intrinsically addressed in Java. It is not possible to circumvent the controls by sloppy or malicious programming, therefore Java does enforce secure behaviour.
Joy's comments might represent an exaggeration or simplification, not unreasonable considering the intended audience, but they clearly demonstrate more "insight" than the superficial blather offered above.
Ah, but you can go pester one Bret Silberman, who apparently purchased Uranus back in 1993. He is also not willing to sell Uranus, so "...don't bother asking."
Perhaps the best part of that page is "Uranus Headlines" on the right.;)
-- I watched C-beams glitter in the dark near the Tannhauser gate.
Except that's wrong. Running Hello World involves booting up what is, in effect, an entire operating system (the Java VM, with virtual memory, threading, everything, the works).
Ok, here's an experiment:
a) run Hello World in Java
b) run Hello World in C (including booting up Linux)
Which one is faster?:-)
--
-WolfWithoutAClause
"Gravity is only a theory, not a fact!"
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.
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]
Err no. He's definetly not an idiot (SUN anyone?) and he's not a liar. What he means by this is that as Outook is written in C, buffer over/underruns can happen which is what most viruses exploit (they then proceed to use high level languages such as Javascript etc. to get the email addresses and broadcast spam and viruses). But the primary problem is that oulook has security holes, usually buffer over/underruns. This is not _because_ of C, but what he's saying (and he's mostly right) is that if outlook was written in Java, there would be NO buffer underruns.
that this little terd is advocating.
Or is he just a common liar? I dunno - you be the judge.
Oopps, I have probably been trolled. My bad.
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.
No, but you could easily write an e-mail client in Java that interpreted scripts in the body or header fields of an incoming mail by default, and allowed those scripts to do things they shouldn't. This is the single biggest problem with Outlook (Express) and the reason it's responsible for so many virus/spam problems. It has nothing to do with the language used to implement it, and everything to do with the flawed architectural and security policy decisions in its design.
Using a "more secure" language like Java does zip to address this sort of problem. As the post further up the thread said, the really useful concept in Java is the "sandbox" idea for code that's executing, not the minor improvements to the language itself.
-- If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
But, then, the Solaris kernel is not a distributed program to be run over networks.
As long as a language is "faster" than the network, it'll be fast enough for that kind of use. E.g., there's no particular reason to write a browser in assembly because it spends almost all of its time waiting for the netowrk to do something.
-- -- Slashdot: When Public Access TV Says "No"
Oh dear lord...
by
pVoid
·
· Score: 2, Interesting
because stuff written in antique programming languages like C [a widely used language created by Bell Labs in the early 1970s] is full of holes. Those languages weren't designed for writing distributed programs to be used over a network. Yet that's what Microsoft still uses.
The fundamentalism never ends man. I'm almost positive when I assert these three facts:
NT Kernel is in C but so is SunOS
SQL Server 2000 is *entirely* C++
I'm almost positive IE is largely, if not entirely written or at least compiled in C++
# I'm almost positive IE is largely, if not entirely written or at least compiled in C++
Internet Explorer is written in Algol but is compiled in Perl and linked in Smalltalk.
Re:If C had had bounds checking
by
MisanthropicProggram
·
· Score: 2, Insightful
You are absolutely correct. Somehow, somewhere, programming langauges have become required to compensate for programmer laziness/productivity/whatever... Just because a programming language allows a programmer to do stupid things doesn't make it inferior. The things that allow you to do stupid things also make extrememly powerful. Write a device driver/embeded system/OS in Java... I don't think so.
But I'd feel more respect for his comments if he hadn't said
>so many companies use Microsoft Outlook for reading e-mail. 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. As soon as your company starts using Outlook, you can see
Outlook's scriptability has nothing to do with its being written in C++.
Outlook's UI for attachment handling has nothing to do with its being written in C++.
Outlook's historical willingness to do dangerous things driven by HTML code in the preview pane has nothing to so with its being written in C++.
The problems Joy mentioned, of email forwarding itself to everyone in the address book, are not accidental buffer overflows. They're the malicious use of features intentionally designed into the program.
Re:computer inept?
by
Zocalo
·
· Score: 3, Informative
Actually, this is standard practice, or should be, and not just in the IT industry either. By having a company engineer disconnect the network, collect any company owned kit, etc. there is an audit trail that exonerates the ex-employee from any allegations of misappropriation of those resources.
Java doesn't have the speed to do many things efficiently.
Optimization is always the last thing that you should do on a project. This means that implementing the software in C/C++ should be the last resort. Most of the time, most of your software will run just fine in a safer, easier to use language. When you run into performance issues, that's when you port pieces of your program to C. Unfortunately, a lot of people just assume that they should always start coding in C or C++ right off the bat.
I personally don't like Java very much. It's bloated for what it does, static typing is a PITA, it doesn't play well with other languages, and it's heavily biased towards the OO paradigm, ignoring other highly useful programming approaches. (Many languages let you mix in bits from various programming styles.)
What I prefer to do instead is use a very flexible language like Python, then write C extensions for the performance critical parts if/when they are needed. The extension C code tends to be simple straight-line logic that is harder for bugs to hide in. This approach provides a "dynamic range" of performance vs. ease of use that is well well beyond that offered by pure Java or C.
Rant continued...
by
pVoid
·
· Score: 3, Insightful
if you're running a monoculture of software--duh, this is not good. People have studied how to make software systems more reliable by running three distinctly diverse implementations at the same time and then comparing the results. That's what they used to do in the space program, when not only were redundant systems built for, say, guidance, but each of them also ran on different computers with different software.
Who here runs their hosted sites on two round-robined boxes with distinct kernels and Apache versions?
Nature deals with breakdowns in a complex system with evolution, and a very important part of evolution is the extinction of particular species. It's a sort of backtracking mechanism that corrects an evolutionary mistake. The Internet is an ecology, so if you build a species on it that is vulnerable to a certain pathogen, it can very well undergo extinction. By the way, the species that go extinct tend to have limited genetic diversity.
Are you implying that Microsoft Windows is vulnerable to extinction precisely because it is so dominant?
He, and the article writer, are playing the circle-j*rk game by feeding each other soft-balls...
But the analogy is poorly 'implemented' at best. If anything, Microsoft's culture could be compared to a termite infestation (revel you little zealots - I've just insulted microsoft), but in no case is it actually on the road to extinction. Extinction right now is a bad looming shadow for *BSD and BeOS and OS/2 etc...
Why is the analogy broken? Because the oxygen and glucose of software is money. Not electricity and bandwidth as some might believe. These aren't real life forms, as such your model isn't bound by the same rules. Microsoft is actually from a market perspective WAAAAY more genetically diverse (it's spreading its market investment at an incredible rate) than any other software company out there. If anything, the slashdot people have figured it out: they are like the borg right now, assimilating any genetic makeup they can.
His analogy is fucking broken.
Fuck this shit, I've flipped the bozo bit on this guy...
Re:Rant continued...
by
kurosawdust
·
· Score: 4, Funny
Bonus points for using the word "fuck" twice and "shit" once, but being thoughtful enough to ambiguously asterisk out the 'e' in "circle-jerk".
Re:modular programming
by
elmegil
·
· Score: 2, Insightful
The kernel was re-written to be modular 15 years ago, which you'd know if you had read more than the first page of the article. As for the other layers of the OS, much of that is modular too; it's called "packages", quite similar to "rpms" that you might have heard of.
-- 7 November 2006: The day Americans realized corruption and incompetence weren't addressing 11 September 2001
Imagine that you are an alcoholic...
by
emil
·
· Score: 3, Interesting
...and that, after some real calamity in your life, you have decided to go cold turkey.
Now, where would you rather go cold turkey? Locked in a liquor store, or locked somewhere free of alcohol?
A C compiler is the liquor store of systems programming. It reinforces all the bad habits and rewards none of the good.
C has no formal definition for exceptions (signals can't really count), it does not force good behavior in allocating memory/objects from the heap, the stdio library is slow because of multiple buffer copies (David Korn replaced it with sfio in ksh93), C is constantly beaten by Fortran in computation-intensive applications, Python has shown that C sylistically leaves much to be desired, and this is only the beginning of the criticism.
I like C a lot too, but ultimately, there is no future in it beyond low-level applications that need to work at a near-assembler level.
Can you really imagine C being used for systems work in 50 years?
Re:Imagine that you are an alcoholic...
by
dspeyer
·
· Score: 3, Informative
There are intermediate steps between C and garbage collection. One I personally like is Cyclone which delivers almost all the power of C and the ability to link directly to C code. There are plans to write a kernel in it, and they look very credible.
For user-land software, things like python are becoming very practical. Java is probably acceptable for daemons and such (so long as they're not massively performance critical) but isn't ready to be used for anything with a GUI or where startup time matters.
Re:Imagine that you are an alcoholic...
by
emil
·
· Score: 2, Insightful
Fortran is easier to optimize and vectorize than C, which is why it has a strong hold on scientific computing. Optimizers can assume a great deal about Fortran programs that cannot be assumed about C.
Cobol is still alive and well in many business-oriented computing environments. There are Cobol programmers working in the office down the hall from me. New systems implementations in Cobol continue today.
Re:Imagine that you are an alcoholic...
by
rlowe69
·
· Score: 2, Insightful
Java... isn't ready to be used for anything with a GUI or where startup time matters.
This is a myth and it's been debunked so many times I stopped counting. Look at the Eclipse project -- the Win32 UI is native (written using SWT) and just as responsive as apps written in C++.
-- -----
rL
Re:Imagine that you are an alcoholic...
by
alext
·
· Score: 2, Informative
[Java] isn't ready to be used for anything with a GUI
Better warn those C/C++ developers using Borland's C++BuilderX IDE.
It's written in Java and uses Swing, just as JBuilder has for years.
Re:Imagine that you are an alcoholic...
by
Darren+Winsper
·
· Score: 2, Insightful
Java can't take Ada's place until the Real-Time extensions are mature enough. Currently, implementations are a bit thin on the ground and well enough tested to be entrusted with stuff that Ada is typically used for.
Java : C :: Emacs : vi
by
achurch
·
· Score: 4, Insightful
Am I the only one getting tired of the "my language is better than your language" holy wars? Yes, Java can do some things by default that C can't, by default--buffer overflow checks, for example--but that doesn't make it necessarily "better". One could argue that Java's way of checking everything for you makes programmers lazy, and more likely to make mistakes that Java can't catch--cross-scripting holes, for example.
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.
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.
Re:Java : C :: Emacs : vi
by
Raffaello
·
· Score: 4, Interesting
The whole Turing completeness argument is a straw man. If it were really true, we'd all still be coding individual 1s and 0s, since, after all, "You can do the same thing in one language that you can in any other."
The real issue is which language is more expressive. Since I can accomplish any task with any of the dozens of Turing complete languages, which language lets me accomplish the task at hand in the fewest lines of code?
The answer may vary from task to task, but if the task includes the requirement that the finished product be secure, then C loses, because it doesn't protect against one of the most common sorts of attack at the language level, buffer overruns. Common Lisp and Java do. To have this same sort of protection in C, I'd have to write all the additional lines necessary to implement my own runtime to prevent direct access to memory. Hey! I've just re-implemented *part* of Common Lisp, or *part* of Java.
Thus we come to Greenspun's 10th law of programming:
"Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."
You wrote: "Oh well, I guess that's what makes people so interesting. The plethora of personalities. Doesn't mean he's right, though." Bill Joy's opinion that C is a really dangerous language isn't a quirk of his personality. It's an evaluation based on decades of experience as a pioneer in the computer industry, and a deep understanding of the fact that different languages really are better or worse.
Re:Java : C :: Emacs : vi
by
SewersOfRivendell
·
· Score: 2, Insightful
You are missing the point. It's not a matter of dislike. Preference doesn't enter into it. Buffer overflows are a fact of life in C. Anytime you have unchecked array access, you're going to have that problem.
That doesn't make C an awful, bad language, necessarily, but to it does imply that too many programs are written in C that would be better written in say, Python, or Ruby. If you're not in the kernel or doing something truly performance-sensitive like A/V work, you really shouldn't be using C. If you want other people to use your programs, it's your responsibility to write them as safely as possible.
Mind you, the language is only part of the security problem -- and a small part, at that. But programming defensively has to start somewhere, and it might as well start by eliminating an entire class of bugs by using an appropriately safe language.
This sounds sensible...
by
infydime
·
· Score: 2, Interesting
"What is the actual cost of greenhouse gases, for instance? If you create a marketplace mechanism to solve that problem, you will probably end up creating wealth, and people would stop doing the stupid things they do now because it doesn't cost them anything. The Soviet Union collapsed not because of communism or central planning, but because of corrupt accounting. They couldn't organize the means of production because everybody was lying about everything. It was a game of fake numbers, and when you do that, you get crap for answers. "
An interesting way of looking at ways to control pollution. Only if the motor companies actually allow it.
Classic Bill Joy
by
Timesprout
·
· Score: 4, Insightful
Some wonderful conceptualisations and insights into technology closely followed by statements that make you wonder if Bill is actually in the same universe as us, nevermind on the same planet.
Anyway thanks for Java, its a fantastic development language, please stop telling us we are going to have/need JINI in every toaster, lightfitting and piece of cutlery we own and best of luck for the future.
-- Do not try to read the dupe, thats impossible. Instead, only try to realize the truth What truth? There is no dupe
Inefficiency
by
Detritus
·
· Score: 2, Interesting
For decades, "inefficiency" has been the excuse that programmers have used to justify a multitude of sins. Now that computers are thousands of times faster, it is still used to justify unsafe design and implementation decisions. Improvements in compiler technology have reduced the speed penalty for error checking, but that hasn't stopped people from implementing new systems in unsafe languages.
Don't tell me that leet programmers don't make those stupid mistakes, only idiots. Even if you are God's gift to software engineering, that doesn't change the fact that most programmers are not that good, and time and schedule pressures often make things worse.
One of the other tasks the article metions Joy working on is a long awaited rewrite of vi to include a slick Java Swing GUI interface and the migration away from moded operation to Ctrl key sequences.
According to Joy, "The Control key wasn't available when I wrote vi in the 70's. Back then it was the cent symbol key (you know, that little "c" with the line through it?). So we had to go with this kludgy insert mode thing that just, well, rather sucks."
So...he's going to be writing a Java based version of emacs? Cool!
Bill Joy Outsourced To India
by
Baldrson
·
· Score: 4, Funny
I think they are just side-stepping the real news which is that Sun outsourced Bill Joy. The new Bill Joy is working for 1/10 the rate and lives in Punjab.
why not fix C and C++ instead of going on about it being buggy, etc.. fix what we current have, not make new implementations of it that require a mass change to use it, not to mention java is a ram whore.
anyways, I do like his idea on fixing common internet problems, however, a lot of that would be simple to fix, example, smtp has been a standard for decades, yet, it's one of the most exploitable protocols ever in existance, all is needed to be done is fix the mail protocol so it cant be so easily abused, (inet6 will help with this as well) whatever, I'm about to go back to bed.
Re:C moron
by
TheSunborn
·
· Score: 2, Informative
The problem with writing an im client in Java is that an im is something which always is runnig. There the heavy memmory requirement/usage of the java vm is a big problem, because you don't want 10-20MB memmory taken away by the im.
This problem would not be so big if only sun would make a vm which allowed many programs running in the same vm thus sharing the memmory usage.
[Java] isn't ready to be used for anything with a GUI
*shrug*, it works for us.
We've switched almost entirely from Powerbuilder to Java, including writing fairly rich GUIs in it. (I personally think the Java GUIs look and feel better than the PB ones).
The big issue with Java GUIs is that it's almost impossible to do them in a "knock-up" way, (something that VB, PB and the like are good at).
People try it, and then end up with junk and blame it on the tool. It's true that if you want to throw a GUI together as cheaply and easily as possible, then Java isn't the right tool, but if you want to put together a GUI that fits into a well designed system, then swing works just fine.
As Gosling recently said,
"One of the design principles behind Java is that I don't care much about how long it takes to slap together something that kind of works. The real measure is how long it takes to write something solid."
-- Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
I am so tired of the canned responses on slashdot telling me that only dumb programmers produce errors, and that the entire industry of software tools only exists because we clearly aren't smart enough to catch on the the lowest facts grasped by posters.
I used to think like this too - when I was in college. Back when the coding projects I worked on were the dorky isolated projects assigned by my profs. Oh it was so easy to pontificate when I only had to code the travelling salesman problem.
Now I respect programmers who patently avoid anything lower on the architecture totem pole than they have to go. Working programmers who actually make use of advances in compilers, languages, methods and tools to produce working code for large projects that matter. In these projects people use an interpreted language if they can get away with it. They use C++ instead of C if they can get away with it.
Once again, I would kill to see the actual code produced by most posters here. I suspect that 99% of it is for college assignments.
The US has central planning of consumer production
by
Animats
·
· Score: 3, Interesting
But it doesn't come from Washington. It comes from Bentonville, Arkansas.
Wal-Mart, headquartered in Bentonville, Arkansas, runs about 3300 stores. It's the biggest retailer in the world. It's the biggest employer in the the US. It's four times the size of the #2 retailer (Home Depot). Wal-Mart's total revenue is over $200 billion. This is more than most small countries. And they're still growing.
Wal-Mart controls a bigger economy than Gosplan, the USSR's state planning agency for the civilian sector, ever did. And Wal-Mart's control is far tighter. Wal-Mart has far more computing power than Gosplan ever did. Wal-Mart tracks sales daily; Gosplan seldom did better than obtaining annual numbers. If sales of something go up, manufacturers are told within days to increase production. If sales go down, Wal-Mart pulls the plug on the maker just as quickly. Gosplan could only dream of control like that.
Wal-Mart's "Corridor of Doom" is famous in retailing. That's where you go to sell to Wal-Mart. There's a long hall with buyer's offices, and a waiting room with a pay-per-use coffee machine. Sales reps, and even CEOs, go there and grovel before a polite Wal-Mart buyer who, by tradition, opens with "And what can your company do for Wal-Mart today". The buyer, equipped with data on all of Wal-Mart's suppliers,
then squeezes the sales rep on price. Hard.
Companies that sell to Wal-Mart don't make big margins. If they do, Wal-Mart searches for an alternative supplier, and plays the suppliers off against each other. (That's why they push Linux.)
That's how the American consumer product economy really works today.
The problem isn't the C language. The problem is, as always, language bigotry and poor breadth of knowledge.
...and laziness, lack of planning, lack of dedication, yada-yada-yada.
Joy is right that more structured languages reduce programming errors. When it comes to working with Java, you can feel when your code is getting ugly because it starts to deviate from the clean design of (most of) the language's libraries.
With C (for example), there are few standards upon which to measure the "cleanliness" of your own code. Many libraries/APIs you use aren't consistent, well-designed and/or well-documented.
At least, that's one way to look at the issue.
--
...Beware the IDEs of Microsoft...
Past his expiration date
by
crucini
·
· Score: 3, Insightful
Bill Joy is just a typical old programmer full of whimsical opinions. The only reason he's being interviewed by Fortune is that he was in the right place at the right time and is therefore rich. If you read his "six phases" description you see that he basically stopped working in 1987. After that, he just putzed around. I think it's pretty obvious that with Sun in bad financial shape, McNealy finally kicked him out.
Joy comes close to saying Solaris should be re-written in Java. He's not very realistic. When I think of secure programs, I think of qmail, postfix and djbdns. All written in C. I can't even name a Java mailserver or DNS server off the top of my head.
Another reason spam is so bad is that so many companies use Microsoft Outlook for reading e-mail. 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.
Outlook's numerous viruses are not caused by the program being written in C or C++. They are caused by Outlook's support for active content. The problem would still exist if Outlook were re-written in Java. I wonder if nobody in Joy's circle dares to correct him on this, or if he's been corrected and just didn't hear.
Take any random clever programmer over 30 and give him $100 million. He will wander off into the sunset, murmuring about his brilliant new idea for re-architecting the internet or something. He will never again do or say something relevant.
Bad example
by
mattgreen
·
· Score: 2, Interesting
Your example simply describes the misuse of exceptions. I can misuse pointers and destroy the stack, so do you think we should be disallowed pointers.
Whether you like them or not, exceptions greatly simplify application logic. You no longer have to consistantly check every single return value (making return values indicate success was backwards to begin with at the time - we just hadn't realized it. At least errno is somewhat consistent.)
Exceptions are used very rarely in C++. They do it right - they are thrown when the state of the object is destroyed by some circumstance, or some other catastrophic failure such as the new operator failing. And it is really freakin hard to make C++ throw an exception from the standard library.
Exceptions in java are not "invisible" In fact, you have to check for declared thrown exceptions (but not 'runtime' exceptions). In the API declared thrown exceptions are caused by external problems (like a missing file, closed socket, etc) while Runtime exceptions are usually caused by programmer error (like null pointers), and can be avoided by poor programming.
If your python app is choaking on invalid input, it's because you can't program for shit, not because exceptions suck. If it was a C app, you'd simply segfault or something equally ridiculous. And you'd never know why. At least with the stack trace you can quickly pinpoint your problem and deal with it.
Java is only one of the languages that completely prevent stuff like buffer overrun exploits etc. In fact, pretty much every single language except C and C++ do.
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
...but he's acting like he still is.
This article is one big "Java can solve all the internet's problems" troll. As if Microsoft's problem is because their code is written in C instead of Java. That's ludicrous.
A programming language can't change people's behaviour. Only PEOPLE can change people's behaviour. Bill Joy's obviously a smart guy, but his railing against what he calls "antiquated" languages and his lack of understanding on why programming languages have nothing to do with e-mail viruses being able to spread so easily shows why Sun is no longer in such a position of prominence.
His statement about how he "designed solutions for problems that people didn't yet know they had" either shows a complete lack of understanding of the way NORMAL people use technology or he's started believing his own marketing spin about Java and Sun's other technologies.
It makes me wonder if Joy is leaving Sun because he's bitter that Sun couldn't take down Microsoft and that Java, while a very powerfull programming language that definitely has it's place in certain types of projects, isn't the language of choice for programmers everywhere.
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
Ok, here's an experiment:
a) run Hello World in Java
b) run Hello World in C (including booting up Linux)
Which one is faster? :-)
-WolfWithoutAClause
"Gravity is only a theory, not a fact!"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.
But, then, the Solaris kernel is not a distributed program to be run over networks.
As long as a language is "faster" than the network, it'll be fast enough for that kind of use. E.g., there's no particular reason to write a browser in assembly because it spends almost all of its time waiting for the netowrk to do something.
-- Slashdot: When Public Access TV Says "No"
The fundamentalism never ends man. I'm almost positive when I assert these three facts:
NT Kernel is in C but so is SunOS
SQL Server 2000 is *entirely* C++
I'm almost positive IE is largely, if not entirely written or at least compiled in C++
You are absolutely correct. Somehow, somewhere, programming langauges have become required to compensate for programmer laziness/productivity/whatever... Just because a programming language allows a programmer to do stupid things doesn't make it inferior. The things that allow you to do stupid things also make extrememly powerful. Write a device driver/embeded system/OS in Java ... I don't think so.
There is no spoon or sig.
But I'd feel more respect for his comments if he hadn't said
>so many companies use Microsoft Outlook for reading e-mail. 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. As soon as your company starts using Outlook, you can see
Outlook's scriptability has nothing to do with its being written in C++.
Outlook's UI for attachment handling has nothing to do with its being written in C++.
Outlook's historical willingness to do dangerous things driven by HTML code in the preview pane has nothing to so with its being written in C++.
The problems Joy mentioned, of email forwarding itself to everyone in the address book, are not accidental buffer overflows. They're the malicious use of features intentionally designed into the program.
Or at least, that's the theory...
UNIX? They're not even circumcised! Savages!
Optimization is always the last thing that you should do on a project. This means that implementing the software in C/C++ should be the last resort. Most of the time, most of your software will run just fine in a safer, easier to use language. When you run into performance issues, that's when you port pieces of your program to C. Unfortunately, a lot of people just assume that they should always start coding in C or C++ right off the bat.
I personally don't like Java very much. It's bloated for what it does, static typing is a PITA, it doesn't play well with other languages, and it's heavily biased towards the OO paradigm, ignoring other highly useful programming approaches. (Many languages let you mix in bits from various programming styles.)
What I prefer to do instead is use a very flexible language like Python, then write C extensions for the performance critical parts if/when they are needed. The extension C code tends to be simple straight-line logic that is harder for bugs to hide in. This approach provides a "dynamic range" of performance vs. ease of use that is well well beyond that offered by pure Java or C.
Who here runs their hosted sites on two round-robined boxes with distinct kernels and Apache versions?
Nature deals with breakdowns in a complex system with evolution, and a very important part of evolution is the extinction of particular species. It's a sort of backtracking mechanism that corrects an evolutionary mistake. The Internet is an ecology, so if you build a species on it that is vulnerable to a certain pathogen, it can very well undergo extinction. By the way, the species that go extinct tend to have limited genetic diversity.
Are you implying that Microsoft Windows is vulnerable to extinction precisely because it is so dominant?
He, and the article writer, are playing the circle-j*rk game by feeding each other soft-balls...
But the analogy is poorly 'implemented' at best. If anything, Microsoft's culture could be compared to a termite infestation (revel you little zealots - I've just insulted microsoft), but in no case is it actually on the road to extinction. Extinction right now is a bad looming shadow for *BSD and BeOS and OS/2 etc...
Why is the analogy broken? Because the oxygen and glucose of software is money. Not electricity and bandwidth as some might believe. These aren't real life forms, as such your model isn't bound by the same rules. Microsoft is actually from a market perspective WAAAAY more genetically diverse (it's spreading its market investment at an incredible rate) than any other software company out there. If anything, the slashdot people have figured it out: they are like the borg right now, assimilating any genetic makeup they can.
His analogy is fucking broken.
Fuck this shit, I've flipped the bozo bit on this guy...
The kernel was re-written to be modular 15 years ago, which you'd know if you had read more than the first page of the article. As for the other layers of the OS, much of that is modular too; it's called "packages", quite similar to "rpms" that you might have heard of.
7 November 2006: The day Americans realized corruption and incompetence weren't addressing 11 September 2001
...and that, after some real calamity in your life, you have decided to go cold turkey.
Now, where would you rather go cold turkey? Locked in a liquor store, or locked somewhere free of alcohol?
A C compiler is the liquor store of systems programming. It reinforces all the bad habits and rewards none of the good.
C has no formal definition for exceptions (signals can't really count), it does not force good behavior in allocating memory/objects from the heap, the stdio library is slow because of multiple buffer copies (David Korn replaced it with sfio in ksh93), C is constantly beaten by Fortran in computation-intensive applications, Python has shown that C sylistically leaves much to be desired, and this is only the beginning of the criticism.
I like C a lot too, but ultimately, there is no future in it beyond low-level applications that need to work at a near-assembler level.
Can you really imagine C being used for systems work in 50 years?
Am I the only one getting tired of the "my language is better than your language" holy wars? Yes, Java can do some things by default that C can't, by default--buffer overflow checks, for example--but that doesn't make it necessarily "better". One could argue that Java's way of checking everything for you makes programmers lazy, and more likely to make mistakes that Java can't catch--cross-scripting holes, for example.
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.
"What is the actual cost of greenhouse gases, for instance? If you create a marketplace mechanism to solve that problem, you will probably end up creating wealth, and people would stop doing the stupid things they do now because it doesn't cost them anything. The Soviet Union collapsed not because of communism or central planning, but because of corrupt accounting. They couldn't organize the means of production because everybody was lying about everything. It was a game of fake numbers, and when you do that, you get crap for answers. " An interesting way of looking at ways to control pollution. Only if the motor companies actually allow it.
Some wonderful conceptualisations and insights into technology closely followed by statements that make you wonder if Bill is actually in the same universe as us, nevermind on the same planet.
Anyway thanks for Java, its a fantastic development language, please stop telling us we are going to have/need JINI in every toaster, lightfitting and piece of cutlery we own and best of luck for the future.
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
Don't tell me that leet programmers don't make those stupid mistakes, only idiots. Even if you are God's gift to software engineering, that doesn't change the fact that most programmers are not that good, and time and schedule pressures often make things worse.
Mea navis aericumbens anguillis abundat
One of the other tasks the article metions Joy working on is a long awaited rewrite of vi to include a slick Java Swing GUI interface and the migration away from moded operation to Ctrl key sequences.
According to Joy, "The Control key wasn't available when I wrote vi in the 70's. Back then it was the cent symbol key (you know, that little "c" with the line through it?). So we had to go with this kludgy insert mode thing that just, well, rather sucks."
I think they are just side-stepping the real news which is that Sun outsourced Bill Joy. The new Bill Joy is working for 1/10 the rate and lives in Punjab.
Seastead this.
why not fix C and C++ instead of going on about it being buggy, etc..
fix what we current have, not make new implementations of it that require a mass change to use it, not to mention java is a ram whore.
anyways, I do like his idea on fixing common internet problems, however, a lot of that would be simple to fix, example, smtp has been a standard for decades, yet, it's one of the most exploitable protocols ever in existance, all is needed to be done is fix the mail protocol so it cant be so easily abused, (inet6 will help with this as well)
whatever, I'm about to go back to bed.
The problem with writing an im client in Java is
that an im is something which always is runnig.
There the heavy memmory requirement/usage of the java vm is a big problem, because you don't want 10-20MB memmory taken away by the im.
This problem would not be so big if only sun would make a vm which allowed many programs running in the same vm thus sharing the memmory usage.
Martin
*shrug*, it works for us.
We've switched almost entirely from Powerbuilder to Java, including writing fairly rich GUIs in it. (I personally think the Java GUIs look and feel better than the PB ones).
The big issue with Java GUIs is that it's almost impossible to do them in a "knock-up" way, (something that VB, PB and the like are good at).
People try it, and then end up with junk and blame it on the tool. It's true that if you want to throw a GUI together as cheaply and easily as possible, then Java isn't the right tool, but if you want to put together a GUI that fits into a well designed system, then swing works just fine.
As Gosling recently said,
Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
I used to think like this too - when I was in college. Back when the coding projects I worked on were the dorky isolated projects assigned by my profs. Oh it was so easy to pontificate when I only had to code the travelling salesman problem.
Now I respect programmers who patently avoid anything lower on the architecture totem pole than they have to go. Working programmers who actually make use of advances in compilers, languages, methods and tools to produce working code for large projects that matter. In these projects people use an interpreted language if they can get away with it. They use C++ instead of C if they can get away with it.
Once again, I would kill to see the actual code produced by most posters here. I suspect that 99% of it is for college assignments.
Wal-Mart, headquartered in Bentonville, Arkansas, runs about 3300 stores. It's the biggest retailer in the world. It's the biggest employer in the the US. It's four times the size of the #2 retailer (Home Depot). Wal-Mart's total revenue is over $200 billion. This is more than most small countries. And they're still growing.
Wal-Mart controls a bigger economy than Gosplan, the USSR's state planning agency for the civilian sector, ever did. And Wal-Mart's control is far tighter. Wal-Mart has far more computing power than Gosplan ever did. Wal-Mart tracks sales daily; Gosplan seldom did better than obtaining annual numbers. If sales of something go up, manufacturers are told within days to increase production. If sales go down, Wal-Mart pulls the plug on the maker just as quickly. Gosplan could only dream of control like that.
Wal-Mart's "Corridor of Doom" is famous in retailing. That's where you go to sell to Wal-Mart. There's a long hall with buyer's offices, and a waiting room with a pay-per-use coffee machine. Sales reps, and even CEOs, go there and grovel before a polite Wal-Mart buyer who, by tradition, opens with "And what can your company do for Wal-Mart today". The buyer, equipped with data on all of Wal-Mart's suppliers, then squeezes the sales rep on price. Hard. Companies that sell to Wal-Mart don't make big margins. If they do, Wal-Mart searches for an alternative supplier, and plays the suppliers off against each other. (That's why they push Linux.)
That's how the American consumer product economy really works today.
Joy is right that more structured languages reduce programming errors. When it comes to working with Java, you can feel when your code is getting ugly because it starts to deviate from the clean design of (most of) the language's libraries.
With C (for example), there are few standards upon which to measure the "cleanliness" of your own code. Many libraries/APIs you use aren't consistent, well-designed and/or well-documented.
At least, that's one way to look at the issue.
Joy comes close to saying Solaris should be re-written in Java. He's not very realistic. When I think of secure programs, I think of qmail, postfix and djbdns. All written in C. I can't even name a Java mailserver or DNS server off the top of my head.
Outlook's numerous viruses are not caused by the program being written in C or C++. They are caused by Outlook's support for active content. The problem would still exist if Outlook were re-written in Java. I wonder if nobody in Joy's circle dares to correct him on this, or if he's been corrected and just didn't hear.
Take any random clever programmer over 30 and give him $100 million. He will wander off into the sunset, murmuring about his brilliant new idea for re-architecting the internet or something. He will never again do or say something relevant.
Your example simply describes the misuse of exceptions. I can misuse pointers and destroy the stack, so do you think we should be disallowed pointers.
Whether you like them or not, exceptions greatly simplify application logic. You no longer have to consistantly check every single return value (making return values indicate success was backwards to begin with at the time - we just hadn't realized it. At least errno is somewhat consistent.)
Exceptions are used very rarely in C++. They do it right - they are thrown when the state of the object is destroyed by some circumstance, or some other catastrophic failure such as the new operator failing. And it is really freakin hard to make C++ throw an exception from the standard library.
Exceptions in java are not "invisible" In fact, you have to check for declared thrown exceptions (but not 'runtime' exceptions). In the API declared thrown exceptions are caused by external problems (like a missing file, closed socket, etc) while Runtime exceptions are usually caused by programmer error (like null pointers), and can be avoided by poor programming.
If your python app is choaking on invalid input, it's because you can't program for shit, not because exceptions suck. If it was a C app, you'd simply segfault or something equally ridiculous. And you'd never know why. At least with the stack trace you can quickly pinpoint your problem and deal with it.
autopr0n is like, down and stuff.