Realistically, Echelon likely had no indications of what was going to occur (after all, Echelon is a fairly well known tool of the US government, so if you're going to attack us you don't use cell phones and faxes to coordinate it... duh).
However, as an accedemic question the disposition of such information would be interesting and troubling. The parallels to WWII England are rather obvious, but let's stay with the current example. Let's say that the NSA got wind of a an attempt like 9/11. Well, they'd probably only have some details, so let's say that they knew there would be a hijacking attempt during September and it might involve using the hijacked planes as weapons.
Clearly your first urge is to stop this terrible thing, but that would come at great cost... even if you see the planes deviating from their courses and heading toward Manhatten and D.C., simply shooting them down is a pretty big indicator that you knew exactly what was going to happen, which in turn lets your enemy (in what is sure to be a coming retaliatory strike) know that there is a leak in their organization... critical data indeed!
You could take action sooner and let airports know or station more guards at airports, but again it's a clear signal of what you know.
This is the scary, messy part of intellegence gathering. You have to be willing, going into the game, to accept that short-term knowledge that you gather may not be usable, even when failing to use it may mean you never sleep well again.
In World War II, there was a city that was bombed in England by the Germans. Churchill knew, and did nothing in order to preserve the secret that the allies had broken Enigma. In the end, this lead to (or at least contributed mightily to) the defeat of the Germans. If, say, Bush knew about what was going to happen in Manhatten... I don't think the information would have been used directly. If the NSA knew and didn't tell Bush, that's another story entirely, and I would classify that as treason pure and simple. A decision of that magnitude must be made by an elected official, not a political appointee.
There can, there will. In time, subscription-based gaming will be the only thing in the market (why would I want to publish a game that can only make money once?)
The question is, when will we move beyond the UO/EQ style of MMOG and start exploring other paradigms of massively multiplayer gaming? Why aren't there any MM strategy or simulation games? I'd love to play a simulation/strategy game like Civ, but set in the Fire Upon the Deep galaxy with 3000 of my best friends....
The IMDB shows popularity. It swings with the times, based on what fan and commercial sites (and Amazon itslef, which owns IMDB) are directing people to the movie pages. Apply some age-based weighting in your head based on that. If you've never heard of a movie and it's on the IMDB top 250 (or top 50 in a genre), it's probably brand new or a pretty damn good movie. If it's on the list and it came out in the last six months, it's probably just popular. Every now and then something current will get on the list and stay, but it's rare, as well it should be.
#!/usr/bin/perl # This creates a "sparse file" of 16 terabytes. # It will not test all attributes of file creation, # as the blocks on disk are not actually written, # but it will fail on modern Linux boxes. Now, # the question of whether Perl is 64-bit clean, # down to the seek(2) call is interesting.... $tmpf = "ohmyyourabigoneaintcha"; open(TESTFILE,">$tmpf") ; seek(TESTFILE,0,(1024**4) * 16); close(TESTFILE); print "Test file ($tmpf) is ", -s($tmpf), " bytes\n";
"his other works" consist of branding all users of the Internet, "pirates and theives" and insisting that fair use should be abolished. He is an active supporter of Disney's anti-fair-use campaign.
Oh... did you mean his other books? Yes, some of those are nice.
If Ellison circa age 30 were in the audience of one of his rants, I'm sure he would stand up and shout at himself that he needs to find a way to deal with the future, not throw stones at it in the vain hope that it might run away first. Unfortunately that Harlan is dead. Long live the new media.:-(
You've got to be kidding! This browser sucks. It doesn't have tabbed-browsing, themability, popup ads, cookies, branding or even a pull-down for reporting bugs! Clearly this browser is for those losers who wish to see that *shudder* "content" stuff.
Go back in your hole you accademic hack!;-)
PS: It doesn't render CNN.com correctly. Crap, just like I said.
"As for KDE, forget it. As much as KDE lamers shout about it, KDE is a poor quality desktop environment."
Ok, I use and advocate GNOME, but this kind of flamage makes even me wince. Can't we just acknowledge that KDE and GNOME are both very good efforts with different positive qualities (KDE, for example, tends to be lighter weight in many areas).
In answer to the original poster, KDE accessibility info can be found on their Web site. The project was mostly inspired by the GNOME accessibility project. This is, IMHO, a good thing. KDE inspired GNOME, and now GNOME is inspiring KDE, and each is pushing the other to keep up with various features. This is why Open Source will eventually be the way to go for businesses, because the feature sets are based on user demand and healthy competition, not marketing.
Or, to be more correct about it, you will talk to AOL, AOL will talk to TiVo and your TiVo box already calls up TiVo WCHQ each night to report on your recent service to the overmind, so the schedule changes from your AOL service will just be added into the mix. Presumably this will mean that you can only cause things to be recorded from AOL that are 24 hours or more out (or they can tell you to "force a dial in" after you submit your info to AOL). I can't imagine how else they would do it, since your TiVo only has access the outside world when it dials in anyway.
I sent myself a few thousand extra messages by accident last night. The acid test of every mail reader I've used has been exactly this scenario. Evolution opened my mailbox, showed me the messsages. I deleted them.
It all took less than 10 seconds, and most of that time was SSL/IMAP reads from my IMAP server. Best darn mail reader I've ever used.
If you haven't tried it try this out: bring it up, select a message in the subjuct summary window. Right-click and go to the "create a vfolder on this message" sub-menu. It just rocks. You can even have vfolders that encapsulate multiple real folders or EVEN ACCOUNTS.
Sure, that's a neat example, but the power comes from the handy libwww-perl that slipped in there as much as anything else. You're also doing basic string processing, which is obviously a particular strength of Perl.
No, actually the major strength of what I pointed out was the homogenous nature of Perl's data types and it's list handling, but the things you point out are very handy as well.
Other features of truly high-level languages:
Dynamic functions and closures
The concept of a valid, safe, undefined value
First-class collection types that can be manipulated by all language primatives
The ability to create large, complex data structures without having to declare their behavior in detail. Rapid prototyping asside (where this sort of thing sets high-level languages in a league of their own), I can't count the number of times I've seen a C++ programmer write page upon page of code that then has to be maintained just to store some intermediate data or organize in the middle of some larger operation.
Anonymous data types
Before you point out that there are times that you want to sacrifice these things for efficiency, let me agree. Yes, you do, and that's what a low-level language is for. At times you use both types of languages at the same time (e.g. PDL is a Perl module that does high-performance binary data manipulation from mathematical transformations to image editing to 3D-rendering... it's mostly written in C and FORTRAN).
I can (and often do) write a single line of C++ that builds up a structure of labels and data types, uses RPC to have this rendered as a dialog in the client, and fetches back the user-specified values entered into the dialog.
Cool! That's a handly library to have. Wouldn't it be nice if your language of choice could allow you to use that library and manipulate those objects in a way that was both crash-proof and easily maintained? That would be a high-level language.
The entire problem with your reasoning is that you're mentally hung up on a sort of false dichotomy between "high level" and "low level".
No, I'm not. And sometimes the right tool for the job is both (e.g. a high-level language which uses modules or sub-systems that are written in a low-level language). My concern is that C++ tries to escape the low-level language restraints while not providing the abstraction of a high-level language. The most obvious failing in this respect is memory management, but type management is actually more harmful to maintainability in the large.
What about software that needs to handle matrix operations ? Sure one can implement it in C, but do you want to maintain the end result of such a hairball?
Heh. What do you think matrix libraries have been written in for the last 30 years? FORTRAN or C! Yes, there are now C++ alternatives, and some of them are well crafted, but let's not pretend that "back before C++ saved the world" there was no way to do these things cleanly;-)
What about software that needs to be able to scale in both directions ? Not only is this idea that all languages "should" be "purely" high level, or "purely" low level wrong, the vast success of C++ is a testimony to this.
And the vast success of COBOL is testomony to... um... nope, I'm not sure. Adoption of a language proves that the language can be applied to a number of problems. Whether or not it should cannot be ascertained by its adoption. To re-phrase this in terms of pop-culture, we should not assume that the presence of a large fan-base indicates that Brittany Spears is a talented musician whose work is of value to the musical community.:-/
Since many people have responded, and most of those have assumed that my "I'm not trolling here" was intended to be an introduction to a carefully crafted troll, let me just set the record straight.
I program in C++ when I have to (though, I'm by no means an expert). I'm also a C and Perl programmer.
I don't hate Java, I just think it's an unfortunate choice for anything that has to a) perform better than Java is capable of, or b) be packaged in a platform-specific way and shipped to a customer. There are many situations where your application does not require either of these to be true, and you should seriously consider Java for these cases (I've seen some very nice Web pages that used Java to render complex shapes interactively or allow you to tour a data set, and these are wonderful applications of the language; also many in-house tools benefit from server-side or client-side Java Web programming).
On C++, the language is brilliant and I have nothing but respect for the idea. It's just that C++ presents a great deal of risk to a large development team that can be mitigated by choosing a language better suited to the task (either higher or lower level, depending on what is required).
I write higher level code in C++ every day than any Perl or Python I have ever seen.
Wow, you've seen some pretty sketchy Perl and Python. Try this in C++:
use LWP::Simple; print join "\n", map {(get($_) =~/(stuff1).*(stuff2)/si)} @urls;
This is just a dumb little example that fetches Web pages, but in this one example we see the vast grammatical advantage to working with truely high-level objects instead of C++/STL's low-level constructs.
For those of you in the cheap-seats, this:
grabs the libwww-perl module "Simple",
fetches a list of URLs (using the HTTP "GET" method),
searches the content of each result for two strings, and
prints out all of the resulting matches.
C++ has some nice features that begin to appoximate the power of high-level languages, but let's not start to pretend that that makes it as powerful as a truly high-level language.
"Everything was put in or left out for a reason and that reason (per thing) is documented if you take the time to look" [...] "In the base language "C" the above is legal, will compile just fine, and is totaly wrong."
Not every C++ devotee suffers from this sort of viewpoint, but many do, so I'd like to address it first. The idea that everything exists in a language for a well-defined, unique reason is hardly a defense of the language DESIGN. Yes, there are four casting operators because the designers felt that each was justified. In a truely high-level language you would only need one, and it would rely on the nature of the data to "do the right thing. In a truely low-level language you would need only one and it would do what you told it to, even if it was the wrong thing.
C does not attempt to prevent the problem that you cite above. C++ doesn't either, it just gives you a way, assuming you understand the language completely to ask the compiler to make it harder. This adds many layers of complexity and provides you with the situation where the vast majority of C++ programmers continue to use the C-style cast.
"The thing is, the C-style cast has some core functionality that is occasionally indespensible. (The discussion of when and how this is indespensible is ommited as whole chapters of books cover this topic.)"
Shouldn't your language be simple enough that those books aren't necessary, just to explain a core feature? Shouldn't your compiler either do the work of resolving your complex relationships or get the heck out of your way?
I look at any large-scale C++ project and I see something that Perl has classically suffered from too: there's more than one way to do it, and no one agrees on which way that is. In Perl, it's considered a strength because the language is so forgiving that it resolves many of the problems created this way (Python by contrast allows you to do things exactly the way Guido wants you to, and that too can work well). C++ however, does not give you any sort of assistance in resolving these problems, and differing views on which language is being used can be catastrophic.
This is, in fact, one of the reasons that Effective C++ and More Effective C++ should be required reading for every member of any C++ project. It's not that you'll get good ideas, but the fact that those books teach a certain dialect of C++, and gently bludgen the reader into accepting that that dialect *is* C++. The STL also does this by formalizing a dialect of C++ into a library that insinuates itself into your code (I never saw people using functors until STL became wide-spread, and then people felt they had to use them).
C also requires that you adopt some common usage, but the advantage there is that C is so painfully simple that it is hard to adopt a dialect that is wildly out of step with other programmers (I've seen people use cpp to prove me wrong here, and all I can say is cpp is perhaps the worst idea to ever grace a language).
C++ is a very good accedemic exploration of the value of C as a high-level language. It's ultimately a poor choice for real-world programming, but that may not have been an obvious conclusion if Mr. Stroustrup had not been so bold. I don't question the genius of the ideas behind the language, just the danger of using it on a daily basis.
Try reading some nice "mainstream" books once in a while. I don't mean bestseller/landfill category, but a genuinely good book. The thing you probably will notice that the characters have, well, character.
"Try reading a real book" is the staple of most of the anti-science fiction crowd. It doesn't make any sense, but it makes for good sound-bites.
The fact of the matter is that every genre has a mix of good and bad writing. The more popular the genre the lower that signal-to-noise ratio will be. This does not mean that a genre which is popular has fewer good authors, just that it will have more bad ones.
Science fiction has produced some phenominal authors who stand out in a crowd of authors from any genre. It has also produced it's share of popular purveyors of trash.
Try "The Crow road" by Iain M. Banks, you'd hardly believe it was written by the same person as those Culture books. I suppose you have to write a story around your people if you don't have utopia/dystopia/whatever to distract the reader.
*snicker* you should try using someone else to gather your examples from. Try reading Ian Banks' "Feersum Endjinn" which is most assuredly science fiction, and IMHO, of the highest order (though some of the narative style is a little gimmicky, which you can get from the title itself).
There are some very nice SF titles I have read. Usually, but not always, the story could be rewritten in contemporary setting without too much difficulty.
You are correct to some degree. The question is: can the author get his/her point across easier if the example of a certain technology is used, or the reader can detach from the core idea because of an alien culture (e.g. The Left Hand of Darkness)?
Also at question is this: could the author have come up with the story otherwise, or was speculation key in the process of creating the story? It's a bit of a chicken and egg problem.
You were trolling [...] Anybody who recomends Python over C++ because C++ is a "bad" language but Python is a "good" one knows nothing about language theory
I don't think I could have uttered anything quite so inflamitory and unsupported if I'd tried.
Dear Troll, asside from your "whitespace is evil" rant (which I understand, but agree with your vehemence on), please explain why you feel that C++ is a well designed lanugage. Please include in that explanation the four casting operators and the ambiguities in constructor invocation vs casting operations.
I posted because I feel that the question the article asks is incorrect in its assumptions. I was not trolling. If you do not agree, but do not wish to be "baited", don't respond. It's that simple.
Wow - I really hope you don't actually consider Perl to be a suitable alternative to Java, it is a scripting language for crying out loud (and an incredibly ugly one IMHO), I can't believe that whatever magic fairy-dust they plan to sprinkle on Perl6 will change this much.
First, define "scirpting language". When the term was coined it refered to syntax-heavy, grammar-light "languages" like bourne shell whose basic purpose was to collect commands into a re-executable, sequential file.
Perl has never been such. It is a general purpose programming language used for such varied tasks as image manipulation, scientific computing, database management, and an army of other tasks. Its "standard library" is perhaps the largest such in the industry. Have a look at the official module list on CPAN.
Perl may be used as a "toy language" by many, but do not assume that that makes it a toy.
Perl6 is a re-design from the ground up, which is in many respects to Perl5 what Perl was to scripting languages. It introduces a real object model that takes the lessons learned and best practices from Perl5's very loose "roll your own" object model. It also retains all of Perl's power while focusing on the problem of creating a back-end that can be efficiently compiled or executed as byte code in Perl's own virtual machine ("Parrot", as it's known).
If you've ignored Perl because it looks scary, go back and try it again. You will be suprised. Very.
As an experienced Java developer, I have never really felt disappointed by the Java libraries (with the sole exception of the lack of support for asynchronous networking until 1.4) - what exactly is your beef with them?
Go look at that module list. Think about what it means to be able to think "hey, i'd like to..." and find that it's in the standard library! Now imagine how those of us who program in truly high-level languages like Python, Perl, Ruby, etc must feel when we have to "step down" to commercial languages whose standard libraries are controled by committe.
Yes, biting your leg off is much better than putting it into a crusher. Much cleaner.
However, I suggest using a real high-level language if you want one (Perl, Python, Smalltalk, Ruby, etc) or going low-level if you want that and programming in C.
C++ and it's less abhorent, bastard child, Java are the ultimate examples of what C isn't good at.
I'm not trolling here. C++ simply isn't a good language design. It has all the power of C and twice the rope for hanging yourself. The complexity, contradictions and requirement that users understand every aspect of the language in order to program are high on my "why you shouldn't" list.
Java has only some of C's problems while being totally platform-antisocial (platform neutral would imply that it plays nicely with all platforms which is patently untrue). I will say that Java has one of the best object models of any language out there, but 1) that will change when Perl6 hits the streets and 2) it's somewhat overshadowed by the failure of the Java libraries to live up to the promise.
From the article, "In 1999 DNA was successfully extracted from an ethanol preserved Tasmanian Tiger pup sample."
So... that would be beer-battered Tasmanian Tiger pup? Mmmm good!
A good point.
Realistically, Echelon likely had no indications of what was going to occur (after all, Echelon is a fairly well known tool of the US government, so if you're going to attack us you don't use cell phones and faxes to coordinate it... duh).
However, as an accedemic question the disposition of such information would be interesting and troubling. The parallels to WWII England are rather obvious, but let's stay with the current example. Let's say that the NSA got wind of a an attempt like 9/11. Well, they'd probably only have some details, so let's say that they knew there would be a hijacking attempt during September and it might involve using the hijacked planes as weapons.
Clearly your first urge is to stop this terrible thing, but that would come at great cost... even if you see the planes deviating from their courses and heading toward Manhatten and D.C., simply shooting them down is a pretty big indicator that you knew exactly what was going to happen, which in turn lets your enemy (in what is sure to be a coming retaliatory strike) know that there is a leak in their organization... critical data indeed!
You could take action sooner and let airports know or station more guards at airports, but again it's a clear signal of what you know.
This is the scary, messy part of intellegence gathering. You have to be willing, going into the game, to accept that short-term knowledge that you gather may not be usable, even when failing to use it may mean you never sleep well again.
In World War II, there was a city that was bombed in England by the Germans. Churchill knew, and did nothing in order to preserve the secret that the allies had broken Enigma. In the end, this lead to (or at least contributed mightily to) the defeat of the Germans. If, say, Bush knew about what was going to happen in Manhatten... I don't think the information would have been used directly. If the NSA knew and didn't tell Bush, that's another story entirely, and I would classify that as treason pure and simple. A decision of that magnitude must be made by an elected official, not a political appointee.
There can, there will. In time, subscription-based gaming will be the only thing in the market (why would I want to publish a game that can only make money once?)
The question is, when will we move beyond the UO/EQ style of MMOG and start exploring other paradigms of massively multiplayer gaming? Why aren't there any MM strategy or simulation games? I'd love to play a simulation/strategy game like Civ, but set in the Fire Upon the Deep galaxy with 3000 of my best friends....
The IMDB shows popularity. It swings with the times, based on what fan and commercial sites (and Amazon itslef, which owns IMDB) are directing people to the movie pages. Apply some age-based weighting in your head based on that. If you've never heard of a movie and it's on the IMDB top 250 (or top 50 in a genre), it's probably brand new or a pretty damn good movie. If it's on the list and it came out in the last six months, it's probably just popular. Every now and then something current will get on the list and stay, but it's rare, as well it should be.
#!/usr/bin/perl) ;
# This creates a "sparse file" of 16 terabytes.
# It will not test all attributes of file creation,
# as the blocks on disk are not actually written,
# but it will fail on modern Linux boxes. Now,
# the question of whether Perl is 64-bit clean,
# down to the seek(2) call is interesting....
$tmpf = "ohmyyourabigoneaintcha";
open(TESTFILE,">$tmpf"
seek(TESTFILE,0,(1024**4) * 16);
close(TESTFILE);
print "Test file ($tmpf) is ", -s($tmpf), " bytes\n";
"his other works" consist of branding all users of the Internet, "pirates and theives" and insisting that fair use should be abolished. He is an active supporter of Disney's anti-fair-use campaign.
:-(
Oh... did you mean his other books? Yes, some of those are nice.
If Ellison circa age 30 were in the audience of one of his rants, I'm sure he would stand up and shout at himself that he needs to find a way to deal with the future, not throw stones at it in the vain hope that it might run away first. Unfortunately that Harlan is dead. Long live the new media.
You've got to be kidding! This browser sucks. It doesn't have tabbed-browsing, themability, popup ads, cookies, branding or even a pull-down for reporting bugs! Clearly this browser is for those losers who wish to see that *shudder* "content" stuff.
;-)
Go back in your hole you accademic hack!
PS: It doesn't render CNN.com correctly. Crap, just like I said.
"As for KDE, forget it. As much as KDE lamers shout about it, KDE is a poor quality desktop environment."
Ok, I use and advocate GNOME, but this kind of flamage makes even me wince. Can't we just acknowledge that KDE and GNOME are both very good efforts with different positive qualities (KDE, for example, tends to be lighter weight in many areas).
In answer to the original poster, KDE accessibility info can be found on their Web site. The project was mostly inspired by the GNOME accessibility project. This is, IMHO, a good thing. KDE inspired GNOME, and now GNOME is inspiring KDE, and each is pushing the other to keep up with various features. This is why Open Source will eventually be the way to go for businesses, because the feature sets are based on user demand and healthy competition, not marketing.
Good point. Makes me wish I could edit my original comment ;-)
There will likely be no protocol.
Or, to be more correct about it, you will talk to AOL, AOL will talk to TiVo and your TiVo box already calls up TiVo WCHQ each night to report on your recent service to the overmind, so the schedule changes from your AOL service will just be added into the mix. Presumably this will mean that you can only cause things to be recorded from AOL that are 24 hours or more out (or they can tell you to "force a dial in" after you submit your info to AOL). I can't imagine how else they would do it, since your TiVo only has access the outside world when it dials in anyway.
TiVo Web is a much better way to go.
I broke my .procmailrc so that my pager-based email notification created a mail loop. Ah, there was mopping up to do! ;-)
I sent myself a few thousand extra messages by accident last night. The acid test of every mail reader I've used has been exactly this scenario. Evolution opened my mailbox, showed me the messsages. I deleted them.
It all took less than 10 seconds, and most of that time was SSL/IMAP reads from my IMAP server. Best darn mail reader I've ever used.
If you haven't tried it try this out: bring it up, select a message in the subjuct summary window. Right-click and go to the "create a vfolder on this message" sub-menu. It just rocks. You can even have vfolders that encapsulate multiple real folders or EVEN ACCOUNTS.
Very sweet!
Other features of truly high-level languages:
- Dynamic functions and closures
- The concept of a valid, safe, undefined value
- First-class collection types that can be manipulated by all language primatives
- The ability to create large, complex data structures without having to declare their behavior in detail. Rapid prototyping asside (where this sort of thing sets high-level languages in a league of their own), I can't count the number of times I've seen a C++ programmer write page upon page of code that then has to be maintained just to store some intermediate data or organize in the middle of some larger operation.
- Anonymous data types
Before you point out that there are times that you want to sacrifice these things for efficiency, let me agree. Yes, you do, and that's what a low-level language is for. At times you use both types of languages at the same time (e.g. PDL is a Perl module that does high-performance binary data manipulation from mathematical transformations to image editing to 3D-rendering... it's mostly written in C and FORTRAN). Cool! That's a handly library to have. Wouldn't it be nice if your language of choice could allow you to use that library and manipulate those objects in a way that was both crash-proof and easily maintained? That would be a high-level language.Since many people have responded, and most of those have assumed that my "I'm not trolling here" was intended to be an introduction to a carefully crafted troll, let me just set the record straight.
I program in C++ when I have to (though, I'm by no means an expert). I'm also a C and Perl programmer.
I don't hate Java, I just think it's an unfortunate choice for anything that has to a) perform better than Java is capable of, or b) be packaged in a platform-specific way and shipped to a customer. There are many situations where your application does not require either of these to be true, and you should seriously consider Java for these cases (I've seen some very nice Web pages that used Java to render complex shapes interactively or allow you to tour a data set, and these are wonderful applications of the language; also many in-house tools benefit from server-side or client-side Java Web programming).
On C++, the language is brilliant and I have nothing but respect for the idea. It's just that C++ presents a great deal of risk to a large development team that can be mitigated by choosing a language better suited to the task (either higher or lower level, depending on what is required).
For those of you in the cheap-seats, this:
C++ has some nice features that begin to appoximate the power of high-level languages, but let's not start to pretend that that makes it as powerful as a truly high-level language.
Perl 6 has not been written, and the attempt of one contributor to code a C++ prototype has, as far as I can tell, been abandoned. Check your facts.
C does not attempt to prevent the problem that you cite above. C++ doesn't either, it just gives you a way, assuming you understand the language completely to ask the compiler to make it harder. This adds many layers of complexity and provides you with the situation where the vast majority of C++ programmers continue to use the C-style cast.
Shouldn't your language be simple enough that those books aren't necessary, just to explain a core feature? Shouldn't your compiler either do the work of resolving your complex relationships or get the heck out of your way?I look at any large-scale C++ project and I see something that Perl has classically suffered from too: there's more than one way to do it, and no one agrees on which way that is. In Perl, it's considered a strength because the language is so forgiving that it resolves many of the problems created this way (Python by contrast allows you to do things exactly the way Guido wants you to, and that too can work well). C++ however, does not give you any sort of assistance in resolving these problems, and differing views on which language is being used can be catastrophic.
This is, in fact, one of the reasons that Effective C++ and More Effective C++ should be required reading for every member of any C++ project. It's not that you'll get good ideas, but the fact that those books teach a certain dialect of C++, and gently bludgen the reader into accepting that that dialect *is* C++. The STL also does this by formalizing a dialect of C++ into a library that insinuates itself into your code (I never saw people using functors until STL became wide-spread, and then people felt they had to use them).
C also requires that you adopt some common usage, but the advantage there is that C is so painfully simple that it is hard to adopt a dialect that is wildly out of step with other programmers (I've seen people use cpp to prove me wrong here, and all I can say is cpp is perhaps the worst idea to ever grace a language).
C++ is a very good accedemic exploration of the value of C as a high-level language. It's ultimately a poor choice for real-world programming, but that may not have been an obvious conclusion if Mr. Stroustrup had not been so bold. I don't question the genius of the ideas behind the language, just the danger of using it on a daily basis.
The fact of the matter is that every genre has a mix of good and bad writing. The more popular the genre the lower that signal-to-noise ratio will be. This does not mean that a genre which is popular has fewer good authors, just that it will have more bad ones.
Science fiction has produced some phenominal authors who stand out in a crowd of authors from any genre. It has also produced it's share of popular purveyors of trash.
*snicker* you should try using someone else to gather your examples from. Try reading Ian Banks' "Feersum Endjinn" which is most assuredly science fiction, and IMHO, of the highest order (though some of the narative style is a little gimmicky, which you can get from the title itself). You are correct to some degree. The question is: can the author get his/her point across easier if the example of a certain technology is used, or the reader can detach from the core idea because of an alien culture (e.g. The Left Hand of Darkness)?Also at question is this: could the author have come up with the story otherwise, or was speculation key in the process of creating the story? It's a bit of a chicken and egg problem.
Dear Troll, asside from your "whitespace is evil" rant (which I understand, but agree with your vehemence on), please explain why you feel that C++ is a well designed lanugage. Please include in that explanation the four casting operators and the ambiguities in constructor invocation vs casting operations.
I posted because I feel that the question the article asks is incorrect in its assumptions. I was not trolling. If you do not agree, but do not wish to be "baited", don't respond. It's that simple.
Perl has never been such. It is a general purpose programming language used for such varied tasks as image manipulation, scientific computing, database management, and an army of other tasks. Its "standard library" is perhaps the largest such in the industry. Have a look at the official module list on CPAN.
Perl may be used as a "toy language" by many, but do not assume that that makes it a toy.
Perl6 is a re-design from the ground up, which is in many respects to Perl5 what Perl was to scripting languages. It introduces a real object model that takes the lessons learned and best practices from Perl5's very loose "roll your own" object model. It also retains all of Perl's power while focusing on the problem of creating a back-end that can be efficiently compiled or executed as byte code in Perl's own virtual machine ("Parrot", as it's known).
If you've ignored Perl because it looks scary, go back and try it again. You will be suprised. Very.Go look at that module list. Think about what it means to be able to think "hey, i'd like to..." and find that it's in the standard library! Now imagine how those of us who program in truly high-level languages like Python, Perl, Ruby, etc must feel when we have to "step down" to commercial languages whose standard libraries are controled by committe.
Yes, biting your leg off is much better than putting it into a crusher. Much cleaner.
However, I suggest using a real high-level language if you want one (Perl, Python, Smalltalk, Ruby, etc) or going low-level if you want that and programming in C.
C++ and it's less abhorent, bastard child, Java are the ultimate examples of what C isn't good at.
I'm not trolling here. C++ simply isn't a good language design. It has all the power of C and twice the rope for hanging yourself. The complexity, contradictions and requirement that users understand every aspect of the language in order to program are high on my "why you shouldn't" list.
Java has only some of C's problems while being totally platform-antisocial (platform neutral would imply that it plays nicely with all platforms which is patently untrue). I will say that Java has one of the best object models of any language out there, but 1) that will change when Perl6 hits the streets and 2) it's somewhat overshadowed by the failure of the Java libraries to live up to the promise.
Why does the equality seem to hold for software?
No, but they do email the last four digits. I'm not sure I'm happy with that, but it's better than sending the whole thing.