DIMITRI: If you will not fix rot13 encryption, we shall publish an exploit! ADOBE LAWYER: You don't frighten us, Russian pig-dogs! Go and boil your bottom, sons of a silly person. I blow my nose at you, so-called Dimitri Hacker, you and all your silly Russian k-nnnnniggets. Thpppppt! Thppt!Thppt! SLASHDOT: What a strange company. DIMITRI: Now look here, my good man-- ADOBE LAWYER: I don't wanna talk to you no more, you empty headed animal food trough wiper! I fart in your general direction! You mother was a hamster and your father smelt of elderberries! SLASHDOT: Is there someone else up there he could talk to? ADOBE LAWYER: No, now go away or I shall sue you a second time-a! ADOBE EMPLOYEE #1: I didn't know we were Idiots? ADOBE EMPLOYEE #2: Of course, why else do you think we are protecting this ridiculous algorithm?
For personal use, I have a Sony Vaio running WinXP. My wife has an Apple iBook running MacOS9 (upgrade coming soon). A laptop supplied by the company is an HP Omnibook XE3 currently running Gentoo Linux, but w/o X11 set up due to lack of free time.
I chose the Vaio/XP combo over a TiBook/OSX combo due to $$$, although I am a Mac fan and have owned several Mac systems in the past.
From what I've seen, the QA/QC factor of Windows systems has improved (I have yet to see a BSOD on my Vaio), while Apple's has declined, though ymmv. My wife's iBook's trackpad frequently spontaneously changes the speed setting to the slowest possible and suffers from numerous system freezes and crashes. I contrast this with my long-gone PowerBook Duo 270c which never had serious problems in spite of the fact that I voided the warranty by opening the case and installing a GV Mercury 19.2 modem myself.
My feelings toward Linux/BSD/Solaris are love/hate. I don't want to be system admin. Yes, I know that I have to build the OS from scratch with the Gentoo distro, but it seemed that esoteric things like, oh, a laptop system with USB, or 1394 or other things required some kind of patch and a few hours searching the Internet trying to find someone's HOWTO and config files and doing a kernel recompile, etc. etc. etc. anyway. I have tried a few Linux distros and, surprisingly, the only clean out-of-box install I got was with MkLinux on an Apple PowerMac 6100. Go figure!
Personally, I don't care about the OS. I want to get work done or play games or design application software. If the tools work and the platform is stable and I can find a Java VM to that I can, indeed, Write Once and Run Everywhere (tm) then I am a happy camper.
Do I like M$ business practices? No, but that wasn't the question, was it?
Although I understand your sentiment, not only did Ted Williams defend his country in two wars, or one war and one "police action", he also did a lot of work for the Jimmy Fund, a charity that supports the Dana Farber Cancer Institute (back then it was called the Children's Cancer Research Foundation). I wouldn't characterize that as someone "who for the most part didn't do a damn thing to really and truly improve our lives."
I've been a software engineer for 15 years. I graduated from the University of Lowell in 1987 with a BSCS. I received a 4-year award in Mathematics and a 4-year award in Computer Science from Dracut Senior High School in 1983 (the latter being a misnomer as there were no CS courses in my high school freshman year). My first language? BASIC, on a DEC PDP11/44 running RSTS/E.
So does this mean that I'm tainted goods, scattering GOTOs throughout my C, C++ code? Does this mean that I don't specify arguments to functions, instead trying to mimic GOSUB statements? Certainly not.
There are many different approaches to learning a new discipline. One method is to expose the student to "hard lessons" up front in order to burn basic principles into their memories. Another is to expose students to basic principles gradually, so as to build their confidence and spark their imaginations. This difference in method, I believe, is more important than which language is being used.
I am 35 years old. I am a gamer. I do not play computer games. They are boring. There I said it. Whew! I feel so much better now.
My first gaming memories were my father teaching me to play chess at the age of 4. He gave me books to read to help, "Chess Self-Teacher" being one of them. Though my reading levels weren't good enough to take in all the information in the books, the chess diagrams were wonderful. By the age of 5, I was beating my 30+ year old uncles and writing solitaire games in chess notation, descriptive, not the algebraic.
Soon came Monopoly, Scrabble, Clue, and a host of others. My role among the neighborhood kids was in reading the rules and teaching other kids to play. Solitaire games are boring.
By the time I was 13, I discovered wargames from such publishers as Avalon Hill, SPI and the like. At 15, I was playing RPGs, mostly AD&D from TSR.
Now, I own over 100 wargames and run a gaming club in Massachusetts. Gaming is fun, instructive and all the other wonderful things you talk about.
However, I find most computer games to be glorified eye candy. Additionally, I can't seem to justify the cost of the game versus the cost of the old-fashioned cardboard and paper wargames I currently play. Here's why:
1. Platform problems. My Performa 6116CD, even with its NewerTech upgrade card, can't seem to run most games. Why? (1) Most computer games are for the PC. (2) Current computer games require faster graphics cards. So now I have to purchase the latest and greatest computing platform (Windoze to ensure maximum flexibility in titles purchased). Paper wargames only need one platform: a table. You buy the game and find a flat surface to play on. No upgrading necessary.
2. Errata. Computer wargames need patches. Some need excessive support. Paper wargames can be fixed with a pencil.
3. Viewing area. Computer games are limited to the user's monitor size. Paper wargames, such as Europa, can have maps up to 8-10' on a side. Yes, feet! Try viewing this playing surface on even the largest computer monitor.
4. Context. Most computer games lack a historical context. The strategies are simplistic. One notable exception that I've seen in the news is a game called Europa Universalis (not related to Europa). This computer port of an existing paper wargame adds a credible AI engine and supports multiple players. Hopefully, this is the wave of the future. But, take note, what makes this game exciting is the function, not the form.
I could go on. In short (too late!) I prefer substance to flash. Give me exciting strategic situations. Shoot-em-ups in a maze searching for treasure, points or what-have-you is definitely not.
Teddy Roosevelt was President of the US from 1901-1909.
Franklin Roosevelt was POTUS from 1933-1945.
I'm not quite sure how US history from 45-60 fits in.
As far as the Stalin comparison is concerned, I'm not sure how you arrived at your judgement. Stalin slaughtered MILLIONS OF HIS OWN PEOPLE before WWII even started.
(I recently read an article about him in the latest issue of Military History Quarterly.)
During the Depression years, competent staff generals like Marshall languished in out of the way posts while prima donnas like MacArthur were running the Army. What did Marshall do at his lackluster post? He set up work and education (literacy) programs for the local soldiers and civilian population, even though it did little for his career to do so. Seeing what the Depression was doing to those around him, he decided to reach out and help them.
Disliking a person because of their title (race, sex, etc), without trying to get to know who the person is and what they've done, is just the sort of pre-conceived judgement that this world can do without. This century, this millenium, has seen enough of that. Haven't we figured this out yet?
After reading the article and the posts, I feel compelled to share my thoughts and experiences with both languages.
I've been a software engineer for 13 years. My first exposure to C came during a junior year course, Survey of Programming Languages, at ULowell, now UMass/Lowell. Once exposed, there was no going back. I was hooked. IMHO, it was so much better than Pascal. Once exposed, my Turbo Pascal went back to the bookshelf, never to be used again.
My initial exposure to C++ came during my senior year. I was enrolled in a compiler design course and the professor was a Modula-2 fanatic. Since half of the class were budding C gurus, he relented and allowed us to use "this new language", C++. We shelled out the $$$; he went to the Harvard Coop to buy copies Stroustrup's book.
I was impressed by the differences between C and C++. I particularly liked the organizational improvements that class definitions had over struct definitions. I found it a joy to code.
The project for the course was to build a Pascal-subset compiler. We couldn't use global variables and all functions, except for the tokenizer, had to fit on one page of hard copy printout. At the end of the course, he ran informal benchmarks for our compilers in terms of output size and compilation speed. My C++ compiler was the fastest and 3rd in efficiency!
Fast forward to the real world. After working for Omtool and Phoenix Technologies coding C and x86 assembler respectively, I worked as chief software engineer at Image Concepts. As chief software engineer, I was to design and develop their image cataloguing database product. To do so, I had the freedom to pick and choose the development tools and platforms for development. Since our product was slated to run on Unix/X11, Mac System 7 and Win3.x systems, I chose C. Again, portability, and the fact that Unix shipped with free compilers and Image Concepts was a very small company...
Once I started working at Pegasystems, after 6 years at Image Concepts, C++ became the language of choice, both for day job and night coding. Why? Code organization. Even though I wrote my C code in a C++ style, first argument to functions written for a particular struct was a pointer to a variable of that struct, C++'s constructors, destructors and exceptions made error management much, much better.
Typical C function (pseudo-code):
open file if error: return alloc memory if null: close file and return read from database if error: free memory, close file and return do something else if error: yada, yada, yada...
C++: open file object if error: return init buffer object if error: return (file object destructor closes file) read using database object: if error: return (buffer object frees memory, file closed)
-or- throw exception on error, which will also call destructors
You get the idea. When using C, I spent more time writing error management code than writing the algorithm. Worse, the algorithm was hidden amongst the error checking and management code. In C++, I build my libraries of well-designed classes and exceptions and, wow, you can actually see the logic. What a concept!
C++ isn't perfect, particularly some implementations. However, now that the language has been standardized, it should become more portable.
Languages are tools. We use them to design apps. We use the compilers to build the apps. Some are better than others in some areas. Each has a place. I use C++ for systems programming. I use Perl for CGI programming. For pattern parsing and portable scripting, Perl gets the nod. For outright speed, C++ gets the nod.
Is C better than C++? Vice versa? Is Java better? Is C++ purely OO? Does it really matter? Just pick a language, write the app, and distribute your work and add some value to the computing community at large. 'Nuff said.
One caveat to note regarding C++: templates and shared libraries are a bitch to implement well, that is, if you don't want multiple copies of stack scattered throughout your libraries. Both Visual C++ and Metrowerks CodeWarrior had ways of working around this, to have stack in one library and have other libraries link back to the first one, but the syntax each used were extensions off of standard C++. I don't how G++ will handle this.
I have a lowly 6100 with NuBus. I have MkLinux on it, as well as MacOS 8.1.
Unfortunately for me, noone supports the NuBus and/or the 601 anymore. Can't run BeOS, NuBus isn't supported. Can't run LinuxPPC, ditto. OS X? Yeah, right. While Apple could port the NuBus/601 support from MkLinux into OS X, they probably won't in order to spur upgrade sales.
Ditto for the MacOS upgrade path as well...
If I could just get my hands on a PPC mobo and build my own system, like I did with a K6 CPU...
Lazy? The USA is lazy?!
I'd respond to this if I wasn't so early in the morning.
[monty python reference]
DIMITRI: If you will not fix rot13 encryption, we shall publish an exploit!
ADOBE LAWYER: You don't frighten us, Russian pig-dogs! Go and boil your bottom, sons of a silly person. I blow my nose at you, so-called Dimitri Hacker, you and all your silly Russian k-nnnnniggets. Thpppppt! Thppt!Thppt!
SLASHDOT: What a strange company.
DIMITRI: Now look here, my good man--
ADOBE LAWYER: I don't wanna talk to you no more, you empty headed animal food trough wiper! I fart in your general direction! You mother was a hamster and your father smelt of elderberries!
SLASHDOT: Is there someone else up there he could talk to?
ADOBE LAWYER: No, now go away or I shall sue you a second time-a!
ADOBE EMPLOYEE #1: I didn't know we were Idiots?
ADOBE EMPLOYEE #2: Of course, why else do you think we are protecting this ridiculous algorithm?
[/monty python reference]
$5K for a ring? Damn!
I spent way less than that, but I was only 23 when I got engaged. Lower income = lower expectations regarding ring price.
For personal use, I have a Sony Vaio running WinXP. My wife has an Apple iBook running MacOS9 (upgrade coming soon). A laptop supplied by the company is an HP Omnibook XE3 currently running Gentoo Linux, but w/o X11 set up due to lack of free time.
I chose the Vaio/XP combo over a TiBook/OSX combo due to $$$, although I am a Mac fan and have owned several Mac systems in the past.
From what I've seen, the QA/QC factor of Windows systems has improved (I have yet to see a BSOD on my Vaio), while Apple's has declined, though ymmv. My wife's iBook's trackpad frequently spontaneously changes the speed setting to the slowest possible and suffers from numerous system freezes and crashes. I contrast this with my long-gone PowerBook Duo 270c which never had serious problems in spite of the fact that I voided the warranty by opening the case and installing a GV Mercury 19.2 modem myself.
My feelings toward Linux/BSD/Solaris are love/hate. I don't want to be system admin. Yes, I know that I have to build the OS from scratch with the Gentoo distro, but it seemed that esoteric things like, oh, a laptop system with USB, or 1394 or other things required some kind of patch and a few hours searching the Internet trying to find someone's HOWTO and config files and doing a kernel recompile, etc. etc. etc. anyway. I have tried a few Linux distros and, surprisingly, the only clean out-of-box install I got was with MkLinux on an Apple PowerMac 6100. Go figure!
Personally, I don't care about the OS. I want to get work done or play games or design application software. If the tools work and the platform is stable and I can find a Java VM to that I can, indeed, Write Once and Run Everywhere (tm) then I am a happy camper.
Do I like M$ business practices? No, but that wasn't the question, was it?
Although I understand your sentiment, not only did Ted Williams defend his country in two wars, or one war and one "police action", he also did a lot of work for the Jimmy Fund, a charity that supports the Dana Farber Cancer Institute (back then it was called the Children's Cancer Research Foundation). I wouldn't characterize that as someone "who for the most part didn't do a damn thing to really and truly improve our lives."
Facts about Ted Williams and the Jimmy Fund
I've been a software engineer for 15 years. I graduated from the University of Lowell in 1987 with a BSCS. I received a 4-year award in Mathematics and a 4-year award in Computer Science from Dracut Senior High School in 1983 (the latter being a misnomer as there were no CS courses in my high school freshman year). My first language? BASIC, on a DEC PDP11/44 running RSTS/E.
So does this mean that I'm tainted goods, scattering GOTOs throughout my C, C++ code? Does this mean that I don't specify arguments to functions, instead trying to mimic GOSUB statements? Certainly not.
There are many different approaches to learning a new discipline. One method is to expose the student to "hard lessons" up front in order to burn basic principles into their memories. Another is to expose students to basic principles gradually, so as to build their confidence and spark their imaginations. This difference in method, I believe, is more important than which language is being used.
Disclaimer: I didn't read the previous 2 parts.
I am 35 years old. I am a gamer. I do not play computer games. They are boring. There I said it. Whew! I feel so much better now.
My first gaming memories were my father teaching me to play chess at the age of 4. He gave me books to read to help, "Chess Self-Teacher" being one of them. Though my reading levels weren't good enough to take in all the information in the books, the chess diagrams were wonderful. By the age of 5, I was beating my 30+ year old uncles and writing solitaire games in chess notation, descriptive, not the algebraic.
Soon came Monopoly, Scrabble, Clue, and a host of others. My role among the neighborhood kids was in reading the rules and teaching other kids to play. Solitaire games are boring.
By the time I was 13, I discovered wargames from such publishers as Avalon Hill, SPI and the like. At 15, I was playing RPGs, mostly AD&D from TSR.
Now, I own over 100 wargames and run a gaming club in Massachusetts. Gaming is fun, instructive and all the other wonderful things you talk about.
However, I find most computer games to be glorified eye candy. Additionally, I can't seem to justify the cost of the game versus the cost of the old-fashioned cardboard and paper wargames I currently play. Here's why:
1. Platform problems. My Performa 6116CD, even with its NewerTech upgrade card, can't seem to run most games. Why? (1) Most computer games are for the PC. (2) Current computer games require faster graphics cards. So now I have to purchase the latest and greatest computing platform (Windoze to ensure maximum flexibility in titles purchased). Paper wargames only need one platform: a table. You buy the game and find a flat surface to play on. No upgrading necessary.
2. Errata. Computer wargames need patches. Some need excessive support. Paper wargames can be fixed with a pencil.
3. Viewing area. Computer games are limited to the user's monitor size. Paper wargames, such as Europa, can have maps up to 8-10' on a side. Yes, feet! Try viewing this playing surface on even the largest computer monitor.
4. Context. Most computer games lack a historical context. The strategies are simplistic. One notable exception that I've seen in the news is a game called Europa Universalis (not related to Europa). This computer port of an existing paper wargame adds a credible AI engine and supports multiple players. Hopefully, this is the wave of the future. But, take note, what makes this game exciting is the function, not the form.
I could go on. In short (too late!) I prefer substance to flash. Give me exciting strategic situations. Shoot-em-ups in a maze searching for treasure, points or what-have-you is definitely not.
JMHO.
How was Dr. Carson helped?
"So kid, you like using knives on people? How about becoming a surgeon."
Hunh?
Teddy Roosevelt was President of the US from 1901-1909.
Franklin Roosevelt was POTUS from 1933-1945.
I'm not quite sure how US history from 45-60 fits in.
As far as the Stalin comparison is concerned, I'm not sure how you arrived at your judgement. Stalin slaughtered MILLIONS OF HIS OWN PEOPLE before WWII even started.
If I may add to this...
(I recently read an article about him in the latest issue of Military History Quarterly.)
During the Depression years, competent staff generals like Marshall languished in out of the way posts while prima donnas like MacArthur were running the Army. What did Marshall do at his lackluster post? He set up work and education (literacy) programs for the local soldiers and civilian population, even though it did little for his career to do so. Seeing what the Depression was doing to those around him, he decided to reach out and help them.
Disliking a person because of their title (race, sex, etc), without trying to get to know who the person is and what they've done, is just the sort of pre-conceived judgement that this world can do without. This century, this millenium, has seen enough of that. Haven't we figured this out yet?
After reading the article and the posts, I feel compelled to share my thoughts and experiences with both languages.
I've been a software engineer for 13 years. My first exposure to C came during a junior year course, Survey of Programming Languages, at ULowell, now UMass/Lowell. Once exposed, there was no going back. I was hooked. IMHO, it was so much better than Pascal. Once exposed, my Turbo Pascal went back to the bookshelf, never to be used again.
My initial exposure to C++ came during my senior year. I was enrolled in a compiler design course and the professor was a Modula-2 fanatic. Since half of the class were budding C gurus, he relented and allowed us to use "this new language", C++. We shelled out the $$$; he went to the Harvard Coop to buy copies Stroustrup's book.
I was impressed by the differences between C and C++. I particularly liked the organizational improvements that class definitions had over struct definitions. I found it a joy to code.
The project for the course was to build a Pascal-subset compiler. We couldn't use global variables and all functions, except for the tokenizer, had to fit on one page of hard copy printout. At the end of the course, he ran informal benchmarks for our compilers in terms of output size and compilation speed. My C++ compiler was the fastest and 3rd in efficiency!
Fast forward to the real world. After working for Omtool and Phoenix Technologies coding C and x86 assembler respectively, I worked as chief software engineer at Image Concepts. As chief software engineer, I was to design and develop their image cataloguing database product. To do so, I had the freedom to pick and choose the development tools and platforms for development. Since our product was slated to run on Unix/X11, Mac System 7 and Win3.x systems, I chose C. Again, portability, and the fact that Unix shipped with free compilers and Image Concepts was a very small company...
Once I started working at Pegasystems, after 6 years at Image Concepts, C++ became the language of choice, both for day job and night coding. Why? Code organization. Even though I wrote my C code in a C++ style, first argument to functions written for a particular struct was a pointer to a variable of that struct, C++'s constructors, destructors and exceptions made error management much, much better.
Typical C function (pseudo-code):
open file
if error: return
alloc memory
if null: close file and return
read from database
if error: free memory, close file and return
do something else
if error: yada, yada, yada...
C++:
open file object
if error: return
init buffer object
if error: return (file object destructor closes file)
read using database object:
if error: return (buffer object frees memory, file closed)
-or-
throw exception on error, which will also call destructors
You get the idea. When using C, I spent more time writing error management code than writing the algorithm. Worse, the algorithm was hidden amongst the error checking and management code. In C++, I build my libraries of well-designed classes and exceptions and, wow, you can actually see the logic. What a concept!
C++ isn't perfect, particularly some implementations. However, now that the language has been standardized, it should become more portable.
Languages are tools. We use them to design apps. We use the compilers to build the apps. Some are better than others in some areas. Each has a place. I use C++ for systems programming. I use Perl for CGI programming. For pattern parsing and portable scripting, Perl gets the nod. For outright speed, C++ gets the nod.
Is C better than C++? Vice versa? Is Java better? Is C++ purely OO? Does it really matter? Just pick a language, write the app, and distribute your work and add some value to the computing community at large. 'Nuff said.
One caveat to note regarding C++: templates and shared libraries are a bitch to implement well, that is, if you don't want multiple copies of stack scattered throughout your libraries. Both Visual C++ and Metrowerks CodeWarrior had ways of working around this, to have stack in one library and have other libraries link back to the first one, but the syntax each used were extensions off of standard C++. I don't how G++ will handle this.
I have a lowly 6100 with NuBus. I have MkLinux on it, as well as MacOS 8.1.
Unfortunately for me, noone supports the NuBus and/or the 601 anymore. Can't run BeOS, NuBus isn't supported. Can't run LinuxPPC, ditto. OS X? Yeah, right. While Apple could port the NuBus/601 support from MkLinux into OS X, they probably won't in order to spur upgrade sales.
Ditto for the MacOS upgrade path as well...
If I could just get my hands on a PPC mobo and build my own system, like I did with a K6 CPU...