Java is dead on the client - deal with it - Sun has. Compare Java client code to even the crap that runs in Macromedia plug-ins, and there is no comparison.
Flash is a much better web-GUI technology than an applet for vector based animations. So yes, applets-for-animation are pretty much toast.
However, Sun has most definitely not given up on this, though certain factions within Sun probably have.
A document metaphor, and the DOM itself, only goes so far. Not every interface is a web interface, though it may be internet-enabled (See Napster). Java Swing potentially has a future here, mainly because of "Java Web Start", which will allow full-featured Java applications to be web-distributed, similar to the Add/Remove Programs control panel in Windows. This is a great idea, especially for intranet applications that need centralized version management.
I'd really suggest you look at the JDK 1.3 and the speed of the GUI. Take the IBM virtual machine out for a spin too. There have been some great strides.
Oh be real - these benchmarks are all using in-memory operations on scaled data sets. Show me some real-world tests - graphics, user input, networking - and watch Java come to a crawl. These are the same types of useless benchmarks that HotSport advocates have been tossing around. They're cute, but no one is going to bet their job on matrix transformation benchmarks (if they want to keep their job).
Real world apps? Check out www.instinet.net. It's a worldwide fixed income trading system. It's positively huge. And it's completely Java.
Nike replaced an HR system with Gemstone in 1998.
Charles Schwab is writing all of their systems in Java, and currently has over 100 new projects on the go (according to their VP of technology, at JavaOne. Check the slides, they're online).
I wrote a backoffice system in Java (Gemstone) running 200 tps on a rather low-end Sun machine (Ultra 10).
The fact of the matter is that Java is doing just fine on the server. Performance complaints really aren't warranted here for business systems concerned with mainly I/O performance.
Java on the client continues to need more work, but again, there have been great strides here.
Are these hard scientific numbers? Probably not. I think you'd be pressed to see hard scientific numbers on any in-house app whether C++ or Java, just because they are "in house".
Uggh! I strongly disagree. How verbose can one language be? I can crank out useable solutions in perl in a quarter of the code, and they'll likely cream the Java performance as well (Hotspot included), and I'm not talking about matrix transforms or Fibonacci sequences.
Perl's raison d'etre is to be able to write applications fast, but to care less about their maintainability (i.e. readability). Java, on the other hand, is meant to be read over again because most software is in perpetual maintainance, with NEW people coming in to maintain your old code.
Some people's careers are made up of fixing other people's shitty, unreadable code. It doesn't have to be this way. Java encourages people to write somewhat readable code, though it's up to the person to go the distance.
I also really question your perl performance statement. Try it against the IBM virtual machine or Hotspot 2.0. Really. This is interesting given that Java has some impressive 3rd party regex packages now.
Also, Java is about as verbose as C considering most of the syntax is taken from C. C is widely considered to be a fairly terse language, so your desire for more terseness (perl) is somewhat unique. Many people need to maintain code over several years, so they want fairly verbose code that has a clarity to it. Reading regular expressions requires a lot more concentration and is more time consuming than reading basic C code.
Beyond this, C++ is much more verbose (see templates). Try COBOL too.
The only verboseness problem I've really had is when using "anonymous inner classes" which can be somewhat obtuse at first compared to a Smalltalk block. Again, a fairly minor annoyance, it's two extra curly braces...
My major problem with Java is it tries to make threading useable by people who have no idea what threads are or why or when they should be used. Like attaching a thread to each Socket, or synchronization of strings.There is no such thing as "threading for dummies" - try going this route and you actually get a massive performance degradation.
I never got this impression at all. The "book" on Java multithreading (Concurrent Programming in Java, 2nd ed, by Doug Lea) is *not* for beginners.
Java makes the simple things in threading fairly easy (mutexes), and the hard things possible (using monitors). I would have preferred if they actually used a FIFO/priority queue for their blocked threads as opposed to an unordered queue but that's a small annoyance.
Furthermore, the Java 2 collections and Swing are all naturally not thread safe precicely because they don't want to encourage multi-threaded programming. They only want experts to use it. Sure, you they provide convenience methods to fully-mutex a collection, but obviously if you're going to write an application that deals with millions of objects in a Set, you're not going to use a fully synchronized collection.
What you seem to be saying is that you're angry with Java from abstracting the low-level too much. But, what about the experts who are SICK of the low level stuff, SICK of twiddling bits, and just want to get their job (of coding business logic) done? That's what Java allows. This trade-off also allows newbies to think they're all smart & powerful, but that's something you just have to deal with if you want the increased productivity of a high level language. Just life.
I just don't see how you can blame Java's attempt at trying to make the lives of experts easier for causing newbies to think they are multithreading gods. I don't think any technology is responsible for building such hubris.. it's just a human thing.
As for Java performance - look at the language! All that threading, OO support, etc. that is built-in, and all that object churn you don't even know you're incurring - they're part of Java and result from the ridiculously verbose syntax. You're never going to get rid of this degradation.
How wouldn't you know what you're incurring? You're writing the app, aren't you? There are such things as profiling tools.
Threading is a purely optional, so you wouldn't normally incur its overhead unless you decide to synchronize everything.
OO support is inherent in the language, so you're going to incur runtime method dispatch overhead no matter what. If you don't want this, why are you using an OO language? Furthermore, dynamic dispatch is about as minimal an overhead as one can get, so it barely registers as a complaint beyond the realm of hard real time systems.
Memory allocation is definitely costly, on the other hand, but is much less prone to errors than stack-allocation of objects in C++. (Pointer smashes from passing around stack-objects that went out of scope a long time ago is a nasty, but common, occurence when you have free reign with memory addresses in the language.)
Again, profilers can find your bottlenecks so you can create some object-reuse factories to prevent the re-creation of too many objects.
I still heartily endorse the use of C++ for large scale code. Its open, it performs, and it doesn't make you pay for features you don't use. Its intelligently designed, and designed for intelligent people. Admittedly it has a learning curve, but anything worthwhile does.
Java's got a bit of a learning curve too -- it requires one to unlearn a lot of the debilitating habits we've picked up by being obsessed with memory locations and pass-by-copy semantics in C++.
C++ is a good language if you need a hybrid form of development - meaning you've got a system that needs low-level semantics and high level ones. But there's a trade off for this flexibility - it takes you longer to write stuff, it'll probably be more error-prone due to manual memory management, pointer errors, and a real lack of exception handling enforcement. It makes you focus more on the bits of the matter than the problem you're solving. In some situations, that's warranted. More often than not though, it's not warranted.
There are tons of cool Java projects, but no, I don't see people dismissing Sun, except a few armchair critics on Javalobby and Slashdot.
Sun has done a lot for the community, and continues to do so. They've made PR mistakes, but so does every company. Instead of mulling over political agendas, let's look at the results:
- JDK 1.3 is a massive improvement in client side performance, since most of Swing was optimized and Hotspot 2.0 client VM came out. This is a tremendous success.
- The J2EE is really catching on and addressing some of the original concerns of doing cross-platform enterprise applications. EJB 2.0 actually does a lot to improve upon the way it integrates objects with databases. The COM bridge will allow us to talk to EJB apps through Visual Basic (which is crucial in the business world). All in all, job well done
- The community has never been bigger or better. JavaOne continues to be the largest technical conference in the world, with over 25,000 attendees -- almost quadruple the Microsoft PDC attendence figures. The community process continues to get new specifications added to it, while Sun focuses on bug fixing and "depth" issues as oppsoed to "breadth" issues. JDK 1.4 will be another "fixes + optimization" release, once again showing that Sun wants this thing to be SOLID.
I really don't give a crap if Java is an ISO or ECMA standard. It took C++ until 1998 (freaking 1998!!) to become an ISO standard. And there STILL are major compiler and library discrepancies 2 years later.
The fact of the matter is that I can write a large Java distributed system much faster than I can write it in C++, and it will be overall less buggy due to a lack of memory leaks, pointer smashes, and better exception handling -- plus the fact that I can buy one of several solid application servers for Java. In C++ I can't do that, I can only really use Windows 2000/COM+ or BEA Tuxedo, or roll my own. If I need access to the VM source code, I have it available to me, though there will rarely be the case where it's the VM at fault, and not my code.
Plus, server side Java code has been shown to be, at times, faster than optimized C code:
Click here for graphs plus source code..(Note to take the benchmark with a huge grain of salt. run it for yourself.. be sure to change his baseline numbers in the source code to match your own baseline.)
Java is a very pleasant language to work in. It's not the best -- I'd prefer Smalltalk -- but given the market climate, and the vast selection of tools and server products, it's quite livable if you love object oriented design.
Though one of the biggest trends in computing is to try to abstract the math and bits away to an extent that straddles the line between performance and high-level semantic expressivity.
VM-based languages like Lisp and Smalltalk (and Python or Java to a lesser extent) are ways of trying to make the computer more "conceptual" and less "bit-oriented" while still staying realistic in terms of the necessity of terseness in order to eliminate ambiguity.
So while, yes, under the covers it's all math and logic, we can sometimes map logic to more humanistic concepts. i.e. the notion of an "object" in OOP is a real mind-twisting one - under the covers it's just a data structure with pointers to functions and a table to dynamically dispatch function calls. And for some programmers, that's ALL oop is.
But the point of OOP (at least for the Simula and Smalltalk people) was to create a whole new paradigm of "message passing entities" to perform responsibilities... That pushes software from the computing domain more into the problem domain. Though what's interesting is that even though we though OOP apparently carries more "human" concepts, it still takes programming skill to make that "paradigm shift". I think Stephanson really was right, that some people have a natural intuitive feeling for logic and programming, while others have a much harder time of it.
What about Mac sales (that "other" alternative platform)? Were they poor/adequate/encouraging compared to Linux sales?
I've noticed that lately the MacOS game market has really picked up steam, with Deus Ex, The Sims, and Diablo II all getting released in the last 2 months... perhaps one way to indirectly stimulate sales of Linux games is to point to the fact that another alternative OS has a burgeoning game market...
- Microsoft's new cross-language GUI/DHTML api seems to have almost identical features to WFC, and an almost identical design, based on what the public has been exposed to at the PDC. [They're probably just porting it over to C#.]
- C#'s delegate keyword is identical to their Java extential in J++ 6.0 to do GUI event handling.
WFC was pretty good, using it for 6 months. Swing was more flexible, I found, but slower. That's changed with JDK 1.3 thankfully..
A) Netscape's JVM implementation is a piece of dog doo. Always has been up until 4.x and even then it was bad. (Yes, they WROTE THEIR OWN VM... argh)
B) There's a post above that basically explains that this exception doesn't happen in IE. Sun's code is particallly at fault in versions of Java prior to Java 2 version 1.3...
Re:Ayn Rand - "The Gospel of Greed"
on
Selfish Society
·
· Score: 1
positively. berkeley is such an epicenter of capitalist thought...
When you program for 12 hours a day (if you make it past 8), aren't you typically exhausted?
Most people are.
That's because using your *brain* is just as hard as using your body for 8 hours a day. Try it. Program for 8 hours with a few interspersed short breaks, a 1 hour lunch, and NO websufing or email. It's mind-numbing (though you accomplish a lot by 5pm.)
This is the classic "right vs. left" argument, cast in a "yes I can learn/use technology vs. no you can not because you are poor":
One side is saying "yes, you can rise out of your status in society and better your position, out of your own worth! Western thought & capitalism exists because it WORKS!"
The other side is saying "no, history determines your fate, and since you are poor, you are destined to be poor. The western thought & capitalism rose because of the tyranny and control of evil white males, hence history has enabled it, not intrinsic worth."
What's amusing is that academics are still arguing about this to this day (so far the right seems to be winning, though the left had quite the lead during most of the century, given our socialistic tendencies until 1989..)
...There is no scarcity in distributing music but there *IS* scarcity in the skill & talent it takes to MAKE NEW MUSIC. That implies that a free market + property system should be used to allocate economic resources to the artists the market likes.
The trick is figuring out how to do that while allowing free sharing.
Yes, this has been said on Slashdot numerous times, and also refuted numerous times. MANY artists *do not tour* and were still clearly successful. Hell, Shania Twain didn't tour for her first album at all, and that didn't stop the money from coming in.
Being the most innovative kid on the block may look good on the resume, but it only really matters in a world of restrictive intellectual property laws.
Being innovative matters in ways beyond IP laws. Even if IP laws were discarded, software would still be subject to a global free market -- where the innovative get paid well for their services, and the average get paid not-so-well.
Well, the applet on MSDN is horribly slow on NS because NS's java VM is a horrible p.o.s. compared to MS's. This is simple truth.. take a look at the *retarded* amount of bugs in NS 2.0-3.0's VM... programming Java 1.0 for those browsers was not fun... stuff would look perfect in appletviewer, but it would take weeks to make it work on NS.
It's not about the product becoming twice as hard to develop, it's about spreading the economic burden amongst all users, and turning a much larger profit if the product is popular. The profit then is typically retained as investment.
I suppose there's an argument that "excessive profit is bad for the market", but this assumes the market would prefer to shift investment (i.e. excess profit) out of intellectual works and into somewhere else. Is this really the case? All the rhetoric about the "information economy" says otherwise: we want/need *more* intellectual works, and the way to do that is to ensure that investment (profit) remains high.
I think Slashdot can be a bit self-serving when choosing news stories about conferences.
We hear lots of news about LinuxWorld conferences, but relatively little about other ones -- little about what was cool, or what was announced, etc.
There was a large Linux presence at JavaOne a few weeks ago, and there was barely a peep in Slashdot about it. This when JavaOne is the largest developer conference in the world -- 25,000+ people, almost 10k more than the Microsoft PDC, and almost every other Internet news site had large "special reports" dedicated to the conference.
Not saying that Slashdot should go ape-shit over the marketing hype that these conferences usually represent, but something is amiss when things are blatently ignored. (In my best south park voice: "NOTHING TO SEE HEAR.. MOVE ALONG PEOPLE.. Linux and Open source are all that exist. No one uses Java, it's slow... MOVE ALONG PEOPLE..")
We can get in quite a paradox if we say "charge for the first copy" and provide all others in some free form. The copies wouldn't exist if the original didn't exist. That would imply that they're subject to some of the building costs.
All the work went into creating a specific configuration of bits. Not the first "copy" of bits, but the configuration of the bits themselves -- all copies. This is not to say we should *block* copies, this is to say that authors have a right to be remunerated (if they so choose) for people to use that configuration of bits..
And if you don't like that, you write your own configuration that's free. [sound familiar?] My opinion is that free software / music is a choice, not a perrogative, mainly due to economics.
Sitenote: The only hitch is: How do we pay for the humans if we don't charge for the output? That has been discussed elsewhere so I won't repeat it here.
Could you provide a link? This is one hitch that I have never seen answered satisfactorily.
The only satisfactory answer so far has been to charge for output. Models that don't charge for output seem to put all the burden on "Customer #1". That seems slanted.
In Microsoft's JVM, every Java object is a COM object that automatically implements at least IUnknown and IDispatch, and can automatically implement several other interfaces... and they had one of the faster implementations until IBM came out with their JDK..
You see, music copyrights are about money and control. The GPL is about neither of these.
The GPL isn't about control? Hmm. I see more control inherent in the GPL vs. the BSD licence.
On another note...
I would say music copyrights aren't about money, they're about economics. It's a fundamental argument of scarcity: there is a limited amount of skill & talent in the world to produce good music/books/software, so it should be governed by economic means. That implies a marketplace with sound notions of property.
We need to re-think IP law in terms of accepting the reality of easy copying while guaranteeing that the free market can continue to function -- i.e. an artist can receive guaranteed remuneration for their work if he or she so chooses. Encryption is probably the only option here.
As for referring to all intellectual works as "data", yes, that's fundamentally its nature, all music/software is really just bits, but you're removing it from context. Anything removed from its context is inherently worthless or meaningless. It's not just data, it's data arranged in a specific configuration that is valuable to people. It also so happens that not too many people can configure data as well as others, hence we can (and should) pay money for it.
IP law needs to be reformed, not removed.
Re:C++ as a teaching language/programming obscure?
on
Who's Afraid Of C++?
·
· Score: 1
Java interfaces are a good alternative to inheritance. I suppose multiply-inherited pure virtual classes are the way to do this in C++, but there's a lot of cultural/political baggage against using MI anywhere.
But overall, purely signature-based polymorphism is extremely productive in the hands of competent programmers. Not sloppy at all.
Java is dead on the client - deal with it - Sun has. Compare Java client code to even the crap that runs in Macromedia plug-ins, and there is no comparison.
Flash is a much better web-GUI technology than an applet for vector based animations. So yes, applets-for-animation are pretty much toast.
However, Sun has most definitely not given up on this, though certain factions within Sun probably have.
A document metaphor, and the DOM itself, only goes so far. Not every interface is a web interface, though it may be internet-enabled (See Napster). Java Swing potentially has a future here, mainly because of "Java Web Start", which will allow full-featured Java applications to be web-distributed, similar to the Add/Remove Programs control panel in Windows. This is a great idea, especially for intranet applications that need centralized version management.
I'd really suggest you look at the JDK 1.3 and the speed of the GUI. Take the IBM virtual machine out for a spin too. There have been some great strides.
Oh be real - these benchmarks are all using in-memory operations on scaled data sets. Show me some real-world tests - graphics, user input, networking - and watch Java come to a crawl. These are the same types of useless benchmarks that HotSport advocates have been tossing around. They're cute, but no one is going to bet their job on matrix transformation benchmarks (if they want to keep their job).
Real world apps? Check out www.instinet.net. It's a worldwide fixed income trading system. It's positively huge. And it's completely Java.
Nike replaced an HR system with Gemstone in 1998.
Charles Schwab is writing all of their systems in Java, and currently has over 100 new projects on the go (according to their VP of technology, at JavaOne. Check the slides, they're online).
I wrote a backoffice system in Java (Gemstone) running 200 tps on a rather low-end Sun machine (Ultra 10).
The fact of the matter is that Java is doing just fine on the server. Performance complaints really aren't warranted here for business systems concerned with mainly I/O performance.
Java on the client continues to need more work, but again, there have been great strides here.
Are these hard scientific numbers? Probably not. I think you'd be pressed to see hard scientific numbers on any in-house app whether C++ or Java, just because they are "in house".
Uggh! I strongly disagree. How verbose can one language be? I can crank out useable solutions in perl in a quarter of the code, and they'll likely cream the Java performance as well (Hotspot included), and I'm not talking about matrix transforms or Fibonacci sequences.
Perl's raison d'etre is to be able to write applications fast, but to care less about their maintainability (i.e. readability). Java, on the other hand, is meant to be read over again because most software is in perpetual maintainance, with NEW people coming in to maintain your old code.
Some people's careers are made up of fixing other people's shitty, unreadable code. It doesn't have to be this way. Java encourages people to write somewhat readable code, though it's up to the person to go the distance.
I also really question your perl performance statement. Try it against the IBM virtual machine or Hotspot 2.0. Really. This is interesting given that Java has some impressive 3rd party regex packages now.
Also, Java is about as verbose as C considering most of the syntax is taken from C. C is widely considered to be a fairly terse language, so your desire for more terseness (perl) is somewhat unique. Many people need to maintain code over several years, so they want fairly verbose code that has a clarity to it. Reading regular expressions requires a lot more concentration and is more time consuming than reading basic C code.
Beyond this, C++ is much more verbose (see templates). Try COBOL too.
The only verboseness problem I've really had is when using "anonymous inner classes" which can be somewhat obtuse at first compared to a Smalltalk block. Again, a fairly minor annoyance, it's two extra curly braces...
My major problem with Java is it tries to make threading useable by people who have no idea what threads are or why or when they should be used. Like attaching a thread to each Socket, or synchronization of strings.There is no such thing as "threading for dummies" - try going this route and you actually get a massive performance degradation.
I never got this impression at all. The "book" on Java multithreading (Concurrent Programming in Java, 2nd ed, by Doug Lea) is *not* for beginners.
Java makes the simple things in threading fairly easy (mutexes), and the hard things possible (using monitors). I would have preferred if they actually used a FIFO/priority queue for their blocked threads as opposed to an unordered queue but that's a small annoyance.
Furthermore, the Java 2 collections and Swing are all naturally not thread safe precicely because they don't want to encourage multi-threaded programming. They only want experts to use it. Sure, you they provide convenience methods to fully-mutex a collection, but obviously if you're going to write an application that deals with millions of objects in a Set, you're not going to use a fully synchronized collection.
What you seem to be saying is that you're angry with Java from abstracting the low-level too much. But, what about the experts who are SICK of the low level stuff, SICK of twiddling bits, and just want to get their job (of coding business logic) done? That's what Java allows. This trade-off also allows newbies to think they're all smart & powerful, but that's something you just have to deal with if you want the increased productivity of a high level language. Just life.
I just don't see how you can blame Java's attempt at trying to make the lives of experts easier for causing newbies to think they are multithreading gods. I don't think any technology is responsible for building such hubris.. it's just a human thing.
As for Java performance - look at the language! All that threading, OO support, etc. that is built-in, and all that object churn you don't even know you're incurring - they're part of Java and result from the ridiculously verbose syntax. You're never going to get rid of this degradation.
How wouldn't you know what you're incurring? You're writing the app, aren't you? There are such things as profiling tools.
Threading is a purely optional, so you wouldn't normally incur its overhead unless you decide to synchronize everything.
OO support is inherent in the language, so you're going to incur runtime method dispatch overhead no matter what. If you don't want this, why are you using an OO language? Furthermore, dynamic dispatch is about as minimal an overhead as one can get, so it barely registers as a complaint beyond the realm of hard real time systems.
Memory allocation is definitely costly, on the other hand, but is much less prone to errors than stack-allocation of objects in C++. (Pointer smashes from passing around stack-objects that went out of scope a long time ago is a nasty, but common, occurence when you have free reign with memory addresses in the language.)
Again, profilers can find your bottlenecks so you can create some object-reuse factories to prevent the re-creation of too many objects.
I still heartily endorse the use of C++ for large scale code. Its open, it performs, and it doesn't make you pay for features you don't use. Its intelligently designed, and designed for intelligent people. Admittedly it has a learning curve, but anything worthwhile does.
Java's got a bit of a learning curve too -- it requires one to unlearn a lot of the debilitating habits we've picked up by being obsessed with memory locations and pass-by-copy semantics in C++.
C++ is a good language if you need a hybrid form of development - meaning you've got a system that needs low-level semantics and high level ones. But there's a trade off for this flexibility - it takes you longer to write stuff, it'll probably be more error-prone due to manual memory management, pointer errors, and a real lack of exception handling enforcement. It makes you focus more on the bits of the matter than the problem you're solving. In some situations, that's warranted. More often than not though, it's not warranted.
There are tons of cool Java projects, but no, I don't see people dismissing Sun, except a few armchair critics on Javalobby and Slashdot.
Sun has done a lot for the community, and continues to do so. They've made PR mistakes, but so does every company. Instead of mulling over political agendas, let's look at the results:
- JDK 1.3 is a massive improvement in client side performance, since most of Swing was optimized and Hotspot 2.0 client VM came out. This is a tremendous success.
- The J2EE is really catching on and addressing some of the original concerns of doing cross-platform enterprise applications. EJB 2.0 actually does a lot to improve upon the way it integrates objects with databases. The COM bridge will allow us to talk to EJB apps through Visual Basic (which is crucial in the business world). All in all, job well done
- The community has never been bigger or better. JavaOne continues to be the largest technical conference in the world, with over 25,000 attendees -- almost quadruple the Microsoft PDC attendence figures. The community process continues to get new specifications added to it, while Sun focuses on bug fixing and "depth" issues as oppsoed to "breadth" issues. JDK 1.4 will be another "fixes + optimization" release, once again showing that Sun wants this thing to be SOLID.
I really don't give a crap if Java is an ISO or ECMA standard. It took C++ until 1998 (freaking 1998!!) to become an ISO standard. And there STILL are major compiler and library discrepancies 2 years later.
The fact of the matter is that I can write a large Java distributed system much faster than I can write it in C++, and it will be overall less buggy due to a lack of memory leaks, pointer smashes, and better exception handling -- plus the fact that I can buy one of several solid application servers for Java. In C++ I can't do that, I can only really use Windows 2000/COM+ or BEA Tuxedo, or roll my own. If I need access to the VM source code, I have it available to me, though there will rarely be the case where it's the VM at fault, and not my code.
Plus, server side Java code has been shown to be, at times, faster than optimized C code:
Click here for graphs plus source code..(Note to take the benchmark with a huge grain of salt. run it for yourself.. be sure to change his baseline numbers in the source code to match your own baseline.)
Java is a very pleasant language to work in. It's not the best -- I'd prefer Smalltalk -- but given the market climate, and the vast selection of tools and server products, it's quite livable if you love object oriented design.
Though one of the biggest trends in computing is to try to abstract the math and bits away to an extent that straddles the line between performance and high-level semantic expressivity.
VM-based languages like Lisp and Smalltalk (and Python or Java to a lesser extent) are ways of trying to make the computer more "conceptual" and less "bit-oriented" while still staying realistic in terms of the necessity of terseness in order to eliminate ambiguity.
So while, yes, under the covers it's all math and logic, we can sometimes map logic to more humanistic concepts. i.e. the notion of an "object" in OOP is a real mind-twisting one - under the covers it's just a data structure with pointers to functions and a table to dynamically dispatch function calls. And for some programmers, that's ALL oop is.
But the point of OOP (at least for the Simula and Smalltalk people) was to create a whole new paradigm of "message passing entities" to perform responsibilities... That pushes software from the computing domain more into the problem domain. Though what's interesting is that even though we though OOP apparently carries more "human" concepts, it still takes programming skill to make that "paradigm shift". I think Stephanson really was right, that some people have a natural intuitive feeling for logic and programming, while others have a much harder time of it.
What about Mac sales (that "other" alternative platform)? Were they poor/adequate/encouraging compared to Linux sales?
I've noticed that lately the MacOS game market has really picked up steam, with Deus Ex, The Sims, and Diablo II all getting released in the last 2 months... perhaps one way to indirectly stimulate sales of Linux games is to point to the fact that another alternative OS has a burgeoning game market...
A few interesting things:
- Microsoft's new cross-language GUI/DHTML api seems to have almost identical features to WFC, and an almost identical design, based on what the public has been exposed to at the PDC. [They're probably just porting it over to C#.]
- C#'s delegate keyword is identical to their Java extential in J++ 6.0 to do GUI event handling.
WFC was pretty good, using it for 6 months. Swing was more flexible, I found, but slower. That's changed with JDK 1.3 thankfully..
A) Netscape's JVM implementation is a piece of dog doo. Always has been up until 4.x and even then it was bad. (Yes, they WROTE THEIR OWN VM... argh)
B) There's a post above that basically explains that this exception doesn't happen in IE. Sun's code is particallly at fault in versions of Java prior to Java 2 version 1.3...
positively. berkeley is such an epicenter of capitalist thought...
When you program for 12 hours a day (if you make it past 8), aren't you typically exhausted?
Most people are.
That's because using your *brain* is just as hard as using your body for 8 hours a day. Try it. Program for 8 hours with a few interspersed short breaks, a 1 hour lunch, and NO websufing or email. It's mind-numbing (though you accomplish a lot by 5pm.)
This is the classic "right vs. left" argument, cast in a "yes I can learn/use technology vs. no you can not because you are poor":
One side is saying "yes, you can rise out of your status in society and better your position, out of your own worth! Western thought & capitalism exists because it WORKS!"
The other side is saying "no, history determines your fate, and since you are poor, you are destined to be poor. The western thought & capitalism rose because of the tyranny and control of evil white males, hence history has enabled it, not intrinsic worth."
What's amusing is that academics are still arguing about this to this day (so far the right seems to be winning, though the left had quite the lead during most of the century, given our socialistic tendencies until 1989..)
"Preach to the choir than bother to make money."
Okay, what's the logic in this? Make more money by catering to the mainstream crowd?
First of all, Apple is making money. Quite a bit of it.
Secondly, one does not have to be the marketshare leader to be profitable. (This theory would preclude Ferrari and Porsche from existing.)
In total, I would argue that the only reason Apple *makes* money is that it caters to the non-mainstream crowd. They thrive on being different.
...There is no scarcity in distributing music but there *IS* scarcity in the skill & talent it takes to MAKE NEW MUSIC. That implies that a free market + property system should be used to allocate economic resources to the artists the market likes.
The trick is figuring out how to do that while allowing free sharing.
Yes, this has been said on Slashdot numerous times, and also refuted numerous times. MANY artists *do not tour* and were still clearly successful. Hell, Shania Twain didn't tour for her first album at all, and that didn't stop the money from coming in.
In a nutshell, yes, pre-emptive multitasking will eliminate the infamous "busy wheel" when using a browser.
Being the most innovative kid on the block may look good on the resume, but it only really matters in a world of restrictive intellectual property laws.
Being innovative matters in ways beyond IP laws. Even if IP laws were discarded, software would still be subject to a global free market -- where the innovative get paid well for their services, and the average get paid not-so-well.
Well, the applet on MSDN is horribly slow on NS because NS's java VM is a horrible p.o.s. compared to MS's. This is simple truth.. take a look at the *retarded* amount of bugs in NS 2.0-3.0's VM... programming Java 1.0 for those browsers was not fun... stuff would look perfect in appletviewer, but it would take weeks to make it work on NS.
"Most of us here wouldn't/couldn't use IE"
Ah yes, the "everyone on Slashdot is a Linux freak" idea.
I use IE for the Mac because it's the best browser (most standards compliant) out right now. IE 5.5 is also excellent for standards support.
Mozilla can beat IE, but they need an actual production quality release first. Until then, you can keep drinking your kool-aid...
It's not about the product becoming twice as hard to develop, it's about spreading the economic burden amongst all users, and turning a much larger profit if the product is popular. The profit then is typically retained as investment.
I suppose there's an argument that "excessive profit is bad for the market", but this assumes the market would prefer to shift investment (i.e. excess profit) out of intellectual works and into somewhere else. Is this really the case? All the rhetoric about the "information economy" says otherwise: we want/need *more* intellectual works, and the way to do that is to ensure that investment (profit) remains high.
I think Slashdot can be a bit self-serving when choosing news stories about conferences.
We hear lots of news about LinuxWorld conferences, but relatively little about other ones -- little about what was cool, or what was announced, etc.
There was a large Linux presence at JavaOne a few weeks ago, and there was barely a peep in Slashdot about it. This when JavaOne is the largest developer conference in the world -- 25,000+ people, almost 10k more than the Microsoft PDC, and almost every other Internet news site had large "special reports" dedicated to the conference.
Not saying that Slashdot should go ape-shit over the marketing hype that these conferences usually represent, but something is amiss when things are blatently ignored. (In my best south park voice: "NOTHING TO SEE HEAR.. MOVE ALONG PEOPLE.. Linux and Open source are all that exist. No one uses Java, it's slow... MOVE ALONG PEOPLE..")
At least, according to forbes richest people list. (Which came out 2 weeks ago) ... Bill is @ $60 b, Larry is at $42 b.
We can get in quite a paradox if we say "charge for the first copy" and provide all others in some free form. The copies wouldn't exist if the original didn't exist. That would imply that they're subject to some of the building costs.
All the work went into creating a specific configuration of bits. Not the first "copy" of bits, but the configuration of the bits themselves -- all copies. This is not to say we should *block* copies, this is to say that authors have a right to be remunerated (if they so choose) for people to use that configuration of bits..
And if you don't like that, you write your own configuration that's free. [sound familiar?] My opinion is that free software / music is a choice, not a perrogative, mainly due to economics.
Sitenote: The only hitch is: How do we pay for the humans if we don't charge for the output? That has been discussed elsewhere so I won't repeat it here.
Could you provide a link? This is one hitch that I have never seen answered satisfactorily.
The only satisfactory answer so far has been to charge for output. Models that don't charge for output seem to put all the burden on "Customer #1". That seems slanted.
In Microsoft's JVM, every Java object is a COM object that automatically implements at least IUnknown and IDispatch, and can automatically implement several other interfaces... and they had one of the faster implementations until IBM came out with their JDK..
You see, music copyrights are about money and control. The GPL is about neither of these.
The GPL isn't about control? Hmm. I see more control inherent in the GPL vs. the BSD licence.
On another note...
I would say music copyrights aren't about money, they're about economics. It's a fundamental argument of scarcity: there is a limited amount of skill & talent in the world to produce good music/books/software, so it should be governed by economic means. That implies a marketplace with sound notions of property.
We need to re-think IP law in terms of accepting the reality of easy copying while guaranteeing that the free market can continue to function -- i.e. an artist can receive guaranteed remuneration for their work if he or she so chooses. Encryption is probably the only option here.
As for referring to all intellectual works as "data", yes, that's fundamentally its nature, all music/software is really just bits, but you're removing it from context. Anything removed from its context is inherently worthless or meaningless. It's not just data, it's data arranged in a specific configuration that is valuable to people. It also so happens that not too many people can configure data as well as others, hence we can (and should) pay money for it.
IP law needs to be reformed, not removed.
Java interfaces are a good alternative to inheritance. I suppose multiply-inherited pure virtual classes are the way to do this in C++, but there's a lot of cultural/political baggage against using MI anywhere.
But overall, purely signature-based polymorphism is extremely productive in the hands of competent programmers. Not sloppy at all.
Yes, by a few years.
CORBA didn't have "object linking and embedding", however. They had to leverage OpenDoc for that... which unfortunately died.