Preinstalled Hurd Now Available
Roger_Wilco writes "The GNU Web site is announcing that Spacetime Systems will now install GNU/Hurd as well as GNU/Linux. Hurd is Object Oriented, unlike Linux, so it may be a superior system in the long run."
← Back to Stories (view on slashdot.org)
I'm open to being convinced - but will need to be convinced.
-- Slashdot sucks.
Hurd is Object Oriented, unlike Linux, so it may be a superior system in the long run.
Huh? Why would you say something like that? I mean I can see arguing microkernel v. monolithic kernel archetectures, but saying an OS is better than another due to its programming methodology?
Besides in the words of John Maynard Keynes, in the long run, we're all dead.
DrLunch.com The site that tells you what's for lunch!
This is very, very cool. The HURD is awesome, and I for one am going to be following it very closely as it develops.
For all of the people who are now going to bash the HURD as completely useless and still in development, keep in mind that linux was once at the point that the HURD currently is. It's in development, there are probably more things to be implemented than things that have already been implemented (although any developers feel free to jump in and comment at length about the status relative to the long term goals of the project) but the project is VERY cool.
It doesn't *compete* with linux in the way that you might think - it's sort of a UNIX, but it's based off of the Mach microkernel, which is a very different way of going about operating system design than your typical UNIX.
Let's face it, of course linux rocks, but in terms of operating system design concepts, linux really didn't change much, it just took ideas that were already out there and created an excellent implementation of said ideas. The HURD on the other hand is based on a different worldview of operating systems and has a lot of promise.
Besides, how bad can it be to have another choice for an operating system? You don't have to use Linux, BSD, Win95, or HURD, but it's good to know that the choice is out there. Personally, I don't know if I'm ready to join the HURD, but I'm watching the code, and I plan to jump in and contribute where I can.
And to all you people who say that the term GNU/Linux is a total travesty of fairness on the part of the FSF, the HURD is pretty much the last component of the GNU system that is needed. Whether they choose to call that GNU/HURD or just HURD is up to them, but if you look at the HURD in terms of the framework of GNU's work, it explains a lot about why Stallman wants to call Linux GNU/Linux. (And I agree with him)
Regardless of what you may have read above, I agree with you. Support the Free Software Foundation http://www.gnu.org/
As far as I understand, the Linux kernel is very consistently thought out and new additions are considered very carefully before being implemented. So is there any really significant gain to an OO kernel?
+----------------------------------------------
+------------------------------------------------
+ The urge to destroy is a creative urge
I'm sorry, usually I try to stay away from straight-flamage type comments, but I can't help myself this time.
What the hell is that statement supposed to mean? What makes an "Object Oriented" OS "better" than another that's not "Object Oriented"? What do you mean by saying the OS is "Object Oriented" anyway? By extrapolation, does this mean we can now definitively say that since C++ is "Object Oriented," it may be a superior language to C in the long run? (And if so, is Hurd written in obviously superior C++ or obviously inferior C?)
Hurd goes about supplying services to the system processes and end-user in a different way than Linux does. They're different. That's it. End of story. If you think "the way Hurd does it" is "better" then fine, that's your opinion. Better people than you have had similar opinions; go search the 'net and find that legendary exchange between Torvalds and Tannenbaum regarding why a microkernel is superior and why Linux is doomed to failure because it's monolithic.
This is one of the most incredibly content-free, flame-inviting statements I've seen in the main body of an article on
-=-=-=-=-
-=-=-=-=-
My mom's going to kick you in the face!
Lets see...
PC vs. Macintosh
VHS vs. Beta
Windows vs. OS/2
Linux vs. Hurd
Gee, if Linux has now become the inferior technology... it's gonna DOMINATE!!!!!!!!! YEEEEEEEESSSS!!!!!!!!! WORLD DOMINION!!!!!!!
I can't speak to the author of this article's particular intentions when they talked about how it would be better because it was OO (if it even IS), but...
It used to be that structured programming in the imperative paradigm was going to save us all and allow us to write the killer apps and progress in computer science. Then it was the functional/logic languages (like LISP from the functional camp and PROLOG from the logic camp) and these days, Object oriented programming is the flavor of the month. Look at the popularity of C++ on the MS platform, and the long hard push for java acceptance. Jeez, and your favorite languages like python and perl, well, if they didn't start off as having OO capabilities, they were certainly hastily added.
It's the flavor of the month, man. In 10-15 years, I'd expect the object oriented paradigm to be as popular as other passed computer science fads. Not that it won't be useful, it's just that eventually people will stop thinking of it as the silver bullet to slay any programming problem
Regardless of what you may have read above, I agree with you. Support the Free Software Foundation http://www.gnu.org/
1: A post on the same topic was made quite a while ago (search the
2: WTF does he mean by "Object-Oriented"?! That phrase has absolutely zero meaning when applied to the HURD.
The real difference between the HURD and Linux is that the HURD uses a full microkernel architecture, which allows you to all sorts of cool stuff with "servers" that sit between your basic kernel and the rest of userspace.
I'm not sure that "Object Oriented" is the correct term to apply to the Hurd's microkernel architecture. I may be wrong.
As for why Linux is not like Hurd, read The Torvalds / Tanenbaum debates or do a random search on "Linus," "Tanenbaum", and "Microkernel". Linus details all of the reasons why Linux is monolithic versus being broken up into micro modules. Very historic, in Linux terms.
I've noticed a few posts asking what the advantage of rewriting the kernel in a language like C++. I don't know the answer, but in the linux kernel mailing list faq, question 1.4 states:
Why don't we rewrite the Linux kernel in C++?
(ADB [Andrew D. Balsa]) Again, this has to do with practical and theoretical reasons. On the practical side, when Linux got started gcc didn't have an efficient C++ implementation, and some people would argue that even today it doesn't. Also there are many more C programmers than C++ programmers around. On theoretical grounds, examples of OS's implemented in Object Oriented languages are rare (Java-OS and Oberon System 3 come to mind), and the advantages of this approach are not quite clear cut (for OS design, that is; for GUI implementation KDE is a good example that C++ beats plain C any day).
and
(REW [Roger E. Wolff]) In the dark old days, in the time that most of you hadn't even heard of the word "Linux", the kernel was once modified to be compiled under g++. That lasted for a few revisions. People complained about the performance drop. It turned out that compiling a piece of C code with g++ would give you worse code. It shouldn't have made a difference, but it did. Been there, done that.
And question 1.5:
Why is the Linux kernel monolithic? Why don't we rewrite it as a microkernel?
(ADB) No opinions here, just a few pointers. Linux has been implemented as a "personality" on top of a modified version of the Mach3 microkernel. This is a fully functional piece of code, known as MkLinux. The project was in part funded by Apple, and as such it was running at first on PowerPC Macs. But an x86 version is available, with fully open source code. Similarly, the Hurd (the GNU kernel) is being implemented on top of Mach3.
There is a historical Usenet thread related to this subject, dating back from 1992, with posts from Linus, Andrew Tanenbaum, Roger Wolff, Theodore Y T'so, David Miller and others. Nice reading on a rainy afternoon. It's fascinating to see how some predictions (which seemed rather reasonable at the time) have proved wrong over
the years (for example, that we would all be using RISC chips by 1998).
--
--
"Insert witty quote here."
This is starting to remind me of the vi/emacs religious wars.
The fact is that OO is a design paradigm. It isn't any "better" or "worse" than other design paradigms. In fact, it owes much to the structured software design movement from whence it was derived. It should all compile to the same code... it's a question of which one fits the particular mind set you have and the problem you are trying to solve.
"According to Thomas Bushnell, BSG, the primary architect of the Hurd, ```Hurd' stands for `Hird of Unix-Replacing Daemons'. And, then, `Hird' stands for `Hurd of Interfaces Representing Depth'."
We also find some more information on the page, like it uses the "GNU C library," not C++ as other comments suggest, and its main strong points seem to be:
"Unlike other popular kernel software, the Hurd has an object-oriented structure that allows it to evolve without compromising its design. This structure will help the Hurd undergo major redesign and modifications without having to be entirely rewritten."
"The Hurd interfaces are designed to allow transparent network clusters (collectives), although this feature has not yet been implemented."
"It is possible to develop and test new Hurd kernel components without rebooting the machine (not even accidentally). Running your own kernel components doesn't interfere with other users, and so no special system privileges are required."
--
--
"Insert witty quote here."
So for we have Gnulix for GNU/Linux. What's next, Gnurd for GNU/Hurd? I hereby decree that everyone seeking to flame GNU/Hurd users refer to them as GNURDS.
Kaboom! I expected a couple of know-it-alls to sneer at the suggestion that object-oriented design is better than a procedural design, but I never expected such a violent response.
How can an OS be object-oriented?! What the hell is that supposed to mean?!
Settle down. The poster (I'm sure) wasn't trying to say that the design methodology or language used to create a piece of software will, alone, decide its usefulness. A lot of us that write both C and C++ on a regular basis get used to the ease of conceptualizing object-oriented code, and are elated when new projects use a framework we favor. I would prefer to hack an OS written in C++. I think the code would probably much easier to get my head around. Naturally, I would rather USE whichever OS was fast, reliable, supported, etc.
Of course, that which gets hacked most frequently tends to become fast, reliable, supported, etc, etc.
The bottom line is this: OO vs. Anti-OO is a holy war, and the crusades will rage on. If you don't like OO, fine. Write C, or Fortran, or Cobol, or assembler for all I care. Object-oriented languages were created for a reason. Some people find advantages in them. And to those people, all other factors held constant, an OS written in C++ would clearly be an improvement.
IIRC, the Hurd is coded in C. Perhaps by OOD they are referring to the fact that the Mach microkernel is an object, as are all of the message servers that work with it as opposed to the monolithic design of the Linux kernel. OOD means just that... object-oriented DESIGN. This may or may not have anything at all to do with OOP, which is object-oriented PROGRAMMING (such as Java or C++).
Please, keep in mind that this is /not/ meant to be flamish in nature. If it so appears, I shall strive for greater subtlety in future.
/. already, this item is further proof that /. really, really needs some kind of sub-editor to catch these things. After all, the banner says "News for Nerds", and any organ which deseminates news has to take care with such matters to ensure that they can continue to be taken seriously.
...
Well beyond the point that this is oldish news, and has appeared on
A phrase like "Hurd is Object Oriented, unlike Linux, so it may be a superior system in the long run." is so manifestly ambiguous and potentially contentious that it's a crying shame to see it writ upon my screen so. Time for a rethink that doesn't involve just hacking Slash, chaps.
On-topic: HURD does indeed look tres groovy, and I'm looking forward to giving it a try. I wonder if it runs on VMWare? I guess their's only one way to find out
-- Post No Gravy
How much would it take to make Linux's kernel object oriented?
;)
:). And I don't think a kernel is really an aria that needs to be OO (other things like the GUI, etc should probably be done that way). They still use assembly in parts of the kernel.
Well, It would take as much work as making an entire new kernel. And, if you did it, it wouldn't be Linux anymore. I suppose you could call It Linux, and it could certainly be able to do all the same things as Linux. Maybe you could call it ObjectLinux or something like that. (Of course given the stupid names that the Open Source community sometimes comes up with, I wouldn't be surprised if they called it ooplix
Anyway, OO doesn't make programs faster, or give better performance, what it does, is make things easier to program, and a lot easier to update and maintain. This would probably be a good thing for an open source project, and a clear, well designed object hierarchy would make it much easier for people to start hacking around.
On the other hand, Linux has no real lack of development support, and Kernel hacking isn't really something that the timed are going to be diving into anyway. Anything that can be done in OO can be done in a non-objective language (as long as its Turing-complete
Amber Yuan (--ell7)
"and dear god does this website suck now." -- CmdrTaco
OK, so you're running a Linux kernel. Which is released under the GNU General Public License. If all you are running is a kernel, then I'm impressed. Did you post your comment by whistling down your phone line?. No. I bet you had to run a shell. Which is also almost certainly released under GPL. Maybe you used cat to compose your post, but I doubt it. You probably used a text editor like emacs (originated by RMS himself) to write it. Then you probably connected to your ISP with pppd. Guess which license?
And every single bit of your Gnu/Linux setup (if you use a decent distribution) could have been (and certainly was) built with gcc and the rest of the bin-utils package. Guess who owns the copyleft on that?
I'm getting bored now, but please learn your history. RMS wanted to create a free OS. He chose to implement it as a UNIX rather than anything else because of the cultural heritage of the UNIX community. He would have chosen a better architecture if he could, but he made a pragmatic decision.
Then, rather than start with a kernel, he started with the tools that make an OS usable, like a text editor (alright emacs is just a little bit more than an editor), a compiler (try writing one yourself if you're bored for a few decades), text processing utilities etc.
Then the GNU project was almost complete, and it was good... but before they got a chance to start serious work on the gorgeous, architechturally clean and fiendish to debug Hurd kernel that was their dream, a bright lad from Finland turned up with an incomplete, but functional kernel. And they saw that it was good, if a bit hairy and flaky. But they persuaded the great Finn to release it under their licence. And GNU/Linux was born. That was in 1991. Please remember, that was a *very* long time ago. FreeBSD didn't exist. X was still closed. And the WWW probably had less pages than the Great Library of Alexandria. Ancient times indeed.
Linux would have been a rather neat toy that had once run on a single 8086 if it weren't for the GNU project.
Linus gave us a kernel, because he had the courage to share it.
RMS gave us Gnu/Linux, because he is a (very hairy) visionary. What he really gave us were two critical things. Forget emacs. Forget gcc. He gave us a vision, and he gave us the GPL.
Both the vision and the GPL have flaws, but until you can come up with any single thing as good as one of these, please remember that it IS GNU/Linux.
I apologise for the rant.
Ceci n'est pas un sig
Linux, HURD and FreeBSD share quite a bit. A huge number of tools port between them with little effort. We welcome each other at conferences and users' groups. Etc., etc. In the end, the best open source OS will win. The best open source desktop OS will run on desktops. The other best open source desktop OS will run on the other desktops. The best open source web server OS .... It's about choice. It's about comparing them objectively for different uses. It is about learning from each one's strengths and bring that knowledge from one to another.
Every open source OS is stronger because they are all a training ground for open source programmers. You don't have to use a single book or a single kernel's source code to learn the One True Way (tm). I'm using Linux (sorry Richard, GNU/Linux) at home right now. I may switch to FreeBSD or HURD, or dual boot. And my data and applications will come with me. Standards are common data formats and common protocols, not a specific version of a specific program or OS.
The net will not be what we demand, but what we make it. Build it well.
Yes, this news has been on the GNU site for at least two weeks. And believe, it or not, the original Slashdot article even predates that. What's kind of funny is the Roblimo himself posted the original story :)
:)
Not to flame anyone (like Roblimo), but I just thought it was kind of amusing. As soon as I saw this story I though "hey another one! Two companies providing HURD, that's pretty good. Oh, no, wait a second..."
Oh well
I guess this'll qualify me for a Fields Medal, then...
:: Integer -> [Integer]
(Haskell)
factors
factors large-prime = [large-prime 1]
(Scheme)
(define (factors large-prime) (values large-prime 1))
(Perl)
sub factors { return (shift(), 1); }
To the editors: your English is as bad as your Perl. Please go back to grade school.
Is Hurd fully Linux compatible? Device drivers, XFree86, desktops, the whole shebang?
Particularly device drivers. If everyone has to rewrite device drivers for Hurd, then they might as well close up shop.
--
I would just like to put in my BeOS side of things here. You people talk about HURD as if it were something new and revolutionary. BeOS predates HURD by one year. Be was formed in 1990, and GNU hadn't even decided on the mach kernel until well into 1991. By 1997, BeOS had reached R3 and had been released on intel, at which time the OS was production quality. BeOS has many of the things the HURD has. It is fully mickrokernel, it has increadible interapp communication, it is not only OO in system design, but in API design, it is designed to be extended without crufting up the system. In addition, it has a fully journaled filesystem with database attributes. (not a buzzword. BeOS never fscks, and when you use the metadata feature for files and the regular expresion searching you'll never want to go back.) It has a very fast messeging system (which I believe is faster than MACH's) it has extensive API support for media, etc. Of course, BeOS did not come up with all of these. The OO idea was pioneered by Next and microkernels have been around a long time. So give credit where its due. BeOS has done most of what HURD does (except some security and abstaction stuff like coding the OS while its running) and his here now. And BeOS too does not deserve all the credit for it. All these ideas have been pioneered and infact successfully implemented before.
A deep unwavering belief is a sure sign you're missing something...
It isn't coded in C++. It is coded in C. I know cuz i run it... It is Object oriented in that the pieces act like objects and every piece of the system is extensible. Before you judge the HURD have a look at it at least.
I think all of you who are dis-advocated the effect of OOP on the perfermance of an OS are being very one-dimensional. Sure, it all ends up as machine code one way or another, the difference is in the human factor, the pyschological element of programming. Programming is, after all, just a metaphor for computer functionality. The GNU website says it best...
it's built to survive Unlike other popular kernel software, the Hurd has an object-oriented structure that allows it to evolve without compromising its design. This structure will help the Hurd undergo major redesign and modifications without having to be entirely rewritten.
In the initial version the methodology doesn't matter much, but as the OS matures, methodology beings to play a larger role. It's a lot easier to revise an OOP system, maintaining elegance and performance, than it is to revise a conventional structued program. Remember, the article says "better in the long run", which it is. In programming, you must always remember the human element, some might say it's the most important of all.
- Dave "It's better to be a pirate than to join the Navy" - Steve Jobs
Woah... How is the Linux architecture out of date? It works... what else matters? So what if it's not OO. I don't care, I want something that works.
Furthermore, what do you mean Linux isn't OO? What makes an OS OO? Object Oriented has nothing to do with the language something is written in, rather how it is written. the linux kernel is quite well layed out.
As for MS Kicking ass, that has nothing to do with the OO TCP/IP stacks, but how the stacks are written. An OO environment will almost always slow an app down. The reason for this is that for an enviroment to suppor the basic tenants of being an OO language mean that many decisions have to be delayed until runtime. C++ doesn't really take this all that far (hence people often refute it as a real OO lanugage), but take a look at Objective-C or SmallTalk to see what this really means. The answer is, decreased performance (due to the complex runtime environment) but increased maintanence and extensibility.
Abandon C? HA! C++ has it's usage, mainly in that it's OO enough to make GUI App development easier. But you still can't reach the performance of straight C with C++. I'd suggest, however, that you one day check out an OpenStep environment and see what a real OO language can do. Check out Interface Builder on MacOSX or NeXTStep, that could not have been written in as crappy a language as C++. C++ was created as a better C, and I think it's best left at that.
Last thing, I don't want to combat MS. I could care less. The "Us vs Microsoft" attitude is really getting old.
If there's an "OSF/1 unix server" on Digital UNIX, it appears to be a chunk of kernel-mode code (and I'm not even certain that it does put that stuff into a separate server process), so DU/Tru64U doesn't appear to be all that microkernelish.
Mountain View, CA., September 22 - HURDOne, Inc., a leading-edge developer of HURD software, products and services, filed to raise $24 Million in an initial public offering, according to a Securities and Exchange Commission filing.
The Mountain View, California-based Company offers online products, tools, news, and services for the HURD operating system and other "open source" communities, at its website http://www.hurdone.net/.
Under its open source model, anyone may contribute to the software coding.
The Company's principal product, HURDOne OS, provides a wide variety of server functions, including setting up a web, e-mail, file or print server, as well as using the computer as a general purpose desktop workstation to perform virtually any computer function. HURDOne OS will be available in English, Chinese, Japanese, German, Spanish and French.
HURDOne plans to sell 3 million shares in the IPO and will have approximately 9.2 million shares outstanding once the sale is completed, according to the filing.
The company was founded and is run by its President, Dr. One L. Inux, Jr., who has worked in senior engineering and technology positions at Hughes Aircraft Co., Teledyne Systems, Co., and California Institute of Technology, Jet Propulsion Laboratory. Dr. Inux was also Chief of Artificial Intelligence Branch, NASA Ames Research Center and organized Lockheed's Artificial Intelligence Center. He was the former founder and CEO of Alantic Macroelectronics and WebCIS.
HURDOne applied to sell its shares on NASDAQ under the symbol "HURD".
The company will be in its "Quiet Period" during SEC review of its filing, which is available on EDGAR.
About HURDOne
Our company provides world-class quality HURD software targeted to the server, workstation and home environments. It is distinguished by the unchallenged availability of applications and platform support, ease of installation and use, and technical support. The software is characterized by stability, security and usability. HURDOne expects to become the highest rated supplier of HURD solutions based on packaging, support, and capability worldwide.
Speak truth to power.
will software need to be recompiled to run on the HURD, or is it binary compatible with Linux?
I think its a bit premature to say the HURD is 'theoretically better than Linux' i mean, shit, you could say that Windows NT is 'theoretically better than Linux', but i know which OS i'd rather run.
I gots ta ding a ding dang my dang a long ling long
C++ templates are Generic Programming.
C++ templates are expanded at compile-time to produce classes.
C++ templates, as I understand them, can be used for ANYTHING, not just the types of data held in containers. GJ (Generic Java) only applies to types.
GJ isn't "expanded;" it's reduced. Once the type check has been done by the compiler, a cast is inserted in place of the generic type. This removes the explosive expansion which results from templates. One of the reasons this works is that everything in Java is a subtype of Object. You can't do that in C++, since it isn't a singly rooted hierarchy.
If you'd like to do some actual research to go with your opinion, look at http://www.cs.bell-labs.com/who/wadler/pizza/gj/in dex.html
Ok, once again, how big are the programs you are writing?
Well, I've built a messaging/app-server in pure Java, and a GUI that sat on top of it (very cool; each user had multiple "rooms" with active objects whose code resided on the server. You could go into other rooms, if you had permission, interact with the objects in there. All of the objects could communicate via a simple message passing API. It was great.). Total size? Couldn't tell you off the top of my head (it's been 18 months since I last worked on it), but probably in the 200KLOC range for the server and the client.
I just finished work as part of a team doing EJB development. There's probably about 100KLOC in that project. I've built client-side tools to work with the EJB server. That's probably another 10KLOC of Java.
I also write small java projects on the side for my own personal happiness. If you're a fantasy baseball fan, I've got just the toy for you...
As a grad school research project, I hacked the 1.0.2 JVM on Solaris to modify how it downloads class files to applets. I used to be able to recite the class file format and the size of the opcodes in my sleep.
If you were to clearly explain to me why C++ is NOT becoming Java, I could probably explain to you why they are the same.
You probably meant why Java is NOT becoming C++. That's the question I'll answer.
The short answer is: someone thought about Java before they released it (AWT doesn't count; it was a hack written in a weekend when Java was retargeted to icky applets). Java has garbage collection. Java has a singly rooted hierarchy and single inheritance. Interfaces rock for separating implementation from, well, interface. Java doesn't have operator overloading, and never will. Java has built-in threading support. Java has built-in weak reference support. Java has excellent dynamic object code loading support. Since the language was built around these concepts (weak references were hidden in the original JDK releases, but they were there), they fit together nearly seemlessly.
The Java language spec added ONE new feature since its original release: inner classes. They are great. Anonoymous inner classes are lambda expressions, something I missed dearly from Lisp.
If generic programming comes to Java, it is going to work right, and not have nine billion different implementors each with their own incompatible ideas.
For anything that you code in Java, I can reproduce easily in C++ using the same sematics.
Well, duh. They're both Turing-complete languages. Anything that can be coded in Java can (in theory) be done on a Commodore 64 in CBM BASIC or any other Turing Machine equivalent. Doesn't mean I'd want to do that.
-jon
Remember Amalek.
Loyalty is a HUGE topic in the GNU/LINUX world. Honostly, how many people that use this system aren't loyalists and purists? But should loyalty bring closed mindedness (I'm not sure if that's a word)? I think not. Before I get into why HURD is a Good Thing(tm), you first must ask yourself this, what is it about Linux that you are mostly loyal to? Personally, I'd have to say that freedom is the first thing, followed by all my gnu tools (which most unices have, but gnu's stuff is more polished and featureful IMHO), also would be GNOME and E (not to say one that any other desktop combo is better than the next, I'm just a sucker for eye-candy), and my linux apps. I'm sure that most people would agree here. Now, for all of you HURD bashers, how could HURD possibly take these things away from you? It is licensed the same way as linux (GPL, duh), so freedom is still there. Obviously, gcc will work with it, because they are both part of gnu, making all of your apps available. We still haven't seen any disadvantages yet. HURD will merely add another choice of kernel and survival of the fittest will eventually favor HURD or Linux, maybe both? Though I highly doubt that. If HURD turns out to be better than Linux, all the Linux kernel hackers will more or less start hacking HURD and all will be well. This can only BENEFIT us as a community. Linux is dominant now, HURD may be later, this leads to quality computing, choice, freedom, evolution, and choice. Where's the downfall? -- "We've got to get up, we've got to go, we've got to be one voice!" ~Pennywise -Bob
It's not OO because Linus Torvalds is one of the relative few who hasn't been suckered into creating bloated
C++ code need not be much more bloated than C code. It may have a little more overhead, but current C++ compilers are getting close to the efficiency of C compilers. It really isn't enough to make a difference.
inefficient
How so? If you can do it in C, you can do it in C++ just as well. OO != inefficient.
buggy
???
C++ is much more organized than C, making bugs far less likely. It's not like C++ is some brand new language that hasn't had time to be tested. It's been around for quite some time.
hard-to-maintain
Please at least read a book on C++/OOP before knocking it. You've convinced me with this one that you really don't know much about C++ or OOP in general. C++ is far easier to maintain than C. It's whole structure is designed for this very purpose, and it succeeds at this quite well.
(Can you tell I feel strongly about this?)
Yes, I just wish you'd reseach a subject before forming an opinion on it. OOP is not the answer to everything, but it does not suffer from the things you claim it does. Java might, but that's for other resons entirely. If you'd work with C++ for any length of time on any large scale project, you might learn to appreciate it.
Roses are red, violets are blue. I'm a schitzophrenic, and so am I.
Sorry, I have to take issue with one thing..
Anonoymous inner classes are lambda expressions, something I missed dearly from Lisp.
This is true, but they're lambda expressions the same way that you can make
a real lambda expression in Python (I don't mean the builtin lambda but
something that actually can create closures), ie, a huge nuisance to type and
a distraction to the control flow. Personally, I find it to be almost as bad
as having to type the class outside the function (but not quite)
Daniel
Hurry up and jump on the individualist bandwagon!
You might not call it that, but you'd almost certainly call it (say) a wood and metal birdhouse.
/lib/libc.* /bin/{bash,sh,ls,mv,cp,ln,sed} /usr/bin/{tar,gzip} and then tell me how well your system is running ;-) )
Personally, I don't mind when people say "Linux", since "GNU/Linux" is a mouthful for the same reason that "wood and metal birdhouse" is, but
(ok, not a perfect analogy, but you get the point I hope? If not, please rm -f
Daniel
Hurry up and jump on the individualist bandwagon!
You might not call it that, but you'd almost certainly call it (say) a wood and metal birdhouse.
/lib/libc.* /bin/{bash,sh,ls,mv,cp,ln,sed} /usr/bin/{tar,gzip} and then tell me how well your system is running ;-) )
Personally, I don't mind when people say "Linux", since "GNU/Linux" is a mouthful for the same reason that "wood and metal birdhouse" is, but the full name *is* GNU/Linux, or even more properly the distribution: Debian GNU/Linux.
(ok, not a perfect analogy, but you get the point I hope? If not, please rm -f
Daniel
Hurry up and jump on the individualist bandwagon!
that as long as a software project is intelligently planned and developed, it really doesn't NEED to be OO. OO programming has some advantages to development (especially when it comes to designing a UI) but its main advantage is that if you use OO programming you MUST be more careful in your design (in order to really get any benefits OO programming gives you).
That's what I used to think as well. However, a substantial contingent of the OO community argues violently against extended design at the outset of a project, relying instead upon an OO programming technique, refactoring, to "adjust" OO designs over time to facilitate change and reuse for additional functionality not contemplated in the prototype.
The theory is to build VERY EARLY ON "the simplest thing that could possibly work," exploiting refactoring and agressive (most tests written before most code) regression testing to evolve the prototype to a superior design over time. Fowler's book, "Refactoring" and Kent Beck's "Extreme Programming" really opened my eyes to a new way to thinking about code.
Having experimented with XP techniques on recent projects, albeit in the small, I have discovered that there is much more truth than hype in Beck's writing. While I haven't "gone to the dark side" completely yet, I now recognize that there are in fact some truly fundamental, and exciting, differences between OOPing and traditional hacking.
On one point I will agree, however: good ooping requires discipline to attain its benefits, perhaps more discipline than can be imposed on a large decentralized project such as an Open Source OS. You can write groty code, of course, in any programming languauge.
If you want portability, stick to jdk 1.1.8. It has very few bugs and interoperability issues left and is available on all major platforms in a workable form. Of course if you want to use the 1.2 API (and why wouldn't you want that?). You'll find that linux support is a bit flaky right now.
I can't believe that you're still talking about jdk 1.0.2. Where have you been the past five years? When people discuss linux they get flamed if they do not take the latest unstable kernel build into account and when we discuss Java the oldest available version suddenly becomes the norm. Sounds like a double standard to me.
BTW. have you seen the jazilla project. Remarkably stable for a 0.2 version and remarkably functional considering they have not yet started to redevelop the renderer. Also remarkable progress considering there are only 10 registered developers on the project page.
Jilles
Didn't we already have this discussion a while ago? Doesn't this page ring a bell? (I even won quite a few karma points at the time. Maybe I should cut'n'paste my comments of the time to gain some more; but I won't 'coz I'm too honest.)
Anyway, this explains why we're suddenly seing an unusual amount of traffic on the help-hurd mailing list.
(Score: -1, Flamebait, Troll)
"True" Microkernel OSs have a problem that's generally swept under the rug of theory: task switches cost performance. Dozens, if not hundreds, of clock cycles per switch, and that's not counting the costs of TLB and cache thrashing. The only way to offset this is by doing fewer task switches- i.e. by "monolithizing" the kernel into larger and larger chunks. An example of this happening is when NT4 brought the graphics primitives into the kernel for performance reasons. In extremis you get the AmigaOS- which was a "true" microkernel design and got good performance, but at the cost of having no memory protection at all. Task switches became little more expensive than procedure calls.
"True" monolithic kernels also have problems- mainly lack of configurability, the need to recompile the entire kernel to add or remove a driver or reconfigure anything, etc. To overcome these limitations, the kernels need to undergo "microkernalization"- an example of this happening is Linux getting loadable modules.
So the best operating systems- those who strike the best balance between configurability and performance- are the "mixed breed" OSs, either monolithic kernels with microkernel-like features, or microkernels with monolithic-like features. At this point, the difference between "microkernels" and "monolithic kernels" is the difference between Coke and Pepsi.
Brian
No, of course you wouldn't call it GNU/NT. It's not the fact that linux uses a lot of bundled GNU utilities or that GNU is all over the place in linux. That's why I added the comment in my post, "If you look at linux in terms of the GNU framework".
The GNU project was about creating an entire UNIX like system, which consists of tools, a compiler, and all the rest of that jazz. The kernel was the last piece they needed, and when linux came along as a GPL'd kernel, sure it was an independant project from GNU, but the people at GNU looked at it as the last piece of the puzzle just sliding into place, fitting perfectly with all the other pieces.
So why not GNU/NT? Because NT isn't GPL'd, it isn't UNIX like, you could distribute it with GPL'd utilities and use it that way, but that was never the point of NT, and because NT is about corporate profits, not about freedom. That's why you wouldn't call it GNU/NT no matter how many GPL'd utilities you used with it.
-- Truth goes out the door when rumor comes innuendo. -- Groucho Marx