If you're going to split hairs, split them on both sides of the part. Is gcc standard C in the object code? Is there such a thing? No. That's why writing ANSI C code, and writing portable ANSI C code are two different beasts as well. Machines are different. If you remove the JIT "Java Implementation" as you put it, then which platform is true Java, as they *all* convert byte code to machine code in the final stage.
JVMs and the JITs like HotSpot are where things with highly abstracted languages are moving, as the runtime optimizations that are impossible otherwise become staggeringly powerful. It's a package deal. Java with HotSpot, gcc with -O 2 or better.:-)
Very interesting points from ESR, although I think RMS isn't *that* fanatical. Well, ok maybe. ANYWAYS.
What about looking at some cases in real life? Proprietary licenses. Say.... Windows. Very successful. Likley due to cost, marketing and standardization of a chaotic platform long in the past. Solved a lot of problems with proprietary platforms only running 1-2 applications you needed, so you almost bought one machine per application in some situations. Seems OK for the time. Now, however, with viable alternatives, there are some things like open sourcing (NOT GPL) that may be useful if the modifications could be redistributed, but MSFT still owned the rights to the parts they feel they need to. (Asbestos enabled)
Why not GPL? Enter point number 2. BSD/Mozilla/Extend and contribute like licenses. The SCSL from SUN. Specifically, Java. If this thing was GPL'd off the bat, it would be another fragmented, proprietary implementation of a screwed up standard left in the past not unlike CDE, or even C++ in it's early life. With SUN owning a brand, and enforcing a standard that they don't actually unilaterally define, it's a workable, reliable, and standardized open platform.
Those two cases in point, one must ask WHY the GPL seems to have such problems creating the defining third case study where GPL is the only thing that worked. Well, maybe it has. Let's take Linux. If it was proprietary, it would likely be as big as CP/M about now. If it was SCSL, the buy-in by the GPL crowd would be nill, (err... null, err.. nevermind) and the corporate adoptions to the benefit of the community wouldn't have occurred.
So, we've got three broad and incomplete categories of license, and three broad and incompletely analyzed case studies showing success in each case, and why in those particular cases that license modality was the correct choice for the goals.
So bascially, I would side with Tim on the side of choice, and promote the said flerbage as the yardstick. Evolution finds optimal solutions through excessive choice. Seems to have worked out fairly well. Odd that it still resulted in the occasional individual that opposes the primary mechanism that gave rise to them. I savour the irony.
I'd love to hear why the power of choice would be a bad thing, even if you choose a proprietary license. Try and write a cheat-resistant multiplayer game with open source on both client and server, and see just how far you get before the cheats make the game unplayable except among friends. Lots of papers and discussions on that as well.
And don't raise the "web of trust" and such there RMS and cadre. Defintion of trust on that level would have removed the success of the GPL in the case of Linux, as there could be code in there that trusted people back-doored, but no one has bothered to review. Trust is perception, and perception is in it's very nature incomplete.
Sometimes you just gotta say no when someone wants your recipe.:-)
Respond with thought or not at all if you please.
ISS and space hardware -- some risk
on
Meteor Showers
·
· Score: 1
Rather than debate the mess by intuition and bravado, how about doing a search? There is evidence that this year's Leonid shower was warned against last year, mainly for satellite electronics ( Space Daily News on debris last year )
Kind of interesting. These are small, but apparently anything of even a few centimeters in size is tracked by radar now. And avoided. (Space shuttle article (pdf) on Nasa. Didn't keep the href. Do the search.:-) )
I believe there's another factor. NASA isn't really pushing the envelope in the eyes of the public anymore. In the days of Apollo, and going to the moon, that was fantastic, near-sci-fi stuff. Now, it's bang for the buck, and there's no race.
Oddly enough, it looks as though Japan is pushing pretty hard with the lower-cost systems. It appears things like the XPrize may get the industry moving again, but not necessarily in the hands of NASA.
In some ways, Voyager is doing more interesting things than ISS as it's nearing the edge of the Sun's influence. Then it really enters the galaxy as a whole and "sees" new things.
ISS is a great undertaking, and the multinational cooperation is truly outstanding, but it's more of a political project at this point. It's becoming evident that the US people via Congress aren't going to foot the bill for this stuff any more, and that other groups like the Planetary Society, and other countries will have to get more into the area of space exploration to recapture the pioneering spirit. NASA is between a rock and a hard place with money and overhead. A new approach is needed.
Heck, Buzz, Armstrong and the like were kind of daredevils. Apollo 1 killed 3. Challenger killed 7. But now, the safety record of NASA is improving to the point where people mistakenly believe it's safe. Familiarity breeds contempt.
I'm all for space exploration. But NASA can't be the only ones doing it.
One might take this opportunity to ask what all the bio/toxin research does for safeguards. I would expect actually less than that done for a MODERN, properly maintained nuclear reactor. Personally, I'm a lot more worried about some of the wonderous chemicals they come up with getting released into the environment and atmosphere than a nuclear accident on the ground.
A space launch would need more info, but the ground-based reactor fears are a fear of the immediate vs. an inability to comprehend a long-term, cumulative effect of the damage done by fossil fuels.
To start with, Java is a currently used, valuable assset in the job market. It teaches a number of skills and can be used to illustrate a lot of concepts in CS. That's the practical, easy reason for a wider acceptance as a basic course in CS.
To follow on, both MSFT and SUN have weighed in now heavily with Virtual Machine byte-code languages and platforms (.NET in case you didn't realize that MSFT is actually following after Java) as being more capable and in some cases theoretically as fast or faster due to run time optimizations impossible in statically compiled languages. Interesting, isn't it? You can do things by examining the byte code at run time that the assembly code at compile time won't allow you to do. Think dynamic loading, introspection, virtual method inlining, just to name a few.
It's free and open. This has been mentioned, but the specs, while nominally controlled by Sun are in fact controlled by the JCP and that means by industry and community members. You don't even need to use Sun. Use IBM, or the GNU/Kaffe systems, or the Linux Blackdown ports....
On a different, less practical tack...
The thing we are fast slamming into as anyone in the industry knows is complexity management. It's time for many of us to let go of the assumptions inherent in knowing the assembly-language model of computers. You shackle your thought process to a certain execution and ordering model that both changes over time and changes between platforms, and you become tunnel visioned to a certain mode of thinking. One that does not allow for rapid, adaptable abstraction, which is the human method for dealing with complexity.
Case in point. You did, at one time in the past, have to write some very low-level routines yourself to do things like draw windows, access disk drives, direct codes to the raw printer, or even spin the disk drive up depending upon how far back you travel in time. All those things are now abstracted away from the day-to-day programming, so that we can deal with remote method invocation, distributed objects, relational and object databases, and concurrency control.
Why is that a bad or wrong thing? Getting any decent language (Java, C, C++, LISP, Smalltalk, etc) into a person's head to start gets them capable of thinking about the idea of O(n) type analysis. You don't need assembly for that. It's algebraic if you look at how it was developed. You don't need any language at all, just an algorithm.
Get over it! I learned assembly one of the first languages as well, but I don't think it's as much of an advantage anymore, and to deal with increasing complexity and systems, and new ways of modelling and desinging those things, you do not want to think about that sort of process as your core design philosophy.
Cool factor yes. Practical, only for a few low-level programmers that give the rest of us the abstraction layers we need. Both tasks are hard, but there's fewer people needed at the layers nearer to the chip.
This whole issue is pre-loaded with far too much napalm. Let's look at a few facts.
MSFT puts a lot of man hours into the development of Windows, Office and Explorer. Those are the three things that Linux and the community is trying to offer alternatives to.
For some of us, the alternative is now to a point that it's fully usable and functional the way we need it. A few work arounds and quirks are OK, because we will tolerate those inconveniences for whatever reason.
Unfortunately, I would contend that 2000, and probably the first half of this year are a low point for Linux. There were few user innovations over the past 18 months. There were many OS innovations for SMP, server process wakeups, etc., but by and large, Mandrake 8 is the only push forward in the user experience.
Mozilla, and the derivatives, have been stalled in cycles of rapid, expansionistic development that caused huge bloat and sloth. 0.9 has made immense strides in getting all those new features to operate efficiently. Konqueror is a great browser, but it's been missing a few features until recently that made it really awkward at times for some of us (JavaScript, Java....).
StarOffice is a big app. It's slow in some ways. But it is very functional, and deals well with all the office 2000 documents floating around. KOffice and the Abi/Gnumeric suites are on the way, but they are still evolving. Again, they are very capable for some of us, but not all the way there yet.
My point, as I'm obviously burying it in details, is that MSFT is a big, successful software corporation, and they do know what they are doing for the most part. The software now out there (IE 5+, Windows 2000 Pro, Office 2000) are very solid, capable products.
Why does anyone assume that we as a community with a bunch of passionate developers and few corporations contributing would be able to wrest state of the art capabilities and features into being in a year? In two years? MSFT will not stand still. It's going to take time, and possibly may never happen. But dead? Hardly. Stalled? To the outside world I would agree. But I believe given the cycles of development that have been going on over the past 18 months, the "release cycles" are about to ramp up. Indeed they already are. This cycle is more the end-user functionality, rather than the internals that have been a focus.
Let the press jump on and off the bandwagon. Hopefully some of the sensationalistic muck rakers will break a few ankles doing that. But read the odd status update on the projects, and use the milestones. Try to understand the progress and why. Things are improving. But Linux is behind. It's another #2 contender out there, and there is much work to be done. That work is being done. Don't believe everything you read. Check it out.
There goes a few moderator points down the toilet. I was hoping SOMEONE who might have wandered through MIT would have put up a contrarian point of view to the whole "best thing" idea in languages. If one did, I can't find it.
WHY does everyone have a favourite language, and assume it's the cat's PJs for every problem under the sun?
I use, primarily, Java. Why? Because for what I do, I need the portability, and it's more than fast enough, and yes, the recent versions are portable properly. They're also likely a lot faster than you think they are.
But my real point, is that it's not the only language, and the reference to MIT is found early in the book Structure and Interpretation of Computer Programs by Abelson, Sussman and Sussman. I myself did not go to MIT, so if I mess up, don't blame them, but the point made in the book is thus:
"... First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology.... Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs... but rather the techniques used to control the intellectual complexity of large software systems."
Different languages evolve to solve different problems. People don't build things like Simula for writing a network driver or the next 1st person shooter. They build it to solve complex, physical simulations. The expressive power is greatly increased, but the problem domain is restricted.
A general language is a nice idea, but we're starting to need something beyond that. The whole idea of the project is actually meta-programming. Not writing your next device driver. Write it in C. Maybe C++ if you must. But the OOP languages have given us a large number of very reusable, efficient components, regardless of what detractors of the OOP approach itself may claim. Knitting those components together right now is tedious in C++, Java, VB or even many of the visual designers. We're still bolting rods to wheels, instead of expressing the transfer of linear force to rotation at a higher level.
I would humbly suggest that all the crock about the syntax and such be backed off. Especially type constructs, object aspects, and the other things addressed quite well in many different ways by other 3GLs.
Start with interfaces. Describe the interfaces, and describe the use of an object that adheres to those interfaces. From there, find ways of describing systems of those interactions.
Contrived example (required): database connector, table model, grid component, graph component, statistical analysis tool. Each has certain interfaces that can connect to each other singly or in groups, and can control things singly or in groups. The old MVC writ large. Find a way to describe and program the MVC system at the MVC level.
I wish I had any idea how to do this, but I don't. I write in C, C++, Java, Perl, and have dabbled in everything from assembly up to Scheme. It's all so similar in far too many ways. It's not ideas and systems, it's still bits and branches.
Many posters argue the efficiency. Your points are valid, but large, complex systems spend tens or hundreds of millions of dollars in programmer time for software running on "mere" millions of dollars of hardware. Doubling the amount of hardware and halving the amount of programming is a WIN for all involved.
Odds are that the approach of the project is already correct. It uses a 3GL as the "worker" bits (Java, in this case, fight about it somewhere else), and tries to put a true meta-layer on top of that.
The concept is as foreign to working programmers today as it could be. It's like knowing Classical Greek physics only, and getting hit by Relativity and being asked to design the analysis tools for it. You don't even know Newtonian theory yet. There is that large a jump in there.
So skip the bits about the next cool language. It's a valid discussion, but unless I miss my mark, this project is grasping at something far, far beyond that. And being able to code to a pointer doesn't really matter at that level.
I'm extremely glad to hear about the journals finally getting smacked for restricting the publication of knowledge. For anyone in AI, especially expert systems and searches, you may have run into the Rete algorithm. It's a classic approach to the many-to-many matching issue that crops up in so many large search problems. Try and find the paper. I found literally HUNDREDS of references to it online and in books. But it isn't anywhere online. It's gathering dust in the proceedings of an AI conference from 1973. I had to spend the better part of a day in the library digging for it and then photocopy the damn thing.
I figured, OK, but the researchers got some coin. Now I find out that's bogus. ARGH. Thus, the question.
Why, in all the groups like ACM, CIPS, etc., and all the universities like MIT, CalTech, etc., isn't there an online gathering of the papers? (I use comp sci examples as an example, generalize as needed) Is there a real need for the journals in the reviews of performance, raises, tenure, and all and is that need at the level that there can be no competition in the interest of distribution of knowledge and sharing of findings?
MIT is moving huge leaps forward with the recent initiative to put ALL course materials onine within 10 years. Kudos. But there are thousands, perhaps to the level of millions of papers in proceedings, journals, annuals, and other obscure collections that are becoming lost, and unknown, and likely, unfortunately, repeated.
What is the barrier to a prestigious university or two doing this themselves, or an association having an online collection of the papers of the members open to the public?
Don't put all your faith in neural networks. As the article pointed out, it used perceptron (essentially a basic NN) for some things, competing fuzzy logic (group minds, I make an assumption there) for some, and decision trees.
Neural networks do work well for some things, but there is ample documentation that in some complex situations, the NN may key and learn on parameters that are not key, but coincedental instead.
tweak, tweak, tweak, rewrite, tweak, tweak, rewrite.... repeat as needed.
Ok, before we get into the "They know everything I'm doing!", we're already there if you company wants to be, so relax.
I think this is a really interesting evolution of the smart-card identifier for terminals, creating a mobile desktop. This starts causing the environment to react to the specific presence of the user. From the JavaOne JavaRing demo of knowing what your coffee preference was, up to this system with speaker-specific transcription services, we may finally get to a technological workplace that enables us rather than causes us to conform to yet another interface.
And as the point to ponder, we are going to need to look at the intent more carefully in legislation. Is is now possible to profile people so completely via spending patterns, location, communication tendencies, etc. that unscrupulous corporation could manipulate trends in people reasonably easily. The laws need to adapt to prevent this misuse, and yet enable honest companies and people to provide legitimate, privacy-ensured services to people that want them without fear of this manipulation.
I'm not a lawyer, but that's how the laws started, was to uphold the moral views of the majority. It appears to me that we will need to return there soon, or we will be forced to forego these types of enabling technologies as are shown by AT&T and these other companies.
I think another point is that those jobs aren't mindless. In fact, if people in those jobs were able, willing, and encouraged to improve things by the supervisors above them, perhaps some innovation and creative thinking would come from some of them as well. Not all, but then, no job is completely populated with creative free-thinkers.
As a Canadian who's country negotiated the split with the British Empire, I'd have to point out that if all Americans at the time of the founding fathers of the USA had been the type of student being churned out of school in the way you envision, the USA would still be a colony. It's knowing when to break the rules. And knowing when you're just heading for anarchy.
How do define the hacker? If any of you have missed the Jargon File in your net existence, I would recommend it for a starting point. It's a collection of "hackish" terms and sundry nomenclature of technology. It defines hacker as:
hacker n.
[originally, someone who makes furniture with an axe] 1. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. 2. One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming. 3. A person capable of appreciating hack value. 4. A person who is good at programming quickly. 5. An expert at a particular program, or one who frequently does work using it or on it; as in `a Unix hacker'. (Definitions 1 through 5 are correlated, and people who fit them congregate.) 6. An expert or enthusiast of any kind. One might be an astronomy hacker, for example. 7. One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations. 8. [deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence `password hacker', `network hacker'. The correct term for this sense is cracker.
The term `hacker' also tends to connote membership in the global community defined by the net (see the network and Internet address). For discussion of some of the basics of this culture, see the How To Become A Hacker FAQ. It also implies that the person described is seen to subscribe to some version of the hacker ethic (see hacker ethic).
It is better to be described as a hacker by others than to describe oneself that way. Hackers consider themselves something of an elite (a meritocracy based on ability), though one to which new members are gladly welcome. There is thus a certain ego satisfaction to be had in identifying yourself as a hacker (but if you claim to be one and are not, you'll quickly be labeled bogus). See also wannabee.
This term seems to have been first adopted as a badge in the 1960s by the hacker culture surrounding TMRC and the MIT AI Lab. We have a report that it was used in a sense close to this entry's by teenage radio hams and electronics tinkerers in the mid-1950s.
So thus, the sysadmin in the article is a hacker, trying devilishly to get something working. Some may not think it productive or useful, but likely that same sysadmin, who in the article foisted the newest BIND upon the servers in the line of duty is likely filling cycles with his allegorical "hacking", which from experience makes you a lot better at being a sysadmin.
But I never, ever thought that such a relationship between a "recreational" hack and real work hacking would be understood by the coding methodists. Some people work through a problem in order, and organized. They do well, and they are usually very good teachers. A hacker builds up a ridiculously large body of knowledge about coding, os quirks, configs, styles of development, architectures, systems and services, and then, just sort of starts to "get it" when presented with a new problem.
Those of you who have had this happen know what I'm talking about. Just, well, "feeling" where the problem should be in the code, and it's there. Some of my coworkers called it "zenning" the code. I like that term. Hacking is a term of honor, and I'm not there yet.
Given those points, where does the responsibility of improving the process lie?
The other point is the concept of "... the claim must be non-obvious to a practitioner of the field..." and THIS is where the archie defense has serious teeth. Whether that will hold in court I have no idea, but the patents such as CMGI have registered are ludicrous. Exchange protocol A for protocol B and derived work C for derived work D based on those respective protocols, and the *algorythm* is the same. To a decent computer scientist/programmer, that's basically "obvious". It "obviously" isn't to the USPTO, which I still believe to be the problem.
So as usual, the lawyers fight over the niggly points, and no one cares about the soundness, correctness or morality of the law and the process that spawned the conflict.
Might I first direct anyone with a true interest in the issue to this month's Dr. Dobb's Journal, and the C# vs Java article in there. I think it's very slightly biased to C#, but is has some excellent points and a good summary..NET isn't touched.
That looks to me like the specification is open to the world, as it always has been. True, it isn't ISO or IEEE or anything, but the standard is there, and Sun enforces that standard zealously, as the lawsuit to MS showed. JCP (Java Community Process) is forming up and gaining steam. It will be interesting to see if the evolution is as open.
.NET cross platform -- Ummm..... I haven't read much on this. I would be wary until I see product, as IE for Mac doesn't do ActiveX as was promised a long time ago in a galaxy far, far away.
C# is a very good language. I think some of the language will be adopted back into Java, and some hopefully won't be.
Take a step back, and remove said corporations from the equation.
C# is continuing the C and C++ traditions of power and comprehensive "I can do anything I want". Java is moving to the "simpler is better" philosophy. They both work people. Don't get so bent out of shape about it. They are both going to exist. With luck, C# will at least wipe VB out, and maybe ditch the MFC morass while it's at it. As a Java developer, I also hope it will push the evolution of the language that little bit faster, but I also hope the "trust no one" philosophy of Java continues, and C# can continue the "trust everyone". I oversimplify on that point, but the base levels of security still extend the ActiveX and Java base lines as I see it.
But then, I suppose it's been said, everyone wants to back a winner. Then back them both. The great coders don't only know one tool. I know a number of languages beyond Java, and every coder should. It creates perspective. Specialize by all means, but don't throw away all the other good ideas out there.
2 cents. Invest in your thinking and you'll gain interest.
Here's a thought. Just as the higher bandwidth connections become more prevalent, and software distribution via Win2k and Java JumpStart get moving, Sun settles with MSFT. Now the barriers to the JDK distribution are falling away. People can get the JRE in 8Megs on Windows. On 56k that's a bit painful, but on ISDN, xDSL or Cable, it's no longer a big deal.
Heck, compared to say the 53MB of Unreal Tournament Demo, it's insignificant.
So Sun succeeds in stopping the busting up of the Java platform, ensuring the integrity, and also calls off the fight as soon as the market has removed a large chunk of the barriers that were working against them from going without MS anyways.
I think the settlement is great, and I also think that Java will do fine, and.NET will likely succeed as well. MS programmers will move to.NET and C#, and everyone else will use Java, C++ (or maybe C# if it gets standardized. It is pretty clean) and C. (Insert your favourite other language including but not limited to Python, Perl, Lisp, Smalltalk, Eiffel and Ada here).
I would hasten to point out that Abrash spoke to the reason in his article. Frequent, positive feed back. NL is not really in that category for most people. It's a deep problem with progress often made in better model representations as I understand it. I am no expert by any remote stretch on it, but I do dabble in NN, GA and the derived expert systems. Even those don't have what most people see as results often. After you couple them to the opponent in Q3, then the progress shows up.
I think the perspective is the thing. Getting an extra 4 fps on the engine wouldn't turn my crank as much as finding a better, smarter pathing algorithm for the opponent, but I know a few coders that would be in situation nirvana if they got those extra 4 fps, even if the engine was already at 120+ fps.:-)
If we didn't have different hot spots in our ambitions, we'd just be writing a bunch of engines with bad computer opponents, wouldn't we?
I don't suppose the judge took into account that this creates a level of after-the-fact information control?
The simple fact is that every single interaction between any two computer systems requires resources in the way of memory, processor time, network bandwidth and sometimes disk access. Now the judge seems to indicate that if you go over my service as it was designed, and retrieve information, and then use that information in a way I don't like, I can forbid you from using my service.
That's completely unrealistic. Unless the searching routine is basically stomping the server by requesting as fast as possible, there is no real damage being done that isn't done by a regular cyber-squatter wannabe trolling the database in this case. If there is an issue with the DoS sort of effect, ask the other party to back off, or alter the server software to restrict the rates at which requests are accepted from certain IP addresses or blocks. Better yet, negotiate a new service where the database query is run locally by the whois provider, bundled up, and distributed for fee to anyone interested.
The thing is, it is public information. This sort of legal adjustment of the reality is foolhardy in the extreme. If I take a quote from an article on a news site, citing the reference properly, and use it as a portion of a work that results in something the originating news site doesn't like, can they forbid me from using the site now?
The ramifications are a lot further reaching than just bots. It's all a matter of degree.
I roundly disagree with the arguments presented against OOP, on the basis that the author's own references cite the advantages of it, as well as the disadvantages. The consensus on the reference *academic paper* is that it had advantages, but is not necessarily "revolutionary". Indeed, OOP codifies much of what *can* be done with good programming practice in procedural or even functional programming.
My experience in systems design is that OOP shows benefit when you know it, and with larger *REAL* systems. Networked apps, distributed apps, and yes, even large business apps. I've been involved in an IS project written completely in C, using good, structured programming techniques. At a different company, we were building a similar application, using C but applying a more data-centric approach, close to OOP but not there yet. It was much quicker to build, and easier to enhance. If I took a crack at the domain yet again with OOP and C++/Java, I know it could be improved yet again.
The issue though, is that if it's one guy, building a one-shot fire and forget app, don't bother. Code it however you want. If you have a significant project with multiple team members, OOP acts as a common framework and a basis for communication. It draws some borders and sets some guidelines and methods to give a common frame of reference. It's possible, but more difficult to do that with procedural code in *most* cases.
Obviously though, the proof, as the author says, is in the pudding. Millions upon millions of development dollars is OBVIOUSLY being wasted by the industry as it moves to use OOP methodologies and tools. Not just as dictated by PHBs, but also as dictated in start-ups by lead programmers.
Quote from a pundit who knows the industry better than most of us, Robert Cringely, from a slashdot interview no less:
Something else that has changed a lot is how software is written. OOP has paid off more than we even know, so there are a lot of chances to make businesses out of selling cogs that fit into other people's machines. Your driver question, for example, wouldn't have even made sense a decade ago.
Hmm. More than one company now. There's a benefit. Predefined interfaces and component technologies. Can you do that in procedural approaches, yes. Is it easier and more natural and efficient in OOP, yes.
And finally, as I don't want to get too long, let's take another/. post, a reply from John Carmack.
First of all, the fact that none of our deployed games used OOP does not mean that I don't think there are benefits to it. In the early days, there were portability, performance, and bloat problems with it, so we never chose to deploy with it. However, all of the tools for DOOM and Quake were developed in Obejctive-C on NEXTSTEP. Q3 also came fairly close to have a JVM instead of the QVM interpreter, but it didn't quite fit my needs.
I'm still not a huge C++ fan, but anyone that will flat out deny the benefits of OOP for some specific classes of problems like UI programming and some game logic is bordering on being a luddite. I still don't think it is beneficial everywhere, but, if anything, I think we are behind the curve on making the transition.
Hmm. Use the best fitting tool. But even a die-hard success phenomenon like John Carmack seems to think OOP is good for things link UI AND game logic. Not everywhere. No argument from me.
Jeez, I think he essentially can be construed as having called the author of the original post a luddite.
If you take a look at Java, it's one of the things that is being very, very aggressively adopted in business, as the portable, non-vendor locked version of the asp architecture. Server side is the domain, as is every other portable/embedded device out there.
Yup, the NS Java VM is crapola. So's the MS one since it's hopelessly outdated. Update! v1.3 is actually pretty darn good. It's still a little pokey on really intense graphics, but for most apps is doing very well now.
If you don't like Sun's implementation, IBM is a great alternative. Very stable, and fast. More choice than you get for an asp engine.
The point, however, is Linux. I use Linux often, and have at work as well as home. I advocate it when it's the right solution. I also use Win2000, and Solaris. On all those platforms, as well as my Palm Pilot, I use Java. Why? Because it is a very, very good language with a solid, portable library and no little glitches like C++ library differences. I also use C++ and C, as well as bits of Perl and such, when the job warrants.
I'd contest that if you actually looked into people doing work on Linux and getting paid for it, you'd find a lot more Java than you might have thought. That and Python would be pervasive, but that's mainly from the distribution engineers at Mandrake, Red Hat and the like.
But by all means, look for one-size-fits-all grail of a solution. I'll add Java to my toolbox and carry on without you.
Um, better check that doc. I know the implementation is closed source. The Specification is present, but does not accurately reflect the behaviour of the implementation. The line from Microsoft is "the definitive specification is the Windows implementation of the COM architecture".
The document's there, but don't count on it allowing you to create a compatible infrastructure. Take a look at some info on COM vs. CORBA on the web to get more of a taste as why CORBA is still alive.:-)
I would venture that PKI will indeed be a major player, as you say, and for a very simple reason that the paper's author seems to at least partially ignore. People don't always want or care about anonymity. Before you say "What the *@#% is this clown talking about?", ask of yourself:
Do you have a credit card?
Do you have an airmiles card or a "club" card?
Do you have a bank account with services attached to it for auto deposit and/or withdrawl?
Do you have a driver's license?
Do you have a listed phone number?
All of these are certificates of a form. All of these tie our person into a bank of information somewhere. All of these "corrupt" our privacy. Do you think the telemarketers are lucky at guessing your name?:-)
PKI represents another certificate in these veins, and a way to make them more network-friendly and less susceptible, as Halo- says, to simple mass impersonation and replication. Of course it isn't anonymous, and there is a privacy hole. How else do I know who you are? A perfect privacy system would allow a group of innovative individuals to put a fictitious character though university and get a degree, as long as they are consistent. Attaching a real entity to the identity of the certificate is sometimes a needed thing.
The issue in my mind is that, as has been occuring on the web of late, that the consumer has at least nominal control of that information. The collecting body may only use it in the scope of the transaction and within the confines of the business I am dealing with. It may not be sold, leased, loaned or given to any other party without my express permission.
In Canada, we have a "stored Census" database. That information may only be used to compile and prepare voter's lists. You may also opt out of that. It saves us on the order of $30 million Canadadian per election. I imagine the US would save a lot more. If you pick a distinct winner that is:-)
Ulitmately, the majority of people are probably fine not being anonymous entities, as long as the priviledge of having their information is not abused. I'd concentrate on the behaviour and responsibilities of the corporations collecting the information rather than needing a perfect system to replace the PKI. At least on the practical front.
Language lock-in. Java, being supported very well by both Sun and IBM with completely different VMs, and by the FSF with gcj. That's still not vendor lock-in. You want language lock-in, look at Visual Basic. Seems to be only one implementation of that language. And it doesn't have a published, open, although unfortunately not ISO specification. Your point is non-existent.
Second, JSP a ripoff of ASP. Please. Both are derived from CGI + OOP. Did you just start monitoring the industry last week? Or did you grow up on Cnet articles?
I do agree with you on C# being a good evolution of the MS tied VB and visual C++. VB is very useful on certain problems, but lacks a lot of features that I enjoy in both C++ and especially Java. C# looks like a good move, but a lot depends on how they implement. Objective-C was a brilliant evolution that died on C++'s altar as well.
As for Corel, although I had a lot of hope for them, the implementations of their own products on Linux, which I paid for and tried, were rather weak. StarOffice is way beyond that. So I don't have a lot of faith in them for the cross-platform torch of MS.
On that note, look at the COM legacy. Marketing FUD and renaming aside, it's a weak version of CORBA. But the desktop strength is had is great, and is being adopted by CORBA in v3. Just as COM+ is evolving to be a CORBA competitor. Problem: Platform lockin again. At least with CORBA, if Sun pisses me off on implementation of OS, I can move to IBM, HP, MS, or Linux. COM+? SoftwareAG's product isn't cutting it. COM an open standard? Find me a document that reflects the MS implementation on Windows 2000. I believe it is you who doesn't know what they are talking about. Perhaps you should follow your own advice.
.NET is a great thing for the MS camp, and I would bet that the Java vendors and Sun will learn from the strengths, and adopt some of the strategy themselves. Welcome to the IT industry. Any good idea proliferates. But think of what we could build and how quickly if MS would get some of the good products they do build onto other platforms. Like IE. On Mac, it's great, but ActiveX doesn't work. At all. COM isn't there. Back up a step and figure out what the real goal is. Making things work. Regardless of the OS underneath. There is no best OS, so the tools to knit them together are what counts. If MS would realize that and back away from its franshise, the IT world could move even faster forward.
As for implementation security, never mind. You don't get it. The VM is the environment in Java. In.NET it appears to be the OS again. Solaris isn't the risk necessarily. The JVM is. But.NET, it's still the MS OS that's at risk.
As for the interpreted language article, I think you had better check your facts. Many of the JITs, and not just Java, are pulling within percentage points of the native code. And it will get closer. I used to agree with your stance that interpreted wouldn't get there, but for one that's not true anymore, and for two, sometimes that doesn't matter.
JVMs and the JITs like HotSpot are where things with highly abstracted languages are moving, as the runtime optimizations that are impossible otherwise become staggeringly powerful. It's a package deal. Java with HotSpot, gcc with -O 2 or better. :-)
What about looking at some cases in real life? Proprietary licenses. Say.... Windows. Very successful. Likley due to cost, marketing and standardization of a chaotic platform long in the past. Solved a lot of problems with proprietary platforms only running 1-2 applications you needed, so you almost bought one machine per application in some situations. Seems OK for the time. Now, however, with viable alternatives, there are some things like open sourcing (NOT GPL) that may be useful if the modifications could be redistributed, but MSFT still owned the rights to the parts they feel they need to. (Asbestos enabled)
Why not GPL? Enter point number 2. BSD/Mozilla/Extend and contribute like licenses. The SCSL from SUN. Specifically, Java. If this thing was GPL'd off the bat, it would be another fragmented, proprietary implementation of a screwed up standard left in the past not unlike CDE, or even C++ in it's early life. With SUN owning a brand, and enforcing a standard that they don't actually unilaterally define, it's a workable, reliable, and standardized open platform.
Those two cases in point, one must ask WHY the GPL seems to have such problems creating the defining third case study where GPL is the only thing that worked. Well, maybe it has. Let's take Linux. If it was proprietary, it would likely be as big as CP/M about now. If it was SCSL, the buy-in by the GPL crowd would be nill, (err... null, err.. nevermind) and the corporate adoptions to the benefit of the community wouldn't have occurred.
So, we've got three broad and incomplete categories of license, and three broad and incompletely analyzed case studies showing success in each case, and why in those particular cases that license modality was the correct choice for the goals.
So bascially, I would side with Tim on the side of choice, and promote the said flerbage as the yardstick. Evolution finds optimal solutions through excessive choice. Seems to have worked out fairly well. Odd that it still resulted in the occasional individual that opposes the primary mechanism that gave rise to them. I savour the irony.
I'd love to hear why the power of choice would be a bad thing, even if you choose a proprietary license. Try and write a cheat-resistant multiplayer game with open source on both client and server, and see just how far you get before the cheats make the game unplayable except among friends. Lots of papers and discussions on that as well.
And don't raise the "web of trust" and such there RMS and cadre. Defintion of trust on that level would have removed the success of the GPL in the case of Linux, as there could be code in there that trusted people back-doored, but no one has bothered to review. Trust is perception, and perception is in it's very nature incomplete.
Sometimes you just gotta say no when someone wants your recipe. :-)
Respond with thought or not at all if you please.
Also, there have bit hits on equipment such as the Leonardo module which do do damage. This article even mentions what would happen if the hit intersects a space-walker. Kind of like taking one for the team. Space Ref Interactive article on MPLM and some facts on what is up there in the way of protection
Kind of interesting. These are small, but apparently anything of even a few centimeters in size is tracked by radar now. And avoided. (Space shuttle article (pdf) on Nasa. Didn't keep the href. Do the search. :-) )
Oddly enough, it looks as though Japan is pushing pretty hard with the lower-cost systems. It appears things like the XPrize may get the industry moving again, but not necessarily in the hands of NASA.
In some ways, Voyager is doing more interesting things than ISS as it's nearing the edge of the Sun's influence. Then it really enters the galaxy as a whole and "sees" new things.
ISS is a great undertaking, and the multinational cooperation is truly outstanding, but it's more of a political project at this point. It's becoming evident that the US people via Congress aren't going to foot the bill for this stuff any more, and that other groups like the Planetary Society, and other countries will have to get more into the area of space exploration to recapture the pioneering spirit. NASA is between a rock and a hard place with money and overhead. A new approach is needed.
Heck, Buzz, Armstrong and the like were kind of daredevils. Apollo 1 killed 3. Challenger killed 7. But now, the safety record of NASA is improving to the point where people mistakenly believe it's safe. Familiarity breeds contempt.
I'm all for space exploration. But NASA can't be the only ones doing it.
A space launch would need more info, but the ground-based reactor fears are a fear of the immediate vs. an inability to comprehend a long-term, cumulative effect of the damage done by fossil fuels.
To start with, Java is a currently used, valuable assset in the job market. It teaches a number of skills and can be used to illustrate a lot of concepts in CS. That's the practical, easy reason for a wider acceptance as a basic course in CS.
To follow on, both MSFT and SUN have weighed in now heavily with Virtual Machine byte-code languages and platforms (.NET in case you didn't realize that MSFT is actually following after Java) as being more capable and in some cases theoretically as fast or faster due to run time optimizations impossible in statically compiled languages. Interesting, isn't it? You can do things by examining the byte code at run time that the assembly code at compile time won't allow you to do. Think dynamic loading, introspection, virtual method inlining, just to name a few.
It's free and open. This has been mentioned, but the specs, while nominally controlled by Sun are in fact controlled by the JCP and that means by industry and community members. You don't even need to use Sun. Use IBM, or the GNU/Kaffe systems, or the Linux Blackdown ports....
On a different, less practical tack...
The thing we are fast slamming into as anyone in the industry knows is complexity management. It's time for many of us to let go of the assumptions inherent in knowing the assembly-language model of computers. You shackle your thought process to a certain execution and ordering model that both changes over time and changes between platforms, and you become tunnel visioned to a certain mode of thinking. One that does not allow for rapid, adaptable abstraction, which is the human method for dealing with complexity.
Case in point. You did, at one time in the past, have to write some very low-level routines yourself to do things like draw windows, access disk drives, direct codes to the raw printer, or even spin the disk drive up depending upon how far back you travel in time. All those things are now abstracted away from the day-to-day programming, so that we can deal with remote method invocation, distributed objects, relational and object databases, and concurrency control.
Why is that a bad or wrong thing? Getting any decent language (Java, C, C++, LISP, Smalltalk, etc) into a person's head to start gets them capable of thinking about the idea of O(n) type analysis. You don't need assembly for that. It's algebraic if you look at how it was developed. You don't need any language at all, just an algorithm.
Get over it! I learned assembly one of the first languages as well, but I don't think it's as much of an advantage anymore, and to deal with increasing complexity and systems, and new ways of modelling and desinging those things, you do not want to think about that sort of process as your core design philosophy.
Cool factor yes. Practical, only for a few low-level programmers that give the rest of us the abstraction layers we need. Both tasks are hard, but there's fewer people needed at the layers nearer to the chip.
My thoughts. Give yours.
MSFT puts a lot of man hours into the development of Windows, Office and Explorer. Those are the three things that Linux and the community is trying to offer alternatives to.
For some of us, the alternative is now to a point that it's fully usable and functional the way we need it. A few work arounds and quirks are OK, because we will tolerate those inconveniences for whatever reason.
Unfortunately, I would contend that 2000, and probably the first half of this year are a low point for Linux. There were few user innovations over the past 18 months. There were many OS innovations for SMP, server process wakeups, etc., but by and large, Mandrake 8 is the only push forward in the user experience.
Mozilla, and the derivatives, have been stalled in cycles of rapid, expansionistic development that caused huge bloat and sloth. 0.9 has made immense strides in getting all those new features to operate efficiently. Konqueror is a great browser, but it's been missing a few features until recently that made it really awkward at times for some of us (JavaScript, Java....).
StarOffice is a big app. It's slow in some ways. But it is very functional, and deals well with all the office 2000 documents floating around. KOffice and the Abi/Gnumeric suites are on the way, but they are still evolving. Again, they are very capable for some of us, but not all the way there yet.
My point, as I'm obviously burying it in details, is that MSFT is a big, successful software corporation, and they do know what they are doing for the most part. The software now out there (IE 5+, Windows 2000 Pro, Office 2000) are very solid, capable products.
Why does anyone assume that we as a community with a bunch of passionate developers and few corporations contributing would be able to wrest state of the art capabilities and features into being in a year? In two years? MSFT will not stand still. It's going to take time, and possibly may never happen. But dead? Hardly. Stalled? To the outside world I would agree. But I believe given the cycles of development that have been going on over the past 18 months, the "release cycles" are about to ramp up. Indeed they already are. This cycle is more the end-user functionality, rather than the internals that have been a focus.
Let the press jump on and off the bandwagon. Hopefully some of the sensationalistic muck rakers will break a few ankles doing that. But read the odd status update on the projects, and use the milestones. Try to understand the progress and why. Things are improving. But Linux is behind. It's another #2 contender out there, and there is much work to be done. That work is being done. Don't believe everything you read. Check it out.
Cheers.
Hardly public, but at least it's a start. ACM could open the archives to the public though. The papers are in public journals in libraries.
WHY does everyone have a favourite language, and assume it's the cat's PJs for every problem under the sun?
I use, primarily, Java. Why? Because for what I do, I need the portability, and it's more than fast enough, and yes, the recent versions are portable properly. They're also likely a lot faster than you think they are.
But my real point, is that it's not the only language, and the reference to MIT is found early in the book Structure and Interpretation of Computer Programs by Abelson, Sussman and Sussman. I myself did not go to MIT, so if I mess up, don't blame them, but the point made in the book is thus:
Different languages evolve to solve different problems. People don't build things like Simula for writing a network driver or the next 1st person shooter. They build it to solve complex, physical simulations. The expressive power is greatly increased, but the problem domain is restricted.A general language is a nice idea, but we're starting to need something beyond that. The whole idea of the project is actually meta-programming. Not writing your next device driver. Write it in C. Maybe C++ if you must. But the OOP languages have given us a large number of very reusable, efficient components, regardless of what detractors of the OOP approach itself may claim. Knitting those components together right now is tedious in C++, Java, VB or even many of the visual designers. We're still bolting rods to wheels, instead of expressing the transfer of linear force to rotation at a higher level.
I would humbly suggest that all the crock about the syntax and such be backed off. Especially type constructs, object aspects, and the other things addressed quite well in many different ways by other 3GLs.
Start with interfaces. Describe the interfaces, and describe the use of an object that adheres to those interfaces. From there, find ways of describing systems of those interactions.
Contrived example (required): database connector, table model, grid component, graph component, statistical analysis tool. Each has certain interfaces that can connect to each other singly or in groups, and can control things singly or in groups. The old MVC writ large. Find a way to describe and program the MVC system at the MVC level.
I wish I had any idea how to do this, but I don't. I write in C, C++, Java, Perl, and have dabbled in everything from assembly up to Scheme. It's all so similar in far too many ways. It's not ideas and systems, it's still bits and branches.
Many posters argue the efficiency. Your points are valid, but large, complex systems spend tens or hundreds of millions of dollars in programmer time for software running on "mere" millions of dollars of hardware. Doubling the amount of hardware and halving the amount of programming is a WIN for all involved.
Odds are that the approach of the project is already correct. It uses a 3GL as the "worker" bits (Java, in this case, fight about it somewhere else), and tries to put a true meta-layer on top of that.
The concept is as foreign to working programmers today as it could be. It's like knowing Classical Greek physics only, and getting hit by Relativity and being asked to design the analysis tools for it. You don't even know Newtonian theory yet. There is that large a jump in there.
So skip the bits about the next cool language. It's a valid discussion, but unless I miss my mark, this project is grasping at something far, far beyond that. And being able to code to a pointer doesn't really matter at that level.
I figured, OK, but the researchers got some coin. Now I find out that's bogus. ARGH. Thus, the question.
Why, in all the groups like ACM, CIPS, etc., and all the universities like MIT, CalTech, etc., isn't there an online gathering of the papers? (I use comp sci examples as an example, generalize as needed) Is there a real need for the journals in the reviews of performance, raises, tenure, and all and is that need at the level that there can be no competition in the interest of distribution of knowledge and sharing of findings?
MIT is moving huge leaps forward with the recent initiative to put ALL course materials onine within 10 years. Kudos. But there are thousands, perhaps to the level of millions of papers in proceedings, journals, annuals, and other obscure collections that are becoming lost, and unknown, and likely, unfortunately, repeated.
What is the barrier to a prestigious university or two doing this themselves, or an association having an online collection of the papers of the members open to the public?
Neural networks do work well for some things, but there is ample documentation that in some complex situations, the NN may key and learn on parameters that are not key, but coincedental instead.
tweak, tweak, tweak, rewrite, tweak, tweak, rewrite.... repeat as needed.
I think this is a really interesting evolution of the smart-card identifier for terminals, creating a mobile desktop. This starts causing the environment to react to the specific presence of the user. From the JavaOne JavaRing demo of knowing what your coffee preference was, up to this system with speaker-specific transcription services, we may finally get to a technological workplace that enables us rather than causes us to conform to yet another interface.
And as the point to ponder, we are going to need to look at the intent more carefully in legislation. Is is now possible to profile people so completely via spending patterns, location, communication tendencies, etc. that unscrupulous corporation could manipulate trends in people reasonably easily. The laws need to adapt to prevent this misuse, and yet enable honest companies and people to provide legitimate, privacy-ensured services to people that want them without fear of this manipulation.
I'm not a lawyer, but that's how the laws started, was to uphold the moral views of the majority. It appears to me that we will need to return there soon, or we will be forced to forego these types of enabling technologies as are shown by AT&T and these other companies.
You wanna rant, do it offline.
You wanna think, do it here.
I think another point is that those jobs aren't mindless. In fact, if people in those jobs were able, willing, and encouraged to improve things by the supervisors above them, perhaps some innovation and creative thinking would come from some of them as well. Not all, but then, no job is completely populated with creative free-thinkers.
As a Canadian who's country negotiated the split with the British Empire, I'd have to point out that if all Americans at the time of the founding fathers of the USA had been the type of student being churned out of school in the way you envision, the USA would still be a colony. It's knowing when to break the rules. And knowing when you're just heading for anarchy.
But I never, ever thought that such a relationship between a "recreational" hack and real work hacking would be understood by the coding methodists. Some people work through a problem in order, and organized. They do well, and they are usually very good teachers. A hacker builds up a ridiculously large body of knowledge about coding, os quirks, configs, styles of development, architectures, systems and services, and then, just sort of starts to "get it" when presented with a new problem.
Those of you who have had this happen know what I'm talking about. Just, well, "feeling" where the problem should be in the code, and it's there. Some of my coworkers called it "zenning" the code. I like that term. Hacking is a term of honor, and I'm not there yet.
Open your mind. Read the Jargon File
The Jargon File on tuxedo.org.
Enjoy or don't. Disagree or don't. But always, always think and consider.
The other point is the concept of "... the claim must be non-obvious to a practitioner of the field..." and THIS is where the archie defense has serious teeth. Whether that will hold in court I have no idea, but the patents such as CMGI have registered are ludicrous. Exchange protocol A for protocol B and derived work C for derived work D based on those respective protocols, and the *algorythm* is the same. To a decent computer scientist/programmer, that's basically "obvious". It "obviously" isn't to the USPTO, which I still believe to be the problem.
So as usual, the lawyers fight over the niggly points, and no one cares about the soundness, correctness or morality of the law and the process that spawned the conflict.
As usual, we got a FUD fight with this one.
Might I first direct anyone with a true interest in the issue to this month's Dr. Dobb's Journal, and the C# vs Java article in there. I think it's very slightly biased to C#, but is has some excellent points and a good summary. .NET isn't touched.
Java openness:
http://java.sun.com/docs/books/vmspec/
http://java.sun.com/features/2000/06/jls2.0.html
That looks to me like the specification is open to the world, as it always has been. True, it isn't ISO or IEEE or anything, but the standard is there, and Sun enforces that standard zealously, as the lawsuit to MS showed. JCP (Java Community Process) is forming up and gaining steam. It will be interesting to see if the evolution is as open.
C# is a very good language. I think some of the language will be adopted back into Java, and some hopefully won't be.
Take a step back, and remove said corporations from the equation.
C# is continuing the C and C++ traditions of power and comprehensive "I can do anything I want". Java is moving to the "simpler is better" philosophy. They both work people. Don't get so bent out of shape about it. They are both going to exist. With luck, C# will at least wipe VB out, and maybe ditch the MFC morass while it's at it. As a Java developer, I also hope it will push the evolution of the language that little bit faster, but I also hope the "trust no one" philosophy of Java continues, and C# can continue the "trust everyone". I oversimplify on that point, but the base levels of security still extend the ActiveX and Java base lines as I see it.
But then, I suppose it's been said, everyone wants to back a winner. Then back them both. The great coders don't only know one tool. I know a number of languages beyond Java, and every coder should. It creates perspective. Specialize by all means, but don't throw away all the other good ideas out there.
2 cents. Invest in your thinking and you'll gain interest.
Heck, compared to say the 53MB of Unreal Tournament Demo, it's insignificant.
So Sun succeeds in stopping the busting up of the Java platform, ensuring the integrity, and also calls off the fight as soon as the market has removed a large chunk of the barriers that were working against them from going without MS anyways.
I think the settlement is great, and I also think that Java will do fine, and .NET will likely succeed as well. MS programmers will move to .NET and C#, and everyone else will use Java, C++ (or maybe C# if it gets standardized. It is pretty clean) and C. (Insert your favourite other language including but not limited to Python, Perl, Lisp, Smalltalk, Eiffel and Ada here).
I think the perspective is the thing. Getting an extra 4 fps on the engine wouldn't turn my crank as much as finding a better, smarter pathing algorithm for the opponent, but I know a few coders that would be in situation nirvana if they got those extra 4 fps, even if the engine was already at 120+ fps. :-)
If we didn't have different hot spots in our ambitions, we'd just be writing a bunch of engines with bad computer opponents, wouldn't we?
The simple fact is that every single interaction between any two computer systems requires resources in the way of memory, processor time, network bandwidth and sometimes disk access. Now the judge seems to indicate that if you go over my service as it was designed, and retrieve information, and then use that information in a way I don't like, I can forbid you from using my service.
That's completely unrealistic. Unless the searching routine is basically stomping the server by requesting as fast as possible, there is no real damage being done that isn't done by a regular cyber-squatter wannabe trolling the database in this case. If there is an issue with the DoS sort of effect, ask the other party to back off, or alter the server software to restrict the rates at which requests are accepted from certain IP addresses or blocks. Better yet, negotiate a new service where the database query is run locally by the whois provider, bundled up, and distributed for fee to anyone interested.
The thing is, it is public information. This sort of legal adjustment of the reality is foolhardy in the extreme. If I take a quote from an article on a news site, citing the reference properly, and use it as a portion of a work that results in something the originating news site doesn't like, can they forbid me from using the site now?
The ramifications are a lot further reaching than just bots. It's all a matter of degree.
My experience in systems design is that OOP shows benefit when you know it, and with larger *REAL* systems. Networked apps, distributed apps, and yes, even large business apps. I've been involved in an IS project written completely in C, using good, structured programming techniques. At a different company, we were building a similar application, using C but applying a more data-centric approach, close to OOP but not there yet. It was much quicker to build, and easier to enhance. If I took a crack at the domain yet again with OOP and C++/Java, I know it could be improved yet again.
The issue though, is that if it's one guy, building a one-shot fire and forget app, don't bother. Code it however you want. If you have a significant project with multiple team members, OOP acts as a common framework and a basis for communication. It draws some borders and sets some guidelines and methods to give a common frame of reference. It's possible, but more difficult to do that with procedural code in *most* cases.
Obviously though, the proof, as the author says, is in the pudding. Millions upon millions of development dollars is OBVIOUSLY being wasted by the industry as it moves to use OOP methodologies and tools. Not just as dictated by PHBs, but also as dictated in start-ups by lead programmers.
Quote from a pundit who knows the industry better than most of us, Robert Cringely, from a slashdot interview no less:
Something else that has changed a lot is how software is written. OOP has paid off more than we even know, so there are a lot of chances to make businesses out of selling cogs that fit into other people's machines. Your driver question, for example, wouldn't have even made sense a decade ago.
Hmm. More than one company now. There's a benefit. Predefined interfaces and component technologies. Can you do that in procedural approaches, yes. Is it easier and more natural and efficient in OOP, yes.
And finally, as I don't want to get too long, let's take another /. post, a reply from John Carmack.
First of all, the fact that none of our deployed games used OOP does not mean that I don't think there are benefits to it. In the early days, there were portability, performance, and bloat problems with it, so we never chose to deploy with it. However, all of the tools for DOOM and Quake were developed in Obejctive-C on NEXTSTEP. Q3 also came fairly close to have a JVM instead of the QVM interpreter, but it didn't quite fit my needs. I'm still not a huge C++ fan, but anyone that will flat out deny the benefits of OOP for some specific classes of problems like UI programming and some game logic is bordering on being a luddite. I still don't think it is beneficial everywhere, but, if anything, I think we are behind the curve on making the transition.
Hmm. Use the best fitting tool. But even a die-hard success phenomenon like John Carmack seems to think OOP is good for things link UI AND game logic. Not everywhere. No argument from me.
Jeez, I think he essentially can be construed as having called the author of the original post a luddite.
I tend to agree.
If you take a look at Java, it's one of the things that is being very, very aggressively adopted in business, as the portable, non-vendor locked version of the asp architecture. Server side is the domain, as is every other portable/embedded device out there.
Yup, the NS Java VM is crapola. So's the MS one since it's hopelessly outdated. Update! v1.3 is actually pretty darn good. It's still a little pokey on really intense graphics, but for most apps is doing very well now.
If you don't like Sun's implementation, IBM is a great alternative. Very stable, and fast. More choice than you get for an asp engine.
The point, however, is Linux. I use Linux often, and have at work as well as home. I advocate it when it's the right solution. I also use Win2000, and Solaris. On all those platforms, as well as my Palm Pilot, I use Java. Why? Because it is a very, very good language with a solid, portable library and no little glitches like C++ library differences. I also use C++ and C, as well as bits of Perl and such, when the job warrants.
I'd contest that if you actually looked into people doing work on Linux and getting paid for it, you'd find a lot more Java than you might have thought. That and Python would be pervasive, but that's mainly from the distribution engineers at Mandrake, Red Hat and the like.
But by all means, look for one-size-fits-all grail of a solution. I'll add Java to my toolbox and carry on without you.
The document's there, but don't count on it allowing you to create a compatible infrastructure. Take a look at some info on COM vs. CORBA on the web to get more of a taste as why CORBA is still alive. :-)
Do you have a credit card?
Do you have an airmiles card or a "club" card?
Do you have a bank account with services attached to it for auto deposit and/or withdrawl?
Do you have a driver's license?
Do you have a listed phone number?
All of these are certificates of a form. All of these tie our person into a bank of information somewhere. All of these "corrupt" our privacy. Do you think the telemarketers are lucky at guessing your name? :-)
PKI represents another certificate in these veins, and a way to make them more network-friendly and less susceptible, as Halo- says, to simple mass impersonation and replication. Of course it isn't anonymous, and there is a privacy hole. How else do I know who you are? A perfect privacy system would allow a group of innovative individuals to put a fictitious character though university and get a degree, as long as they are consistent. Attaching a real entity to the identity of the certificate is sometimes a needed thing.
The issue in my mind is that, as has been occuring on the web of late, that the consumer has at least nominal control of that information. The collecting body may only use it in the scope of the transaction and within the confines of the business I am dealing with. It may not be sold, leased, loaned or given to any other party without my express permission.
In Canada, we have a "stored Census" database. That information may only be used to compile and prepare voter's lists. You may also opt out of that. It saves us on the order of $30 million Canadadian per election. I imagine the US would save a lot more. If you pick a distinct winner that is :-)
Ulitmately, the majority of people are probably fine not being anonymous entities, as long as the priviledge of having their information is not abused. I'd concentrate on the behaviour and responsibilities of the corporations collecting the information rather than needing a perfect system to replace the PKI. At least on the practical front.
2 cents. No change.
Language lock-in. Java, being supported very well by both Sun and IBM with completely different VMs, and by the FSF with gcj. That's still not vendor lock-in. You want language lock-in, look at Visual Basic. Seems to be only one implementation of that language. And it doesn't have a published, open, although unfortunately not ISO specification. Your point is non-existent.
Second, JSP a ripoff of ASP. Please. Both are derived from CGI + OOP. Did you just start monitoring the industry last week? Or did you grow up on Cnet articles?
I do agree with you on C# being a good evolution of the MS tied VB and visual C++. VB is very useful on certain problems, but lacks a lot of features that I enjoy in both C++ and especially Java. C# looks like a good move, but a lot depends on how they implement. Objective-C was a brilliant evolution that died on C++'s altar as well.
As for Corel, although I had a lot of hope for them, the implementations of their own products on Linux, which I paid for and tried, were rather weak. StarOffice is way beyond that. So I don't have a lot of faith in them for the cross-platform torch of MS.
On that note, look at the COM legacy. Marketing FUD and renaming aside, it's a weak version of CORBA. But the desktop strength is had is great, and is being adopted by CORBA in v3. Just as COM+ is evolving to be a CORBA competitor. Problem: Platform lockin again. At least with CORBA, if Sun pisses me off on implementation of OS, I can move to IBM, HP, MS, or Linux. COM+? SoftwareAG's product isn't cutting it. COM an open standard? Find me a document that reflects the MS implementation on Windows 2000. I believe it is you who doesn't know what they are talking about. Perhaps you should follow your own advice.
As for implementation security, never mind. You don't get it. The VM is the environment in Java. In .NET it appears to be the OS again. Solaris isn't the risk necessarily. The JVM is. But .NET, it's still the MS OS that's at risk.
As for the interpreted language article, I think you had better check your facts. Many of the JITs, and not just Java, are pulling within percentage points of the native code. And it will get closer. I used to agree with your stance that interpreted wouldn't get there, but for one that's not true anymore, and for two, sometimes that doesn't matter.
My few humble opinions. Take them as you will.