Isn't that stretching a bit the definition of "funny"? The comment is valid enough, even if its anecdotical and not the most serious, mission-critical effect.
Maybe "amusing" would be a better label, or maybe "ironic". Maybe we should have those moderation options. After all, "Insightful" and "Interesting" are not orthogonal qualities either, are they?.
I'm no Apple user, but I had the chance to play a bit with Macs for some weeks and I'm afraid you're dead wrong.
I'm sure Linux is faster than OS-X for some tasks. Probably a lot of them, actually. But are those the tasks OS-X is geared to?
A web-server? What do you need a GUI and Aqua for in a pure web-server? You don't put KDE and GLTron on your Linux webserver, do you? OSX without Aqua is not OSX, it's Darwin.
OS-X is a desktop-geared operating system. It's made for interactive use, to play with Photoshop, 3D animation, movie editing, software development and whatever the user happens to require. It contains a web-server (and all the other servers) because it's useful for the user/developer. The user wants to see his personal webpage at once. The developer wants to code and deploy.
System requirements? Can I run KDE/GNOME on "very little memory" anymore than I can run Aqua? I don't think so. I tried a couple of times, and I feel stupid for trying. Linux can survive in very little memory just like Darwin can, but Linux-OSX is no valid comparison.
I don't understand either what you're saying about admin tools deep in the GUI. The shell is right there, waiting to be used as always and with all the tools one needs. So are their GUI front-ends, which I never had problems to find as a non-Mac user, and which are much simpler and convenient (the whole point of the GUI front-end) than any I have seen in Linux.
What does Linux offer in advantage to the GUI's organization in OSX? Are you talking about KDE, or GNOME, or something else, any of which you could install over Darwin (if they can be installed in LinuxPPC)?
Apple's GUI is not so slow these days (maybe it was in 10.0). At least it didn't seem to me when I used it, and it's not like I had the time to "get used to it". Not as responsive as my Win box, but much more responsive than my Linux with XFree. Useless? If you mean the pretty effects, transparency, etc... sure, but it's part of the Mac style. Aesthetics matter. If they didn't, you probably wouldn't be buying a Mac.
Price? For a competent, fully-functional, user-friendly desktop system based on Unix? I would prefer free, of course, but if I were willing to pay for the Mac I'd pretty much buy the OS-X no questions asked. But of course, that's included in the price of the Mac.
Apple did the smart thing using BSD/NextStep. Even if they didn't consider it a superior, more robust Unix as they said, it lets them avoid the politics that surround Linux. Just not having to deal with all the license zealotry and "Linux is always better" chanting is worth the price.
I disagree with your conclusion, but I find your comments most insightful. Particularly because you admit to be judging Java by its cover, and the reality is that the worst part of Java, IMHO, is its cover. It has little to do with the language strengths, and promotes a lot of its weaknesses (applets, anyone?).
Let me try to address each argument. Note that these rebuttals are based on my limited experience and the impression I get from the language, and I'm no expert:
1. It has been so energetically hyped. Real standards don't have to be promoted... . On the hacker radar screen, Perl is as big as Java, or bigger, just on the strength of its own merits.
Java is not a "hacker"'s programming language, it's a software designer's programming language. A lot of what makes Perl so cool to code with is considered the very nature of evil by the people who liked (designed?) Java, so the techie radar screens tend to be pretty much apart.
However, Java has been hyped before it was ready to be hyped, and for the wrong reasons. Sun's vision of browsers running applets everywhere and for everything never made it, in part because Microsoft destroyed the dream of a standard JVM for applets, but mostly because Java's GUI libraries and the ISP's bandwith were not ready for primetime.
You will notice, however, that Java sneaked into the server market before anyone noticed, and has become the standard there. Suddenly Java was all about server-side applications, and servlets have replaced the old Sun vision after (and because) Java was already a success in that field.
2. It's aimed low. In the original Java white paper, Gosling explicitly says Java was designed not to be too difficult for programmers used to C. It was designed to be another C++: C plus a few ideas taken from more advanced languages.
That was a sintax constraint. It has little to do with the design of the language. I think you could make Java easy for Pascal programmers with some trivial changes to the parser and 1-based indexes.
Java has definitely different aims, and philosophies, than C++, and it doesn't aim low: binary cross-platform compatibility, transparent networking and serialization, fully object-oriented, language-level security and threading, good exception handling, etc.
Java was not meant to run in big hardware, it was meant to run in very small hardware in a network environment without compromising security. That's no C.
3. It has ulterior motives.... Likewise, the reason we hear about Java all the time is not because it has something to say about programming languages. We hear about Java as part of a plan by Sun to undermine Microsoft.
Most successful languages had nothing new to say about programming languages. They just partially implemented ideas from theoretically better programming languages, and owe their success to their sponsors' ulterior motives.
C is just an Algol-like language. So is Pascal (which you seem to think is "bad"; have you tried Delphi?), which was very successful. So is almost every language commonly used. C++ just patched up C with some objects and generics, no new concepts there. About the only real innovation Perl seems to have is the subtext of its design and semantics, not the language itself.
Lisp, however, owed it's failures to its innovative qualities, and it's successes to IBM and its ulterior motives. The only times I can come up with where innovation met with success is Smalltalk.
We are doomed to reap the fruits of innovation in the second generation.
4. No one loves it. C, Perl, Python, Smalltalk, and Lisp programmers love their languages. I've never heard anyone say that they loved Java.
You're probably talking to the wrong crowd. Talk to a programmer/software designer.
5. People are forced to use it. A lot of the people I know using Java are using it because they feel they have to.... These are smart people; if the technology was good, they'd have used it voluntarily.
People were forced to use C for decades. Then they were forced to use C++ for years.
Management rarely understand that such decisions should be left to techies, not to other management. When they don't understand the tools, they stick to (an arbitrary) one, and that's what everyone uses.
Smart people would use LISP/ML for a lot of things. Smart people would use Delphi for database applications. Smart people would use Smalltalk for desktop applications. Smart people would use C for OS development or device drivers only.
If you think C/C++ became the de facto standards they are because the technology is good, you are sorely mistaken. People learned C++ because they were forced to. People learned to develop GUIs in C because they had to. And people will always be forced to use a tool that is perfectly good for one thing, for something it's no good for.
6. It has too many cooks. The best programming languages have been developed by small groups. Java seems to be run by a committee. If it turns out to be a good language, it will be the first time in history that a committee has designed a good language.
I'm not sure, but I think the commitee was not there at the level of language design (unless you consider 5-people a commitee, in which case lots of languages, from Prolog to probably LISP, also were created by commitees).
Whatever the case may be, Java already IS. You can judge whether it's good or bad, no need to wait. Don't confuse the language with the standard libraries (which are part of the language distribution and the Java(TM) thingie, but don't define the language).
The commitee process in Java exists right now to standarize the libraries. For something like that you NEED a commitee.
7. It's bureaucratic. From what little I know about Java, there seem to be a lot of protocols for doing things. Really good languages aren't like that. They let you do what you want and get out of the way.
Java is not a hacking language. To "do what you want and get out of the way" is to do a hack, a quick one-time solution for a particular problem.
If that's what you need, great, but Java is not the tool for that. Some (perhaps most) programming problems require more thought on the security, stability and maintainability of the solution. Java, and many other languages, are tools for that.
Java is an object-oriented language, and by definition any OO language is bureaucratic. That's the whole point of object-orientedness: to provide extra layers of abstraction that will later allow flexibility. Messaging and more messaging. Smalltalk is bureaucratic too (it invented the bureaucracy), and yet almost all its coders consider it a great language.
8. It's pseudo-hip.
That, it is. But then again, if you don't take it seriously, Sun's PR is always entertaining.
9. It's designed for large organizations. Large organizations have different aims from hackers.... Historically, languages designed for large organizations (PL/I, Ada) have lost, while hacker languages (C, Perl) have won. The reason: today's teenage hacker is tomorrow's CTO.
Java's libraries are designed for large organizations, but I think the language itself is not. Its only real constraint in that sense is that it is designed to exist in an insecure environment. The semantics are relatively simple and concise.
The reason Ada and PL/I failed was because they were semantic monsters, with conflicting features, and most of the semantics they had were not understood and used anyway. C++ is closer to that situation than Java.
10. The wrong people like it. The programmers I admire most are not, on the whole, captivated by Java. Who does like Java? Suits...
This all depends on who do you admire, and why. If they're kernel hackers they're not going to be captivated by Java: jet pilots are not captivated by 747s, farmers are not captivated by the concept of the supermarket.
Suits like Java. Now they like C#. Before, they liked C++, and at some point they liked an inferior OS system so much they put it everywhere and on everything (Windows? Yes, but Unix too, before). Suits like everything for about 5 seconds, good or bad, particularly if they read it can do something-ML, something-Net.
11. Its daddy is in a pinch.
Good point if it's true, but it would be hard for Sun to drag Java along with it at this point. The worst that could happen is that the standard stays at a stable 1.x version.
Or actually, the worst that could happen is that Sun is incredibly successful and manages to destroy Java by being careless with the standards, but I doubt that will happen.
12. The DoD likes it. The Defense Department is encouraging developers to use Java...
I think the DoD likes it because it's the only other language that offers security at the language level. It's either that, or creating their own language, or keeping Ada, which is pretty much the same thing.
The problem with C++ is not that it is harder to write good code, but that it's easier to write bad code, apparently because of its C-ness.
Note that this does not have to do with the difficulty of writing up an object or method. C++ is more time-consuming because it's harder to read (and clean up) other people's code.
Sure, templates are (were? 1.4?) sorely missing in Java, and that definitely makes the implementation of a lot of algorithms easier in C++. But other language idioms encourage "bad programming practices". Java, as a language, encourages good programming practices and makes some bad practices actually impossible. This price in flexibility pays off in maintainability and other fuzzy buzz-wordy qualities which are the whole point of not writing assembly.
Even if there's only one person in the team that abuses some of C++ facilities everyone's time is wasted. Since "abuse" is a term relative to the code-reader and not the coder, this would happen very often.
Then there's the issue of becoming familiar with the pletorah of libraries that exist for C++. The good thing about the Java libraries is not their amount, but the fact they're part of a standard (licensed) distribution of the language. Therefore, everyone uses them unless they have a very good reason not to, which makes it easier to read other people's code without familiarizing yourself with every library in the market. This is the advantage of the STLs for a much greater problem domain.
Once more, it's about restricting choice to provide maintainability. It helps if the libraries don't suck (java.lang, java.util), it hurts if they do (java.awt, javax.swing).
I'm sure most of these have been mentioned at some point or another, but just in case:
- One of my math professors puts all his lectures and notes on the web in PDF/JPEG format AND Quicktime videos.
He uses Apple software for this (I'm sure there are alternatives) and it's an incredible help in the complex subjects he teaches: Algorithms, Graph Theory, Mathematical Logic, etc.
I'm sure not all classes would benefit from the idea, but mathematical courses and some of the more complex computer science courses definitely would.
- A "related papers" database linking research papers to each lecture in each course.
Sure, any interested student can google their way to one of the public databases, and any teacher with the time can put the links in his website (if he has one).
But having this process automated would make it easier for both students and teachers, and would allow other things: cumulative links independent from website changes, automatically sharing of links between professors, accepting submissions from students (at least graduate students), and maybe attached commentaries for each link ("a la Slashdot", without the Trolls).
- Some of my professors use egroups to share information between the students. This is a ridiculously easy/cheap way to get the students to discuss assignments and topics outside the classroom and provide them with files, links, whatever might be of their interest without interrupting lectures.
- Burn everything you can (lectures, videoconferencies, software, books, tutorials, etc) into CD-ROMs for the public library. Not everyone has access to a high-speed connection, or can spend all day in the university using the labs. This should be automated and independent of each professor.
- Internet kiosks everywhere are always a good idea.
Uh... you mean the government is not a corrupt, antiquated institution that does nothing but collect taxes and waste money?
Have the people really been happily chipping away the governments legal powers? Did "Joe Blow" really make that decision, that we should deregulate everything as soon as possible? I thought it was the government, following the suggestions of industrial lobby groups and economic pundits (not exactly "Joe Blow").
In most of the world, at least, it's not "Joe Blow" who decided that. He's typically promised more government intervention, regardless of whether it makes sense or not. Foreign investors are promised deregulation, regardless of whether it makes sense or not. Government does whatever means more short-term benefits and less responsability.
I don't know. Maybe it is different in the US (I'm not an American), but from what I have seen it doesn't seem so different.
The government (of any country) apparently IS a useless institution. So useless, it chips away its own powers to do anything besides collecting taxes and wasting money. As a matter of fact, most of its current job is passing legislation protecting itself from having (or being able) to do anything else. It makes everything easier.
For the record, I happen to be against government regulation. I have seen way too much of that, and it just doesn't work.
I also think that when for any particular industry the term "government" is replaced by "Microsoft", or any "X Company" that effectively regulates the market as a government (with an electorate of shareholders) it's just as bad.
The thing I did hate about the movie (even though I generally liked it, specially the aesthetics) is that they destroyed the "villain-plot".
They deleted relatively complex "bad guys" for an anime (Dornkirk and the original Folken, for example), and replaced it with a remarkably silly characters (the movie-Folken just makes no sense, for example).
(Some Anonymous Coward posted the idea in some comment. Now I can't help but try.)
---
In a related story, the federal government imposed this morning a moratorium of 60 days on public education, claiming that schools are "improperly supervised environment".
"This is only a natural reaction to the recurrent violence in public property." said a senator, "After Columbine and other shootings, stabbings and acts of violence, it is time we protect our children from these nests of gangs and criminals. In most schools the children spent the time between classes almost completely unsupervised!".
It is a known fact that most gangs hang out in schools during school times, where they plan their acts of violence against each other and society. Unstable teenagers meet and get to know most of their friends in school, which can lead to the creation of close-knit groups, encouragement of anti-social interests, defiance of authority and even sexual experimentation.
Even more worrying, according to the experts, is the education imparted on teenagers within this dangerous environment.
"Some of the classes include chemistry and physics, and the children are exposed to the use of dangerous chemicals for nefarious purposes. Public schools are potentially training our young to build bombs and other weapons of destruction!" - said a concerned pundit. "Recently, there are even courses in computer science in some schools. Kids are learning to use this Internet and computers beyond the knowledge of their parents. Without supervision, it is clear that they are exposed to be recruited by international terrorists such as the Al-Qaida, or the guy who destroyed that Yahoo.com website last year".
Parents, however, are more concerned with the ideological bias in their childrens education.
"I never really thought much about it. But when I heard the news I picked up some of the history books my two teenage kids have to read for school, and I was appalled! They're full of stories about rebels and anarchists defying authority. I know this Washington fellow and Martin Luther King are supposed to be the good guys, but I don't know if telling my kids that almost everyone rebelled against their government is such a good idea".
Federal officials are considering extending the moratorium indefinitely, until Congress can pass a law that solves the problem permanently, possibly by extending the moratorium indefinitely as well. It is not clear if the new legislation would dissolve private educational institutes or not.
"The sooner we can get our children out of the schools and their evil influence, the better. Only then will we be able to go to work each morning with the certainty that neither knowledge, nor education, will interfere with the normal and innocent activities of our teenagers in the streets".
-----
Re:I recognize that I don't know anime very well .
on
NY Times on Anime
·
· Score: 1
Most anime shown in American Cable is extremely bad. This is because most anime is even worse, just like most movie production in the US is bad-cable-night material.
But the good anime is worth tolerating everything else. Just remember that the tastes in anime are as varied as in mainstream film, and that they also have their low standards. If you see something you don't like, don't think it's representative of everything you'll find. Just don't follow the recommendations from that person anymore.
That said, here are some recommendations of what "serious anime" I like (as opposed to comedies, which would make a very different list) :
1. Serial Experiment Lain: great science fiction centered on the future Internet. If you have read Philip K. Dick books (Ubik, Man in the High Castle, etc) you'll see a lot of that here. THIS is "The Matrix" of Anime, although I liked it more than said movie.
2. Ghost in the Shell: someone said this was "The Matrix" of anime, but I think it has more to do with "Blade Runner", topic and style-wise.
3. Monokoke Hime: a very good fantasy film done in Anime. This is fantasy anime properly done.
4. Graveyard of Fireflies: the best dramatic movie I have ever seen (and I normally hate them), it just happens to be Anime. Be warned: this will make you cry.
5. Neon Genesis Evangelion: science fiction mixed with Kabbalah mixed with Jungian psychology mixed with Freudian psychology mixed with Gnostic Mythology mixed with a bit of fan-service. Surprisingly good and addictive.
6. Vision of Escaflowne: a very good fantasy tale with great character development, if a little bit corny at times.
7. Revolutionary Girl Utena: think a fairy-tale, with LOTS OF LSD thrown in, and some very interesting symbology. Really weird, and really good.
9. Akira: It had to appear somewhere. If you can't see beyond the action and violence (as in follow the plot and the implications), it's a good violent action sci-fi movie. If you can, it's much, much, much better.
10. Perfect Blue: a thriller in the style of old Albert, set in the weirdness of contemporary pop-idol culture in Japan. Very, very well done.
You seem to be confusing the two kinds of autocoding I differentiated in my previous post. They are fundamentally different, so this is no technicallity: they are as different as a constant and a factor in big-O notation.
Namely, the york paper you link to is a simple overview of a proposal for some graphical programming language (and corresponding framework) that compiles to a "real" programming language. This graphical programming language would have a collection of logical constructions, and require very specific semantics, and suffer all the limitations of real programming languages.
Wanting to do something like this to create a software design's Esperanto is not a new idea. Ever since the invention of flowcharts people have tried to do this, but it is one of the main difficulties of software design that it cannot be represented by a single diagram because of its different aspects and layers of abstraction. So we need a lot of diagrams to represent each layer, and it becomes a mess.
Maybe the use of UML as a standard language for all layers will make the success of something like this much more likely, much like XML has made practical old, but very good, ideas.
Note that this is no different from what CASE/IDE tools are already doing partially for programming, completely for database models and their data component implementation, almost completely for GUIs.
Research has been going in that direction for decades and it is the direction to go. If this is what you mean by autocoding, then I agree with you in its necessity for the GNU community (which out of spite and elitism seems to rejects a lot of modern development practice). But this is not new, not innovative, not "the solution" and it doesn't even solve "the hard problem". Commercial bias does not throw away autocoding, it has guaranteed its few implementations.
Get yourself a copy of Visio and Visual Basic and design a database application without touching a line of code. THAT is your autocoding. Get yourself Delphi or the Apple tools and see it properly done. Commercial companies LOVE autocoding: that's what they sell.
The GNU/Open Source community is too concerned with bragging about knowledge in glorified text editors and the wonders of the C language to see any benefit on modern tools (and, sometimes, SE itself). They have an ideological bias against autocoding. Hell, there's even ideological bias against autoconfiguration, autoinstallation, auto-anything in some circles.
On the other hand, the link to that "project" you send doesn't seem to be about automating implementation code of a existing design, but the description of some software engineering techniques.
Nothing automated here, most of what seems to change is your own terminology; you might want to read about existing software engineering techniques and why they fail so often. There's an abundant literature, just look for "software engineering" and I'm sure you'll find lots of alternative methodologies.
If you wish to propose a new alternative, you should study the existing ones and provide complete advantage/disadvantage comparisons; this would increase the chances of being properly understood and having your methodology accepted.
It seems to me most failures can be divided in two groups:
I- No Software Engineering (a lot of Open Source projects)
II- Software Engineering techniques applied literally (a lot of Closed Source projects) in the hopes it will magically solve everything. They forget the designers only use the rules to organize themselves better, and may have to break them to get anywhere. They also forget that different methodologies apply to different kinds of projects, and applying the only one they know to everything is a very bad idea.
Solving a problem is not automatable. All you can do is provide a methodology to make it easier to find, then express and prove your solution. Just like the scientific method, at some points software engineering still depends on what happens in the black box that is the human mind, where you put the problem's information and you get alternative solutions.
Thinking of this methodology as the solution itself has the same problem as the following algorithm:
1- Collect Underpants (Collect Problem Requirements)
2- ?
3- Profit. (We Have a Solution)
With respect to autocoding: you may try to automate some of the implementations details of software creation (this may be what you call "coding"; if so, you're right) if you're willing to sacrifice some performance (which I'm betting you are).
If that is what you mean by autocoding, then the field is not against it in any way. It seems almost everyone is very much for it, and willing to make a buck in the process (CASE tools, UML, RADs, garbage collection, run-time environments, design patterns, etc).
But if you're talking about automating Software DESIGN, then you're dealing with more fundamental problems. It's not a matter of immaturity that this is thought as "really hard" (or impossible), it's the result of serious research and you would be wise to check the literature.
Modelling and solving arbitrary problems of arbitrary complexity (fully automated programming) is, as far as I know, equivalent to "strong AI".
If you have a solution for THAT problem, publish it as a paper on any scientific journal and you'll easily get your Nobel prize.
Most people seem to answer to posts like these by saying that the Linux community wants to take away the "casual users" from Microsoft.
Although I have my doubts about that, I think a tool like this would be potentially useful (perhaps even more useful) for non-casual users.
I have configured a kernel or two as a user and I never found the problem too complicated with the tools already available, but it's still a step that can take from 10 minutes to half an hour, depending on how complicated is the setup, what decisions you have to make, and how many acronyms you have to check just in case they apply to your hardware this time.
I'd like to take the time at some point to do that, but sometimes I'd like to get the hardware to work fast and just get on with my life, and the distribution kernel doesn't always work at those times.
This is doubly true if you're installing Linux for someone else, and they happen not to have the most compatible hardware, or know very little about their manual-lacking components. Spending hours configuring kernels, telling them what you're doing and trying them out is not fun and probably, at that point, not even educational.
Because Japan is aware there are other countries in the world and plans their foreign policy accordingly.
The majority of the United States, however, thinks everything beyond the border (any border!) is some big territorial mass called "Mexico" whose population will speak perfect if slightly accented English when pressed with slower, louder sentences by the tourists, just like in the movies.
Sometimes, someone belonging to that majority will be elected for some public office, and that along with the pressure from the voters who think Asia is part of the Middle East will invalidate any foreign policy not based on total obliviousness to the external world.
I think the problem here is that you're missing the DESIGN part of "Design Patterns".
You shouldn't be reading code to figure out design. You shouldn't be writing code yet either. That's what the DESIGN phase is all about: you have to figure out the way you're going to solve a problem at an abstract level.
Design Patterns, like almost every design tool, says nothing about implementation. They don't even say anything about what algorithms will be used in the implementation, that's a lower level of abstraction you also have to deal with.
If I remember correctly, "Design Patterns"'s authors spent a great deal of time trying to make that clear.
When you're finally implementing the design you may and probably should go and read all the code you want to learn little implementation tricks as you're implementing your algorithms. That's an EVEN LOWER level of abstraction.
Maybe it would be nice to have a vocabulary for the sintax patterns you use in a particular language, such as the ones you mention. "Hacking patterns"?
But if you're confusing that with software design, then you are sorely mistaken.
I thought that Marxism and Communism were not ideals, but social theories. As such, they can either be right or wrong; good and evil seem out of the question. Wasn't Marx a "scientific materialist" after all?
The question of whether Marxism is right or wrong has not been answered. The question of whether Communism was wrong seems to have been answered, by history, in the affirmative.
To answer either question one has to analyze the fundamental assumptions of both theories, and see whether they make sense or not. The basis of Marxism had little to do with the benefit of mankind (that was an inevitable consequence). It was at a scientific theory of society and history, and it claimed that at some point social equality would be a natural consequence of the development of history.
The question is whether said plabum was serious economic thought.
Since the argument of the posted message was that the interviewed didn't understand basic economic concepts, it seems pretty obvious he did not consider it serious economic thought.
That seemed to be the whole point of calling it plabus.
Yet it is entirely in the interests of that consumer society to help even more said regions to enter the "mainstream" economic boat.
The success of capitalism depends on large markets. Preferably (rapidly) expanding markets. That means a middle-class, frivolous, consumer society that is willing and ready to buy the consumer goods.
Is cheap labour valuable for capitalistic society? Maybe. But how much do you really need? Non-specialized human labor is not the main factor of production costs anymore.
When the growth of your profits depends on the expansion of markets, and the population of the First World is not expanding any longer, what is of greater value? A Third World that can reduce your production costs by 50%? Or a developing Third World that can expand your market, and your sales, by 1000%?
Do you want to know what really sends "big capitalism" into panic? It's not that they can't reduce their costs to provide for 500 million consumers. It's that they can't get the other 4.5 billion into the bandwagon.
I am afraid of setting the gaps on the oil and changing the spark plugs... or whatever it is you do under the hood of the car... if it's a car what you're talking about, because I have no idea.
I'm afraid of eating anything I cook. If you saw anything I cooked, you would be too.
It's not Microsoft who convinced people they can't learn anything about their computers. People convinced Microsoft they didn't want to, that they wanted simple and less scary interfaces, and Microsoft complied, following the lead of Apple.
And they did, and were successful, in great part because they were right.
The fact that Microsoft was much more successful has a lot to do with them being better, and maybe less scrupulous, at doing business.
Some people ARE uncapable of handling the complexity of a flexible user interface. But that's irrelevant. What's relevant is that most people don't want to and never will, because they don't enjoy it.
I could learn to fix a car's transmission or to cook a decent meal, but I don't have to and I won't because I don't enjoy even trying either of those things. They take time away from the things I do enjoy to do, like playing with computers or reading or coding.
Maybe I would enjoy them if I tried harder, maybe I would enjoy eating properly prepared roaches from Madagascar, maybe I will, but I don't have to and I have better things to do. I have the CHOICE of how deep do I want to go on my knowledge of the tools I use, and what I find most enjoyable spending my time on.
That's the mindset of most people when they use computers, and it's stupid to pretend everyone has to think of using a computer as some required intellectual adventure.
Expecting everyone who needs to use a computer to be a mini-Sysadmin is frustrating for both parts, and the problem is not on the part of the user. It's the equivalent of expecting every driver to be a mechanic, every traveler to know aerodynamics, and almost every human to be an electrician. By that rule, if we ever get to space colonization, everyone will have to be fully trained as a NASA astronaut.
For the record, I happen to currently be a Linux/Windows user (I do play a lot of silly games). I'm dependent on the CLI on both systems because it's simply the right/best tool for the job, and because it provides control.
But if I enjoyed memorizing four-lettered acronyms and typing 10 lines of commands everytime I do something moderately complicated, I wouldn't be using computers at all. As far as I knew, they were meant to avoid gratuitious difficulty, not to augment it. I enjoy difficult pursuits when they are a challenge, necessary difficulties, not self-inflicted torture.
I also happen to think Webmin is the greatest thing I have installed on Linux ever.
And no, I'm not joking. Just look at the Norditrack or the AbsMeister 3575 or your choice of ridiculously named excercise machines that do the work for you.
Or, on what is periodically considered visionary, and then ridiculous, but has certainly been influential if only to waste money: Max Headroom and the omnipresence of pseudo-interactive television (although I guess the original credit might lie somewhere else).
Running Man also reminds one of Survivor and some japanese shows.
Defining the rules by which technology will affect society (including children, women, et al) seems like something important. Particularly since that will define what rights, human or not, they will have in the future.
To put things in perspective, what helped the most to eliminate starvation since the industrial revolution? Industrialization and the modernization of society, or the civil and religious charities for the poor?
There are times when dealing with a keyboard is overkill, but that doesn't mean it's inefficient for its purpose, just that you're using it for the wrong purpose.
I don't know what you mean by burning energy in the typing itself. In my experience, typing becomes trivial and secondary to the task I have to be focused on: what am I typing. The typing itself shouldn't require any more focus than, say, walking down the street.
However, I agree completely with the statement that you should not need to sit in front of a keyboard to do any simple task. You should be able to get on with your life and actually multi-task: check your e-mail while having lunch, open your mp3 player without going through more or less the same steps you need to create a business document.
The keyboard will always be king for specialized tasks whose input needs a high bandwith of pure, unambiguous data, such as programming or, if you can type, write a document.
But fore things that do not require that much input from the user, such as simple instructions or macros ("messages?; send that file to Bill; burn that to the CD-RW;") it's ridiculous to have to stand up and walk to your computer and sit down just to click the mouse a couple of times.
This technology has the same function and would solve the same problems as voice recognition. Of course, it has the advantage that you can keep a conversation without interrupting, and more important without compromising, your task.
It also has the same problems: dictating code is not practical, it's potentially very annoying, and since you should give all your atention to the workstation anyway, has no inherent advantage over typing your code on a keyboard. Idem for any non-trivial document.
+4:Funny?
Isn't that stretching a bit the definition of "funny"? The comment is valid enough, even if its anecdotical and not the most serious, mission-critical effect.
Maybe "amusing" would be a better label, or maybe "ironic". Maybe we should have those moderation options. After all, "Insightful" and "Interesting" are not orthogonal qualities either, are they?.
Yeah, remember the Mars Observer? Not even NASA can get right the metric system.
Hmmm... Now I wonder...
I'm no Apple user, but I had the chance to play a bit with Macs for some weeks and I'm afraid you're dead wrong.
I'm sure Linux is faster than OS-X for some tasks. Probably a lot of them, actually. But are those the tasks OS-X is geared to?
A web-server? What do you need a GUI and Aqua for in a pure web-server? You don't put KDE and GLTron on your Linux webserver, do you? OSX without Aqua is not OSX, it's Darwin.
OS-X is a desktop-geared operating system. It's made for interactive use, to play with Photoshop, 3D animation, movie editing, software development and whatever the user happens to require. It contains a web-server (and all the other servers) because it's useful for the user/developer. The user wants to see his personal webpage at once. The developer wants to code and deploy.
System requirements? Can I run KDE/GNOME on "very little memory" anymore than I can run Aqua? I don't think so. I tried a couple of times, and I feel stupid for trying. Linux can survive in very little memory just like Darwin can, but Linux-OSX is no valid comparison.
I don't understand either what you're saying about admin tools deep in the GUI. The shell is right there, waiting to be used as always and with all the tools one needs. So are their GUI front-ends, which I never had problems to find as a non-Mac user, and which are much simpler and convenient (the whole point of the GUI front-end) than any I have seen in Linux.
What does Linux offer in advantage to the GUI's organization in OSX? Are you talking about KDE, or GNOME, or something else, any of which you could install over Darwin (if they can be installed in LinuxPPC)?
Apple's GUI is not so slow these days (maybe it was in 10.0). At least it didn't seem to me when I used it, and it's not like I had the time to "get used to it". Not as responsive as my Win box, but much more responsive than my Linux with XFree. Useless? If you mean the pretty effects, transparency, etc... sure, but it's part of the Mac style. Aesthetics matter. If they didn't, you probably wouldn't be buying a Mac.
Price? For a competent, fully-functional, user-friendly desktop system based on Unix? I would prefer free, of course, but if I were willing to pay for the Mac I'd pretty much buy the OS-X no questions asked. But of course, that's included in the price of the Mac.
Apple did the smart thing using BSD/NextStep. Even if they didn't consider it a superior, more robust Unix as they said, it lets them avoid the politics that surround Linux. Just not having to deal with all the license zealotry and "Linux is always better" chanting is worth the price.
I disagree with your conclusion, but I find your comments most insightful. Particularly because you admit to be judging Java by its cover, and the reality is that the worst part of Java, IMHO, is its cover. It has little to do with the language strengths, and promotes a lot of its weaknesses (applets, anyone?).
... Likewise, the reason we hear about Java all the time is not because it has something to say about programming languages. We hear about Java as part of a plan by Sun to undermine Microsoft.
... Historically, languages designed for large organizations (PL/I, Ada) have lost, while hacker languages (C, Perl) have won. The reason: today's teenage hacker is tomorrow's CTO.
Let me try to address each argument. Note that these rebuttals are based on my limited experience and the impression I get from the language, and I'm no expert:
1. It has been so energetically hyped. Real standards don't have to be promoted... . On the hacker radar screen, Perl is as big as Java, or bigger, just on the strength of its own merits.
Java is not a "hacker"'s programming language, it's a software designer's programming language. A lot of what makes Perl so cool to code with is considered the very nature of evil by the people who liked (designed?) Java, so the techie radar screens tend to be pretty much apart.
However, Java has been hyped before it was ready to be hyped, and for the wrong reasons. Sun's vision of browsers running applets everywhere and for everything never made it, in part because Microsoft destroyed the dream of a standard JVM for applets, but mostly because Java's GUI libraries and the ISP's bandwith were not ready for primetime.
You will notice, however, that Java sneaked into the server market before anyone noticed, and has become the standard there. Suddenly Java was all about server-side applications, and servlets have replaced the old Sun vision after (and because) Java was already a success in that field.
2. It's aimed low. In the original Java white paper, Gosling explicitly says Java was designed not to be too difficult for programmers used to C. It was designed to be another C++: C plus a few ideas taken from more advanced languages.
That was a sintax constraint. It has little to do with the design of the language. I think you could make Java easy for Pascal programmers with some trivial changes to the parser and 1-based indexes.
Java has definitely different aims, and philosophies, than C++, and it doesn't aim low: binary cross-platform compatibility, transparent networking and serialization, fully object-oriented, language-level security and threading, good exception handling, etc.
Java was not meant to run in big hardware, it was meant to run in very small hardware in a network environment without compromising security. That's no C.
3. It has ulterior motives.
Most successful languages had nothing new to say about programming languages. They just partially implemented ideas from theoretically better programming languages, and owe their success to their sponsors' ulterior motives.
C is just an Algol-like language. So is Pascal (which you seem to think is "bad"; have you tried Delphi?), which was very successful. So is almost every language commonly used. C++ just patched up C with some objects and generics, no new concepts there. About the only real innovation Perl seems to have is the subtext of its design and semantics, not the language itself.
Lisp, however, owed it's failures to its innovative qualities, and it's successes to IBM and its ulterior motives. The only times I can come up with where innovation met with success is Smalltalk.
We are doomed to reap the fruits of innovation in the second generation.
4. No one loves it. C, Perl, Python, Smalltalk, and Lisp programmers love their languages. I've never heard anyone say that they loved Java.
You're probably talking to the wrong crowd. Talk to a programmer/software designer.
5. People are forced to use it. A lot of the people I know using Java are using it because they feel they have to.... These are smart people; if the technology was good, they'd have used it voluntarily.
People were forced to use C for decades. Then they were forced to use C++ for years.
Management rarely understand that such decisions should be left to techies, not to other management. When they don't understand the tools, they stick to (an arbitrary) one, and that's what everyone uses.
Smart people would use LISP/ML for a lot of things. Smart people would use Delphi for database applications. Smart people would use Smalltalk for desktop applications. Smart people would use C for OS development or device drivers only.
If you think C/C++ became the de facto standards they are because the technology is good, you are sorely mistaken. People learned C++ because they were forced to. People learned to develop GUIs in C because they had to. And people will always be forced to use a tool that is perfectly good for one thing, for something it's no good for.
6. It has too many cooks. The best programming languages have been developed by small groups. Java seems to be run by a committee. If it turns out to be a good language, it will be the first time in history that a committee has designed a good language.
I'm not sure, but I think the commitee was not there at the level of language design (unless you consider 5-people a commitee, in which case lots of languages, from Prolog to probably LISP, also were created by commitees).
Whatever the case may be, Java already IS. You can judge whether it's good or bad, no need to wait. Don't confuse the language with the standard libraries (which are part of the language distribution and the Java(TM) thingie, but don't define the language).
The commitee process in Java exists right now to standarize the libraries. For something like that you NEED a commitee.
7. It's bureaucratic. From what little I know about Java, there seem to be a lot of protocols for doing things. Really good languages aren't like that. They let you do what you want and get out of the way.
Java is not a hacking language. To "do what you want and get out of the way" is to do a hack, a quick one-time solution for a particular problem.
If that's what you need, great, but Java is not the tool for that. Some (perhaps most) programming problems require more thought on the security, stability and maintainability of the solution. Java, and many other languages, are tools for that.
Java is an object-oriented language, and by definition any OO language is bureaucratic. That's the whole point of object-orientedness: to provide extra layers of abstraction that will later allow flexibility. Messaging and more messaging. Smalltalk is bureaucratic too (it invented the bureaucracy), and yet almost all its coders consider it a great language.
8. It's pseudo-hip.
That, it is. But then again, if you don't take it seriously, Sun's PR is always entertaining.
9. It's designed for large organizations. Large organizations have different aims from hackers.
Java's libraries are designed for large organizations, but I think the language itself is not. Its only real constraint in that sense is that it is designed to exist in an insecure environment. The semantics are relatively simple and concise.
The reason Ada and PL/I failed was because they were semantic monsters, with conflicting features, and most of the semantics they had were not understood and used anyway. C++ is closer to that situation than Java.
10. The wrong people like it. The programmers I admire most are not, on the whole, captivated by Java. Who does like Java? Suits...
This all depends on who do you admire, and why. If they're kernel hackers they're not going to be captivated by Java: jet pilots are not captivated by 747s, farmers are not captivated by the concept of the supermarket.
Suits like Java. Now they like C#. Before, they liked C++, and at some point they liked an inferior OS system so much they put it everywhere and on everything (Windows? Yes, but Unix too, before). Suits like everything for about 5 seconds, good or bad, particularly if they read it can do something-ML, something-Net.
11. Its daddy is in a pinch.
Good point if it's true, but it would be hard for Sun to drag Java along with it at this point. The worst that could happen is that the standard stays at a stable 1.x version.
Or actually, the worst that could happen is that Sun is incredibly successful and manages to destroy Java by being careless with the standards, but I doubt that will happen.
12. The DoD likes it. The Defense Department is encouraging developers to use Java...
I think the DoD likes it because it's the only other language that offers security at the language level. It's either that, or creating their own language, or keeping Ada, which is pretty much the same thing.
The problem with C++ is not that it is harder to write good code, but that it's easier to write bad code, apparently because of its C-ness.
Note that this does not have to do with the difficulty of writing up an object or method. C++ is more time-consuming because it's harder to read (and clean up) other people's code.
Sure, templates are (were? 1.4?) sorely missing in Java, and that definitely makes the implementation of a lot of algorithms easier in C++. But other language idioms encourage "bad programming practices". Java, as a language, encourages good programming practices and makes some bad practices actually impossible. This price in flexibility pays off in maintainability and other fuzzy buzz-wordy qualities which are the whole point of not writing assembly.
Even if there's only one person in the team that abuses some of C++ facilities everyone's time is wasted. Since "abuse" is a term relative to the code-reader and not the coder, this would happen very often.
Then there's the issue of becoming familiar with the pletorah of libraries that exist for C++. The good thing about the Java libraries is not their amount, but the fact they're part of a standard (licensed) distribution of the language. Therefore, everyone uses them unless they have a very good reason not to, which makes it easier to read other people's code without familiarizing yourself with every library in the market. This is the advantage of the STLs for a much greater problem domain.
Once more, it's about restricting choice to provide maintainability. It helps if the libraries don't suck (java.lang, java.util), it hurts if they do (java.awt, javax.swing).
I'm sure most of these have been mentioned at some point or another, but just in case:
- One of my math professors puts all his lectures and notes on the web in PDF/JPEG format AND Quicktime videos.
He uses Apple software for this (I'm sure there are alternatives) and it's an incredible help in the complex subjects he teaches: Algorithms, Graph Theory, Mathematical Logic, etc.
I'm sure not all classes would benefit from the idea, but mathematical courses and some of the more complex computer science courses definitely would.
- A "related papers" database linking research papers to each lecture in each course.
Sure, any interested student can google their way to one of the public databases, and any teacher with the time can put the links in his website (if he has one).
But having this process automated would make it easier for both students and teachers, and would allow other things: cumulative links independent from website changes, automatically sharing of links between professors, accepting submissions from students (at least graduate students), and maybe attached commentaries for each link ("a la Slashdot", without the Trolls).
- Some of my professors use egroups to share information between the students. This is a ridiculously easy/cheap way to get the students to discuss assignments and topics outside the classroom and provide them with files, links, whatever might be of their interest without interrupting lectures.
- Burn everything you can (lectures, videoconferencies, software, books, tutorials, etc) into CD-ROMs for the public library. Not everyone has access to a high-speed connection, or can spend all day in the university using the labs. This should be automated and independent of each professor.
- Internet kiosks everywhere are always a good idea.
Uh... you mean the government is not a corrupt, antiquated institution that does nothing but collect taxes and waste money?
Have the people really been happily chipping away the governments legal powers? Did "Joe Blow" really make that decision, that we should deregulate everything as soon as possible? I thought it was the government, following the suggestions of industrial lobby groups and economic pundits (not exactly "Joe Blow").
In most of the world, at least, it's not "Joe Blow" who decided that. He's typically promised more government intervention, regardless of whether it makes sense or not. Foreign investors are promised deregulation, regardless of whether it makes sense or not. Government does whatever means more short-term benefits and less responsability.
I don't know. Maybe it is different in the US (I'm not an American), but from what I have seen it doesn't seem so different.
The government (of any country) apparently IS a useless institution. So useless, it chips away its own powers to do anything besides collecting taxes and wasting money. As a matter of fact, most of its current job is passing legislation protecting itself from having (or being able) to do anything else. It makes everything easier.
For the record, I happen to be against government regulation. I have seen way too much of that, and it just doesn't work.
I also think that when for any particular industry the term "government" is replaced by "Microsoft", or any "X Company" that effectively regulates the market as a government (with an electorate of shareholders) it's just as bad.
The thing I did hate about the movie (even though I generally liked it, specially the aesthetics) is that they destroyed the "villain-plot".
They deleted relatively complex "bad guys" for an anime (Dornkirk and the original Folken, for example), and replaced it with a remarkably silly characters (the movie-Folken just makes no sense, for example).
(Some Anonymous Coward posted the idea in some comment. Now I can't help but try.)
---
In a related story, the federal government imposed this morning a moratorium of 60 days on public education, claiming that schools are "improperly supervised environment".
"This is only a natural reaction to the recurrent violence in public property." said a senator, "After Columbine and other shootings, stabbings and acts of violence, it is time we protect our children from these nests of gangs and criminals. In most schools the children spent the time between classes almost completely unsupervised!".
It is a known fact that most gangs hang out in schools during school times, where they plan their acts of violence against each other and society. Unstable teenagers meet and get to know most of their friends in school, which can lead to the creation of close-knit groups, encouragement of anti-social interests, defiance of authority and even sexual experimentation.
Even more worrying, according to the experts, is the education imparted on teenagers within this dangerous environment.
"Some of the classes include chemistry and physics, and the children are exposed to the use of dangerous chemicals for nefarious purposes. Public schools are potentially training our young to build bombs and other weapons of destruction!" - said a concerned pundit. "Recently, there are even courses in computer science in some schools. Kids are learning to use this Internet and computers beyond the knowledge of their parents. Without supervision, it is clear that they are exposed to be recruited by international terrorists such as the Al-Qaida, or the guy who destroyed that Yahoo.com website last year".
Parents, however, are more concerned with the ideological bias in their childrens education.
"I never really thought much about it. But when I heard the news I picked up some of the history books my two teenage kids have to read for school, and I was appalled! They're full of stories about rebels and anarchists defying authority. I know this Washington fellow and Martin Luther King are supposed to be the good guys, but I don't know if telling my kids that almost everyone rebelled against their government is such a good idea".
Federal officials are considering extending the moratorium indefinitely, until Congress can pass a law that solves the problem permanently, possibly by extending the moratorium indefinitely as well. It is not clear if the new legislation would dissolve private educational institutes or not.
"The sooner we can get our children out of the schools and their evil influence, the better. Only then will we be able to go to work each morning with the certainty that neither knowledge, nor education, will interfere with the normal and innocent activities of our teenagers in the streets".
-----
Most anime shown in American Cable is extremely bad. This is because most anime is even worse, just like most movie production in the US is bad-cable-night material.
But the good anime is worth tolerating everything else. Just remember that the tastes in anime are as varied as in mainstream film, and that they also have their low standards. If you see something you don't like, don't think it's representative of everything you'll find. Just don't follow the recommendations from that person anymore.
That said, here are some recommendations of what "serious anime" I like (as opposed to comedies, which would make a very different list) :
1. Serial Experiment Lain: great science fiction centered on the future Internet. If you have read Philip K. Dick books (Ubik, Man in the High Castle, etc) you'll see a lot of that here. THIS is "The Matrix" of Anime, although I liked it more than said movie.
2. Ghost in the Shell: someone said this was "The Matrix" of anime, but I think it has more to do with "Blade Runner", topic and style-wise.
3. Monokoke Hime: a very good fantasy film done in Anime. This is fantasy anime properly done.
4. Graveyard of Fireflies: the best dramatic movie I have ever seen (and I normally hate them), it just happens to be Anime. Be warned: this will make you cry.
5. Neon Genesis Evangelion: science fiction mixed with Kabbalah mixed with Jungian psychology mixed with Freudian psychology mixed with Gnostic Mythology mixed with a bit of fan-service. Surprisingly good and addictive.
6. Vision of Escaflowne: a very good fantasy tale with great character development, if a little bit corny at times.
7. Revolutionary Girl Utena: think a fairy-tale, with LOTS OF LSD thrown in, and some very interesting symbology. Really weird, and really good.
9. Akira: It had to appear somewhere. If you can't see beyond the action and violence (as in follow the plot and the implications), it's a good violent action sci-fi movie. If you can, it's much, much, much better.
10. Perfect Blue: a thriller in the style of old Albert, set in the weirdness of contemporary pop-idol culture in Japan. Very, very well done.
I can't help but say it: DO NOT talk about groaning out loud in this context.
Some of us can live without that mental image.
You seem to be confusing the two kinds of autocoding I differentiated in my previous post. They are fundamentally different, so this is no technicallity: they are as different as a constant and a factor in big-O notation.
Namely, the york paper you link to is a simple overview of a proposal for some graphical programming language (and corresponding framework) that compiles to a "real" programming language. This graphical programming language would have a collection of logical constructions, and require very specific semantics, and suffer all the limitations of real programming languages.
Wanting to do something like this to create a software design's Esperanto is not a new idea. Ever since the invention of flowcharts people have tried to do this, but it is one of the main difficulties of software design that it cannot be represented by a single diagram because of its different aspects and layers of abstraction. So we need a lot of diagrams to represent each layer, and it becomes a mess.
Maybe the use of UML as a standard language for all layers will make the success of something like this much more likely, much like XML has made practical old, but very good, ideas.
Note that this is no different from what CASE/IDE tools are already doing partially for programming, completely for database models and their data component implementation, almost completely for GUIs.
Research has been going in that direction for decades and it is the direction to go. If this is what you mean by autocoding, then I agree with you in its necessity for the GNU community (which out of spite and elitism seems to rejects a lot of modern development practice). But this is not new, not innovative, not "the solution" and it doesn't even solve "the hard problem". Commercial bias does not throw away autocoding, it has guaranteed its few implementations.
Get yourself a copy of Visio and Visual Basic and design a database application without touching a line of code. THAT is your autocoding. Get yourself Delphi or the Apple tools and see it properly done. Commercial companies LOVE autocoding: that's what they sell.
The GNU/Open Source community is too concerned with bragging about knowledge in glorified text editors and the wonders of the C language to see any benefit on modern tools (and, sometimes, SE itself). They have an ideological bias against autocoding. Hell, there's even ideological bias against autoconfiguration, autoinstallation, auto-anything in some circles.
On the other hand, the link to that "project" you send doesn't seem to be about automating implementation code of a existing design, but the description of some software engineering techniques.
Nothing automated here, most of what seems to change is your own terminology; you might want to read about existing software engineering techniques and why they fail so often. There's an abundant literature, just look for "software engineering" and I'm sure you'll find lots of alternative methodologies.
If you wish to propose a new alternative, you should study the existing ones and provide complete advantage/disadvantage comparisons; this would increase the chances of being properly understood and having your methodology accepted.
It seems to me most failures can be divided in two groups:
I- No Software Engineering (a lot of Open Source projects)
II- Software Engineering techniques applied literally (a lot of Closed Source projects) in the hopes it will magically solve everything. They forget the designers only use the rules to organize themselves better, and may have to break them to get anywhere. They also forget that different methodologies apply to different kinds of projects, and applying the only one they know to everything is a very bad idea.
Solving a problem is not automatable. All you can do is provide a methodology to make it easier to find, then express and prove your solution. Just like the scientific method, at some points software engineering still depends on what happens in the black box that is the human mind, where you put the problem's information and you get alternative solutions.
Thinking of this methodology as the solution itself has the same problem as the following algorithm:
1- Collect Underpants (Collect Problem Requirements)
2- ?
3- Profit. (We Have a Solution)
With respect to autocoding: you may try to automate some of the implementations details of software creation (this may be what you call "coding"; if so, you're right) if you're willing to sacrifice some performance (which I'm betting you are).
If that is what you mean by autocoding, then the field is not against it in any way. It seems almost everyone is very much for it, and willing to make a buck in the process (CASE tools, UML, RADs, garbage collection, run-time environments, design patterns, etc).
But if you're talking about automating Software DESIGN, then you're dealing with more fundamental problems. It's not a matter of immaturity that this is thought as "really hard" (or impossible), it's the result of serious research and you would be wise to check the literature.
Modelling and solving arbitrary problems of arbitrary complexity (fully automated programming) is, as far as I know, equivalent to "strong AI".
If you have a solution for THAT problem, publish it as a paper on any scientific journal and you'll easily get your Nobel prize.
Most people seem to answer to posts like these by saying that the Linux community wants to take away the "casual users" from Microsoft.
Although I have my doubts about that, I think a tool like this would be potentially useful (perhaps even more useful) for non-casual users.
I have configured a kernel or two as a user and I never found the problem too complicated with the tools already available, but it's still a step that can take from 10 minutes to half an hour, depending on how complicated is the setup, what decisions you have to make, and how many acronyms you have to check just in case they apply to your hardware this time.
I'd like to take the time at some point to do that, but sometimes I'd like to get the hardware to work fast and just get on with my life, and the distribution kernel doesn't always work at those times.
This is doubly true if you're installing Linux for someone else, and they happen not to have the most compatible hardware, or know very little about their manual-lacking components. Spending hours configuring kernels, telling them what you're doing and trying them out is not fun and probably, at that point, not even educational.
Because Japan is aware there are other countries in the world and plans their foreign policy accordingly.
The majority of the United States, however, thinks everything beyond the border (any border!) is some big territorial mass called "Mexico" whose population will speak perfect if slightly accented English when pressed with slower, louder sentences by the tourists, just like in the movies.
Sometimes, someone belonging to that majority will be elected for some public office, and that along with the pressure from the voters who think Asia is part of the Middle East will invalidate any foreign policy not based on total obliviousness to the external world.
I think the problem here is that you're missing the DESIGN part of "Design Patterns".
You shouldn't be reading code to figure out design. You shouldn't be writing code yet either. That's what the DESIGN phase is all about: you have to figure out the way you're going to solve a problem at an abstract level.
Design Patterns, like almost every design tool, says nothing about implementation. They don't even say anything about what algorithms will be used in the implementation, that's a lower level of abstraction you also have to deal with.
If I remember correctly, "Design Patterns"'s authors spent a great deal of time trying to make that clear.
When you're finally implementing the design you may and probably should go and read all the code you want to learn little implementation tricks as you're implementing your algorithms. That's an EVEN LOWER level of abstraction.
Maybe it would be nice to have a vocabulary for the sintax patterns you use in a particular language, such as the ones you mention. "Hacking patterns"?
But if you're confusing that with software design, then you are sorely mistaken.
I thought that Marxism and Communism were not ideals, but social theories. As such, they can either be right or wrong; good and evil seem out of the question. Wasn't Marx a "scientific materialist" after all?
The question of whether Marxism is right or wrong has not been answered. The question of whether Communism was wrong seems to have been answered, by history, in the affirmative.
To answer either question one has to analyze the fundamental assumptions of both theories, and see whether they make sense or not. The basis of Marxism had little to do with the benefit of mankind (that was an inevitable consequence). It was at a scientific theory of society and history, and it claimed that at some point social equality would be a natural consequence of the development of history.
The question is whether said plabum was serious economic thought.
Since the argument of the posted message was that the interviewed didn't understand basic economic concepts, it seems pretty obvious he did not consider it serious economic thought.
That seemed to be the whole point of calling it plabus.
Yet it is entirely in the interests of that consumer society to help even more said regions to enter the "mainstream" economic boat.
The success of capitalism depends on large markets. Preferably (rapidly) expanding markets. That means a middle-class, frivolous, consumer society that is willing and ready to buy the consumer goods.
Is cheap labour valuable for capitalistic society? Maybe. But how much do you really need? Non-specialized human labor is not the main factor of production costs anymore.
When the growth of your profits depends on the expansion of markets, and the population of the First World is not expanding any longer, what is of greater value? A Third World that can reduce your production costs by 50%? Or a developing Third World that can expand your market, and your sales, by 1000%?
Do you want to know what really sends "big capitalism" into panic? It's not that they can't reduce their costs to provide for 500 million consumers. It's that they can't get the other 4.5 billion into the bandwagon.
I am afraid of setting the gaps on the oil and changing the spark plugs... or whatever it is you do under the hood of the car... if it's a car what you're talking about, because I have no idea.
I'm afraid of eating anything I cook. If you saw anything I cooked, you would be too.
It's not Microsoft who convinced people they can't learn anything about their computers. People convinced Microsoft they didn't want to, that they wanted simple and less scary interfaces, and Microsoft complied, following the lead of Apple.
And they did, and were successful, in great part because they were right.
The fact that Microsoft was much more successful has a lot to do with them being better, and maybe less scrupulous, at doing business.
Some people ARE uncapable of handling the complexity of a flexible user interface. But that's irrelevant. What's relevant is that most people don't want to and never will, because they don't enjoy it.
I could learn to fix a car's transmission or to cook a decent meal, but I don't have to and I won't because I don't enjoy even trying either of those things. They take time away from the things I do enjoy to do, like playing with computers or reading or coding.
Maybe I would enjoy them if I tried harder, maybe I would enjoy eating properly prepared roaches from Madagascar, maybe I will, but I don't have to and I have better things to do. I have the CHOICE of how deep do I want to go on my knowledge of the tools I use, and what I find most enjoyable spending my time on.
That's the mindset of most people when they use computers, and it's stupid to pretend everyone has to think of using a computer as some required intellectual adventure.
Expecting everyone who needs to use a computer to be a mini-Sysadmin is frustrating for both parts, and the problem is not on the part of the user. It's the equivalent of expecting every driver to be a mechanic, every traveler to know aerodynamics, and almost every human to be an electrician. By that rule, if we ever get to space colonization, everyone will have to be fully trained as a NASA astronaut.
For the record, I happen to currently be a Linux/Windows user (I do play a lot of silly games). I'm dependent on the CLI on both systems because it's simply the right/best tool for the job, and because it provides control.
But if I enjoyed memorizing four-lettered acronyms and typing 10 lines of commands everytime I do something moderately complicated, I wouldn't be using computers at all. As far as I knew, they were meant to avoid gratuitious difficulty, not to augment it. I enjoy difficult pursuits when they are a challenge, necessary difficulties, not self-inflicted torture.
I also happen to think Webmin is the greatest thing I have installed on Linux ever.
And no, I'm not joking. Just look at the Norditrack or the AbsMeister 3575 or your choice of ridiculously named excercise machines that do the work for you.
Or, on what is periodically considered visionary, and then ridiculous, but has certainly been influential if only to waste money: Max Headroom and the omnipresence of pseudo-interactive television (although I guess the original credit might lie somewhere else).
Running Man also reminds one of Survivor and some japanese shows.
Defining the rules by which technology will affect society (including children, women, et al) seems like something important. Particularly since that will define what rights, human or not, they will have in the future.
To put things in perspective, what helped the most to eliminate starvation since the industrial revolution? Industrialization and the modernization of society, or the civil and religious charities for the poor?
You're not supposed to say things like that.
They might notice you're not joking.
Not to mention a well-specified, complete tool for automatic generation of documentation in HTML.
Javadocs are something very simple that, when properly used, can save an insane amount of time.
There are times when dealing with a keyboard is overkill, but that doesn't mean it's inefficient for its purpose, just that you're using it for the wrong purpose.
I don't know what you mean by burning energy in the typing itself. In my experience, typing becomes trivial and secondary to the task I have to be focused on: what am I typing. The typing itself shouldn't require any more focus than, say, walking down the street.
However, I agree completely with the statement that you should not need to sit in front of a keyboard to do any simple task. You should be able to get on with your life and actually multi-task: check your e-mail while having lunch, open your mp3 player without going through more or less the same steps you need to create a business document.
The keyboard will always be king for specialized tasks whose input needs a high bandwith of pure, unambiguous data, such as programming or, if you can type, write a document.
But fore things that do not require that much input from the user, such as simple instructions or macros ("messages?; send that file to Bill; burn that to the CD-RW;") it's ridiculous to have to stand up and walk to your computer and sit down just to click the mouse a couple of times.
This technology has the same function and would solve the same problems as voice recognition. Of course, it has the advantage that you can keep a conversation without interrupting, and more important without compromising, your task.
It also has the same problems: dictating code is not practical, it's potentially very annoying, and since you should give all your atention to the workstation anyway, has no inherent advantage over typing your code on a keyboard. Idem for any non-trivial document.