I suspect a lot of those redundant code instances were caused by people recycling code via cut-and-paste - the quick and dirty, programming-by-pattern-matching approach we all take when we just want to get something done without taking the time to deeply understand someone else's code.
The current word for making this stuff go away is "refactoring" - noticing redundant patterns in code and abstracting them out. The problem is that refactoring is hard in the most popular languages (C, C++, Java) because of their requirements for picky, static type declarations on all the built-in types. Type declarations are necessary for low-level bit mashing and the last order of magnitude improvement in performance, but most of the time they make it hard to refactor code by pushing implementation details too far down into it.
Common Lisp got this one right a long time ago. Objects in CL are strongly typed, and variables are untyped by default, but you can add declarations which the compiler can then use to speed up code. The CL developer's mantra is "make it work, profile it, then make it fast." That way, you only do the declaration work on the measured hot spots in the code.
(BTW, to all you Smalltalk/Dylan/other-dynamically-typed langauge fans out there - peace, brothers and sisters. Your stuff is good too; my beef is with strong static typing that cripples abstraction.)
Definitely not a Lisp programmer - the parentheses don't match up (the first character of the posting is an unclosed '(' (which a true Lisp hacker would never leave unbalanced)).
He also doesn't nest his parenthesized comments nearly enough.
There is nothing 'ironic' about thinking a lawyer is a good guy when he's working for someone you like, and thinking he's a bad guy when he's working for someone you dislike. Good lawyers, especially from big firms, will argue either side of a case, as long as the firm gets paid.
All this is quite consistent with typical Slashdot views on these subjects:
Illegal extension of monopoly power is bad, so fighting it is good.
Software patents, especially old ones that claim to cover common techniques, are bad, and supporting them is bad.
The paper is dated 1997 (published 1998). All of the languages tested have changed significantly since that time. Scheme in particular has grown several significant implementations like Scheme 48, the substrate for scsh, the Scheme shell, and Kawa, a Scheme that compiles to Java bytecodes.
... by Vernor Vinge. Go read it, especially the part where he talks about nanoscale "localizers". Second scariest part of the book, in my opinion, the scariest being "focus" - we'd better hope mechanical AI is feasible, because if it isn't, "focus" almost certainly is feasible, and would make RFID-based totalitarianism feel like a walk in the park.
Imagine how fast OS X would be if it were ported to Alpha! Apple could dump Motorola, annoy IBM and its installed base, and continue a tradition of adopting elegant hardware and staying with it until it marginalized itself in the marketplace!
Just in case anyone was unclear on the above...;-)
Interlisp in all its incarnations had a module called DWIM (Do What I Mean) which caught typos and thinkos in your input and offered to correct them for you. It was at its smartest fixing spelling errors and inserting parentheses (it would guess '(foo)' when you typed 9foo0, for example).
DWIM could be turned off, set so it asked you before changing anything, or set to automatically fix your inputs. That last setting would be completely intolerable without UNDO, which Interlisp also had, so even if DWIM guessed wrong, corrected your input to the moral equivalent of 'rm *', and ran it, you could still recover with UNDO and try again.
The oldest Interlisp reference I can find is the 1978 Interlisp reference manual. Lisp was on Altos as early as 1973, hacked up by L. Peter Deutsch. For an academic take on UNDO, see this paper from ACM TOPLAS (courtesy of Citeseer).
In a scenario where heat was the cause of the sound, sooting the gong would have caused a significantly louder sound as the light was absorbed, instead of (as happened) as softer one.
If the gong is reflective, the air near it gets heated both by the incoming light and by the reflected light. If the gong is sooted, only the incoming light heats the air.
At least, this seems logical to me. A way to test it would be to put a vibration sensor on the gong, and try it both in air, and in a vacuum. If you're right, the sensor should read the same, if I'm right the impact in vacuum should be much less.
After all, the Newtonian model assumes infinite speed of propagation for gravity. So, limiting it to something finite, and within spitting distance of c, does accomplish something significant.
Now, if they had found a speed between 1.1 c and 1.4 c, physicists around the world would be racing to replicate the result. If it held up, that 30 Hz thumping you hear in the background would be Albert Einstein, spinning in his grave...
It's much more likely the ringing comes from the air right next to the polished gong surface suddenly heating up.
There's a similar confusion about what drives those "solar radiometer" things - you know, a little black-and-white paddlewheel inside an evacuated glass ball that spins when you shine a light on it? People often say the reason they run is photon momentum, when the actual explanation is that the black sides of the paddles are hotter than the white sides, so when the few gas molecules left inside the ball hit the paddles, they leave the black sides going faster than the white sides.
The proof of this is the direction the paddlewheel turns - it turns white-side-first, and a photon-mass explanation would have the paddle turning black-side-first. If you put a paddlewheel inside a REAL hard vacuum, with a REAL low friction bearing, and REALLY isplate it from outside vibration, it turns the right way. See here for a more coherent and complete explanation.
... because it can help extend battery life, big time. Those of you with power-hungry x86 laptop CPUs may scoff at this, but my experience with my 500 MHz iBook has been that I can run it for a little over three hours with the display at full brightness, and a little over four hours with the display at its dimmest (and if you're on an airplane at night, that's actually a practical way to hack). This means the display accounts for about 25-30% of the power consumption. Anything that automatically makes the display draw an appropriate amount of power might extend my battery life half an hour or more.
"Network Solutions" has been a very sincere curse around our company ever since I went through hell and back getting our domain name registered (around 1994). We had 'gsti.com' at the time, 'gst.com' had lapsed about a year previously but not been officially released by the previous owners, and NS refused to transfer the registration without an email or a fax from the previous owners (as opposed to their current policy of allowing transfer within 30 seconds of lapsing). I finally had to track down the previous holders and beg and plead them to send a fax, as their company and its email services were long since defunct.
I'm no longer a sysadmin around here, but the people who are admins respect my opinions, and we will deal with a reconstituted "Network Solutions" over my dead body. How they can think that that name has any positive value in the world today is beyond me.
If DRM becomes required by law, in support of copyright, then it should logically have to follow ALL the requirements of copyright, INCLUDING:
Automatically disabling itself when the copyright expires
Automatically updating itself when the copyright term changes
Any DRM system that can't do those things can't be required by law if its purpose is to support copyright, since it should support the rights of BOTH creators and the public.
Of course, all the above assumes logic and fair play will be considered. As a substitute for those, the legal system uses due process.
Only if he reads Slashdot.;-) Anyway, how could my wonderful, cogent, Excellent-karma-enhanced Slashdot postings be seen as a minus for GST? If they said anything about it, they'd have to square it somehow with SESDA's (ludicrously high) 98% customer satisfaction rating - I seriously doubt the difference between 98% and 100% can be found in my Slashdot posting time.
The reason I'm responding in this forum, BTW, is that your email address isn't published by Slashdot.
They also leave a nice looking, refreshing bottle of Evian spring water in your room, with a little tag on it saying "drink me and pay $4.50".. fortunately the tap water was drinkable.
For those of you who only visit the metro DC area occasionally, the tap water here is excellent. Would you believe it's actually award winning? When you visit the DC area, ignore the bottled water in your room.
I guess it also depends on the meaning of the word "use". If by "use" you mean "they pass code through it, then pass their eyes over the report", that's not particularly useful. "Use" should mean "they pass code through it, and code with warnings of severity level X or worse does not ship".
It's the same craftsmanly drive that keeps you from shipping code that generates compiler warnings. Oh dear -- I suspect you're now going to tell me they ship code that compiles with compiler warnings. Yecch...
Feeding this to Google produced 11,000 hits, with over half of the first ten being for commercial or academic systems that claim to detect potential buffer overflow code automatically. I doubt any of them is 100% accurate, but even 50% combined with "shut-up-this-code-is-safe" pragmas would be an improvement over the current situation.
Buying or installing one of these tools and running all their source code through it as part of development would cost Microsoft less than they spend on caffeinated liquids, and would pay for itself with the first potential exploit caught before shipment.
I can only ascribe people's refusal to try these tools to programmer hubris - "MY code can't be understood by a mere code analyzer".
I am rashly assuming here that Microsoft doesn't use tools like this. If anyone out there knows differently, please reply.
Two in the front, two in the back. What I remember most was the pain in my knees from sitting for hours at a time in what they call a rear "seat", where your butt is maybe six inches higher than your feet. OK, I wasn't sitting in the middle, but I never got to sit up front - I couldn't drive a manual shift at the time, and the other guys had to wedge themselves into either of the so-called rear "seats" to get into them at all.
I was there for the launch of Apollo 17. Four of us piled into a Pinto (I remember that vividly - I was the smallest of the group, and had to sit in the middle of the back seat!) and drove down from upstate South Carolina to see it go up.
Apollo 17 was the first (and I believe only) night launch of a Saturn V - it went up just after midnight Florida time. There have been many Shuttle night launches, but that's not the same - the Shuttle has roughly the same thrust as the first stage of a Saturn V, but weighs much less, so by comparison it jumps off the pad.
When Apollo 17 fired up, it was like an instant sunrise, and it stayed that way while the rocket slowly clambered up the tower. It must have confused wildlife for fifty miles around.
When Intel/AMD hit physical fab process limits, better architectures like PowerPC will probably have two or three Moore's Law generations to go before they hit the same limits.
And they'll probably need one of those generations to catch up to raw Intel/AMD performance.
Just once, I'd like to live in a world where the most elegant engineering solution actually won. *sigh*...
Arthur C. Clarke had something to say about pronouncements of this nature:
When a distinguished but elderly scientist states that something is possible he is almost certainly right. When he states that something is impossible, he is very probably wrong.
Ah, you see, but diplomats can have diplomatic immunity for JUST that reason.
Then the analogous case would be a US businessman, not a diplomat. What if, say, Jack Welch (former head honcho of GE, currently in the middle of a messy divorce, with adultery being just one of the charges) were to visit Saudi Arabia...
... to annoy everyone equally.
I suspect a lot of those redundant code instances were caused by people recycling code via cut-and-paste - the quick and dirty, programming-by-pattern-matching approach we all take when we just want to get something done without taking the time to deeply understand someone else's code.
The current word for making this stuff go away is "refactoring" - noticing redundant patterns in code and abstracting them out. The problem is that refactoring is hard in the most popular languages (C, C++, Java) because of their requirements for picky, static type declarations on all the built-in types. Type declarations are necessary for low-level bit mashing and the last order of magnitude improvement in performance, but most of the time they make it hard to refactor code by pushing implementation details too far down into it.
Common Lisp got this one right a long time ago. Objects in CL are strongly typed, and variables are untyped by default, but you can add declarations which the compiler can then use to speed up code. The CL developer's mantra is "make it work, profile it, then make it fast." That way, you only do the declaration work on the measured hot spots in the code.
(BTW, to all you Smalltalk/Dylan/other-dynamically-typed langauge fans out there - peace, brothers and sisters. Your stuff is good too; my beef is with strong static typing that cripples abstraction.)
Definitely not a Lisp programmer - the parentheses don't match up (the first character of the posting is an unclosed '(' (which a true Lisp hacker would never leave unbalanced)).
He also doesn't nest his parenthesized comments nearly enough.
All this is quite consistent with typical Slashdot views on these subjects:
Illegal extension of monopoly power is bad, so fighting it is good.
Software patents, especially old ones that claim to cover common techniques, are bad, and supporting them is bad.
The paper is dated 1997 (published 1998). All of the languages tested have changed significantly since that time. Scheme in particular has grown several significant implementations like Scheme 48, the substrate for scsh, the Scheme shell, and Kawa, a Scheme that compiles to Java bytecodes.
... by Vernor Vinge. Go read it, especially the part where he talks about nanoscale "localizers". Second scariest part of the book, in my opinion, the scariest being "focus" - we'd better hope mechanical AI is feasible, because if it isn't, "focus" almost certainly is feasible, and would make RFID-based totalitarianism feel like a walk in the park.
Imagine how fast OS X would be if it were ported to Alpha! Apple could dump Motorola, annoy IBM and its installed base, and continue a tradition of adopting elegant hardware and staying with it until it marginalized itself in the marketplace!
;-)
Just in case anyone was unclear on the above...
Interlisp in all its incarnations had a module called DWIM (Do What I Mean) which caught typos and thinkos in your input and offered to correct them for you. It was at its smartest fixing spelling errors and inserting parentheses (it would guess '(foo)' when you typed 9foo0, for example).
DWIM could be turned off, set so it asked you before changing anything, or set to automatically fix your inputs. That last setting would be completely intolerable without UNDO, which Interlisp also had, so even if DWIM guessed wrong, corrected your input to the moral equivalent of 'rm *', and ran it, you could still recover with UNDO and try again.
The oldest Interlisp reference I can find is the 1978 Interlisp reference manual. Lisp was on Altos as early as 1973, hacked up by L. Peter Deutsch. For an academic take on UNDO, see this paper from ACM TOPLAS (courtesy of Citeseer).
If the gong is reflective, the air near it gets heated both by the incoming light and by the reflected light. If the gong is sooted, only the incoming light heats the air.
At least, this seems logical to me. A way to test it would be to put a vibration sensor on the gong, and try it both in air, and in a vacuum. If you're right, the sensor should read the same, if I'm right the impact in vacuum should be much less.
After all, the Newtonian model assumes infinite speed of propagation for gravity. So, limiting it to something finite, and within spitting distance of c, does accomplish something significant.
Now, if they had found a speed between 1.1 c and 1.4 c, physicists around the world would be racing to replicate the result. If it held up, that 30 Hz thumping you hear in the background would be Albert Einstein, spinning in his grave...
It's much more likely the ringing comes from the air right next to the polished gong surface suddenly heating up.
There's a similar confusion about what drives those "solar radiometer" things - you know, a little black-and-white paddlewheel inside an evacuated glass ball that spins when you shine a light on it? People often say the reason they run is photon momentum, when the actual explanation is that the black sides of the paddles are hotter than the white sides, so when the few gas molecules left inside the ball hit the paddles, they leave the black sides going faster than the white sides.
The proof of this is the direction the paddlewheel turns - it turns white-side-first, and a photon-mass explanation would have the paddle turning black-side-first. If you put a paddlewheel inside a REAL hard vacuum, with a REAL low friction bearing, and REALLY isplate it from outside vibration, it turns the right way. See here for a more coherent and complete explanation.
... because it can help extend battery life, big time. Those of you with power-hungry x86 laptop CPUs may scoff at this, but my experience with my 500 MHz iBook has been that I can run it for a little over three hours with the display at full brightness, and a little over four hours with the display at its dimmest (and if you're on an airplane at night, that's actually a practical way to hack). This means the display accounts for about 25-30% of the power consumption. Anything that automatically makes the display draw an appropriate amount of power might extend my battery life half an hour or more.
"Network Solutions" has been a very sincere curse around our company ever since I went through hell and back getting our domain name registered (around 1994). We had 'gsti.com' at the time, 'gst.com' had lapsed about a year previously but not been officially released by the previous owners, and NS refused to transfer the registration without an email or a fax from the previous owners (as opposed to their current policy of allowing transfer within 30 seconds of lapsing). I finally had to track down the previous holders and beg and plead them to send a fax, as their company and its email services were long since defunct.
I'm no longer a sysadmin around here, but the people who are admins respect my opinions, and we will deal with a reconstituted "Network Solutions" over my dead body. How they can think that that name has any positive value in the world today is beyond me.
Automatically disabling itself when the copyright expires
Automatically updating itself when the copyright term changes
Any DRM system that can't do those things can't be required by law if its purpose is to support copyright, since it should support the rights of BOTH creators and the public.
Of course, all the above assumes logic and fair play will be considered. As a substitute for those, the legal system uses due process.
Me too. Next time, lots more ";-)", I guess, and heavier on the praise for my posting prowess.
Only if he reads Slashdot.
The reason I'm responding in this forum, BTW, is that your email address isn't published by Slashdot.
The next generation is going to use power4 chips - IBM's implementation of the PowerPC architecture.
It's interesting that a project whose goal was most-bang-for-the-buck avoided x86 completely...
For those of you who only visit the metro DC area occasionally, the tap water here is excellent. Would you believe it's actually award winning? When you visit the DC area, ignore the bottled water in your room.
I guess it also depends on the meaning of the word "use". If by "use" you mean "they pass code through it, then pass their eyes over the report", that's not particularly useful. "Use" should mean "they pass code through it, and code with warnings of severity level X or worse does not ship".
It's the same craftsmanly drive that keeps you from shipping code that generates compiler warnings. Oh dear -- I suspect you're now going to tell me they ship code that compiles with compiler warnings. Yecch...
Feeding this to Google produced 11,000 hits, with over half of the first ten being for commercial or academic systems that claim to detect potential buffer overflow code automatically. I doubt any of them is 100% accurate, but even 50% combined with "shut-up-this-code-is-safe" pragmas would be an improvement over the current situation.
Buying or installing one of these tools and running all their source code through it as part of development would cost Microsoft less than they spend on caffeinated liquids, and would pay for itself with the first potential exploit caught before shipment.
I can only ascribe people's refusal to try these tools to programmer hubris - "MY code can't be understood by a mere code analyzer".
I am rashly assuming here that Microsoft doesn't use tools like this. If anyone out there knows differently, please reply.
Two in the front, two in the back. What I remember most was the pain in my knees from sitting for hours at a time in what they call a rear "seat", where your butt is maybe six inches higher than your feet. OK, I wasn't sitting in the middle, but I never got to sit up front - I couldn't drive a manual shift at the time, and the other guys had to wedge themselves into either of the so-called rear "seats" to get into them at all.
I was there for the launch of Apollo 17. Four of us piled into a Pinto (I remember that vividly - I was the smallest of the group, and had to sit in the middle of the back seat!) and drove down from upstate South Carolina to see it go up.
Apollo 17 was the first (and I believe only) night launch of a Saturn V - it went up just after midnight Florida time. There have been many Shuttle night launches, but that's not the same - the Shuttle has roughly the same thrust as the first stage of a Saturn V, but weighs much less, so by comparison it jumps off the pad.
When Apollo 17 fired up, it was like an instant sunrise, and it stayed that way while the rocket slowly clambered up the tower. It must have confused wildlife for fifty miles around.
When Intel/AMD hit physical fab process limits, better architectures like PowerPC will probably have two or three Moore's Law generations to go before they hit the same limits.
And they'll probably need one of those generations to catch up to raw Intel/AMD performance.
Just once, I'd like to live in a world where the most elegant engineering solution actually won. *sigh*...
Check out the rest of Clarke's Laws here.
Then the analogous case would be a US businessman, not a diplomat. What if, say, Jack Welch (former head honcho of GE, currently in the middle of a messy divorce, with adultery being just one of the charges) were to visit Saudi Arabia...