A lot of posters are happy to tell you what they would have done or did do. Don't read too much into it. What I would do in your shoes isn't too relevant. Really. Seriously. This problem isn't really so hard. There's pros, cons, and alternate paths. The responses here are the normal, overwhelming, western culture group think--Go to college because it 1) Is Good For You, 2) Opens Doors, 3) Is Fun, or 4) Come on Everyone Else is Doing It! Now, I'm not about to tell you not to go to college, but that you must do a cost benefit analysis. So, here's a few points to stew on:
1) How much will it cost for you to go to college, actual out of pocket expense. Factor in your lack of income over the time you're there.
2) What else could you do with that money? You could travel, get a motorcycle, pay for living expenses while you devote yourself to music, martial arts, or developing open source software.
3) If you went to college, what would you want to get out of it?
a) If it's life experience, reconsider point #2. Note that you could go to college for a year, ride around on a harley for a year, devote yourself to jujitsu for a year, etc. They don't have to be exclusive.
b) If you want skills and knowledge, well, this is a loaded problem. You can get these at college, but it's up to you to take them. The problem is that Universities have a stranglehold on important resources--knowledgeable people, good libraries, and similarly interested people. It can be very difficult to find these elsewhere.
c) There's many other reasons you might want to go. Identify them, and consider how else you might accomplish the same thing with the money you would spend on college. Which is more attractive?
4) You can go to college anytime. Really. But you may only be able to go once, depending on finances. Don't go until you know it's what you want. If there's any doubt, don't go. Wait. Or, go for a year to try it.
5) Actually, whichever you pick, do it for a year, then switch. The only way for you to really know is to try them both.
6) Would you ever really want to work for somebody that will make decisions based on your pedigree rather than your work? A degree would open at least some doors, but as Morpheus said, "I can only show you the door." Would you really want to walk through it?
In short, think about what you want, and put together bids for yourself from various "life paths". If you don't know what you want, think about how to discover this, and put together bids on that. Make sure you limit your discovery period to a time period that you're comfortable with--I mean, you probably don't want to spend 10 years on it, so make sure each bid has an exit strategy.
And lastly, one piece of useless advice. You do know everything. You do have all the answers. The rest of us are disgruntled because we got stoopid and may try and convince you that you don't know everything. Don't listen to us.
I just wanted to point out that asking about something like the STL here on/. will not give you much breadth of opinions on the matter. When it comes to programming and software development,/. has a high concentration of scripting language users for web site backends and administrative tasks, and a relatively small number of "application" developers. There are also a disproportionate number of systems programmers. From reading/., you might get the impression that C++ is not very widely used. While this is true in the Open Source world where there are many *many* more viable options, commercial software development is still pretty dominated by C++ with Java seeing use in some sectors. So what's the takehome message here? Even given/. bias, you're still getting a pretty positive response to STL. Anyway, here are a few things you should know:
1) Get STLPort. Use STLPort. STLPort addresses many, many, STL issues. They add extra nice classes like hash tables. STLPort is thread safe. STLPort has nice extra debugging features. STLPort has readable code. STLPort is PORTABLE (thus the name!). OpenOffice uses STLPort, in case you're still dubious.
2) Get a couple of STL books. There aren't any really good ones (IMHO), but it's handy to have a printed reference with some examples.
3) You wanted downsides, so here's one. You will have to learn STL. Not the library, but the techniques--the API is easy. You have to write your own C++ classes well to take really good advantage of STL. The way you leverage the STL for absurd productivity is through generic programming and STL's pluggable component architecture. Still, though, even you all you ever use is map, string, and streams (or some other subset), you'll probably become a convert.
4) STL will keep getting better to use. Other people have mentioned it, but look at Boost for some ideas about where STL is headed. Also, the compiler people are aware of and are working on the error message and debugging problems. Both VC++.Net and gcc 3.x are making progress here.
I must say that I am pleased as punch with this update, as it gives me my most desired/. feature. It's a little roundabout, but I can do it now! I personally hate all of the idiots who accumulate lots of karma and post at +1. It drives me freeping nuts. Why? Because they post drivel so much. I wish that/. made you spend your karma to give yourself +1, so that you couldn't do it perpetually unless you kept getting modded back up. Alternatively, I wish that I could ignore the +1 self moderation. Basically, I only want to read the posts that have gotten some kind of positive moderation, but I never wanted to nix the people who only get modded to +2 just to avoid the +1 posters.
So, now, with the moderation customization, I give all the positive moderation types +1, and set my filter at +3. Bingo! I have filtered out all of those lame +1 posters. Happy Day!
Wow, I see one actually sane comment in this whole thread, and it's not even modded up. First off, let me state that the people that post on/. aren't necessarily the technological savants that you might presume them to be. You've asked a loaded question on a forum where you're guarunteed to have a poor signal to noise ratio: a lot of people have something to say, but the moderators can't tell who knows their arse from a hole in the ground. It might be fun for everybody to come out and rant or give you advice, because, hey, everybody likes to rant or think they know better than you. Ok, not everybody, but enough people to keep/. lively.
Anyway, point is, as per usual, most of the posts here are arguments that probably aren't real helpful for you. I'm going to read between the lines hear and guess that you're real question is, "Should I bite the bullet and learn OO?" Now, you kind of have to make a choice (unless you're one of the lucky few that can have it all): do you want to be an engineer that programs, or a programmer that knows engineering? Let me put it to you this way: most professional programmers are average. Early proponents of OOP mistakenly believed that OOP would make programmers better, and this thought still lingers in many places. OO, like any problem solving paradigm, will help those who use it well and hinder those who wield it poorly.
I'd like to try and clarify one other thing, too. A problem solving methodology like OO is just that. A problem solving methodology. And like any problem solving scheme, it has a lot more to do with how the problem solver thinks, and not so much the problem being solved. So, if you like OO, go for it. If not, don't. Either way, unless you really care a lot (or again, if you're one of those lucky ones), you won't be good at it. It won't help you get work done easier and there's a good chance that it will make your work more difficult.
Besides that, all I can do is describe how *I* would solve your problems, which doesn't help you much. It would take you a long time to gain the expertise to understand my solution, much less how I got there, much less being able to get there yourself. There is no One True Way. Good luck!
There's a few things that I'll say. One, not a single person posting here really knows what your situation is (well, unless your coworkers read/. and are posting advice for you...). I don't want to be mean, but most of what's been posted here is likely not applicable to your situation. For starters, ignore all the threads arguing over languages: they'll never agree, and in the meantime you have work to get done. Next, I would suggest ignore all of the posts from people who aren't talking about web sites. There's a lot of methodology recommendations there, and it takes a long time to really understand *any* methodology. So if you don't already know it, it won't help for *this* project. If you're interested in that kind of stuff, read up on it; maybe it'll be useful on a future project.
Next, no matter what you decide, from your current position, there's substantial risk involved. If you don't have a good way of estimating the costs and benefits of your alternatives, then you will wind up shooting in the dark no matter what you choose. This isn't really unusual, but it can be stressful! Somebody in management has to decide if they want to play high stakes poker with this project. This will establish how many nice risk mitigating activities you can budget (like unit tests, code reviews, documentation, etc). One thing a lot of technology people have difficulty grasping (this isn't directed at anybody in particular), is that if your management decides on a high risk course of action, it's not WRONG because it's technically inferior. Now, if management doesn't understand that it's a high risk proposition, then there's a communication failure somewhere that will screw you no matter what gets chosen.
Ok, now that you've decided where you're going, I've got 3 pieces of useless advice (all advice is useless advice, btw...)
1) Know your priorities. This is the most important thing to getting ANY solution.
2) Understand your requirements(I don't care how you do this). This is the most important thing to getting (close to) a CORRECT solution.
3) Remember it's only a job. This can be very important for retaining sanity:)
People say "I want benefit X, what hardware, Y, do I need to accomplish that?" And that's why Windows will continue to exisit.
I'm not sure I understand; you're saying Windows will continue to exist because of hardware compatability?
Windows will not be dying anytime soon (unless MS just renames it, not likely). And like it or hate it; people look at an OS based on a command line and say: "ick, why would I want that?". Granted, a modern distro hides most of that; but when the tough gets going the command line is the place you really have to go.
Ok, in a post talking about waaayyy out in the future, this comment is just trolling. I encourage you to take a look at what Linux was like 5 years ago, and plot some growth curves, especially relating to percentage of commands having a GUI interface (since that's what you're talking about). I'll even let you get away with stock distros, ignoring the many projects on SourceForge.
Linux/Wine will not dominate Windows anytime in the next 5-15 years. Its not going to happen.
I don't like getting into the prediction business, but there's one thing that I can say with a lot of certainty: predictions for more than 2 or 3 years out are complete bunk. We can make some pretty good predictions for Linux over the next two years, as that time frame includes finishing a lot of projects currently under way. Of course we're still going to miss a lot of things. Do you have any idea what the kernal team will be working on 3 years from now? Me either. Same goes for KDE, GNOME, WINE, StarOffice, Mozilla, Apache, etc etc etc. But whatever they're starting 3 years from now will likely finish in the 5 year time frame.
First, the applications are not there and won't be there because developing for the Linux Desktop is difficult.
I'm starting to wonder, (this is an honest question because I think you were serious) do you know what a growth curve is? We, as the Linux developer community, are right at a nexus: the tools, the platforms, and the libraries have started to mature. Developing for the Linux Desktop is getting easier as time goes by. 2002 will see major advances in both KDE and GNOME, as well as developer libraries like wxWindows, and Mozilla will emerge as a development platform. Hordes of new applications will be started during this time. Of course, many of them will fail or suck (or both), but that's true everywhere.
Second, fundamentally Linux has been designed and continues to focus around flexibility over ease of use.
I call bullshit. Fundamentally, Linux hasn't been designed at all! Read some of Linus's comments about how Linux has evolved. About flexibility over ease of use, I think that you are way over generalizing. Did you see the recent article about GNOME 2.0? Check out this link for the GNOME Usability Project.
And Third and Finally, Microsoft owns the desktop OS market, has a vast mindshare (how many newbies do you know think MS is the computer?) and continues to improve it's products.
I think that over time and across a large segment of the population, consumers have shown again and again that a) they are very price sensitive, and b) that brand loyalty is finicky at best. I do believe that when the next version of Windows comes out, that MS will actually have to compete. About MS continuing to improve its products, I encourage you again to examine growth curves. Examine the difference between WinXP and Win95. Then look at RH 7.2 and say RH 4. Look especially at the differences in how much you can do, how easy it is to install, and how easy it is to use with a default install. Ok, now project out along these same growth trajectories for a gut level sense of where we'll be five years from now. Now, Linux will continue to be Free (and a distro cheap). All I can say is that it's going to be fun to watch and that there's no guaruntees.
This is great for anything that can take advantage of multiple channels on the same wire. I do a lot of MIDI composing, and recording the synthesized sounds is a pain: I have to play back each track and record it individually. I've always wondered why they don't just pop an ethernet port on a keyboard and let me do full duplex 16 channel recording.
Here's my music technology wishlist: 1) a single, standard cable interfacing to a synth that handles MIDI, Audio, and data (for sample sets, setups, programs, etc); 2) an arbitrary number of channels up to the capabilities of the synth (ie, MIDI only doing 16 channels is obnoxious); 3) an uber-mixer that'll take analog and digital in, spit analog and digital out, lets me connect to my computer with ONE cable supporting 128 stereo channels and letting my computer control all mixing functions, dedicated DSP, and the ability to save setups from your computer and recall them from an LCD (like keyboards, in this respect). This way, I can plug in all my instruments into 1 mixer (1 cable for each). Plug one cable into my computer, presto, I have a recording studio. Go to a live gig, tap a button, presto, preconfigured levels and mix ready to be tweaked for the environment. If you play the same place a lot, you could even save your tweaks. This might sound far out, but I think it's a fairly natural extension of current recording studio in a box solutions.
I'm amazed: there's tons of comments, but no one seems to have explained what this is all about. First, regarding Cygwin:
1) It is mostly used by developers, IT people, and other techincally inclined folk. It's not going to be interesting to Joe Sixpack for quite some time.
2) It is just as much a Linux compatability thing: as a windows developer, if you work in Cygwin, it'll make porting to Linux that much easier. Kinda related, it lets windows developers work on software meant for Linux. Think of it this way: a windows programmer can add a feature to say, PostgreSQL, that you can then use in Linux.
3) There's a sh*tload more windows programmers out there. Making it easy for them to improve Linux is a win.
4) The official Cygwin distribution only comes with a handful of packages, campared to say, Debian. This number will stay small. Right now, as a Cygwin user, there are a lot of Linux apps that will compile OOTB, and a lot that don't. This is a pain.
Enter Deb/W32. The idea is for a group of people to collect together a bunch of packages that work on the target platform and make them easy to install. This saves the Cygwin user from hunting around for source only to find it doesn't compile.
About stealing Linux users: A significant portion of Cygwin users already use a *nix; they're just porting their software. This is where the Wine thing is important: by running Cygwin on top of Wine, you can make (and test, etc) a window's executable without ever touching non-free software. For the rest of them, imagine two or three years from now: Linux is still free, and Windows still isn't. BECAUSE THEY'VE BEEN USING CYGWIN, Linux now does what they need. It's a no brainer "upgrade." Really, this is a win for everybody.
I'm willing to bet that most of the posters on here saying that using more than one language isn't a good idea (for whatever reason) haven't done much web programming. For a fairly normal browser plugin project that I worked on, we used the following:
1) C++ for the actual plugin.
2) JavaScript for webpages embedding the plugin.
3) Perl for CGI backends.
4) SQL (duh).
5) Wise Installer script for the installer
6) Delphi (Pascal) for a game builder app that made games to be played in the plugin. This app loaded the plugin as a normal dll.
If you're doing integration between technologies, you'll almost invariably wind up using different languages. Often times, you have no choice. Also, this isn't meant to be offensive, but people that think C/C++ is one language are naive. Generally, you have to ship clients executables, so you're limited to languages that compile natively (with the possible exception of Java). You generally can run whatever you want on your own servers. Then you have web browsers that are their own funky platform. If you can get away with using only one language, congratulations!, but don't expect that all the time.
Um, I just wanted to point out that the Resident Evil series is now a Nintendo EXCLUSIVE series! Only coming out on the GameCube from now on. See this link at ign. And, by all accounts, Star Wars Rogue Squadron: Rogue Leader is likely to be one of the best selling games this Xmas, and it's not exactly a kids game. I also don't think it would be fair to call Wave Race: Blue Storm, Tony Hawk 3, Crazy Taxi, or Madden NFL 2002 kids games. All of these are massively popular franchises. All of these are coming out at the GC LANUCH. In fact, of the roughly 15 or so launch games, only 1 of them is really a kids game. So I politely request that you do a little research before deciding what consoles you do or do not have any interest in.
It's probably too late for this to be seen by anyone, but I thought I'd post for posterity. I think that it is imperative that *somebody* take a hardline against non-free software. That person is RMS. I don't think it's hard to understand why promoting proprietary software is in bad taste for a free software project. There's a fairly basic principle for free software: they don't collect money, they collect mindshare. Mindshare is the free software world's currency. The more mindshare a project has, the better it does (modulus poor management). So, it's not so much that proprietary software is "bad," but by using it, you aren't helping out the community (in that application area). If enough people do this, it can seriously hamper a free project's ability to attain critical mass. And, personally, as a user, I would prefer that all of my software be free. This in turn means that I would prefer that you use free software. Now, I'm not real vocal about it. But I'm damn glad that RMS is.
Hmmm, I had a lot of problems with.94;.93 was much better. Of course,.95 is better than both of them, but I understand how the pipeline must work on things like this. I'm running on Windows [ducks] and I really, honestly, like Moz better than IE 5. A long time ago I switched from NS to IE because it was better. Granted, I'm running IE 5, but I don't trust MS enough to upgrade; I crash enough as it is. While I have observed occaisional rendering problems (at espn) and occaisional slowness, I crash less often and suffer less system instability with Moz. And you know what's really weird? I actually look forward to each new release! The introduction of the tabbed interface in.95 is great; I use it exclusively now, saving RAM and window clutter. And I'm only just now learning about the customizations available--it's pretty extensive. For example, you can reskin ChatZilla with a simple CSS file, you can disable javascript pop-up windows, you can save "screensets," and much more that I haven't learned yet. By the time Moz hits 1.0, not only will it be faster, more stable, and more compliant than IE, it'll have a very competitive (or maybe even dominating) feature set. Well, kudos to the Mozilla team, and to Netscape!
There's a lot of talk in this thread (and related ones, recently) about the catch-22 of games needing user-base and user-base needing games. It's the same problem for all proprietary software, not just games, but in other application areas the community gets together and starts working on open alternatives. It's also a perennial pasttime of gamers these days to sit around and whine about corporatization of games and how Tomb Raider 16 really sucks yet still sells a bazillion copies while [insert favorite game] languishes in the clearance bin.
So I want to know, where are the open source games? Yes, I know about FreeCraft and QuakeForge, but yes, well, and?? Nethack is cool, and I think it really makes a good demonstration of the possibilities for OS games, but I think we'll all agree that something a little more modern is in order. Between SDL and CrystalSpace, I think it's high time us gamers got together and started making our own game market instead of waiting around for the Windoze gaming sheep to bring Who Wants to be a Billionaire XXIVIVM to Linux. If we can get say 10-15 major gaming projects underway with a decent spread of genres, these libraries will get really worked and improve really damn fast. Then it's off to the races, the way OS builds momentum. I know we all want our games and we want them now, so here's what I propose: for every dollar you spend on a proprietary game, give 10 cents to an open source gaming initiative. I, for one, believe that open source can innovate in games 10 times more than bean counters...
Oh, and for the record, yes, I just downloaded and built the latest CrystalSpace and am playing around with it a little, and yes I have some game ideas...
"Slant-Six magazine is a valiant attempt to revive the principles that guided the magazines of old: thoughtful writing, original content and high standards."
Which makes me wonder why they're posting a story that is so obviously a hoax. Really, how many people needed the MIT readers of/. to verify that it's a hoax? I mean, MIT CS Labs has done some cool things, but a complete OS lightyears ahead of its time compatible across multiple hardware platforms and taking into account real world concerns like an office suite??? And in secret! And did I mention real world concerns in an academic lab? Like my subject says, I assumed it was a humor site, but now I'm just not sure. I'll be curious for a follow up from the slant-six people explaining what's up.
First, I'm confused, why did this post get modded down?
But you reminded me of something else that I'd really like to try: running a WIN32 app through WINE remotely through an X-client on windows, specifically the unstable 9.x series. The interview specifically mentions that they don't want to make WINE bypass XWindows so that they keep the nice network transparency. Think about it, reduce the number of machine reboots by running the app on your stable Linux box, and all without the licensing fiasco of WinXP, or even the expense of Win2K. Kind of like the benefits of running Samba: eliminate expensive licenses, increase stability, all without affecting the desktop (significantly).
Quick question, have you ever actually run X on cygwin? I have, and its about as slow as a tortise
Yes, I have, and you're right, it's pretty slow. I don't use it on a day to day basis, but then again there aren't any X apps that I feel I need right now; between Cygwin and natively ported apps, I've got my day to day uses covered. However, current efforts in the Cygwin/XFree project right now include making it use native GDI calls, which I presume will speed it up a lot. They're also apparently having some success getting network audio to work with esound and getting copy and paste to work with windows programs, helping them get ever closer to feature complete. As the KDE 2 project comes along (note that KDE 1.1 already works, although I haven't tried it), I'll be really hyped about trying KOffice on windows! Here's a question for everybody, though: will I be able to run KDevelop on Windows with Cygwin/XFree/KDE (/me drools) or Logic Audio on Linux with WINE first?? Actually, once Emagic releases Audio for native OS X, then it'll probably be time for me to drop Windows once and for all... (I dunno, tho, BSOD is kindof like a brother to me now...)
I personally think that cross platform capabilities are truly one of the cornerstone capabilities of OSS. To me, the developments in WINE and Cygwin are some of the most important in the entire community these days. I know that's a pretty bold statement, but I say that because both of them are major enabler technologies, both making OSS viable to a whole new crop of users. I know that there are a lot of people that have the "Screw Windoze!" mentality, but users and community are the lifeblood of OSS, which is why I feel that these projects are so important. And they've made a lot of progress lately; I don't follow WINE really closely, but did you know that Cygwin can run XFree86, and that a port of KDE 2 is underway? I'm just waiting for the day when WINE and Cygwin can run each other...:) I must admit that I am really keen on Cygwin because it has such a low barrier for entry; it makes it so much easier to introduce my friends to open source and the *nix way. As WINE matures, getting them to upgrade to Linux will be cake: "Run the programs you're used to on a stable OS without M$ license restrictions!"
Is any of this proprietary, or has RH managed to stay comeletely OS? If not, what all pieces are *not* open, and what kind of licenses do they have? I remember some distro went to some kind of per seat licensing lately (or some/. article mentioned they would, but I don't remember who). Also, what RH specific changes are in this gcc? I saw they were using gcc-2.96-RH or something like that, which I presume to be a version RH has tweaked. Why isn't gcc-3.01 being distributed? Does it have major issues?
This is offtopic, but what the hey. I just recently read Neuromancer on the recommendation of almost every geeky friend that I have, and I was stunned. I was stunned that a book that won so many awards and is beloved by so many people turned out to be one of the worst sci-fi books that I've ever read. For point of reference, I've probably read ~100-150 sci-fi books, lifetime, and my faves are pretty standard (but not recent): Dune series, various Heinlein, Clark, Bradbury, and Assimov. In Neuromancer, I found the characterizations, character development, plot, pacing, development, voice, and dialog to be very poor. The narrative was acceptable more than it wasn't, but I don't think that's really a complement. I did actually finish the book as I assumed that that something interesting *had* to happen eventually. I can accept that when it was published, just the idea of a noir near-future was interesting, but to me as a modern reader it just comes off like an admirable first attempt by a capable high school student.
Now, I'm guessing that a fair number of/. readers liked the book and may try and defend it, so before you do, keep a couple things in mind. 1) I'm attacking the book's literary merit (or lack thereof). 2) I'm stating that a book lacking in literary merit and lacking ideas that are new to me (*regardless of whether or not they were new to somebody else at some other time!*) ranks very low on my "quality metric for sci-fi books."
Now, if you feel compelled to argue that Neuromancer does, in fact, have literary merit, then please be prepared to answer a few things: 1) Describe the character backgrounds (ie, information about the characters that occured prior to the events of the work) for Case, Molly, Armitage, and Riveria, in detail. 2) Explain how this correlates to each character's motives for furthering the plot. 3) Explain how the protaganist has grown over the course of the book. 4) Quote us one section of dialog that you found to be particularly well done. I assert that the answer to #1 will comprise about a paragraph, which for four major characters is ridiculous. This, in turn, relates to why #2 is easy to answer, and very, very shallow. I think the answer to #3 is to mumble, "Well, there must be *something*," while flipping through the book. For #4, you may find something. I'm curious as to what it is. I'll probably disagree with you, but then we can agree to disagree, I hope! I also hope that I've managed to substantiate and clarify my position sufficiently to avoid being modded a troll, as this isn't intended as such. If you like the book despite these shortcomings, well, to each his or her own:)
Can anybody clue me in on what relevant patents HP or Apple has, anyway? Did they stand to benefit, or did they just all of a sudden go, "Hello! These might mean that we would have to pay out the nose too!" and make an abrupt about face? If HP and Apple aren't sitting on patents that might cover current or future web standards, who is? The article mentions that they collaborated with M$ for the original proposal, and I presume that they're sitting on more patents than we'd really like to think about. How does adoption of this proposal relate to the possibility of.Net becoming a web standard (if at all)?
I've played around with both Lisp and Scheme (no strong preference either way), enough so that I feel pretty comfortable with the languages and my next step would be to write a minor application. But my lisp compiler sits around unused while I merily do useful (and occasionally interesting) things in Perl, Java, C++,... Why? I think my problem is likely related to why Lisp isn't used much in industry: it's the integration, baby.
Now, I haven't poked around a lot, but what I want to know is, "Where are the libraries? The toolkits?" Perl has CPAN and there are so many C and C++ libraries that I don't want to think about it, and the standard Java libraries are pretty impressive in their scope and breadth (if not in quality or consistency, but I hear they're improving rapidly). All these languages can tie in easily to OS services and tend to play pretty nicely with each other. They have built in support in things like web browsers and web servers. Where is mod_lisp???
My question for you is: do you see any interest in the Lisp or Scheme communities to become mainstream in the first place? Or are they pretty much content with where they're at? Where is the work going on to make Lisp or Scheme competitive with Perl, Python, Java, etc in terms of portability and ubiquity and integration with important other programs (especially web stuff)?
I've spent some quality time with the POET database system and have more recently been using MySQL, both at work (but different companies). Many of the posters are making good points, so I'll just agree with them: flexibility, complexity, performance, skills availability, cost, standardization, and others leave a little something to be desired.
Now, my reasons for not liking existing OODBMS solutions aren't necessarily reasons not to use them. My reasons are twofold, and both revolve around OODBMSs not really being very OO.
Ultimately, an OODBMS is really storing primitive data types in a structured fashion and not much else. It's really storing more of a collection of C style STRUCTs than C++ Classes. The application that uses the database really provides the objects, it's just that the OODBMS makers play cute tricks to transparently (well, sort of) instantiate objects for you initialized with data from it's structured database. This is the heart of a lot of the non-reusability arguments. Now, if an OODBMS got smart and hooked up with something like COM or CORBA, then maybe you'd have something: then an OODBMS could do things that an RDBMS would find really hard.
Related to the point above, OQL and queries and interacting with an OODBMS isn't OO. Again, it's just structs. Basically, to program with an OODBMS, you are forced to violate encapsulation. Say you want to search the database and pull out all of your 3D meshes with a volume greater than V. Now presume that you have conveniently made a mesh class that has a volume function that will iterate through sub meshes and the like to calculate the volume. Encapsulation at work, as you have no need to understand the internal organization of the meshes. So what I'd like to say in OQL is something like this: "SELECT m FROM meshes WHERE m.volume() > V". Unfortunately, the OODBMS has no clue what volume() is. Now, if you had member variables of length, width, and height, you could try: "SELECT m FROM meshes WHERE m.length*m.width*m.height > V". But again, this violates encapsulation really badly. What about spherical meshes? If they actually had an OO query language, then you could really save a lot of time and effort. Otherwise, the advantages of your carefully constructed classes not only don't apply, but they get in the way.
I guess in summation, I think OODBMSs could be really cool. I'd like to see an open source one at the same level of quality as MySQL (and yes, I would consider contributing, I'm just not an expert in such things). But until then, the cost and non-standardization will keep me away from them except for fun.
A lot of posters are happy to tell you what they would have done or did do. Don't read too much into it. What I would do in your shoes isn't too relevant. Really. Seriously. This problem isn't really so hard. There's pros, cons, and alternate paths. The responses here are the normal, overwhelming, western culture group think--Go to college because it 1) Is Good For You, 2) Opens Doors, 3) Is Fun, or 4) Come on Everyone Else is Doing It! Now, I'm not about to tell you not to go to college, but that you must do a cost benefit analysis. So, here's a few points to stew on:
1) How much will it cost for you to go to college, actual out of pocket expense. Factor in your lack of income over the time you're there.
2) What else could you do with that money? You could travel, get a motorcycle, pay for living expenses while you devote yourself to music, martial arts, or developing open source software.
3) If you went to college, what would you want to get out of it?
a) If it's life experience, reconsider point #2. Note that you could go to college for a year, ride around on a harley for a year, devote yourself to jujitsu for a year, etc. They don't have to be exclusive.
b) If you want skills and knowledge, well, this is a loaded problem. You can get these at college, but it's up to you to take them. The problem is that Universities have a stranglehold on important resources--knowledgeable people, good libraries, and similarly interested people. It can be very difficult to find these elsewhere.
c) There's many other reasons you might want to go. Identify them, and consider how else you might accomplish the same thing with the money you would spend on college. Which is more attractive?
4) You can go to college anytime. Really. But you may only be able to go once, depending on finances. Don't go until you know it's what you want. If there's any doubt, don't go. Wait. Or, go for a year to try it.
5) Actually, whichever you pick, do it for a year, then switch. The only way for you to really know is to try them both.
6) Would you ever really want to work for somebody that will make decisions based on your pedigree rather than your work? A degree would open at least some doors, but as Morpheus said, "I can only show you the door." Would you really want to walk through it?
In short, think about what you want, and put together bids for yourself from various "life paths". If you don't know what you want, think about how to discover this, and put together bids on that. Make sure you limit your discovery period to a time period that you're comfortable with--I mean, you probably don't want to spend 10 years on it, so make sure each bid has an exit strategy.
And lastly, one piece of useless advice. You do know everything. You do have all the answers. The rest of us are disgruntled because we got stoopid and may try and convince you that you don't know everything. Don't listen to us.
I just wanted to point out that asking about something like the STL here on /. will not give you much breadth of opinions on the matter. When it comes to programming and software development, /. has a high concentration of scripting language users for web site backends and administrative tasks, and a relatively small number of "application" developers. There are also a disproportionate number of systems programmers. From reading /., you might get the impression that C++ is not very widely used. While this is true in the Open Source world where there are many *many* more viable options, commercial software development is still pretty dominated by C++ with Java seeing use in some sectors. So what's the takehome message here? Even given /. bias, you're still getting a pretty positive response to STL. Anyway, here are a few things you should know:
1) Get STLPort. Use STLPort. STLPort addresses many, many, STL issues. They add extra nice classes like hash tables. STLPort is thread safe. STLPort has nice extra debugging features. STLPort has readable code. STLPort is PORTABLE (thus the name!). OpenOffice uses STLPort, in case you're still dubious.
2) Get a couple of STL books. There aren't any really good ones (IMHO), but it's handy to have a printed reference with some examples.
3) You wanted downsides, so here's one. You will have to learn STL. Not the library, but the techniques--the API is easy. You have to write your own C++ classes well to take really good advantage of STL. The way you leverage the STL for absurd productivity is through generic programming and STL's pluggable component architecture. Still, though, even you all you ever use is map, string, and streams (or some other subset), you'll probably become a convert.
4) STL will keep getting better to use. Other people have mentioned it, but look at Boost for some ideas about where STL is headed. Also, the compiler people are aware of and are working on the error message and debugging problems. Both VC++.Net and gcc 3.x are making progress here.
I must say that I am pleased as punch with this update, as it gives me my most desired /. feature. It's a little roundabout, but I can do it now! I personally hate all of the idiots who accumulate lots of karma and post at +1. It drives me freeping nuts. Why? Because they post drivel so much. I wish that /. made you spend your karma to give yourself +1, so that you couldn't do it perpetually unless you kept getting modded back up. Alternatively, I wish that I could ignore the +1 self moderation. Basically, I only want to read the posts that have gotten some kind of positive moderation, but I never wanted to nix the people who only get modded to +2 just to avoid the +1 posters.
So, now, with the moderation customization, I give all the positive moderation types +1, and set my filter at +3. Bingo! I have filtered out all of those lame +1 posters. Happy Day!
Wow, I see one actually sane comment in this whole thread, and it's not even modded up. First off, let me state that the people that post on /. aren't necessarily the technological savants that you might presume them to be. You've asked a loaded question on a forum where you're guarunteed to have a poor signal to noise ratio: a lot of people have something to say, but the moderators can't tell who knows their arse from a hole in the ground. It might be fun for everybody to come out and rant or give you advice, because, hey, everybody likes to rant or think they know better than you. Ok, not everybody, but enough people to keep /. lively.
Anyway, point is, as per usual, most of the posts here are arguments that probably aren't real helpful for you. I'm going to read between the lines hear and guess that you're real question is, "Should I bite the bullet and learn OO?" Now, you kind of have to make a choice (unless you're one of the lucky few that can have it all): do you want to be an engineer that programs, or a programmer that knows engineering? Let me put it to you this way: most professional programmers are average. Early proponents of OOP mistakenly believed that OOP would make programmers better, and this thought still lingers in many places. OO, like any problem solving paradigm, will help those who use it well and hinder those who wield it poorly.
I'd like to try and clarify one other thing, too. A problem solving methodology like OO is just that. A problem solving methodology. And like any problem solving scheme, it has a lot more to do with how the problem solver thinks, and not so much the problem being solved. So, if you like OO, go for it. If not, don't. Either way, unless you really care a lot (or again, if you're one of those lucky ones), you won't be good at it. It won't help you get work done easier and there's a good chance that it will make your work more difficult.
Besides that, all I can do is describe how *I* would solve your problems, which doesn't help you much. It would take you a long time to gain the expertise to understand my solution, much less how I got there, much less being able to get there yourself. There is no One True Way. Good luck!
There's a few things that I'll say. One, not a single person posting here really knows what your situation is (well, unless your coworkers read /. and are posting advice for you...). I don't want to be mean, but most of what's been posted here is likely not applicable to your situation. For starters, ignore all the threads arguing over languages: they'll never agree, and in the meantime you have work to get done. Next, I would suggest ignore all of the posts from people who aren't talking about web sites. There's a lot of methodology recommendations there, and it takes a long time to really understand *any* methodology. So if you don't already know it, it won't help for *this* project. If you're interested in that kind of stuff, read up on it; maybe it'll be useful on a future project.
:)
Next, no matter what you decide, from your current position, there's substantial risk involved. If you don't have a good way of estimating the costs and benefits of your alternatives, then you will wind up shooting in the dark no matter what you choose. This isn't really unusual, but it can be stressful! Somebody in management has to decide if they want to play high stakes poker with this project. This will establish how many nice risk mitigating activities you can budget (like unit tests, code reviews, documentation, etc). One thing a lot of technology people have difficulty grasping (this isn't directed at anybody in particular), is that if your management decides on a high risk course of action, it's not WRONG because it's technically inferior. Now, if management doesn't understand that it's a high risk proposition, then there's a communication failure somewhere that will screw you no matter what gets chosen.
Ok, now that you've decided where you're going, I've got 3 pieces of useless advice (all advice is useless advice, btw...)
1) Know your priorities. This is the most important thing to getting ANY solution.
2) Understand your requirements(I don't care how you do this). This is the most important thing to getting (close to) a CORRECT solution.
3) Remember it's only a job. This can be very important for retaining sanity
People say "I want benefit X, what hardware, Y, do I need to accomplish that?" And that's why Windows will continue to exisit.
I'm not sure I understand; you're saying Windows will continue to exist because of hardware compatability?
Windows will not be dying anytime soon (unless MS just renames it, not likely). And like it or hate it; people look at an OS based on a command line and say: "ick, why would I want that?". Granted, a modern distro hides most of that; but when the tough gets going the command line is the place you really have to go.
Ok, in a post talking about waaayyy out in the future, this comment is just trolling. I encourage you to take a look at what Linux was like 5 years ago, and plot some growth curves, especially relating to percentage of commands having a GUI interface (since that's what you're talking about). I'll even let you get away with stock distros, ignoring the many projects on SourceForge.
Linux/Wine will not dominate Windows anytime in the next 5-15 years. Its not going to happen.
I don't like getting into the prediction business, but there's one thing that I can say with a lot of certainty: predictions for more than 2 or 3 years out are complete bunk. We can make some pretty good predictions for Linux over the next two years, as that time frame includes finishing a lot of projects currently under way. Of course we're still going to miss a lot of things. Do you have any idea what the kernal team will be working on 3 years from now? Me either. Same goes for KDE, GNOME, WINE, StarOffice, Mozilla, Apache, etc etc etc. But whatever they're starting 3 years from now will likely finish in the 5 year time frame.
First, the applications are not there and won't be there because developing for the Linux Desktop is difficult.
I'm starting to wonder, (this is an honest question because I think you were serious) do you know what a growth curve is? We, as the Linux developer community, are right at a nexus: the tools, the platforms, and the libraries have started to mature. Developing for the Linux Desktop is getting easier as time goes by. 2002 will see major advances in both KDE and GNOME, as well as developer libraries like wxWindows, and Mozilla will emerge as a development platform. Hordes of new applications will be started during this time. Of course, many of them will fail or suck (or both), but that's true everywhere.
Second, fundamentally Linux has been designed and continues to focus around flexibility over ease of use.
I call bullshit. Fundamentally, Linux hasn't been designed at all! Read some of Linus's comments about how Linux has evolved. About flexibility over ease of use, I think that you are way over generalizing. Did you see the recent article about GNOME 2.0? Check out this link for the GNOME Usability Project.
And Third and Finally, Microsoft owns the desktop OS market, has a vast mindshare (how many newbies do you know think MS is the computer?) and continues to improve it's products.
I think that over time and across a large segment of the population, consumers have shown again and again that a) they are very price sensitive, and b) that brand loyalty is finicky at best. I do believe that when the next version of Windows comes out, that MS will actually have to compete. About MS continuing to improve its products, I encourage you again to examine growth curves. Examine the difference between WinXP and Win95. Then look at RH 7.2 and say RH 4. Look especially at the differences in how much you can do, how easy it is to install, and how easy it is to use with a default install. Ok, now project out along these same growth trajectories for a gut level sense of where we'll be five years from now. Now, Linux will continue to be Free (and a distro cheap). All I can say is that it's going to be fun to watch and that there's no guaruntees.
This is great for anything that can take advantage of multiple channels on the same wire. I do a lot of MIDI composing, and recording the synthesized sounds is a pain: I have to play back each track and record it individually. I've always wondered why they don't just pop an ethernet port on a keyboard and let me do full duplex 16 channel recording.
Here's my music technology wishlist: 1) a single, standard cable interfacing to a synth that handles MIDI, Audio, and data (for sample sets, setups, programs, etc); 2) an arbitrary number of channels up to the capabilities of the synth (ie, MIDI only doing 16 channels is obnoxious); 3) an uber-mixer that'll take analog and digital in, spit analog and digital out, lets me connect to my computer with ONE cable supporting 128 stereo channels and letting my computer control all mixing functions, dedicated DSP, and the ability to save setups from your computer and recall them from an LCD (like keyboards, in this respect). This way, I can plug in all my instruments into 1 mixer (1 cable for each). Plug one cable into my computer, presto, I have a recording studio. Go to a live gig, tap a button, presto, preconfigured levels and mix ready to be tweaked for the environment. If you play the same place a lot, you could even save your tweaks. This might sound far out, but I think it's a fairly natural extension of current recording studio in a box solutions.
I'm amazed: there's tons of comments, but no one seems to have explained what this is all about. First, regarding Cygwin:
1) It is mostly used by developers, IT people, and other techincally inclined folk. It's not going to be interesting to Joe Sixpack for quite some time.
2) It is just as much a Linux compatability thing: as a windows developer, if you work in Cygwin, it'll make porting to Linux that much easier. Kinda related, it lets windows developers work on software meant for Linux. Think of it this way: a windows programmer can add a feature to say, PostgreSQL, that you can then use in Linux.
3) There's a sh*tload more windows programmers out there. Making it easy for them to improve Linux is a win.
4) The official Cygwin distribution only comes with a handful of packages, campared to say, Debian. This number will stay small. Right now, as a Cygwin user, there are a lot of Linux apps that will compile OOTB, and a lot that don't. This is a pain.
Enter Deb/W32. The idea is for a group of people to collect together a bunch of packages that work on the target platform and make them easy to install. This saves the Cygwin user from hunting around for source only to find it doesn't compile.
About stealing Linux users: A significant portion of Cygwin users already use a *nix; they're just porting their software. This is where the Wine thing is important: by running Cygwin on top of Wine, you can make (and test, etc) a window's executable without ever touching non-free software. For the rest of them, imagine two or three years from now: Linux is still free, and Windows still isn't. BECAUSE THEY'VE BEEN USING CYGWIN, Linux now does what they need. It's a no brainer "upgrade." Really, this is a win for everybody.
I'm willing to bet that most of the posters on here saying that using more than one language isn't a good idea (for whatever reason) haven't done much web programming. For a fairly normal browser plugin project that I worked on, we used the following:
1) C++ for the actual plugin.
2) JavaScript for webpages embedding the plugin.
3) Perl for CGI backends.
4) SQL (duh).
5) Wise Installer script for the installer
6) Delphi (Pascal) for a game builder app that made games to be played in the plugin. This app loaded the plugin as a normal dll.
If you're doing integration between technologies, you'll almost invariably wind up using different languages. Often times, you have no choice. Also, this isn't meant to be offensive, but people that think C/C++ is one language are naive. Generally, you have to ship clients executables, so you're limited to languages that compile natively (with the possible exception of Java). You generally can run whatever you want on your own servers. Then you have web browsers that are their own funky platform. If you can get away with using only one language, congratulations!, but don't expect that all the time.
Um, I just wanted to point out that the Resident Evil series is now a Nintendo EXCLUSIVE series! Only coming out on the GameCube from now on. See this link at ign. And, by all accounts, Star Wars Rogue Squadron: Rogue Leader is likely to be one of the best selling games this Xmas, and it's not exactly a kids game. I also don't think it would be fair to call Wave Race: Blue Storm, Tony Hawk 3, Crazy Taxi, or Madden NFL 2002 kids games. All of these are massively popular franchises. All of these are coming out at the GC LANUCH. In fact, of the roughly 15 or so launch games, only 1 of them is really a kids game. So I politely request that you do a little research before deciding what consoles you do or do not have any interest in.
It's probably too late for this to be seen by anyone, but I thought I'd post for posterity. I think that it is imperative that *somebody* take a hardline against non-free software. That person is RMS. I don't think it's hard to understand why promoting proprietary software is in bad taste for a free software project. There's a fairly basic principle for free software: they don't collect money, they collect mindshare. Mindshare is the free software world's currency. The more mindshare a project has, the better it does (modulus poor management). So, it's not so much that proprietary software is "bad," but by using it, you aren't helping out the community (in that application area). If enough people do this, it can seriously hamper a free project's ability to attain critical mass. And, personally, as a user, I would prefer that all of my software be free. This in turn means that I would prefer that you use free software. Now, I'm not real vocal about it. But I'm damn glad that RMS is.
Hmmm, I had a lot of problems with .94; .93 was much better. Of course, .95 is better than both of them, but I understand how the pipeline must work on things like this. I'm running on Windows [ducks] and I really, honestly, like Moz better than IE 5. A long time ago I switched from NS to IE because it was better. Granted, I'm running IE 5, but I don't trust MS enough to upgrade; I crash enough as it is. While I have observed occaisional rendering problems (at espn) and occaisional slowness, I crash less often and suffer less system instability with Moz. And you know what's really weird? I actually look forward to each new release! The introduction of the tabbed interface in .95 is great; I use it exclusively now, saving RAM and window clutter. And I'm only just now learning about the customizations available--it's pretty extensive. For example, you can reskin ChatZilla with a simple CSS file, you can disable javascript pop-up windows, you can save "screensets," and much more that I haven't learned yet. By the time Moz hits 1.0, not only will it be faster, more stable, and more compliant than IE, it'll have a very competitive (or maybe even dominating) feature set. Well, kudos to the Mozilla team, and to Netscape!
There's a lot of talk in this thread (and related ones, recently) about the catch-22 of games needing user-base and user-base needing games. It's the same problem for all proprietary software, not just games, but in other application areas the community gets together and starts working on open alternatives. It's also a perennial pasttime of gamers these days to sit around and whine about corporatization of games and how Tomb Raider 16 really sucks yet still sells a bazillion copies while [insert favorite game] languishes in the clearance bin.
So I want to know, where are the open source games? Yes, I know about FreeCraft and QuakeForge, but yes, well, and?? Nethack is cool, and I think it really makes a good demonstration of the possibilities for OS games, but I think we'll all agree that something a little more modern is in order. Between SDL and CrystalSpace, I think it's high time us gamers got together and started making our own game market instead of waiting around for the Windoze gaming sheep to bring Who Wants to be a Billionaire XXIVIVM to Linux. If we can get say 10-15 major gaming projects underway with a decent spread of genres, these libraries will get really worked and improve really damn fast. Then it's off to the races, the way OS builds momentum. I know we all want our games and we want them now, so here's what I propose: for every dollar you spend on a proprietary game, give 10 cents to an open source gaming initiative. I, for one, believe that open source can innovate in games 10 times more than bean counters...
Oh, and for the record, yes, I just downloaded and built the latest CrystalSpace and am playing around with it a little, and yes I have some game ideas...
when looking on their about page, they claim:
/. to verify that it's a hoax? I mean, MIT CS Labs has done some cool things, but a complete OS lightyears ahead of its time compatible across multiple hardware platforms and taking into account real world concerns like an office suite??? And in secret! And did I mention real world concerns in an academic lab? Like my subject says, I assumed it was a humor site, but now I'm just not sure. I'll be curious for a follow up from the slant-six people explaining what's up.
"Slant-Six magazine is a valiant attempt to revive the principles that guided the magazines of old: thoughtful writing, original content and high standards."
Which makes me wonder why they're posting a story that is so obviously a hoax. Really, how many people needed the MIT readers of
I run X on Cygwin on a daily basis
[snip...]
First, I'm confused, why did this post get modded down?
But you reminded me of something else that I'd really like to try: running a WIN32 app through WINE remotely through an X-client on windows, specifically the unstable 9.x series. The interview specifically mentions that they don't want to make WINE bypass XWindows so that they keep the nice network transparency. Think about it, reduce the number of machine reboots by running the app on your stable Linux box, and all without the licensing fiasco of WinXP, or even the expense of Win2K. Kind of like the benefits of running Samba: eliminate expensive licenses, increase stability, all without affecting the desktop (significantly).
Quick question, have you ever actually run X on cygwin? I have, and its about as slow as a tortise
Yes, I have, and you're right, it's pretty slow. I don't use it on a day to day basis, but then again there aren't any X apps that I feel I need right now; between Cygwin and natively ported apps, I've got my day to day uses covered. However, current efforts in the Cygwin/XFree project right now include making it use native GDI calls, which I presume will speed it up a lot. They're also apparently having some success getting network audio to work with esound and getting copy and paste to work with windows programs, helping them get ever closer to feature complete. As the KDE 2 project comes along (note that KDE 1.1 already works, although I haven't tried it), I'll be really hyped about trying KOffice on windows! Here's a question for everybody, though: will I be able to run KDevelop on Windows with Cygwin/XFree/KDE (/me drools) or Logic Audio on Linux with WINE first?? Actually, once Emagic releases Audio for native OS X, then it'll probably be time for me to drop Windows once and for all... (I dunno, tho, BSOD is kindof like a brother to me now...)
I personally think that cross platform capabilities are truly one of the cornerstone capabilities of OSS. To me, the developments in WINE and Cygwin are some of the most important in the entire community these days. I know that's a pretty bold statement, but I say that because both of them are major enabler technologies, both making OSS viable to a whole new crop of users. I know that there are a lot of people that have the "Screw Windoze!" mentality, but users and community are the lifeblood of OSS, which is why I feel that these projects are so important. And they've made a lot of progress lately; I don't follow WINE really closely, but did you know that Cygwin can run XFree86, and that a port of KDE 2 is underway? I'm just waiting for the day when WINE and Cygwin can run each other... :) I must admit that I am really keen on Cygwin because it has such a low barrier for entry; it makes it so much easier to introduce my friends to open source and the *nix way. As WINE matures, getting them to upgrade to Linux will be cake: "Run the programs you're used to on a stable OS without M$ license restrictions!"
Is any of this proprietary, or has RH managed to stay comeletely OS? If not, what all pieces are *not* open, and what kind of licenses do they have? I remember some distro went to some kind of per seat licensing lately (or some /. article mentioned they would, but I don't remember who). Also, what RH specific changes are in this gcc? I saw they were using gcc-2.96-RH or something like that, which I presume to be a version RH has tweaked. Why isn't gcc-3.01 being distributed? Does it have major issues?
This is offtopic, but what the hey. I just recently read Neuromancer on the recommendation of almost every geeky friend that I have, and I was stunned. I was stunned that a book that won so many awards and is beloved by so many people turned out to be one of the worst sci-fi books that I've ever read. For point of reference, I've probably read ~100-150 sci-fi books, lifetime, and my faves are pretty standard (but not recent): Dune series, various Heinlein, Clark, Bradbury, and Assimov. In Neuromancer, I found the characterizations, character development, plot, pacing, development, voice, and dialog to be very poor. The narrative was acceptable more than it wasn't, but I don't think that's really a complement. I did actually finish the book as I assumed that that something interesting *had* to happen eventually. I can accept that when it was published, just the idea of a noir near-future was interesting, but to me as a modern reader it just comes off like an admirable first attempt by a capable high school student.
/. readers liked the book and may try and defend it, so before you do, keep a couple things in mind. 1) I'm attacking the book's literary merit (or lack thereof). 2) I'm stating that a book lacking in literary merit and lacking ideas that are new to me (*regardless of whether or not they were new to somebody else at some other time!*) ranks very low on my "quality metric for sci-fi books."
:)
Now, I'm guessing that a fair number of
Now, if you feel compelled to argue that Neuromancer does, in fact, have literary merit, then please be prepared to answer a few things: 1) Describe the character backgrounds (ie, information about the characters that occured prior to the events of the work) for Case, Molly, Armitage, and Riveria, in detail. 2) Explain how this correlates to each character's motives for furthering the plot. 3) Explain how the protaganist has grown over the course of the book. 4) Quote us one section of dialog that you found to be particularly well done. I assert that the answer to #1 will comprise about a paragraph, which for four major characters is ridiculous. This, in turn, relates to why #2 is easy to answer, and very, very shallow. I think the answer to #3 is to mumble, "Well, there must be *something*," while flipping through the book. For #4, you may find something. I'm curious as to what it is. I'll probably disagree with you, but then we can agree to disagree, I hope! I also hope that I've managed to substantiate and clarify my position sufficiently to avoid being modded a troll, as this isn't intended as such. If you like the book despite these shortcomings, well, to each his or her own
Can anybody clue me in on what relevant patents HP or Apple has, anyway? Did they stand to benefit, or did they just all of a sudden go, "Hello! These might mean that we would have to pay out the nose too!" and make an abrupt about face? If HP and Apple aren't sitting on patents that might cover current or future web standards, who is? The article mentions that they collaborated with M$ for the original proposal, and I presume that they're sitting on more patents than we'd really like to think about. How does adoption of this proposal relate to the possibility of .Net becoming a web standard (if at all)?
I've played around with both Lisp and Scheme (no strong preference either way), enough so that I feel pretty comfortable with the languages and my next step would be to write a minor application. But my lisp compiler sits around unused while I merily do useful (and occasionally interesting) things in Perl, Java, C++, ... Why? I think my problem is likely related to why Lisp isn't used much in industry: it's the integration, baby.
:)
Now, I haven't poked around a lot, but what I want to know is, "Where are the libraries? The toolkits?" Perl has CPAN and there are so many C and C++ libraries that I don't want to think about it, and the standard Java libraries are pretty impressive in their scope and breadth (if not in quality or consistency, but I hear they're improving rapidly). All these languages can tie in easily to OS services and tend to play pretty nicely with each other. They have built in support in things like web browsers and web servers. Where is mod_lisp???
My question for you is: do you see any interest in the Lisp or Scheme communities to become mainstream in the first place? Or are they pretty much content with where they're at? Where is the work going on to make Lisp or Scheme competitive with Perl, Python, Java, etc in terms of portability and ubiquity and integration with important other programs (especially web stuff)?
Thanks for your time
Now, my reasons for not liking existing OODBMS solutions aren't necessarily reasons not to use them. My reasons are twofold, and both revolve around OODBMSs not really being very OO.
- Ultimately, an OODBMS is really storing primitive data types in a structured fashion and not much else. It's really storing more of a collection of C style STRUCTs than C++ Classes. The application that uses the database really provides the objects, it's just that the OODBMS makers play cute tricks to transparently (well, sort of) instantiate objects for you initialized with data from it's structured database. This is the heart of a lot of the non-reusability arguments. Now, if an OODBMS got smart and hooked up with something like COM or CORBA, then maybe you'd have something: then an OODBMS could do things that an RDBMS would find really hard.
- Related to the point above, OQL and queries and interacting with an OODBMS isn't OO. Again, it's just structs. Basically, to program with an OODBMS, you are forced to violate encapsulation. Say you want to search the database and pull out all of your 3D meshes with a volume greater than V. Now presume that you have conveniently made a mesh class that has a volume function that will iterate through sub meshes and the like to calculate the volume. Encapsulation at work, as you have no need to understand the internal organization of the meshes. So what I'd like to say in OQL is something like this: "SELECT m FROM meshes WHERE m.volume() > V". Unfortunately, the OODBMS has no clue what volume() is. Now, if you had member variables of length, width, and height, you could try: "SELECT m FROM meshes WHERE m.length*m.width*m.height > V". But again, this violates encapsulation really badly. What about spherical meshes? If they actually had an OO query language, then you could really save a lot of time and effort. Otherwise, the advantages of your carefully constructed classes not only don't apply, but they get in the way.
I guess in summation, I think OODBMSs could be really cool. I'd like to see an open source one at the same level of quality as MySQL (and yes, I would consider contributing, I'm just not an expert in such things). But until then, the cost and non-standardization will keep me away from them except for fun.