The research paper also mentions that everyday, we are using the fossil fuel equivalent of all the plants growing during a whole year just for our cars.
I've also read that all the plants on the earth rely on an equilibrium already in place with regards to the energy heating the oceans and feeding the plants. Any significant harnessing of Solar energy will lower heat in oceans or on land and cause the inverse of global warming, global cooling.
There is no such a thing as a free lunch or free energy.
Their web site claims that they will air lectures in their entirety and unedited much like CSPAN. It doesn't sound like this is targeted for the mainstream, but a niche market. Persumably for this to really work the schedule of lectures would need be published well in advance and folks in different fields would tune into lectures they care about. This is kinda like ESPN where you only watch the sports teams you like and perhaps Monday night Football.
Most seminars I've been too though I would never air on public television. Boring content or boring speakers. My experience has been that most folks with PhD's don't present well. Also, the Q&A in some fields can devolve into shouting and negativity. Scientists love to pick on each other and can be down right nasty. I think the programming would a challenge.
To that end I think the best way to program it would be like the Common Wealth Club or the World Affairs council where people are invited to speak in a public forum. In fact I've heard many scientists speak on the Common Wealth Club. I for one wouldn't mind CSN airing Common Wealth Club science lectures.
In science we rely on experts and expert opinion. Experts can give their opinion without explaining everything, but inform us just by being convincing. For example, I went to a science lecture by a nuclear physicist one time who talked about nuclear power plants. That sounds intimidating, eh? But it wasn't. The premise was, "are nuclear power plants ok to use?" His answer as the expert? No. Why? Because to date we have no way of safely disposing of nuclear waste. Nuclear waste is "waste" for thousands of years. We have no containers that last thousands of years and as a culture we are burdening the problem on many future generations to come. His lecture took an hour and was never aired on public television, but it should have been.
I remember when I worked on a VAX. Our company bought a license with a service level agreement (SLA). Upgrades were mandated and part of the license. The incentive for getting it right the first time from DEC's perspective was that a quality product meant no bug fixes which were covered by the SLA.
However, compare that to Microsoft's business model. You don't buy a service license, you buy a version licenese. Microsoft admittedly produces unrealiable, buggy code because the expectation is that bugs are fixed in the next version upgrade.
Bill's not talking about a bug in the print driver that means your program prints wrong. He's really only talking about security problems in networking and more specifically Outlook and IE. Technically Outlook isn't even part of the OS although it is certainly patched with almost every security patch.
Microsoft is responding in 24 hours to *security* bugs because their traditional money making philosophy of fixing bugs in upgrades isn't making customers happy for security bugs. However, patches for non-security bugs are still realized by buying an upgrade.
I personally paid to upgrade to Windows 2000 professional because Windows ME which came on my Dell box was soooo buggy. There were never patches to fix the endless stream of bugs in ME except for the security bugs. Everyone I know says the best way to deal with the bugs in Windows ME is to upgrade. That is called Microsoft's golden goose. Create buggy software so people will pay for an upgrade not just for the new features, but to get rid of bugs.
absolutely, long island was bought with glass beads. Oh and don't forget George Bush and Arnold Schwazenblahblah got elected on style. Gray Davis? no style. Let's just vote fashion models into office. That way magazines like Vogue can be combined with the National Standard or Weekly Review. Sexy politics.
I agree. I remember many years ago some guy patented the common sense idea of putting a third break light about the rear window of a car, thus being more visible. What an absurd thing to patent. This is no less absurd. This kind of "intellectual property" defies any kind of critical analysis. Let's patent common sense and get it over with.
You need to educate yourself. Micro-kernels failed because of messaging overhead, otherwise known as "kernel crossings". The notion of having a micro-kernel with a bunch of
"plubagle" services running in user space is a performance hog. Security is also an issue because the CPU only has two modes, protected and un-protected (user/kernel).
I think the naive, first blush infation with micro-kernels is the same as with the notion today of a VM and particluraly Java. Arguably some people claim that modern CPUs are so fast we have performance excess to use. This is the only rationalization that justifies the existence of Java. However, performance does matter and there is no such thing as a free lunch.
Let's build an OS using a VM layer exclusivly and a micro-kernel, yeah!
Absolutely, I agree, XML is a fad. Shipping the schema with every record doesn't scale to say the least. Between that problem and the DOM/SAX parser performance problem XML will die. WebSphere performance serverely degrades with server-side XML so we still use mostly JSPs.
It's interesting to ask the question, why do so many people get caught up by the fads? I believe one answer is "seduced by technology."
I talked to my boss one day about why the company still uses Java long after its failed to produced the espoused results. His remark, "nobody wants to program in C or Perl, but Java and XML."
If that's true then a lot of what is driving fad technologies are the developers who get sucked into using them. Java will soon be replaced by a sexier language for the new generation.
Just my opinion.
Cheers!
-Mybrid
Re:Everything, including tools, in moderation!
on
Software Fashion
·
· Score: 1
Design Patterns is an incredibly useful tool, especially in the OO world.
Warning, what follows is my opinion based on my experience.
I like these kinds of arguments. It assumes that OO itself is not a fad. To me Design patterns are a fad solution to a fad problem.
I did research on claims that OO design is truly better then procedural or modular design. As was the case the last time I looked, no strong conclusion can be discerned because companies are not willing to pay to implement a large scale project using two methods for a controlled study. However, there was one conclusion I came to: untrained developers write better modular code than OO code because OO is more difficult to understand and has a lot of complex rules that are easy to get wrong, especially in regards to encapsulation. So, if you are working on a design that is to be implemented by less than solid programmers then it is probable that the cost of implementing an OO design is more than a modular design.
Therefore, I feel OO design for everything is also a fad that has never been proven or disproven. Showing design by OO is superior is a bit like showing capital punishment is a deterent to crime. There are so many variables that controlling the experiment is an intractable problem and the debate is mostly speculative.
People gave up on debating OO worthiness back in the early nineties not because OO was proven, but because people grew tired of the debate.
I think this adoptance by debate fatigue will be how fad techonologies like Java and.NET will survive if they do survive.
rrrrrrrrr-ing
MS: "Microsoft customer service, how can I help you?"
ME: "Yes, I'd like to report a memory leak."
MS: "And what memory leak would that be sir?"
ME: "Well, it seems that if I leave Windows NT 3.5 on for more than one continous weak, I run out of memory. I have to reboot every Sunday."
MS: "Oh, but how do you know that it's a memory leak."
ME: "Uh, I run out of memory?"
MS: "Well, sir, technically if you forget to delete both the reference and the memory its not a memory leak. The strict definition of a memory leak is that you delete the reference but not the memory."
ME: "Let me get this straight. If I forget to delete the reference and the memory, its not a memory leak, but if I forget the memory it is?"
MS: "Yes,sir"
ME: "Well, I'm sorry, that doesn't make sense to me."
MS: "Sir, you can rest assured that its not just Microsoft that defines a memory leak in this strict fashion."
ME: "Oh, please, tell me, who else says such things."
MS: "Java programmers."
ME: "Oh well, thanks, that clears that up. If there are two sources I trust it's a Java programmer and George Bush. The both just state things and you must believe them without thinking too much. I like that. Ok, I guess I don't know if I have a memory leak even though I run out of memory. And since I don't have the source code I can't be sure it is a memory leak."
MS: "That's right"
ME: "So how do I report this bug?"
MS: "Which application is causing the problem."
ME: "I don't know, as I said, I thought it was a memory leak"
Yahoo! Definitions. Database, memory leak. If a bug results in a memory leak its not a memory leak? If a developer forgets to call free on an a pointer is that a bug? Seems like you are being silly. I know this, our business partners share the same opinion that these are memory leaks. Allocating memory in away that trumps garbage collection is something IBM takes serious enough to try and fix.
I also disagree with your understanding of Java garbage collection. You are just flat out wrong. A referencing B which references A will defeat a Java's garbage collection.
This kind of silliness is why Java needs to be debunked. It's not C vs. Java. It's the miss-understandings of Java. Most of the claims about Java and Web application servers are over-rated and flat out unproven.
I see this kind of erroneous thinking all the time with database optimizers where people simply think that deadlock detection is always detectable when in fact it's provably an intractable problem.
Garbage collection is analagous to deadlock detection in its intractablity.
I suggest you take a theory class or pick up a theory book. No garbage collection algorithm can guarantee 100% detection.
Re:C/C++ is not secure? Setting the record straigh
on
The Next Path for Joy
·
· Score: 1
1. An OS is not an application
That is irrelevant to a security argument. However, an OS is an application of C and thus talking about it's security based upon C is relevant. Only a small portion of the OS is written in machine or assembly.
2. There are several databases written in Java
Having a database background I'm somewhat of a bigot. Some Micorsoft people claim Excel is a database. I do not. I should've stated enterprise, transactional, relational databases directly comparable to Oracle, DB2, SQL Server, Sybase, Informix, etc.
3. All your examples pre-date Java (but three of them find it useful enough to include)
This is irrelevant to a security argument.
Perhaps you are not aware but a database typically supplants the OS and goes straight to disk. In this manner a database is an OS. In fact, any *application* can choose to bypass the OS and thus an OS would be interchangable with application if indeed this were common practice. However, the catch is you need to have device drivers or use existing OS device drivers. Just because applications don't choose to do so doesn't disallow it. Databases mentioned above do bypass the OS altogether for performance reasons.
Most people don't realize the CPU security model only recognizes two users: kernel and user. Neither the use of Java or C changes that.
Any application that is given access to kernel mode at the CPU level can do anything and everything the OS is capable of.
*~smiles*~ Facts are not flag waving, eh? They are examples of secure, sophisticated applications of C/C++.
Memory leaks in Java: 1.) Program gets in a long loop accidentally allocating lots of spurious memory. The erroneous loop condition was rare and didn't happen under test conditions but did in production. Yes memory would get garbage collected but the rate of allocation defeated the garbage collection algorithm and thus manifested as a leak. The leak eventually exhausted all memory up to the maximum heap size. 2.) Debug data appended to a static class variable that grew unbounded. Accidentally made it into production. 3.) JVM itself grows (memory leak in the JVM). 4.) Same class in two different jar files was accepted by the JVM and the bug manifested as a huge memory leak.
Note that none of these are relevant in a C/CGI app the lives less then one second fullfilling a single request. I think a lot of people are mistakenly under the impression that all memory leaks are solely a product of dangling memory references because unused unreferenced-memory is not freed.
The fastest garbage collector is a disabled one. Wasted memory is never collected. You can simulate this in C by disabling free. Obviously this is only viable if your program is short lived. A garbage collection model always assumes long running processes.
There are many ways to defeat garbage collection. The easiest is for a A to refence B and B to reference A although I've never actually seen that one yet in production.
C/C++ is not secure? Setting the record straight.
on
The Next Path for Joy
·
· Score: 1, Insightful
The list goes on and on. Just because Microsoft can't get Windows right has nothing to do with C/C++. However, to date NO operating system has been written in Java and NO database has been written in Java. Java is untested in the mission critical apps of OS'es and Databases. A JVM is not an OS.
Outlook is susceptible to viruses MOSTLY because scripting is enabled. Web Browsers are susceptible to viruses becasue scripting is enabled.
Hi! Disclaimer, what follows is my opinion and experience.
Large scale C - Java projects that I've worked on (240 files, 100,000 lines) for a company I contract for yields 5-20% more lines of code when converting Web apps from scatch from C to Java. Mostly because of the framework stuff they imposed on Java.
Java is not high level even in design. It is basically C++ stripped down. That makes it less high-level than C++. Some people claim its high level because of all the available libraries. I don't see it in practice.
PERL on the other hand is high level. A five line PERL script can easily turn into a 100 line C program.
Again, empirical evidence at a large company shows otherwise with regards to bugs. Our bug tracking system has yielded no report that says the severity or frequency of bugs in Java are more or less than C.
The number one bug error in Java? Null reference exception. We also have huge memory leaks. In fact, we have more memory leak issues in Java because they are irrelevant in C so we turned off "free" in C. For web programming, C HTTP requests are short lived so we don't bother with freeing any memory. Leaked C memory is around for less than a second, who cares? Web Application Java servlets are long lived and susceptible to memory leaks.
One could argue that the more lines of Java code should yield more bugs for Java. However, our mission critical apps are written in C so it may be that our Java bugs are not getting reported by customers because they don't care.
My experience has been that the Java claim of less bugs because of no NULL pointers and no memory leaks is hogwash. Yeah, there are no array bounds errors in Java but if one uses Strings in C++ one can get the same benefit.
Garbage collection in the JVM is a big disaster costwise. It is really a challenge to tune and benchmark garbabe collection behavior. Performance is not linear, but shows elbows in the curve because the memory allocation failure and swapping starts happening much above 50% sustained CPU utilization.
would you like to invest in a company that always strives to be number one or a company that is willing to be third, fourth, or seven-best in the sectors which they compete
Why not? Start up companies are a perfect example of a company that have no market share, yet.
I worked at a scientific company who's stock had stayed the same price for over 20 years (adjusted for inflation). Why? Because they were about their product. The wanted investors in the science. One doesn't buy their stock to make money. They've been around for 30 years.
So, I'd say if you want investors who are more interested what the company does as opposed to making a quick buck, then it certainly makes sense. This kind of capitalism is supported by the model. Nothing about capitalism says you have to be number one or number two. It just means that like-minded people get together for a common purpose.
Cheers! -Mybrid
Re:Can we use languages not by lunatics?
on
Perl 5.8.1 Released
·
· Score: 1
Nice post. Your concern and sincerity are commendable. Yahoo! Oops, wrong web site. I like the wild-west kinda of feel of slashdot, kinda the Internet before commercialism. I know that Microsoft has people (employees) who are paid (encouraged) to promote Microsoft on slashdot.org. Did you know that? It's kinda funny actually. I would never go to some website promoting MS and try to argue Unix. Thus I think slashdot.org is a good thing.
How do you know when someone is being genuine? and not just tied to some agenda? I think there are many people with many agendas on slashdot and that's what makes it interesting. Defend or attack to your hearts content. Hopefully time teaches us to filter with a critical eye that which is meaningful written by those who care. As obviously you do which is why I chose to reply.
Anyone wanna compare performance benchmarks? On servers these days where it costs $1000 to get a box with a 2GHz proc & 1BG of RAM? Sure, Java users more of that glut of resources than other languages... because you're paying for two things: platform independence, and JVM-managed garbage collection.
Sorry, performance does matter.
but will never be able to compete with Java-style frameworks for long-term maintainability, complexity management, and scalable & distributed architecture
I completely disagree with that statement and have empirical evidence to back that up. I've seen C/CGI code ported to a Java Framework and it took 20% more lines of code to do it.
Java-style frameworks are NOT good in my experience and my opinion. I find they are extremely immature. Maybe in ten years.
Hi! Happy Tuesday! I truly appreciate your genuine thoughts and hopefully you find my response here in accord.
I think what myself, Phillip and many others have discovered through practice is that Java does not live up to its claims. I also argue that Web applications servers don't live up to their claims. In both cases I mean claims as better tools then existing tools and thus justifying the need for them at all.
"Erik Hatcher's Ant book Java Development with Ant talks about the CC task for compiling C code."
Thanks for the pointer. However, I was aware of this and my analysis is that Ant for C is still very immature and certainly not ready for a large company to trust over a period of years.
"You could also have Ant kick-off the make or have a script file kick off the Ant and Make builds."
True, actually, we have legacy Makefiles kick of Ant builds. However, the real issue for someone like me is that Ant is not necessary except for a limitation with java compilation performance. Given how entrenched Make is in the build community, I believe the onus is on the Java community to make their product work with Make. Now all our build engineers (who are not developers) have to come to grips with XML and Ant just to overcome the compilation performance problem with Java.
I think any established company is going to have a mix of languages and platforms to support. God help us if every language/OS flavor requires a new build tool like Ant. Make works for everything else we build?
"There are also tools like CruiseControl to automate the builds so you could have continous integration every night."
It's expensive for well established companies to move to new tools. You have to convince business why they need to part with the money. Our build engineers have spent years customizing scripts and are going to resist. They are not going to move to a new tool cheaply or easily. Build engineers and developers have a management wall at the SVP level.
"My point is the same as a lot of people have been saying here. Every language has its' strengths and weaknesses. Pick the right tool for the job. I'm certainly not going to say C is better than Java, VB is better than Python, LISP is better than than C#." I agree. My only beef with Java and Web Application servers is that my experience in a large company is that they fail their claims as a better tool.
"Do you know if some of the things like Aspect Oriented Programming (AspectJ) or tools like Struts, JavaServer Faces, et. al. have an equivalent in C? Is there a way to create a security model in C like the Java Security Model through some sort of existing class library"
Sorry, no I don't. C++ is a better comparison to Java. Off the top of my head I don't know of direct correlations. Where I work they use a homegrown Java framework. I'm not impressed. I'm not a fan of frameworks for the same reason I'm a skeptic of OO in general. I think a lot of people believe that OO and framework designs can simplify development such that below average or average developers will produce better code that is easier and less costly to maintain because of the "stricter" impositions of the framework, etc. I have never seen this in practice. The only path to better code is discipline and training. Developers I know who are disciplined and trained write good code in any language because training includes good abstraction and modeling techniques. Untrained and undisciplened developers are just that.
For my money? I would invest in human code review and software tools that monitor souce code before spending money on design and modeling. However, discipline and rigor are not as sexy as Struts and AspectJ so our industry is literally out of discipline control in my opinion. Developers have no problem spending company money on new software, but have real issues with performance reviews based upon quality of work and code reviews. I think this is exactly why our industry is moving offshore because management erronousely
Apologies. Unfortunately the language of computer science is imprecise and platform has different meanings in different communities. In this case by platform I meant software platform: C/Unix vs. Java/Unix, software platforms. Because Java/Unix took literally hours to compile with Makefiles we could no longer build cross software platform code only with make. Ant was introduced. Ant does not support any languate/OS platform but Java (on any OS). It does not support C.
Slow, really slow. I use Citibank. It's very slow and down much of the time, especially on Friday nights.
Since when did the "technology" gurus at banks become industry experts? My guess is that management made decisions based on technology fads much of the way the read management fad books. Much the way they are sending jobs offshore to India as a fad and not based on any solid science. It's the thing to do. Use Java and send the jobs offshore! My guess is that Phillip is far more qualified as a subject matter expert than bankers.
The fact that many people make money writing in Java paid for by bankers is more a source of amusement than science.
Absolutely, Give me PERL/CGI over WebSphere anyday. In fact, compiling code for an interpreter is laughable. Java should be a scripting language. Compiling millions of lines of Java is such a joke it is no longer realistic with Makefiles. You have to use ANT which doesn't support any other platform. The benefits of a scripting langauge far outweigh the benefits of byte code in my opinion. My experience with the WebSphere is that the web application claims over CGI are exaggerated especially with regards to performance. Furhtermore, the expenses of porting from WebSphere 2.0, 3.0 to 4.0 are far greater than any other C porting expense I've had to date. Java may be write once, run anywhere, but Java/XML/JSP/XSL/XSLT code written for application servers is not. The switch to EAR, WAR and J2EE was expensive with no discernable payoff. Web application servers are a waste of time because the standards change so fast. However, 1/2 million lines of C/CGI scripts written 7 years ago compile on Solaris, AIX, and Linux with only one person spending two-weeks porting code that is still run in production today. Because ANSI C is a mature standard it is far closer to "write once, run anywhere" than Java is if the authors of the C code know it needs to run on multiple platforms and stay within the ANSI C/ POSIX universe.
Those programming languages you mentioned are scripting languages, not web application servers.
And? So what? Give me PERL/CGI over WebSphere anyday. In fact, compiling code for an interpreter is laughable. Java should be a scripting language. Compiling millions of lines of Java is such a joke it is no longer realistic with Makefiles. You have to use ANT which doesn't support any other platform. The benefits of a scripting langauge far outweigh the benefits of byte code in my opinion. My experience with the WebSphere is that the web application claims over CGI are exaggerated especially with regards to performance. Furhtermore, the expenses of porting from WebSphere 2.0, 3.0 to 4.0 are far greater than any other C porting expense I've had to date. Java may be write once, run anywhere, but Java/XML/JSP/XSL/XSLT code written for application servers is not. The switch to EAR, WAR and J2EE was expensive with no discernable payoff. Web application servers are a waste of time because the standards change so fast. However, 1/2 million lines of C/CGI scripts written 7 years ago compile on Solaris, AIX, and Linux with only one person spending two-weeks porting code that is still run in production today. Because ANSI C is a mature standard it is far closer to "write once, run anywhere" than Java is if the authors of the C code know it needs to run on multiple platforms and stay within the ANSI C/ POSIX universe.
Well said. I really liked the Virgin comparison. When I read this I realized I've been thinking the same thing in the back of my mind in unspecified format. I would mod you up if I could.
The research paper also mentions that everyday, we are using the fossil fuel equivalent of all the plants growing during a whole year just for our cars.
I've also read that all the plants on the earth rely on an equilibrium already in place with regards to the energy heating the oceans and feeding the plants. Any significant harnessing of Solar energy will lower heat in oceans or on land and cause the inverse of global warming, global cooling.
There is no such a thing as a free lunch or free energy.
You got to be kidding, right?
The only reasons I can imagine you posted this is that:
- You've never used quality software that's not bloatware with 50 million intimidating features you've never used and will never use or,
- It's a troll.
Cheers!-Mybrid
Their web site claims that they will air lectures in their entirety and unedited much like CSPAN. It doesn't sound like this is targeted for the mainstream, but a niche market. Persumably for this to really work the schedule of lectures would need be published well in advance and folks in different fields would tune into lectures they care about. This is kinda like ESPN where you only watch the sports teams you like and perhaps Monday night Football.
Most seminars I've been too though I would never air on public television. Boring content or boring speakers. My experience has been that most folks with PhD's don't present well. Also, the Q&A in some fields can devolve into shouting and negativity. Scientists love to pick on each other and can be down right nasty. I think the programming would a challenge.
To that end I think the best way to program it would be like the Common Wealth Club or the World Affairs council where people are invited to speak in a public forum. In fact I've heard many scientists speak on the Common Wealth Club. I for one wouldn't mind CSN airing Common Wealth Club science lectures.
In science we rely on experts and expert opinion. Experts can give their opinion without explaining everything, but inform us just by being convincing. For example, I went to a science lecture by a nuclear physicist one time who talked about nuclear power plants. That sounds intimidating, eh? But it wasn't. The premise was, "are nuclear power plants ok to use?" His answer as the expert? No. Why? Because to date we have no way of safely disposing of nuclear waste. Nuclear waste is "waste" for thousands of years. We have no containers that last thousands of years and as a culture we are burdening the problem on many future generations to come. His lecture took an hour and was never aired on public television, but it should have been.
As they say, "Follow the money".
:)
Don't ask me who they are though
I remember when I worked on a VAX. Our company bought a license with a service level agreement (SLA). Upgrades were mandated and part of the license. The incentive for getting it right the first time from DEC's perspective was that a quality product meant no bug fixes which were covered by the SLA.
However, compare that to Microsoft's business model. You don't buy a service license, you buy a version licenese. Microsoft admittedly produces unrealiable, buggy code because the expectation is that bugs are fixed in the next version upgrade.
Bill's not talking about a bug in the print driver that means your program prints wrong. He's really only talking about security problems in networking and more specifically Outlook and IE. Technically Outlook isn't even part of the OS although it is certainly patched with almost every security patch.
Microsoft is responding in 24 hours to *security* bugs because their traditional money making philosophy of fixing bugs in upgrades isn't making customers happy for security bugs. However, patches for non-security bugs are still realized by buying an upgrade.
I personally paid to upgrade to Windows 2000 professional because Windows ME which came on my Dell box was soooo buggy. There were never patches to fix the endless stream of bugs in ME except for the security bugs. Everyone I know says the best way to deal with the bugs in Windows ME is to upgrade. That is called Microsoft's golden goose. Create buggy software so people will pay for an upgrade not just for the new features, but to get rid of bugs.
Cheers!
Mybrid
absolutely, long island was bought with glass beads. Oh and don't forget George Bush and Arnold Schwazenblahblah got elected on style. Gray Davis? no style. Let's just vote fashion models into office. That way magazines like Vogue can be combined with the National Standard or Weekly Review. Sexy politics.
I agree. I remember many years ago some guy patented the common sense idea of putting a third break light about the rear window of a car, thus being more visible. What an absurd thing to patent. This is no less absurd. This kind of "intellectual property" defies any kind of critical analysis. Let's patent common sense and get it over with.
NT is a micro-kernel? Ho! Ho!
You need to educate yourself. Micro-kernels failed because of messaging overhead, otherwise known as "kernel crossings". The notion of having a micro-kernel with a bunch of "plubagle" services running in user space is a performance hog. Security is also an issue because the CPU only has two modes, protected and un-protected (user/kernel).
I think the naive, first blush infation with micro-kernels is the same as with the notion today of a VM and particluraly Java. Arguably some people claim that modern CPUs are so fast we have performance excess to use. This is the only rationalization that justifies the existence of Java. However, performance does matter and there is no such thing as a free lunch.
Let's build an OS using a VM layer exclusivly and a micro-kernel, yeah!
Absolutely, I agree, XML is a fad. Shipping the schema with every record doesn't scale to say the least. Between that problem and the DOM/SAX parser performance problem XML will die. WebSphere performance serverely degrades with server-side XML so we still use mostly JSPs.
It's interesting to ask the question, why do so many people get caught up by the fads? I believe one answer is "seduced by technology."
I talked to my boss one day about why the company still uses Java long after its failed to produced the espoused results. His remark, "nobody wants to program in C or Perl, but Java and XML."
If that's true then a lot of what is driving fad technologies are the developers who get sucked into using them. Java will soon be replaced by a sexier language for the new generation.
Just my opinion.
Cheers!
-Mybrid
Design Patterns is an incredibly useful tool, especially in the OO world.
.NET will survive if they do survive.
Warning, what follows is my opinion based on my experience.
I like these kinds of arguments. It assumes that OO itself is not a fad. To me Design patterns are a fad solution to a fad problem. I did research on claims that OO design is truly better then procedural or modular design. As was the case the last time I looked, no strong conclusion can be discerned because companies are not willing to pay to implement a large scale project using two methods for a controlled study. However, there was one conclusion I came to: untrained developers write better modular code than OO code because OO is more difficult to understand and has a lot of complex rules that are easy to get wrong, especially in regards to encapsulation. So, if you are working on a design that is to be implemented by less than solid programmers then it is probable that the cost of implementing an OO design is more than a modular design.
Therefore, I feel OO design for everything is also a fad that has never been proven or disproven. Showing design by OO is superior is a bit like showing capital punishment is a deterent to crime. There are so many variables that controlling the experiment is an intractable problem and the debate is mostly speculative.
People gave up on debating OO worthiness back in the early nineties not because OO was proven, but because people grew tired of the debate.
I think this adoptance by debate fatigue will be how fad techonologies like Java and
Just my opinion.
Cheers!
-Mybrid
rrrrrrrrr-ing MS: "Microsoft customer service, how can I help you?"
ME: "Yes, I'd like to report a memory leak."
MS: "And what memory leak would that be sir?"
ME: "Well, it seems that if I leave Windows NT 3.5 on for more than one continous weak, I run out of memory. I have to reboot every Sunday."
MS: "Oh, but how do you know that it's a memory leak."
ME: "Uh, I run out of memory?"
MS: "Well, sir, technically if you forget to delete both the reference and the memory its not a memory leak. The strict definition of a memory leak is that you delete the reference but not the memory."
ME: "Let me get this straight. If I forget to delete the reference and the memory, its not a memory leak, but if I forget the memory it is?"
MS: "Yes,sir"
ME: "Well, I'm sorry, that doesn't make sense to me."
MS: "Sir, you can rest assured that its not just Microsoft that defines a memory leak in this strict fashion."
ME: "Oh, please, tell me, who else says such things."
MS: "Java programmers."
ME: "Oh well, thanks, that clears that up. If there are two sources I trust it's a Java programmer and George Bush. The both just state things and you must believe them without thinking too much. I like that. Ok, I guess I don't know if I have a memory leak even though I run out of memory. And since I don't have the source code I can't be sure it is a memory leak."
MS: "That's right"
ME: "So how do I report this bug?"
MS: "Which application is causing the problem."
ME: "I don't know, as I said, I thought it was a memory leak"
Yahoo! Definitions. Database, memory leak. If a bug results in a memory leak its not a memory leak? If a developer forgets to call free on an a pointer is that a bug? Seems like you are being silly. I know this, our business partners share the same opinion that these are memory leaks. Allocating memory in away that trumps garbage collection is something IBM takes serious enough to try and fix. I also disagree with your understanding of Java garbage collection. You are just flat out wrong. A referencing B which references A will defeat a Java's garbage collection. This kind of silliness is why Java needs to be debunked. It's not C vs. Java. It's the miss-understandings of Java. Most of the claims about Java and Web application servers are over-rated and flat out unproven. I see this kind of erroneous thinking all the time with database optimizers where people simply think that deadlock detection is always detectable when in fact it's provably an intractable problem. Garbage collection is analagous to deadlock detection in its intractablity. I suggest you take a theory class or pick up a theory book. No garbage collection algorithm can guarantee 100% detection.
1. An OS is not an application
That is irrelevant to a security argument.
However, an OS is an application of C and thus talking about it's security based upon C is relevant. Only a small portion of the OS is written in machine or assembly.
2. There are several databases written in Java
Having a database background I'm somewhat of a bigot. Some Micorsoft people claim Excel is a database. I do not. I should've stated enterprise, transactional, relational databases directly comparable to Oracle, DB2, SQL Server, Sybase, Informix, etc.
3. All your examples pre-date Java (but three of them find it useful enough to include)
This is irrelevant to a security argument.
Perhaps you are not aware but a database typically supplants the OS and goes straight to disk. In this manner a database is an OS. In fact, any *application* can choose to bypass the OS and thus an OS would be interchangable with application if indeed this were common practice. However, the catch is you need to have device drivers or use existing OS device drivers. Just because applications don't choose to do so doesn't disallow it. Databases mentioned above do bypass the OS altogether for performance reasons.
Most people don't realize the CPU security model only recognizes two users: kernel and user. Neither the use of Java or C changes that.
Any application that is given access to kernel mode at the CPU level can do anything and everything the OS is capable of.
*~smiles*~ Facts are not flag waving, eh? They are examples of secure, sophisticated applications of C/C++.
Memory leaks in Java:
1.) Program gets in a long loop accidentally allocating lots of spurious memory. The erroneous loop condition was rare and didn't happen under test conditions but did in production. Yes memory would get garbage collected but the rate of allocation defeated the garbage collection algorithm and thus manifested as a leak. The leak eventually exhausted all memory up to the maximum heap size.
2.) Debug data appended to a static class variable that grew unbounded. Accidentally made it into production.
3.) JVM itself grows (memory leak in the JVM).
4.) Same class in two different jar files was accepted by the JVM and the bug manifested as a huge memory leak.
Note that none of these are relevant in a C/CGI app the lives less then one second fullfilling a single request. I think a lot of people are mistakenly under the impression that all memory leaks are solely a product of dangling memory references because unused unreferenced-memory is not freed.
The fastest garbage collector is a disabled one. Wasted memory is never collected. You can simulate this in C by disabling free. Obviously this is only viable if your program is short lived. A garbage collection model always assumes long running processes.
There are many ways to defeat garbage collection. The easiest is for a A to refence B and B to reference A although I've never actually seen that one yet in production.
Let's investiage:
1.) Solaris: C/C++
2.) Linux: C/C++
3.) Oracle: C/C++
4.) DB2: C/C++
The list goes on and on. Just because Microsoft can't get Windows right has nothing to do with C/C++. However, to date NO operating system has been written in Java and NO database has been written in Java. Java is untested in the mission critical apps of OS'es and Databases. A JVM is not an OS.
Outlook is susceptible to viruses MOSTLY because scripting is enabled. Web Browsers are susceptible to viruses becasue scripting is enabled.
Cheers!
-Mybrid
Hi!
Disclaimer, what follows is my opinion and experience.
Large scale C - Java projects that I've worked on (240 files, 100,000 lines) for a company I contract for yields 5-20% more lines of code when converting Web apps from scatch from C to Java. Mostly because of the framework stuff they imposed on Java.
Java is not high level even in design. It is basically C++ stripped down. That makes it less high-level than C++. Some people claim its high level because of all the available libraries. I don't see it in practice.
PERL on the other hand is high level. A five line PERL script can easily turn into a 100 line C program.
Again, empirical evidence at a large company shows otherwise with regards to bugs. Our bug tracking system has yielded no report that says the severity or frequency of bugs in Java are more or less than C.
The number one bug error in Java? Null reference exception. We also have huge memory leaks. In fact, we have more memory leak issues in Java because they are irrelevant in C so we turned off "free" in C. For web programming, C HTTP requests are short lived so we don't bother with freeing any memory. Leaked C memory is around for less than a second, who cares? Web Application Java servlets are long lived and susceptible to memory leaks.
One could argue that the more lines of Java code should yield more bugs for Java. However, our mission critical apps are written in C so it may be that our Java bugs are not getting reported by customers because they don't care.
My experience has been that the Java claim of less bugs because of no NULL pointers and no memory leaks is hogwash. Yeah, there are no array bounds errors in Java but if one uses Strings in C++ one can get the same benefit.
Garbage collection in the JVM is a big disaster costwise. It is really a challenge to tune and benchmark garbabe collection behavior. Performance is not linear, but shows elbows in the curve because the memory allocation failure and swapping starts happening much above 50% sustained CPU utilization.
Cheers!
-Mybrid
would you like to invest in a company that always strives to be number one or a company that is willing to be third, fourth, or seven-best in the sectors which they compete
Why not? Start up companies are a perfect example of a company that have no market share, yet.
I worked at a scientific company who's stock had stayed the same price for over 20 years (adjusted for inflation). Why? Because they were about their product. The wanted investors in the science. One doesn't buy their stock to make money. They've been around for 30 years.
So, I'd say if you want investors who are more interested what the company does as opposed to making a quick buck, then it certainly makes sense. This kind of capitalism is supported by the model. Nothing about capitalism says you have to be number one or number two. It just means that like-minded people get together for a common purpose.
Cheers!
-Mybrid
Nice post. Your concern and sincerity are commendable. Yahoo! Oops, wrong web site. I like the wild-west kinda of feel of slashdot, kinda the Internet before commercialism. I know that Microsoft has people (employees) who are paid (encouraged) to promote Microsoft on slashdot.org. Did you know that? It's kinda funny actually. I would never go to some website promoting MS and try to argue Unix. Thus I think slashdot.org is a good thing.
How do you know when someone is being genuine? and not just tied to some agenda? I think there are many people with many agendas on slashdot and that's what makes it interesting. Defend or attack to your hearts content. Hopefully time teaches us to filter with a critical eye that which is meaningful written by those who care. As obviously you do which is why I chose to reply.
All the best!
-Mybrid
Anyone wanna compare performance benchmarks? On servers these days where it costs $1000 to get a box with a 2GHz proc & 1BG of RAM? Sure, Java users more of that glut of resources than other languages... because you're paying for two things: platform independence, and JVM-managed garbage collection.
Sorry, performance does matter.
but will never be able to compete with Java-style frameworks for long-term maintainability, complexity management, and scalable & distributed architecture
I completely disagree with that statement and have empirical evidence to back that up. I've seen C/CGI code ported to a Java Framework and it took 20% more lines of code to do it.
Java-style frameworks are NOT good in my experience and my opinion. I find they are extremely immature. Maybe in ten years.
Hi! Happy Tuesday! I truly appreciate your genuine thoughts and hopefully you find my response here in accord.
I think what myself, Phillip and many others have discovered through practice is that Java does not live up to its claims. I also argue that Web applications servers don't live up to their claims. In both cases I mean claims as better tools then existing tools and thus justifying the need for them at all.
"Erik Hatcher's Ant book Java Development with Ant talks about the CC task for compiling C code."
Thanks for the pointer. However, I was aware of this and my analysis is that Ant for C is still very immature and certainly not ready for a large company to trust over a period of years.
"You could also have Ant kick-off the make or have a script file kick off the Ant and Make builds."
True, actually, we have legacy Makefiles kick of Ant builds. However, the real issue for someone like me is that Ant is not necessary except for a limitation with java compilation performance. Given how entrenched Make is in the build community, I believe the onus is on the Java community to make their product work with Make. Now all our build engineers (who are not developers) have to come to grips with XML and Ant just to overcome the compilation performance problem with Java.
I think any established company is going to have a mix of languages and platforms to support. God help us if every language/OS flavor requires a new build tool like Ant. Make works for everything else we build?
"There are also tools like CruiseControl to automate the builds so you could have continous integration every night."
It's expensive for well established companies to move to new tools. You have to convince business why they need to part with the money. Our build engineers have spent years customizing scripts and are going to resist. They are not going to move to a new tool cheaply or easily. Build engineers and developers have a management wall at the SVP level.
"My point is the same as a lot of people have been saying here. Every language has its' strengths and weaknesses. Pick the right tool for the job. I'm certainly not going to say C is better than Java, VB is better than Python, LISP is better than than C#."
I agree. My only beef with Java and Web Application servers is that my experience in a large company is that they fail their claims as a better tool.
"Do you know if some of the things like Aspect Oriented Programming (AspectJ) or tools like Struts, JavaServer Faces, et. al. have an equivalent in C? Is there a way to create a security model in C like the Java Security Model through some sort of existing class library"
Sorry, no I don't. C++ is a better comparison to Java. Off the top of my head I don't know of direct correlations.
Where I work they use a homegrown Java framework. I'm not impressed. I'm not a fan of frameworks for the same reason I'm a skeptic of OO in general. I think a lot of people believe that OO and framework designs can simplify development such that below average or average developers will produce better code that is easier and less costly to maintain because of the "stricter" impositions of the framework, etc. I have never seen this in practice. The only path to better code is discipline and training. Developers I know who are disciplined and trained write good code in any language because training includes good abstraction and modeling techniques. Untrained and undisciplened developers are just that.
For my money? I would invest in human code review and software tools that monitor souce code before spending money on design and modeling. However, discipline and rigor are not as sexy as Struts and AspectJ so our industry is literally out of discipline control in my opinion. Developers have no problem spending company money on new software, but have real issues with performance reviews based upon quality of work and code reviews. I think this is exactly why our industry is moving offshore because management erronousely
Apologies. Unfortunately the language of computer science is imprecise and platform has different meanings in different communities. In this case by platform I meant software platform: C/Unix vs. Java/Unix, software platforms. Because Java/Unix took literally hours to compile with Makefiles we could no longer build cross software platform code only with make. Ant was introduced. Ant does not support any languate/OS platform but Java (on any OS). It does not support C.
Well, how fast is your on-line banking?
Slow, really slow. I use Citibank. It's very slow and down much of the time, especially on Friday nights.
Since when did the "technology" gurus at banks become industry experts? My guess is that management made decisions based on technology fads much of the way the read management fad books. Much the way they are sending jobs offshore to India as a fad and not based on any solid science. It's the thing to do. Use Java and send the jobs offshore! My guess is that Phillip is far more qualified as a subject matter expert than bankers.
The fact that many people make money writing in Java paid for by bankers is more a source of amusement than science.
Absolutely, Give me PERL/CGI over WebSphere anyday. In fact, compiling code for an interpreter is laughable. Java should be a scripting language. Compiling millions of lines of Java is such a joke it is no longer realistic with Makefiles. You have to use ANT which doesn't support any other platform. The benefits of a scripting langauge far outweigh the benefits of byte code in my opinion. My experience with the WebSphere is that the web application claims over CGI are exaggerated especially with regards to performance. Furhtermore, the expenses of porting from WebSphere 2.0, 3.0 to 4.0 are far greater than any other C porting expense I've had to date. Java may be write once, run anywhere, but Java/XML/JSP/XSL/XSLT code written for application servers is not. The switch to EAR, WAR and J2EE was expensive with no discernable payoff. Web application servers are a waste of time because the standards change so fast.
However, 1/2 million lines of C/CGI scripts written 7 years ago compile on Solaris, AIX, and Linux with only one person spending two-weeks porting code that is still run in production today. Because ANSI C is a mature standard it is far closer to "write once, run anywhere" than Java is if the authors of the C code know it needs to run on multiple platforms and stay within the ANSI C/ POSIX universe.
Those programming languages you mentioned are scripting languages, not web application servers.
And? So what? Give me PERL/CGI over WebSphere anyday. In fact, compiling code for an interpreter is laughable. Java should be a scripting language. Compiling millions of lines of Java is such a joke it is no longer realistic with Makefiles. You have to use ANT which doesn't support any other platform. The benefits of a scripting langauge far outweigh the benefits of byte code in my opinion. My experience with the WebSphere is that the web application claims over CGI are exaggerated especially with regards to performance. Furhtermore, the expenses of porting from WebSphere 2.0, 3.0 to 4.0 are far greater than any other C porting expense I've had to date. Java may be write once, run anywhere, but Java/XML/JSP/XSL/XSLT code written for application servers is not. The switch to EAR, WAR and J2EE was expensive with no discernable payoff. Web application servers are a waste of time because the standards change so fast.
However, 1/2 million lines of C/CGI scripts written 7 years ago compile on Solaris, AIX, and Linux with only one person spending two-weeks porting code that is still run in production today. Because ANSI C is a mature standard it is far closer to "write once, run anywhere" than Java is if the authors of the C code know it needs to run on multiple platforms and stay within the ANSI C/ POSIX universe.
Well said. I really liked the Virgin comparison.
When I read this I realized I've been thinking the same thing in the back of my mind in unspecified format. I would mod you up if I could.
Cheers!
-Mybrid