And what is this crap about not having an explicit begin and end delimiters/statements for blocks of code being a "good thing"?
The funniest thing is that there *IS* a block start character. The colon ":" starts the block. There is also an explicit end of block (the blank line or change of indent). The fundamental truth: Both the colon and the white space *ARE* *EXPLICIT*. See explicit definition 3, if the system can tell where the block ends... And if it just guesses... Or if you put in in wrong...
The block delimits are "less robust" and easy to fsck up but not explicit == implicit (follow the link 8-) either that or Python is a deliberate joke and deliberately "leaves a a question as to meaning or intent." (reverse def #1 8-)/DOH!
The inventor of Python (and all his parrots) proves himself (themselves) incompetent to talk about language structure or theory every time he says (they say) his blocks are not explicitly delimited.
The blocks are explicitly delimited. It's just that the end-of-block isn't printable or likely to survive being emailed as plain text or posted on the web "casually".
First: The original question was (paraphrased) "Is C++ a well designed language?"
Your Response to my position:
The idea that everything exists in a language for a well-defined, unique reason is hardly a defense of the language DESIGN.
Hello... McFly.... In point of fact the design of anything that *IS* *DESIGNED* is based on the core reasoning behind the elements of the design. When there is no core reasoning it is not designed it is "chance". To then understand the *DESIGN* instead of the *FORM* you must be able to access the design and not just the form. Saying "I don't like the way this is, it is porly designed" is logically junct. If you choose not to process the "why" of a design your assertions about the "what" of the form are, well, uninformed.
Consider: "Dude, this is a terrible ashtray." "DUDE! That's not an ashtray, it's a coffie mug."
Your entire position is that the language isn't sufficently lacking in complexity for your taste.
You seem incapable of processing the basic point, so I'll say it again.
It seems that you personally find C++ insufficently simple for you to internalize. Fine. You then go on to postulate that since it is too complex for you it must be too complex for anybody to use safey. That is unsupported and unsupportable. Just because it is too complex for you (or your personal taste) doesn't a-priori then mean it is too complex for everybody. The tool analogy holds. This is not a tool for people who wish to avoid complexety. It is a tool for people who need (or just "want" but that is a bad reason 8-) the power that is bought at the expense of that complexity.
Period.
And yet you persist:
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?
You suffer from a relative lack of understanding. The fact that there are many books which explain a concept doesn't infer that each or any one person needs to consult many books to find understanding. It only means that the topic is adequately covered elsewhere so needs not be covered here.
The fact that you only refute odd corners of arguments and chose to do so at disproportionate lenght is itself revealing.
Your arguments are biased (of course all arguments are [see definition of argument 8-)]).
The fact that your "conclusions" are not particularly supported by your arguments is the true test.
C++ is a complex language that lets you do things more effeciently than many (most?) others. That power is bought at the price of that complexity. It is not untennable or unworkable in and of itself. The people who are not up to the skill, or need, to persue it are invited to not do so.
The following three absurdities are DIRECT analogies of your proposition:
Shouldn't the SCUBA gear be simple enough that you any swimmer can use them without the need to be trained to dive?
Shouldn't the scalpel be simple enough that you can opperate on the human brain without having to do more than basic med school?
Shouldn't a 767 be simple enough that any general avation pilot (you know single propeller plane etc) could fly it?
Finally, your assertion "C++ is a very good accedemic exploration of the value of C as a high-level language" is spurious. You toss this in as a "conclusion" without really connecting it to anything except a vague intimation of danger. That is a classically cheap closing technique you would be penalized for in any formal debate. Used imporperly many things are dangerous. Used properly many dangerous things are indespensible. (See "the family car" 8-).
While I often do "slap togehter" code when I know I am going to use it onece and throw it away. Or when I am prototyping it...
It is intrinsicly evil to *DELIVER* "slap together" code.
The median case, where you are safely within bounds is all well and good, but if you deliver actual product that has to run dangling-anatomy-to-the-wall for months you had better not be slapping anything.
[begin steadly increasing rant/troll]
I do not do things "old school" for ego's sake. What a pitious reason to do anything. I do things 'carefully' and 'with the correct tool for each job' because I can not STAND to have to go back and do the same job more than once. My opinion might differ if I were "a consultant" where my big dime came from return visits to do maintenance. Then again, probably not, doing inferior work to keep a job alive is dishonest and goes against my work-ethic. I consider my code like furnature. I make a chair I am done with that chair. Going back and re-making that chair when I could be making coffie table or a new and better chair would be stupid, boring, and wasteful. I also {GASP} reuse my own code in later projects because, having made a chair it would be a shame if it was only sat uppon one time.
The web and the "e-economy" has gifted us with a lot of truely sub-standard programmers. Part of this is the inherent nature of CGI. (It's one invocation one action nature allows some truely horrific code to "work well enough".) If every invocation is atomic and it sometimes fails, the user hits reload. If their dataset always fails then that user doesn't come back, usually without complaint.
That screw-the-boundry-case mentality is real business to some folks, and those reloads and abandons actually cost tiny amounts of money, not so tiny when it is considered en-mass.
To your particular bragg: I am very happy for you that you have never had a white-space error mess up your code. Hurray for you. [Not that I actually beleive you. Perhaps you have never had a "tab vs space" mess you up, but when you hold that statement up as a "glittering generality" (= look it up, or ask your lit professor 8-) you will be evaluated in the general case...] Pitty the poor bastard that has to deal with it (the source code) later, especially if gets passed to him via email or MS-Office.
I am sure in my soul that someone somewhere has made the same claim of "never having had a problem" with respect to his RPG code too. It still doesn't make whitespace a valid control structure that a sane person would want to use. "It is perfectly safe as long as (your condition here)" isn't a good argument for desireability, only acceptable necessity, and it WASN'T NECESSARY.
Was saving the one keystroke (the close brace) per conditional block really that valuable compared to having to mess around with all the "special" Python-friendly editors? How about the number of times someone has has accidently mis-indented a statement?
Was that value? Was the wasted time spent to the greater good? Is the counting-spaces durring each compile an asset?
Computers are damn fast these days so most people don't even sneeze over wasted cycles. It's sad. One wonders how much faster and better any given program might be if the programmers still thought of one machine instruction cycle as a valuable resource.
Game programmers understand, engineers understand, batch-process workers (banks etc) understand.
Anybody who has ever had to maintain code understands.
But I guess we are all wrong... your five whole glorious years of *occasional* Python use has enlightened us all to the folly of our conservitive attitudes...
Meanwhile you keep slapping together those deliverables and we will bask in your magnificence.
(Summary first) Everything was put in or left out for a reason and that reason (per thing) is documented if you take the time to look. Since it will be impossible in this forum to address the entirity of the issue I will stick to the elementes you named. Specifically the four casting operators (actually there are five) and the constructor invocation as a sixth "cast", which you incorrectly classify as an ambiguity.
First you must consider the base language construct of the unconditional cast.
struct A {... }; struct B {... };
A * ptr_to_A = new A(); B * ptr_to_B = (B*)A;
In the base language "C" the above is legal, will compile just fine, and is totaly wrong. This program would likely fail catostrophically. This is the generic version of an actual problem we (at my company) just found in a comercial "C" product.
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.)
More importantly the C-style cast is a "gloves off" operation. When the programmer performs this basic operations it is with the understanding that if it is wrong it is to be done anyway. Complaining about its existence is like compalining to a surgon that a scalpel is dangerous because it could cut something...
The four "lesser casts" (my term) are "gloves on" operations. The programmer, in using the spesific casts is describing a desireable transformation on the data and the compiler and/or runtime checks the viability of the operations to ensure that they are completely legal.
Consider first a language that will do silent uncasted transformations (C++ will do these in some spesific and well defined cases which I will get back to later)
if you have "let SomeString = SomeInt" and the language allows this as a transformation (see awk, possibly Perl etc) it will "just do it." but the "it" is only vaguely defined. It is worse if "let SomeInt = SomeString" where there is no obvious guarantee that "SomeString" contains a useful representation of a candidate integer.
Ok, so we can agree that the transformation of a datum from one intrinsic type to another is problematic. Composite types make this a composite problem. Now back to the casts...
All the casts represent expressions in the true sense. The opperations are transformative just as unary minus or square_root are transformative. The original object and representation are unchanged but the address or constantness or the "invariant" are manipulated. And like any expression there may be temporary objects involved. Listed from most-checked and safe to least, the compile-time resolvable casts are:
const_cast(existing_object) => the existing_object may only vary from the new_type by the addition or removal [usually removal] of the constantness.
static_cast(existing_object) => the existing_object must have a defined pathway to becomming an object of the new_type. Usually this is done by one of two methods. The most common transforms the address of the object into the address of the part of the object that is of the new_type. The second method creates a temporary object of the new_type using the relevant information from the existing_object.
reintrepret_cast(existing_object) => almost always a transition from pointer-to-existing_object to pointer-to-void or vice versa. The reintrepret cast is used to release the expression from the constraints of the invariant of an object. Usually in order to pass the object through some external interface (e.g. passing it to the OS etc).
Notice that these three casts each have a spesific guarantee of function for form. To take the safe root through a transformation you sometimes need to use two casts together. Most commonly you will un-constant-ize something and then static cast it if you are doing these kinds of casts in a way that requires composition. I'll skip the example for now. The important thing is that you can, once you know how to use your tools, know in turn exactly the transformations that your existing_object or reference or pointer there-to will undergo.
There is no uncertanty in the three compile_time casts.
The fourth "limited cast" is:
dynamic_cast(existing_object)
This one is trickeir as it has an implicit "if" statement within it at compile time and another "if" statement in it at runtime.
IF new_type is an obvious part of existing_object the dynamic_cast is identical to the static_cast and you should have used that. The compiler will use that static_cast in place of the dynamic_cast because it knwos you are being dumb. 8-)
IF however new_type is not clearly in existing_object(s) ancestory (this is the "else" of the above case) then the compiler generates code to deal wiht the cast at runtime instead of compile time.
At runtime, IF the new_type object that is "part of" the "whole_object" that existing_object might also just be "part of" then the whole thing goes off without a hitch and the expression works. If the request is impossible then either a zero is returned (remember "transformative expression" 8-) or an exception is thrown. (the causes and cases are again ommited, go read the book).
SO BACK TO THE CORE QUESTION: Why is the above a "good language design"?
Answer: Because an unconditional cast "(new_type)existing_object" could do any combination of the above, but the above only happen explicitly if you use them explicitly.
Hua?
Well, in the first three you *ALWAYS* get a thing of the type new_type so there is no testing to be done. The compiler will not let the activity go wrong. You don't have to test anything in the code, the compiler makes you a warrent.
The fourth, more dangerous and occasionally indispenseable and often quite desireable, cast needs support code.
In a lesser language, I would either have to inclde the support code for every cast *OR* "work without a net".
In C++ I can code to the spesific requirements.
A language that lets the programmer code to the spesific requrements without having to put in lots of dead code just to be safe is "well designed".
Some languages "seem" to be better designed because they put in the general case safety-net for you, but languages that generate "general case" code "for you" arn't well designed. The fact that some environments/compilers then try to take the safety-net code back out durring optimization etc are arguable. The work for the slapdash at the cost of allowing the programmer to express himself explicitly. When the programmer isn't really in charge of the code that is generally a "bad design" where effeciency is a factor. But for the people who need this net or don't know how to work without it, this kind of code is "good".
But I digress.
So what about the so-called "ambiguities" over constructor invocation as a casting operation.
First, construction of a new object isn't, strictly speaking, a cast operation. It is "so like a cast operation" that in practical terms the two operations are considered synonymous.
In actual fact, construction is construction. Casting is casting. Construction is the building of a new object using the information from zero or more old objects. Casting is the reconsideration of an existing object "in place".
The confustion arrises because a sloppy thinker often cannot separate the classification of an object from the application of the value of that object.
In the expression "A = B;" A is being transformed. In the special case "A_Type A = B;" the transformation of "starts from nothing". The construction of paramter objects durring fuction call is the latter case.
The language allows us to define the transformation of A with respect to many types. If we create a transformation of A based on a B then this is obvious. Sometimes things are not that simple.
The programmer is allowd to make a chain of transformations implicit in ther code space because the language design allows for one "free and silent" step to be added. That is, if B can become X and X may be used to transform A, then B will transform A by way of a temporary X.
The user is spesifically warned that this feature must be used wiht due dilligence. In particular if there is more than one possible X intermediary the compiler will pick the "best" one. The rules for finding this "best X" are explicit (there are exactly four such rules).
Additionally, under no circumstances will B => Y => X => A considered.
If there is more than one "X" and they score the same on the "betsness" scale the compiler will demand the programmer clean up his mess. Many less-well designed languages will silently pick one wihtout a peep, which one may change from compile to compile. This would be an inferior design because any "X" may have larger-scale implications.
The educated user is capible of making the transformations work seamlessly.
The educated user is capible of explicitly disallowing some transformations by use of the keyword "explicit".
The uneducated user is going to make a mess if he fails to understand and use the feature.
There is absolutely no ambiguity.
The fact of the matter is that a poor design will net poor code. Some languages will glop out corrective code for the programmer. Where the programmer is willing to pay this expense, and the application can afford this expense the issue is a giant "don't care".
Where the cost should not be paid, the "looser" languages don't give the programmer the ability to remove these expenses. To that end these "looser" languages have an intrinsic limit to their functionality.
Every language does actually.
However proficency in the tighter (and more demanding) language translates directly into the skillset needed for a looser language. The converse isn't true.
There is an old aphorisim: "If all you have is a hammer every problem looks like a nail." The secret obverse is "the more tools you have the easier it is to find the right tool for the job."
Think nailgun. Heavy, dangerous, effective as hell. If you are competent to use one, it will serve you well. If you never learned to use anthing more invasive than wood-glue then don't pelase-god try to use the nailgun.
The fact that you are uncomfortable using a nailgun doesn't intrinisicly mean the nailgun is poorly designed.
There is a need for a continum of tools. The fact you are part of the "everyone" who seems to think that a language must be all things to all people is, well, kind of a poor reflection on you not the language.
There are PLENTY of things that C++ isn't "the best choice" for. Primary among those are the projects where you just want to slap something together safely.
The fact that I wouldn't let most people near an industrial band-saw doesn't somehow invalidate the existence and purpose of that device. Yes, people who don't know, or don't care, to learn how to use equipment properly should be laughed at when they get themselves hurt. People who decide to go SCUBA diving withtout training and get themselves killed also deserve what they get.
People who jump into C or C++ without the necessary foundation in "real"(tm) (8-) programming will hemmorage memory and dump core and generally make all sorts of messes. Shame on them and pitty to their employers and all that.
Still, a skilled craftsman with C/C++ can and do make better, faster, and more effective code than an equally skilled craftsman using the safety-net filled scriptirrific languages.
Why do you think Perl and Python are written in C/C++?
[rant] And to diverge into a rant some, Python is a screwup waiting to happen. Friends don't let friends use whitespace as a control structure. I officially consign anybody who advocates using Python for real work to RPG hell for the rest of eternity. replacing the two characters "{" and "}" with the one character ":" and needing to worry about counting spaces/tabs is no bargan. Yes there are editors that will help you but now your language is dependent on your editor and code that reads identically on paper may do different things in the computer. How dumb is that?
Anybody who recomends Python over C++ because C++ is a "bad" language but Python is a "good" one knows nothing about language theory (spoken or computer languages) [/rant]
COST OF ENFORCEMENT is the ONLY too keep this dead.
(The COST of...)
Jobs moved (politically "lost") overseas as Sony et al can't build the international version of any product here and there is no point in running separate factories.
Content Companies having to make two copies of every movie and CD if they want to sell to their core market (the people who BUY movies have BOUGHT movies and wont want to lose that investment) so now a movie is compeeting with itself for shelf space. First MPAA or RIAA member to break ranks and still produce the old format (non DRM media isn't outlawed, just making players that can play it without DRM) starts a war.
More customs officers.
The huge government-machine to processess applications to bring new/revised hardware and software to market.
The cost of making the new products and the old products as the deadline approaches.
The cost of finding all thost linux-terrorists who are out making CD of linux.
Cost Loss Budget and Expense
These are the only ways to make something like this become and stay dead. Present the fincial cost in terms of lost constituents and spent government and industry dollars.
Also Consider: "Dear Sony America Inc. The [current name of bill] will render your nice line of digital cameras and video recorders illegal. Said recorders will have to have the DRM branding technology built into them in order to let the customer produce movies and stills they can play back. That makes these devices "cimcumvention devices" as per the DMCA because a home user could use these devices to brand pirated digital content. If you want sell digital cameras to your customers you must oppose this [current name of bill]." REMEMBER: COST... and possibly the only "new" industry created would be "photo shops" to "develop" (e.g. brand) digitally produced media for play.
The one sure way to defeat any bill is to convince the voters (congresscritters) that it is too expensive for its benefit [and that that expense can't be pork-barreled to their own constituency].
The renamed SSSCA has an unbounded cost of enforcement. It is the prohibition of alcohol on steriods.
It will create a black market.
It will require a demonstratably impossible (and therefore currently non-existant) technology be installed at several levels within each device. [c.f. hard disks, CPU and OS will each independently need to be conformant]
It will make huge numbers of existing technologies instantly illegal to continue manufacture. This will close factories at least for retooling and cost 'jobs'.
It will blast business tax revenues.
It will move jobs overseas because devices that will have crippled US versions and non-crippled international versions MAY NOT be manufactured in a domestic factory (while duplicate factories are not generally cost effective and overseas factories that make both classes of device are fine).
Added cost of components and complete products will reduce profit margins which will, in turn, devalue companies, and therefore stocks and the market for same.
And so on...
The raw financial impacts of the kind monitored by congresional types are neumerous and unlimited. Find a pork-barrel or pet economic project of the delegate in question and "examine it" with them.
Right now I would kill (well, apply postage anyway) to get my book published. Its a good book (heroic fantasy) and I want people to read me. I'm actually not that interested in the money, especially since it is a debut work. Is it ego? Yea, at least a little bit.
The thing is, if you dont' have a name, you are just some slob putting in a submission. If you do have a name then you can't get yourself considered by the agents and editors who you need.
The back-end stuff, the books that purport to help you get published and so on, are pretty much a farce and they prey on this very impulse. Teh desire to be read/heard. And there are worse scams. "Send me $8.00 per month per 10,000 words and I'll put your work up on my site where real editors will see it and maybe buy it." Like any editor or publisher needs to look further than the slush-pile to find millions of words to look at.
Now that is a money making scam that sucks the life out of the prospective authors pocket.
The thing that really needs to be changed is the kind of accounting that lets a company take home millions of dollars and still "not make a profit."
If you have any extra fonts or software on your system you may not be able to exercise all the diplomatic options.
Can you say "GetFontExtents()"
They couldn't.
The solution? Using "MSCONFIG" to turn off *EVERY* *SINGLE* piece of software loaded when windows starts *MIGHT* let you play. On my computer it doesn't. Go figure.
Go ahead and deride it for all its purposes and failings but by repeatedly mentioning the black-market this would create and the totally unbounded cost of trying to enforce this provision makes it emminently defeatable.
Just keep asking them where the mony is going to come from to pay to arrest and prosicute every single guy with a copy of Visual C++/Basic/Java and the ability to use same.
I recently wrote an email to my congress-persons about how much I did not like the various bills to undo various american freedoms. I have received one response. A paper-mail form-letter about how much they appreciated how much I was personally distrubed about terrorisim and how they would possibly act to make sure that (blah blah blah)....
No sign of anything having anything to do with what I wrote at all.
I have a novel. I started writing it a couple of years back in Office 98 or 97. It was then imported into office 2000. Then I changed jobs and lost my right-to-use MS office so I imported it into Star Office 5.1. When I save it in the native format of OpenOffice 6.x (the XML based format) when I reopen it I can not scroll to the last page.
I think it has something to do with the page renumbering (makeing the first page of chapter one, which is after the index etc, be "page one"). This guess is likely because there is three pages of preamble and I can only scroll within three pages of the end of the document.
What is one supposed to do with *that* kind of a problem?
What to do about the CodeRed Victim sites
on
Code Red III
·
· Score: 1
I understand that Code Red provides a root exploit...
If you are getting code-redded by a site, then maybe you should use the root exploit to disable the IIS server or just remove kernel.exe
That is someone shoudl dummy up a default.iap (or whatever) for appachie boxes that will settle the issue once and for all and then post it where it can be got to by us violated linux sites.
No you honor, I shot a *TRESSPASSER*... I didn't go out and hunt down a victim.
NOTE: Add "8-)"s as you feel approprate
1) Instead of disturbing the only biosphere we know of in the universe to mine metals and minerals here we could mine the nearby lifeless orbs. But only if we get to space. The environmentalists should be for this.
2) Deconstruction of molicules one atom at a time and the construction of other molicules at all require microgravity or less. We currently have plenty of opportunity to do this *ONLY* if we want to pay attention to one disease/issue at a time and if the correct people, as opposed to the politically empowered people, get to do the research. A large accessable habitat at an Legrange point is needed to address the medical needs of the world today. All the cancer-x vs. cancer-y vs. AIDS people should be demanding space in space for research.
3) Generating power in space is "better". It (again) doesn't impact the biosphere and solar can work nicely and if we could GET OUT OF LOW EARTH ORBIT the whole "what about when it falls out of the sky" garbage goes away because things don't fall here after a certain distance. So the ecology people and the Californians should be for space right now, with the rest of us to follow.
4) Spending money on space stuff is like getting to spend your money twice or more while shelling it out only once. The thermous bottle, kevlar, and countless things we use every day around the world were invented in the persuit of space. This is a bargan and a half, the budget concious and the cheap should be behind going to space.
5) In space things like air are commidities. For the first time ever air is a comodity (sp?). Think of the new markets for the old products... The business people should be for going into space.
6) Some fraction of everything we make up there has to come down here and be spread around, and some fraction of everything we make down here has to be gathered up and sent up there. The shipping and receiving people and the Teamsters(tm) should be for establishing ourselves in space.
7) Real estate.... need I say more?
8) Space is really big! We would have someplace to put all extra population. The Catholic Church and the anti-choice lobbies should be for space. So should all the NIMBY (Not In My Back Yard) people on virtually every topic. Once again, if you send garbage high enough it doesn't come back down.
9) Space is really big! (again) So if we had colonies on the moon and mars you would finally have a place to move to or send your inlaws to that is far enough away for them not to be comming by or calling you up on the phone. You know who you are if this one applies to you, and you should be for space exploration.
10) In space vacuum is free and the value of free suction and the varried possible uses for same boggles the immagination.
You think I am joking but I am not. (ok, maybe number 9 and 10 were a bit over the top.) Everything in our entire sphere of experience as a species has to do with occupying and controling space here on earth. It should surprise nobody that space not-here-on-earth and the acqusition, occupation, and control of same is a natural progression, a NECESSARY progression. Not only is the total value of being there quite high, the total value of the work involved in getting there is higher than you might immagine.
Remember, if they do invent a cure to cancer, and it has to be made in micro or near-zero gravity then, if we don't have the manufacturering facilities up there already only a dozen people every six months (or so) will be able to get/afford to be cured. You think AZT costs a nut? Wait till Pfizer(etc) gets to mark up the cost of your colon-cancer treatment pack that has to be made, or god forbid *administered*, at L5.
Paying for unseen content of as-yet unknown value.
But once we have the content they can't suck it out of our heads or off our computers if we decide not to pay the asked-for price. In essence it isn't that "information wants to be free" it's just that taking informaiton out of a venue is like trying to "take pee out of a swimming pool". Information has no desire to be free, it wants to loiter around your patio, drink all your beer, and impregnate your wife and children with its get. Until carfully engineered selective forgetfullness can be bottled and imposed on a browser (the person not the platform) there is no way to post-sell information in short, non-concrete format. Zines and Books work because they are too large and physical to be self perpetual. Guess why you can sit and read in a book store but not a commic-book store...
Nobody buys sutff sight unseen without a damn good recomendation from some source preceived as authoratative. We don't see movies with no star-power, directed by no-names, that have no positive word of mouth and reviewed by nobody. Actually, that's not quite true. We buy cable TV subscriptions to things like IFC (Independant Film Channel) which deliver dreck in-bulk and go mining for content with the remote. We most assuredly DO NOT mine for content by pay-per-view.
Fundamentally the web is a broadcast-esque service. We invest in our ISP connection (basic cable hookup) and perhaps a few premium channels (online games and large web sites which are like sub-installed cable providers).
The web people who go broke are essentially asking us to buy their single pay-per-view channel using the ad-line "we wont tell you what's playing or when, and you watch what we choose to show, but trust us, that one program will satisfy you all." That will never work cause we arn't one-size-fits-all mentalities.
The model does work for pr0n sites because no matter how bad the selection, we are warrented to get our share of "poosey" and/or "weeener" (as your perfer 8-) and those things are largely interchangeable within category. We take it on faith that there is an never-ending supply of genitalia out there that is well attached to young stupid pretty people. It's a safe bet.
Nobody smart will ever go for "For just five dollars you can see my take on someone elses idea of a profound musical experience." unless the persons of "my" and "someone else" are known beforehand.
Well, I have this little tiny flip-book of vi commands that was published with the old SVR3 docs for the AT&T 3B2. There are a bunch of odd but incredibly useful commands that are in "actual" vi but arn't in the vi docs so most people don't know they are there.
Things like type a bunch of commad transformations into the text of your document as they would apear at the colon prompt, then yank/delete them into a named buffer (e.g. '3"add') now you can apply that buffer of commands by doing at-a (e.g. '@a').
I have mentally banished many of these things because none of the Linux-oid vi replacements implement them and it sucks when you find you are in an ideal position to use them.
YES! I KNOW! I should get the flip-book and the sources and implement them myself but my attention is currently taken up elsewhere.
I just thought I'd toss out the rant in this context. Not all "more featured" products are proper supersets...
Pardon, his full official designation:
Floppy the Junior Rasta-Frog
You know you are pushing the envelope when you decide that your plucky commic relief should only be funny to audience members that can obtain a print of the film and run it backwards.
Well, if the DVD has an option on the "special features" menu to opaque over JarJar then this might be worth it.
If not that, then at least an "english translation" option under the languages menu for rasta-frog would be mandatory.
But I suppose listening to the directors comentary might be fun. Just a lot of "Oh, sorry aobut that"s and a few "well we needed some filler action and had some CGI budget left" comentaries just *HAVE* to be in there if he were honest.
So in December I took several months off between the end of one job and the beginning of the next. By the time the new job was supposed to start the company where it was to take place had tanked.
Between March and Today the entire DC beltway area has been on a hiring freeze. A lot of the "jobs" you see in the paper and on line have turned out to be mirrages created by the slowly suffocating "technical placement" firms. I have had 5 companies try to put me in for the same single open job.
If I had been laid off things would have been better as I wouldn't have been sitting on my ass burining savings while having a nice vacation. There would have also been things like unemployment insurance and such.
I have sucked $5k out of my 401k-plan and can do that a good 11 more times were I to have the need. (The tax penalty sucks though, thanks IRS! 8-). In general I am fine but annoyed and surprised at how desicated the job market is even for defense contractors etc.
So I am "all but certian" to have a new job here in a couple of days, and I got a roommate (mostly for fun though 8-). And I'll recover.
The impossible part was getting my resume through the background chatter of truely incompent bozos out there. ANYBODY who has tried to hire anybody technical knows how incredibly lame the average interviewee is. How do you believeably tell the person reading your resume that you haven't "hedged" here and there?
Apparently you dont. The data just can't get through the noise and if you, like me, have a wide range of experience you are doubbly screwed because you are "overqualified" which is HR speak for "will get bored and probably leave soon" which is also "not me" but is "what I look like on paper."
Yes, I saw the crash comming. It was several years late actually so I consider myself to have been "wrong." Yes, on the avreage if you are paying more than $30k a year for a "web" anything you are getting ripped off. (The web browser is, metaphorically the display adapter and not that terribly interesting a problem set.) and what do you know, the stock markets really need to "correct" a good 5k points off the DOW without the whole econmy getting snagged up like fishing-line on an over-spinning reel.
Is there an answer? Yes. Common sense. Unfortunately that will have to "seriously inconvienance" (sp?) a butt-load of people reguardless of skill or deservedness. The danger of said common sense actually occuring is, however, quite low if history is to be any indicator.
So you do your interviews, and you take your calls, and you wish fervently that you could smack the sheite out of every single person you encounter without the common courtsy to speak true and return calls. You watch your spending, which you always *SHOULD* have been doing anyway. And NO MATTER WHAT, you don't let your frustration leak out onto the lives and events of the people who *are* trying to make your situation better.
If you feel boned at every turn, take a moment to try to make the grocery checker smile and consider that one intestinal parasite or hemmoragic feever could make *any* of your current circumstance a lot worse.
In short everybody within the sound of my RANT needs to learn to "appreciate the missery and suffering of others". Sometimes that "appreciation" is sardonic and cruel ammusement that the butt-head that just cut you off in traffic is now stuck behind the person you were stuck behind in the first place, and if the butt-head passes them, then they will be stuck behind the next guy and so on for ever. Sometimes apprecation comes in the form of understanding that money, and spending same, are as much an addiction as crack and the mighty-over-priced fall, and fall quite hard and get called a laughable failure for their efforts because it is always fun to see the mighty take int in the shorts. Sometimes appreciation is realizing that the Pointy Haired Bosses are not incompetent by choice but are, in fact trying their best despite the earned resentment of those they simply can not comprehend.
And you can at least be happy you don't have AIDS and otherwise "take comfort in the knowledge that your dog is getting enough cheese."
The curule fact are, among others, these:
-- The job market sucks just now.
-- We pay our teachers crap and expect decent students.
-- When the kids today see Opie having trouble with the neighborhood bully they ask their parents why he didn't get Sherrif Andy's gun and take him out.
-- If we are going to save the forests then the lumberjacks are going to have to be fired, and someone is going to have to figure out wha to do wiht those machines that pluck old-growth trees out like errant hairs.
-- Nuclear energy *can* work, but probably wont be worked right by the people in charge.
-- We need the space program even if people here are starving 'cause "grain production" doesn't spark the mind like "living on the moon."
-- The job market will continue to suck if nobody can figure out anything more useful than pr0n to put on the internet.
-- People who can't commit to the proper care and feeding of a cat are having babbies.
-- Bunches of people think that "making dead beat dads pay" is a "priority" but teaching kids not to get pregnant is unthinkable.
Scapegoats look like you. If not today, then tomorrow. "Never underestimate the power of a large number of stupid people" needs to be ammended to take note of the fact that the rampaging mob of idiots think the "smart people" owe them something to the point that they will try to take it out of your hide if you have any sense.
In the land of the blind, the one eyed man is diseased and deluded terribly because he claims to have the mystical power to locate things and people magically across unreasonable distances, but only sometimes.
My mother want's to get on the net. My mother is from a gneration that believes nearly everything they read or see on TV. (No she doesn't beleive soaps are peopled by the characters, e.g. she knows and has no trouble with the concept of fiction, but when a person presents themselves as "some kind of expert" on talk-shows and sutff, she doesn't seem to be as skeptical as she ought to be.)
My fear of her getting on the internet is that the kind of confidence tricks played on the elderly could easily be amplified against her by her, seemingly fundamental, feeling that only authorities are allowed to speak authoratatively in a public media.
Oh sure, she'll *say* she understands that she should beleive next to nothing on the net. But will she *believe* it well enough to protect herself.
Prior evidence suggests not.
So the real question for seniors on the net is: how do you prepare people who were "outraged" by the mere idea (in its day) that game-shows were sometimes fixed and who think that anything that looks and feels like a news show is relatively unbiased?
ASIDE: Do you think that "the youth of today"(tm) are less likely to "fall for" televangelisim etc because of their being brought up "relatively jaded" about how seriously to consider the words sent to them on the NET and by extension TV?
The HTTP mosnter ate my quote "{something like 85%} of all studends graduating with a degree in Computer Science are 'unemployable' on the date of graduation"
An internal education-industry study in the late eighties said " of all students graduating with a degree in Computer Science are 'unemployable' on the date of graduation."
Having spent more than my fare share of time "recyling" computers between courses (removing and reinstalling the language and applicaiton software after it had been "customized" by the leaving students.) I am in no way surprised.
"Good" computer science pretty-much hit the bricks and disapeared once IDEs hit the scene in Universities.
Actual Conversation: (two near-graduates in CS)
S1: This isn't working.
S2: Bring up the debugger.
S1: Shouldn't "X" be "700"?
S2: Yea... look here, "Y" is "700".
S1: So I only need a "Y=X;" here?
S2: Works for me...
Then, not too long ago a young friend of mine went off to MIT and a couple of years later he told me that they were switching all their lower division students (he was a TA by then) to Java.
I told him about the "P-system" (how java wasn't all that cutting edge) and went over all the things that the students wouldn't learn. He still was enamored of how cool it would be because every student could get it on the web etc. And I despare...
Some of the things I envision a Java-trained person tripping over: (just the first dozen or so that come to mind)
Threading:
What is a mutex?
How is that different than an RW lock?
What is a "condition"?
How does thread-spesific data work/help?
What is a pointer *really*?
What is a NULL pointer?
Why would you use "pointer math"?
How do you make "700" the string into 700 the integer?
Raw Buffer?
Memory Leak?
Actual "real" unions and discriminators for same.
What is "Bit Slicing"?
Memory models? You mean computers are different?
What do you mean "network byte order"?
Buffer Overrun? How is that an error/exploit?
Multiple Inherratance? Why would you need to be more than one kind of thing?
What do you mean "no such identifier: 'interface'"?
What is a "signal"?
What does "asynchronus" mean?
Actually the list goes on so long and comes to mind so qucikly my mind actually boggles...
At least we don't have to worry about any of *these* guys knowing how to read a hex-dump and using that knowledge to the detrament of man.
I will definately want to move into the mountains and give up my commute before these people are out there trying to make a fly-by-wire car...
The funniest thing is that there *IS* a block start character. The colon ":" starts the block. There is also an explicit end of block (the blank line or change of indent). The fundamental truth: Both the colon and the white space *ARE* *EXPLICIT*. See explicit definition 3, if the system can tell where the block ends... And if it just guesses... Or if you put in in wrong...
The block delimits are "less robust" and easy to fsck up but not explicit == implicit (follow the link 8-) either that or Python is a deliberate joke and deliberately "leaves a a question as to meaning or intent." (reverse def #1 8-)
The inventor of Python (and all his parrots) proves himself (themselves) incompetent to talk about language structure or theory every time he says (they say) his blocks are not explicitly delimited.
The blocks are explicitly delimited. It's just that the end-of-block isn't printable or likely to survive being emailed as plain text or posted on the web "casually".
Your Response to my position:
Hello... McFly.... In point of fact the design of anything that *IS* *DESIGNED* is based on the core reasoning behind the elements of the design. When there is no core reasoning it is not designed it is "chance". To then understand the *DESIGN* instead of the *FORM* you must be able to access the design and not just the form. Saying "I don't like the way this is, it is porly designed" is logically junct. If you choose not to process the "why" of a design your assertions about the "what" of the form are, well, uninformed.
Consider: "Dude, this is a terrible ashtray." "DUDE! That's not an ashtray, it's a coffie mug."
Your entire position is that the language isn't sufficently lacking in complexity for your taste.
You seem incapable of processing the basic point, so I'll say it again.
It seems that you personally find C++ insufficently simple for you to internalize. Fine. You then go on to postulate that since it is too complex for you it must be too complex for anybody to use safey. That is unsupported and unsupportable. Just because it is too complex for you (or your personal taste) doesn't a-priori then mean it is too complex for everybody. The tool analogy holds. This is not a tool for people who wish to avoid complexety. It is a tool for people who need (or just "want" but that is a bad reason 8-) the power that is bought at the expense of that complexity.
Period.
And yet you persist:
You suffer from a relative lack of understanding. The fact that there are many books which explain a concept doesn't infer that each or any one person needs to consult many books to find understanding. It only means that the topic is adequately covered elsewhere so needs not be covered here.
The fact that you only refute odd corners of arguments and chose to do so at disproportionate lenght is itself revealing.
Your arguments are biased (of course all arguments are [see definition of argument 8-)]).
The fact that your "conclusions" are not particularly supported by your arguments is the true test.
C++ is a complex language that lets you do things more effeciently than many (most?) others. That power is bought at the price of that complexity. It is not untennable or unworkable in and of itself. The people who are not up to the skill, or need, to persue it are invited to not do so.
The following three absurdities are DIRECT analogies of your proposition:
Shouldn't the SCUBA gear be simple enough that you any swimmer can use them without the need to be trained to dive?
Shouldn't the scalpel be simple enough that you can opperate on the human brain without having to do more than basic med school?
Shouldn't a 767 be simple enough that any general avation pilot (you know single propeller plane etc) could fly it?
Finally, your assertion "C++ is a very good accedemic exploration of the value of C as a high-level language" is spurious. You toss this in as a "conclusion" without really connecting it to anything except a vague intimation of danger. That is a classically cheap closing technique you would be penalized for in any formal debate. Used imporperly many things are dangerous. Used properly many dangerous things are indespensible. (See "the family car" 8-).
"At what price safety?" -- attribution unknown.
While I often do "slap togehter" code when I know I am going to use it onece and throw it away. Or when I am prototyping it...
It is intrinsicly evil to *DELIVER* "slap together" code.
The median case, where you are safely within bounds is all well and good, but if you deliver actual product that has to run dangling-anatomy-to-the-wall for months you had better not be slapping anything.
[begin steadly increasing rant/troll]
I do not do things "old school" for ego's sake. What a pitious reason to do anything. I do things 'carefully' and 'with the correct tool for each job' because I can not STAND to have to go back and do the same job more than once. My opinion might differ if I were "a consultant" where my big dime came from return visits to do maintenance. Then again, probably not, doing inferior work to keep a job alive is dishonest and goes against my work-ethic. I consider my code like furnature. I make a chair I am done with that chair. Going back and re-making that chair when I could be making coffie table or a new and better chair would be stupid, boring, and wasteful. I also {GASP} reuse my own code in later projects because, having made a chair it would be a shame if it was only sat uppon one time.
The web and the "e-economy" has gifted us with a lot of truely sub-standard programmers. Part of this is the inherent nature of CGI. (It's one invocation one action nature allows some truely horrific code to "work well enough".) If every invocation is atomic and it sometimes fails, the user hits reload. If their dataset always fails then that user doesn't come back, usually without complaint.
That screw-the-boundry-case mentality is real business to some folks, and those reloads and abandons actually cost tiny amounts of money, not so tiny when it is considered en-mass.
To your particular bragg: I am very happy for you that you have never had a white-space error mess up your code. Hurray for you. [Not that I actually beleive you. Perhaps you have never had a "tab vs space" mess you up, but when you hold that statement up as a "glittering generality" (= look it up, or ask your lit professor 8-) you will be evaluated in the general case...] Pitty the poor bastard that has to deal with it (the source code) later, especially if gets passed to him via email or MS-Office.
I am sure in my soul that someone somewhere has made the same claim of "never having had a problem" with respect to his RPG code too. It still doesn't make whitespace a valid control structure that a sane person would want to use. "It is perfectly safe as long as (your condition here)" isn't a good argument for desireability, only acceptable necessity, and it WASN'T NECESSARY.
Was saving the one keystroke (the close brace) per conditional block really that valuable compared to having to mess around with all the "special" Python-friendly editors? How about the number of times someone has has accidently mis-indented a statement?
Was that value?
Was the wasted time spent to the greater good?
Is the counting-spaces durring each compile an asset?
Computers are damn fast these days so most people don't even sneeze over wasted cycles. It's sad. One wonders how much faster and better any given program might be if the programmers still thought of one machine instruction cycle as a valuable resource.
Game programmers understand, engineers understand, batch-process workers (banks etc) understand.
Anybody who has ever had to maintain code understands.
But I guess we are all wrong... your five whole glorious years of *occasional* Python use has enlightened us all to the folly of our conservitive attitudes...
Meanwhile you keep slapping together those deliverables and we will bask in your magnificence.
8-)
for all the above cases add
{open angle} new_type {close angle}
between the cast and the parenthisized expression. Those things look like browser tags and get eaten...
so
const_cast <new_type>(existing_object)
static_cast <new_type>(existing_object)
reinterpret_cast <new_type>(existing_object)
dynamic_cast <new_type>(existing_object)
Sorry about that... 8-)
Why it is a well-designed language:
... }; ... };
(Summary first) Everything was put in or left out for a reason and that reason (per thing) is documented if you take the time to look. Since it will be impossible in this forum to address the entirity of the issue I will stick to the elementes you named. Specifically the four casting operators (actually there are five) and the constructor invocation as a sixth "cast", which you incorrectly classify as an ambiguity.
First you must consider the base language construct of the unconditional cast.
struct A {
struct B {
A * ptr_to_A = new A();
B * ptr_to_B = (B*)A;
In the base language "C" the above is legal, will compile just fine, and is totaly wrong. This program would likely fail catostrophically. This is the generic version of an actual problem we (at my company) just found in a comercial "C" product.
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.)
More importantly the C-style cast is a "gloves off" operation. When the programmer performs this basic operations it is with the understanding that if it is wrong it is to be done anyway. Complaining about its existence is like compalining to a surgon that a scalpel is dangerous because it could cut something...
The four "lesser casts" (my term) are "gloves on" operations. The programmer, in using the spesific casts is describing a desireable transformation on the data and the compiler and/or runtime checks the viability of the operations to ensure that they are completely legal.
Consider first a language that will do silent uncasted transformations (C++ will do these in some spesific and well defined cases which I will get back to later)
if you have "let SomeString = SomeInt" and the language allows this as a transformation (see awk, possibly Perl etc) it will "just do it." but the "it" is only vaguely defined. It is worse if "let SomeInt = SomeString" where there is no obvious guarantee that "SomeString" contains a useful representation of a candidate integer.
Ok, so we can agree that the transformation of a datum from one intrinsic type to another is problematic. Composite types make this a composite problem. Now back to the casts...
All the casts represent expressions in the true sense. The opperations are transformative just as unary minus or square_root are transformative. The original object and representation are unchanged but the address or constantness or the "invariant" are manipulated. And like any expression there may be temporary objects involved. Listed from most-checked and safe to least, the compile-time resolvable casts are:
const_cast(existing_object) => the existing_object may only vary from the new_type by the addition or removal [usually removal] of the constantness.
static_cast(existing_object) => the existing_object must have a defined pathway to becomming an object of the new_type. Usually this is done by one of two methods. The most common transforms the address of the object into the address of the part of the object that is of the new_type. The second method creates a temporary object of the new_type using the relevant information from the existing_object.
reintrepret_cast(existing_object) => almost always a transition from pointer-to-existing_object to pointer-to-void or vice versa. The reintrepret cast is used to release the expression from the constraints of the invariant of an object. Usually in order to pass the object through some external interface (e.g. passing it to the OS etc).
Notice that these three casts each have a spesific guarantee of function for form. To take the safe root through a transformation you sometimes need to use two casts together. Most commonly you will un-constant-ize something and then static cast it if you are doing these kinds of casts in a way that requires composition. I'll skip the example for now. The important thing is that you can, once you know how to use your tools, know in turn exactly the transformations that your existing_object or reference or pointer there-to will undergo.
There is no uncertanty in the three compile_time casts.
The fourth "limited cast" is:
dynamic_cast(existing_object)
This one is trickeir as it has an implicit "if" statement within it at compile time and another "if" statement in it at runtime.
IF new_type is an obvious part of existing_object the dynamic_cast is identical to the static_cast and you should have used that. The compiler will use that static_cast in place of the dynamic_cast because it knwos you are being dumb. 8-)
IF however new_type is not clearly in existing_object(s) ancestory (this is the "else" of the above case) then the compiler generates code to deal wiht the cast at runtime instead of compile time.
At runtime, IF the new_type object that is "part of" the "whole_object" that existing_object might also just be "part of" then the whole thing goes off without a hitch and the expression works. If the request is impossible then either a zero is returned (remember "transformative expression" 8-) or an exception is thrown. (the causes and cases are again ommited, go read the book).
SO BACK TO THE CORE QUESTION: Why is the above a "good language design"?
Answer: Because an unconditional cast "(new_type)existing_object" could do any combination of the above, but the above only happen explicitly if you use them explicitly.
Hua?
Well, in the first three you *ALWAYS* get a thing of the type new_type so there is no testing to be done. The compiler will not let the activity go wrong. You don't have to test anything in the code, the compiler makes you a warrent.
The fourth, more dangerous and occasionally indispenseable and often quite desireable, cast needs support code.
In a lesser language, I would either have to inclde the support code for every cast *OR* "work without a net".
In C++ I can code to the spesific requirements.
A language that lets the programmer code to the spesific requrements without having to put in lots of dead code just to be safe is "well designed".
Some languages "seem" to be better designed because they put in the general case safety-net for you, but languages that generate "general case" code "for you" arn't well designed. The fact that some environments/compilers then try to take the safety-net code back out durring optimization etc are arguable. The work for the slapdash at the cost of allowing the programmer to express himself explicitly. When the programmer isn't really in charge of the code that is generally a "bad design" where effeciency is a factor. But for the people who need this net or don't know how to work without it, this kind of code is "good".
But I digress.
So what about the so-called "ambiguities" over constructor invocation as a casting operation.
First, construction of a new object isn't, strictly speaking, a cast operation. It is "so like a cast operation" that in practical terms the two operations are considered synonymous.
In actual fact, construction is construction. Casting is casting. Construction is the building of a new object using the information from zero or more old objects. Casting is the reconsideration of an existing object "in place".
The confustion arrises because a sloppy thinker often cannot separate the classification of an object from the application of the value of that object.
In the expression "A = B;" A is being transformed. In the special case "A_Type A = B;" the transformation of "starts from nothing". The construction of paramter objects durring fuction call is the latter case.
The language allows us to define the transformation of A with respect to many types. If we create a transformation of A based on a B then this is obvious. Sometimes things are not that simple.
The programmer is allowd to make a chain of transformations implicit in ther code space because the language design allows for one "free and silent" step to be added. That is, if B can become X and X may be used to transform A, then B will transform A by way of a temporary X.
The user is spesifically warned that this feature must be used wiht due dilligence. In particular if there is more than one possible X intermediary the compiler will pick the "best" one. The rules for finding this "best X" are explicit (there are exactly four such rules).
Additionally, under no circumstances will B => Y => X => A considered.
If there is more than one "X" and they score the same on the "betsness" scale the compiler will demand the programmer clean up his mess. Many less-well designed languages will silently pick one wihtout a peep, which one may change from compile to compile. This would be an inferior design because any "X" may have larger-scale implications.
The educated user is capible of making the transformations work seamlessly.
The educated user is capible of explicitly disallowing some transformations by use of the keyword "explicit".
The uneducated user is going to make a mess if he fails to understand and use the feature.
There is absolutely no ambiguity.
The fact of the matter is that a poor design will net poor code. Some languages will glop out corrective code for the programmer. Where the programmer is willing to pay this expense, and the application can afford this expense the issue is a giant "don't care".
Where the cost should not be paid, the "looser" languages don't give the programmer the ability to remove these expenses. To that end these "looser" languages have an intrinsic limit to their functionality.
Every language does actually.
However proficency in the tighter (and more demanding) language translates directly into the skillset needed for a looser language. The converse isn't true.
There is an old aphorisim: "If all you have is a hammer every problem looks like a nail." The secret obverse is "the more tools you have the easier it is to find the right tool for the job."
Think nailgun. Heavy, dangerous, effective as hell. If you are competent to use one, it will serve you well. If you never learned to use anthing more invasive than wood-glue then don't pelase-god try to use the nailgun.
The fact that you are uncomfortable using a nailgun doesn't intrinisicly mean the nailgun is poorly designed.
It's a poor craftsman that blames the tools.
You were trolling here...
There is a need for a continum of tools. The fact you are part of the "everyone" who seems to think that a language must be all things to all people is, well, kind of a poor reflection on you not the language.
There are PLENTY of things that C++ isn't "the best choice" for. Primary among those are the projects where you just want to slap something together safely.
The fact that I wouldn't let most people near an industrial band-saw doesn't somehow invalidate the existence and purpose of that device. Yes, people who don't know, or don't care, to learn how to use equipment properly should be laughed at when they get themselves hurt. People who decide to go SCUBA diving withtout training and get themselves killed also deserve what they get.
People who jump into C or C++ without the necessary foundation in "real"(tm) (8-) programming will hemmorage memory and dump core and generally make all sorts of messes. Shame on them and pitty to their employers and all that.
Still, a skilled craftsman with C/C++ can and do make better, faster, and more effective code than an equally skilled craftsman using the safety-net filled scriptirrific languages.
Why do you think Perl and Python are written in C/C++?
[rant]
And to diverge into a rant some, Python is a screwup waiting to happen. Friends don't let friends use whitespace as a control structure. I officially consign anybody who advocates using Python for real work to RPG hell for the rest of eternity. replacing the two characters "{" and "}" with the one character ":" and needing to worry about counting spaces/tabs is no bargan. Yes there are editors that will help you but now your language is dependent on your editor and code that reads identically on paper may do different things in the computer. How dumb is that?
Anybody who recomends Python over C++ because C++ is a "bad" language but Python is a "good" one knows nothing about language theory (spoken or computer languages)
[/rant]
COST OF ENFORCEMENT is the ONLY too keep this dead.
... and possibly the only "new" industry created would be "photo shops" to "develop" (e.g. brand) digitally produced media for play.
(The COST of...)
Jobs moved (politically "lost") overseas as Sony et al can't build the international version of any product here and there is no point in running separate factories.
Content Companies having to make two copies of every movie and CD if they want to sell to their core market (the people who BUY movies have BOUGHT movies and wont want to lose that investment) so now a movie is compeeting with itself for shelf space. First MPAA or RIAA member to break ranks and still produce the old format (non DRM media isn't outlawed, just making players that can play it without DRM) starts a war.
More customs officers.
The huge government-machine to processess applications to bring new/revised hardware and software to market.
The cost of making the new products and the old products as the deadline approaches.
The cost of finding all thost linux-terrorists who are out making CD of linux.
Cost
Loss
Budget
and
Expense
These are the only ways to make something like this become and stay dead. Present the fincial cost in terms of lost constituents and spent government and industry dollars.
Also Consider: "Dear Sony America Inc. The [current name of bill] will render your nice line of digital cameras and video recorders illegal. Said recorders will have to have the DRM branding technology built into them in order to let the customer produce movies and stills they can play back. That makes these devices "cimcumvention devices" as per the DMCA because a home user could use these devices to brand pirated digital content. If you want sell digital cameras to your customers you must oppose this [current name of bill]."
REMEMBER: COST
The countdown clock at the top of the page makes the entire story blink on and off on my netscape.
Why do morons over-produce web pages?
Same reason morons boy $300,000 home sterios. To make up for inadaquate penis size...
The one sure way to defeat any bill is to convince the voters (congresscritters) that it is too expensive for its benefit [and that that expense can't be pork-barreled to their own constituency].
The renamed SSSCA has an unbounded cost of enforcement. It is the prohibition of alcohol on steriods.
It will create a black market.
It will require a demonstratably impossible (and therefore currently non-existant) technology be installed at several levels within each device. [c.f. hard disks, CPU and OS will each independently need to be conformant]
It will make huge numbers of existing technologies instantly illegal to continue manufacture. This will close factories at least for retooling and cost 'jobs'.
It will blast business tax revenues.
It will move jobs overseas because devices that will have crippled US versions and non-crippled international versions MAY NOT be manufactured in a domestic factory (while duplicate factories are not generally cost effective and overseas factories that make both classes of device are fine).
Added cost of components and complete products will reduce profit margins which will, in turn, devalue companies, and therefore stocks and the market for same.
And so on...
The raw financial impacts of the kind monitored by congresional types are neumerous and unlimited. Find a pork-barrel or pet economic project of the delegate in question and "examine it" with them.
Right now I would kill (well, apply postage anyway) to get my book published. Its a good book (heroic fantasy) and I want people to read me. I'm actually not that interested in the money, especially since it is a debut work. Is it ego? Yea, at least a little bit.
The thing is, if you dont' have a name, you are just some slob putting in a submission. If you do have a name then you can't get yourself considered by the agents and editors who you need.
The back-end stuff, the books that purport to help you get published and so on, are pretty much a farce and they prey on this very impulse. Teh desire to be read/heard. And there are worse scams. "Send me $8.00 per month per 10,000 words and I'll put your work up on my site where real editors will see it and maybe buy it." Like any editor or publisher needs to look further than the slush-pile to find millions of words to look at.
Now that is a money making scam that sucks the life out of the prospective authors pocket.
The thing that really needs to be changed is the kind of accounting that lets a company take home millions of dollars and still "not make a profit."
Evil has many guises...
If you have any extra fonts or software on your system you may not be able to exercise all the diplomatic options.
Can you say "GetFontExtents()"
They couldn't.
The solution? Using "MSCONFIG" to turn off *EVERY* *SINGLE* piece of software loaded when windows starts *MIGHT* let you play. On my computer it doesn't. Go figure.
COST OF ENFORCEMMENT
Lets repeat that...
COST OF ENFOIRCEMENT.
Go ahead and deride it for all its purposes and failings but by repeatedly mentioning the black-market this would create and the totally unbounded cost of trying to enforce this provision makes it emminently defeatable.
Just keep asking them where the mony is going to come from to pay to arrest and prosicute every single guy with a copy of Visual C++/Basic/Java and the ability to use same.
Go for the money, it's the only hope.
I recently wrote an email to my congress-persons about how much I did not like the various bills to undo various american freedoms. I have received one response. A paper-mail form-letter about how much they appreciated how much I was personally distrubed about terrorisim and how they would possibly act to make sure that (blah blah blah)....
No sign of anything having anything to do with what I wrote at all.
They are not listening. Period.
I have a novel. I started writing it a couple of years back in Office 98 or 97. It was then imported into office 2000. Then I changed jobs and lost my right-to-use MS office so I imported it into Star Office 5.1. When I save it in the native format of OpenOffice 6.x (the XML based format) when I reopen it I can not scroll to the last page.
I think it has something to do with the page renumbering (makeing the first page of chapter one, which is after the index etc, be "page one"). This guess is likely because there is three pages of preamble and I can only scroll within three pages of the end of the document.
What is one supposed to do with *that* kind of a problem?
I understand that Code Red provides a root exploit...
If you are getting code-redded by a site, then maybe you should use the root exploit to disable the IIS server or just remove kernel.exe
That is someone shoudl dummy up a default.iap (or whatever) for appachie boxes that will settle the issue once and for all and then post it where it can be got to by us violated linux sites.
No you honor, I shot a *TRESSPASSER*... I didn't go out and hunt down a victim.
NOTE: Add "8-)"s as you feel approprate
Sorry, I couldn't resist... 8-)
--
1) Instead of disturbing the only biosphere we know of in the universe to mine metals and minerals here we could mine the nearby lifeless orbs. But only if we get to space. The environmentalists should be for this.
2) Deconstruction of molicules one atom at a time and the construction of other molicules at all require microgravity or less. We currently have plenty of opportunity to do this *ONLY* if we want to pay attention to one disease/issue at a time and if the correct people, as opposed to the politically empowered people, get to do the research. A large accessable habitat at an Legrange point is needed to address the medical needs of the world today. All the cancer-x vs. cancer-y vs. AIDS people should be demanding space in space for research.
3) Generating power in space is "better". It (again) doesn't impact the biosphere and solar can work nicely and if we could GET OUT OF LOW EARTH ORBIT the whole "what about when it falls out of the sky" garbage goes away because things don't fall here after a certain distance. So the ecology people and the Californians should be for space right now, with the rest of us to follow.
4) Spending money on space stuff is like getting to spend your money twice or more while shelling it out only once. The thermous bottle, kevlar, and countless things we use every day around the world were invented in the persuit of space. This is a bargan and a half, the budget concious and the cheap should be behind going to space.
5) In space things like air are commidities. For the first time ever air is a comodity (sp?). Think of the new markets for the old products... The business people should be for going into space.
6) Some fraction of everything we make up there has to come down here and be spread around, and some fraction of everything we make down here has to be gathered up and sent up there. The shipping and receiving people and the Teamsters(tm) should be for establishing ourselves in space.
7) Real estate.... need I say more?
8) Space is really big! We would have someplace to put all extra population. The Catholic Church and the anti-choice lobbies should be for space. So should all the NIMBY (Not In My Back Yard) people on virtually every topic. Once again, if you send garbage high enough it doesn't come back down.
9) Space is really big! (again) So if we had colonies on the moon and mars you would finally have a place to move to or send your inlaws to that is far enough away for them not to be comming by or calling you up on the phone. You know who you are if this one applies to you, and you should be for space exploration.
10) In space vacuum is free and the value of free suction and the varried possible uses for same boggles the immagination.
You think I am joking but I am not. (ok, maybe number 9 and 10 were a bit over the top.) Everything in our entire sphere of experience as a species has to do with occupying and controling space here on earth. It should surprise nobody that space not-here-on-earth and the acqusition, occupation, and control of same is a natural progression, a NECESSARY progression. Not only is the total value of being there quite high, the total value of the work involved in getting there is higher than you might immagine.
Remember, if they do invent a cure to cancer, and it has to be made in micro or near-zero gravity then, if we don't have the manufacturering facilities up there already only a dozen people every six months (or so) will be able to get/afford to be cured. You think AZT costs a nut? Wait till Pfizer(etc) gets to mark up the cost of your colon-cancer treatment pack that has to be made, or god forbid *administered*, at L5.
--
But once we have the content they can't suck it out of our heads or off our computers if we decide not to pay the asked-for price. In essence it isn't that "information wants to be free" it's just that taking informaiton out of a venue is like trying to "take pee out of a swimming pool". Information has no desire to be free, it wants to loiter around your patio, drink all your beer, and impregnate your wife and children with its get. Until carfully engineered selective forgetfullness can be bottled and imposed on a browser (the person not the platform) there is no way to post-sell information in short, non-concrete format. Zines and Books work because they are too large and physical to be self perpetual. Guess why you can sit and read in a book store but not a commic-book store...
Nobody buys sutff sight unseen without a damn good recomendation from some source preceived as authoratative. We don't see movies with no star-power, directed by no-names, that have no positive word of mouth and reviewed by nobody. Actually, that's not quite true. We buy cable TV subscriptions to things like IFC (Independant Film Channel) which deliver dreck in-bulk and go mining for content with the remote. We most assuredly DO NOT mine for content by pay-per-view.
Fundamentally the web is a broadcast-esque service. We invest in our ISP connection (basic cable hookup) and perhaps a few premium channels (online games and large web sites which are like sub-installed cable providers).
The web people who go broke are essentially asking us to buy their single pay-per-view channel using the ad-line "we wont tell you what's playing or when, and you watch what we choose to show, but trust us, that one program will satisfy you all." That will never work cause we arn't one-size-fits-all mentalities.
The model does work for pr0n sites because no matter how bad the selection, we are warrented to get our share of "poosey" and/or "weeener" (as your perfer 8-) and those things are largely interchangeable within category. We take it on faith that there is an never-ending supply of genitalia out there that is well attached to young stupid pretty people. It's a safe bet.
Nobody smart will ever go for "For just five dollars you can see my take on someone elses idea of a profound musical experience." unless the persons of "my" and "someone else" are known beforehand.
--
Well, I have this little tiny flip-book of vi commands that was published with the old SVR3 docs for the AT&T 3B2. There are a bunch of odd but incredibly useful commands that are in "actual" vi but arn't in the vi docs so most people don't know they are there.
Things like type a bunch of commad transformations into the text of your document as they would apear at the colon prompt, then yank/delete them into a named buffer (e.g. '3"add') now you can apply that buffer of commands by doing at-a (e.g. '@a').
I have mentally banished many of these things because none of the Linux-oid vi replacements implement them and it sucks when you find you are in an ideal position to use them.
YES! I KNOW! I should get the flip-book and the sources and implement them myself but my attention is currently taken up elsewhere.
I just thought I'd toss out the rant in this context. Not all "more featured" products are proper supersets...
damn idealists... 8-)
--
Floppy the Junior Rasta-Frog
You know you are pushing the envelope when you decide that your plucky commic relief should only be funny to audience members that can obtain a print of the film and run it backwards.
--
If not that, then at least an "english translation" option under the languages menu for rasta-frog would be mandatory.
But I suppose listening to the directors comentary might be fun. Just a lot of "Oh, sorry aobut that"s and a few "well we needed some filler action and had some CGI budget left" comentaries just *HAVE* to be in there if he were honest.
--
Between March and Today the entire DC beltway area has been on a hiring freeze. A lot of the "jobs" you see in the paper and on line have turned out to be mirrages created by the slowly suffocating "technical placement" firms. I have had 5 companies try to put me in for the same single open job.
If I had been laid off things would have been better as I wouldn't have been sitting on my ass burining savings while having a nice vacation. There would have also been things like unemployment insurance and such.
I have sucked $5k out of my 401k-plan and can do that a good 11 more times were I to have the need. (The tax penalty sucks though, thanks IRS! 8-). In general I am fine but annoyed and surprised at how desicated the job market is even for defense contractors etc.
So I am "all but certian" to have a new job here in a couple of days, and I got a roommate (mostly for fun though 8-). And I'll recover.
The impossible part was getting my resume through the background chatter of truely incompent bozos out there. ANYBODY who has tried to hire anybody technical knows how incredibly lame the average interviewee is. How do you believeably tell the person reading your resume that you haven't "hedged" here and there?
Apparently you dont. The data just can't get through the noise and if you, like me, have a wide range of experience you are doubbly screwed because you are "overqualified" which is HR speak for "will get bored and probably leave soon" which is also "not me" but is "what I look like on paper."
Yes, I saw the crash comming. It was several years late actually so I consider myself to have been "wrong." Yes, on the avreage if you are paying more than $30k a year for a "web" anything you are getting ripped off. (The web browser is, metaphorically the display adapter and not that terribly interesting a problem set.) and what do you know, the stock markets really need to "correct" a good 5k points off the DOW without the whole econmy getting snagged up like fishing-line on an over-spinning reel.
Is there an answer? Yes. Common sense. Unfortunately that will have to "seriously inconvienance" (sp?) a butt-load of people reguardless of skill or deservedness. The danger of said common sense actually occuring is, however, quite low if history is to be any indicator.
So you do your interviews, and you take your calls, and you wish fervently that you could smack the sheite out of every single person you encounter without the common courtsy to speak true and return calls. You watch your spending, which you always *SHOULD* have been doing anyway. And NO MATTER WHAT, you don't let your frustration leak out onto the lives and events of the people who *are* trying to make your situation better.
If you feel boned at every turn, take a moment to try to make the grocery checker smile and consider that one intestinal parasite or hemmoragic feever could make *any* of your current circumstance a lot worse.
In short everybody within the sound of my RANT needs to learn to "appreciate the missery and suffering of others". Sometimes that "appreciation" is sardonic and cruel ammusement that the butt-head that just cut you off in traffic is now stuck behind the person you were stuck behind in the first place, and if the butt-head passes them, then they will be stuck behind the next guy and so on for ever. Sometimes apprecation comes in the form of understanding that money, and spending same, are as much an addiction as crack and the mighty-over-priced fall, and fall quite hard and get called a laughable failure for their efforts because it is always fun to see the mighty take int in the shorts. Sometimes appreciation is realizing that the Pointy Haired Bosses are not incompetent by choice but are, in fact trying their best despite the earned resentment of those they simply can not comprehend.
And you can at least be happy you don't have AIDS and otherwise "take comfort in the knowledge that your dog is getting enough cheese."
The curule fact are, among others, these:
-- The job market sucks just now.
-- We pay our teachers crap and expect decent students.
-- When the kids today see Opie having trouble with the neighborhood bully they ask their parents why he didn't get Sherrif Andy's gun and take him out.
-- If we are going to save the forests then the lumberjacks are going to have to be fired, and someone is going to have to figure out wha to do wiht those machines that pluck old-growth trees out like errant hairs.
-- Nuclear energy *can* work, but probably wont be worked right by the people in charge.
-- We need the space program even if people here are starving 'cause "grain production" doesn't spark the mind like "living on the moon."
-- The job market will continue to suck if nobody can figure out anything more useful than pr0n to put on the internet.
-- People who can't commit to the proper care and feeding of a cat are having babbies.
-- Bunches of people think that "making dead beat dads pay" is a "priority" but teaching kids not to get pregnant is unthinkable.
Scapegoats look like you. If not today, then tomorrow. "Never underestimate the power of a large number of stupid people" needs to be ammended to take note of the fact that the rampaging mob of idiots think the "smart people" owe them something to the point that they will try to take it out of your hide if you have any sense.
In the land of the blind, the one eyed man is diseased and deluded terribly because he claims to have the mystical power to locate things and people magically across unreasonable distances, but only sometimes.
But I digress....
--
My fear of her getting on the internet is that the kind of confidence tricks played on the elderly could easily be amplified against her by her, seemingly fundamental, feeling that only authorities are allowed to speak authoratatively in a public media.
Oh sure, she'll *say* she understands that she should beleive next to nothing on the net. But will she *believe* it well enough to protect herself.
Prior evidence suggests not.
So the real question for seniors on the net is: how do you prepare people who were "outraged" by the mere idea (in its day) that game-shows were sometimes fixed and who think that anything that looks and feels like a news show is relatively unbiased?
ASIDE: Do you think that "the youth of today"(tm) are less likely to "fall for" televangelisim etc because of their being brought up "relatively jaded" about how seriously to consider the words sent to them on the NET and by extension TV?
--
The HTTP mosnter ate my quote "{something like 85%} of all studends graduating with a degree in Computer Science are 'unemployable' on the date of graduation"
--
An internal education-industry study in the late eighties said " of all students graduating with a degree in Computer Science are 'unemployable' on the date of graduation."
Having spent more than my fare share of time "recyling" computers between courses (removing and reinstalling the language and applicaiton software after it had been "customized" by the leaving students.) I am in no way surprised.
"Good" computer science pretty-much hit the bricks and disapeared once IDEs hit the scene in Universities.
Actual Conversation: (two near-graduates in CS)
S1: This isn't working.
S2: Bring up the debugger.
S1: Shouldn't "X" be "700"?
S2: Yea... look here, "Y" is "700".
S1: So I only need a "Y=X;" here?
S2: Works for me...
Then, not too long ago a young friend of mine went off to MIT and a couple of years later he told me that they were switching all their lower division students (he was a TA by then) to Java.
I told him about the "P-system" (how java wasn't all that cutting edge) and went over all the things that the students wouldn't learn. He still was enamored of how cool it would be because every student could get it on the web etc. And I despare...
Some of the things I envision a Java-trained person tripping over: (just the first dozen or so that come to mind)
Actually the list goes on so long and comes to mind so qucikly my mind actually boggles...
At least we don't have to worry about any of *these* guys knowing how to read a hex-dump and using that knowledge to the detrament of man.
I will definately want to move into the mountains and give up my commute before these people are out there trying to make a fly-by-wire car...
--