I naturally interpreted it as: "Survey says: ELC platform spec will expand use of [fiery pocket death-rays in tiny gravel-exporting countries ending in 'Y']"
What I got from the review is simply further confirmation of Paul Graham's hypothesis that more modern programming languages are asymptotically approaching the capabilities Lisp has had for decades.
The whole "join points / pointcuts" thing seems to me like a watered-down version of Scheme's (and other Lisps) dynamic-wind and call/cc.
(And didn't the B-type Golgafrinchans end up populating some utterly insignificant little blue-green planet orbiting a small unregarded yellow sun far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy?;-)
Of course, if you have the spare bandwidth and nothing better to do, you could just make those zip files as symlinks to/dev/urandom. The fun would never end!
Clara Harris killed her husband with her Mercedes, was found guilty of 1st degree murder, and was only sentenced to 20 years (she'll get out in 10).
I think something is wrong with a system that gives you more time for installing a program that doesn't do any damage than it does for murdering a person in cold blood.
"Cold blood" means that the murder was committed for no real reason. Clara Harris ran over her husband because he was cheating on her, not because she just felt like killing someone that day.
Of course, the "damage" of a cold-blooded murder is the same as that of any other murder: the victim is still dead, no matter how you slice it... (sorry, couldn't resist...;-)
Your main argument is still good (and I completely agree with the point of it), but I think you could make it more convincing (especially when you're preaching to the un-converted) by avoiding hyperbole.
Especially when the hyperbole is committed in cold blood...
Any advice you give your past self would probably have severe unintended consequences... not the least of which is that you might not recognize, or even particularly like, the person your newly-informed past self eventually develops into.
Or, by changing the paths and actions you took in life, you might inadvertently cause your past self to end up in the wrong place at the worst possible time... like in the path of a runaway bread truck, f'rinstance.
So, advice is out of the question. I'd probably just limit my activities to finding other kids who tried their damndest to make me miserable at that age, and summarily beating the tar out of them.;-)
Tax software, unlike just about any other software, has a useful life of 4 and a half months (you wouldn't use it earlier than Jan 1st, and probably not later than April 15th) and infact, it's something you use exactly once. So unlike most other software, there's absolutely no chance that you'll "use it, love it, buy it eventually".
Nothing prevents the makers of tax software from creating a "base" tax program, with year-by-year "capsule"-style updates.
Even without this, a user could still "use it, love it, decide to buy it for real next year", so there's really no excuse for deliberately mangling the user's computer.
I, for one, hope that for every would-be pirate TurboTax stops with this stunt, 5 legitimate users get pissed off and migrate to a less destructive tax program.
My email address was csc345@uk.ac.lancs.cent1. To communicate with the rest of the world however, I learnt to always write this as csc345@cent1.lancs.ac.uk.
I can't say I've really found web browsing on a phone all that useful. Except once. I had taken a walk in a show storm and managed to get lost on twisty little roads.
Would that be, "a maze of twisty little roads, all alike"?
Constructor for `a' called: 0 a is 0 Constructor for `b' called: 12 b is 12 b is 13 b is 14 b is 15 b is 16 ~Foo() a is 1 Constructor for `b' called: 12 b is 12 b is 13 b is 14 b is 15 b is 16 ~Foo() a is 2 Constructor for `b' called: 12 b is 12 b is 13 b is 14 b is 15 b is 16 ~Foo() a is 3 Constructor for `b' called: 12 b is 12 b is 13 b is 14 b is 15 b is 16 ~Foo() ~Foo()
Uhm, for scalar types, it's a non-issue. The code generated is identical. For objects w/ a constructor/destructor, you're only calling the constructor once and desctructor once.
That's not how gcc does it. Is this an MSVC-specific misfeature, or can you quote chapter-and-verse (Stroustrup or the ISO standard will do) to show that gcc does it wrong?
Observe:
#include <iostream>
using namespace std;
class Foo { public:
bool operator< (int x) { return (i < x); }
Foo(int i_, const char* str) { i = i_; cerr << str << i << endl; }
int operator() () { return i; }
int operator++ (int) { return i++; }
~Foo() { cerr << "~Foo()\n"; }
private:
int i; };
int main() {
for(Foo a(0, "Constructor for `a' called: "); a < 4; a++) {
cout << "a is " << a() << endl;
for(Foo b(12, "Constructor for `b' called: "); b < 17; b++) {
cout << "b is " << b() << endl;
}
}
return 0; }
$ g++ -Wall -W -ansi -pedantic -o foo foo.cc
$./foo
I'll post the output below in a minute, since the lameness filter is its own worst enemy...
Especially the for-loop issue, which actually causes more problems than it solves if you're at all trying to optimize things, but hey. At least you can turn it on/off with a switch.
Or you could do the Right Thing and declare your counters before the loop body. Has the added effect of not re-instantiating a new variable for each (outer) iteration of a nested loop.
Au contraire, the upgrade stub is fully standards-compliant, as it is a dynamic resource (in this case, a Ruby script), that generates different xhtml based on different inputs. Each individual permutation of the xhtml page, however, is fully valid xhtml, and I would be utterly flabbergasted to find any w3c standard prohibiting the use of dynamic resources.
- that it works in browsers is beside the point when one is talking about compliance
The "go upgrade" stub treats the page like a pick-a-path adventure book, making CSS a requirement to reveal or hide the correct elements so the page exposes the correct parts to the correct people. A plain text browser, or a browser without CSS, won't get a logical structure - they'll see an upgrade message that doesn't apply to them.
You seem to have missed my original point. I've tested my site with lynx and links, and both work fine. Any IE 5.x or later also works fine. Mozilla works like a dream. Konq, safari, Netscape 6 and higher, all work wonderfully.
My gripe is not against CSS-Free browsers (which will load the page just fine). My gripe is against the transitional generation of browsers (NS 4, IE 3/4), that partly supported a broken, kludgy, half-assed "I-can't-believe-it's-not-CSS", which did nasty things like break support for tables (NS 4), or just shear and uglify the page (IE 3/4).
The types of people who haven't heard of the modern generation of browsers are also probably the types who wouldn't know the distinction between a page that's broken by their browser, and a page that's broken by crappy design.
I feel duty-bound to inform them that their pre-millennial browsers are broken, and that there are plenty of freely-available modern browsers.
It's not like I'm telling them "Don't use Netscape; Don't use IE"; just to upgrade to a less ancient version.
I understand your point of view for the private sector who wants to balance audience and extra cost, but for those who want the widest audience or the government sector who have to reach the widest audience it's not an option.
For a commercial site, I'd probably do things differently (e.g., based on the user-agent, exclude certain stylesheets and insert HTML4 transitional code to indicate graphical markup). It's entirely possible, and not too terribly difficult, but I'd rather have more people upgrade their browsers than get a few extra visitors to my site.
If anything, I think it's important to do what one can to hasten the day when making fully modern, one-code-fits-all-browsers, standards-compliant web pages is an option for anyone.
Why would I want to avoid hurting Netscape 4? I want to encourage people to upgrade to something newer and (one hopes) more standards-compliant.
That said, I use server-side scripts to avoid that unpleasantry. If Netscape 4 or IE 3/4 are detected, instead of the main page, the server will generate a page telling you to upgrade, (or downgrade), or go to a different site. For a commercial site I'd probably do differently, but as it's not, I'm in a position to stand up for myself, and for those who are not in such a position themselves.
And, yes, the "go upgrade" stub page also uses valid xhtml 1.0 and CSS, but without any element/property combinations that are broken on older browsers.
If you want to use CSS Positioning, and/or CSS 2 properties, you're basically SOL with older browsers. (Something will display, typically a sickening mockery of what your page is supposed to look like.) Plain text browsers are infinitely better, because they can still show the logical structure of the page without garbling the results.
So, if you wish, continue bending over backwards to support deprecated browsers that by rights should have died off completely by now; I, for one, will kindly inform webgoers that there are alternatives to pursue, and holding on to their dinosaurian browsers is inadvertant rudeness to everyone on the web.
Ruby is a programming language that was born and raised in its native Japan, which means it may very well be, by definition, what you say you're looking for.
Incidentally, Ruby, though purely-OO, supports nifty things like true closures, and you can end up doing functional programming without realizing it at first [Ruby, of course, is designed with this sort of thing in mind]. It was the realization that I was doing this (or something very close to it), in conjunction with Paul Graham's essays that got me interested in Scheme (a sleek, lightweight dialect of Lisp).
So, perhaps the only real answer is to learn as many interesting programming languages as you can, and use the broadened perspective you gain to make an informed decision for yourself.
The problem with netscape 4 is that it partly supports CSS and other web standards that were emerging at the time, but it doesn't do so completely, and it often has broken support for these features.
If you write a webpage in standards-compliant html or xhtml with CSS stylesheets, it will work fine in IE (with some quirks), Netscape 6 and 7, Mozilla, Konq, Safari, Opera (though I don't recall whether they implement a true DOM yet), links, and hell, even lynx.
Only Netscape 4 and IE 4.x browsers screw things up quite so royally, and they've been doing so for half a decade now!
So, if you're still running one of those crawling horrors, switch to Something Else. You've been holding back the web quite long enough.
I naturally interpreted it as: "Survey says: ELC platform spec will expand use of [fiery pocket death-rays in tiny gravel-exporting countries ending in 'Y']"
Didn't you?
Yawp.
;-)
What I got from the review is simply further confirmation of Paul Graham's hypothesis that more modern programming languages are asymptotically approaching the capabilities Lisp has had for decades.
The whole "join points / pointcuts" thing seems to me like a watered-down version of Scheme's (and other Lisps) dynamic-wind and call/cc.
(And didn't the B-type Golgafrinchans end up populating some utterly insignificant little blue-green planet orbiting a small unregarded yellow sun far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy?
I think the lack of quotes is the point.
;-)
Behold the magic of Aspect-Oriented Programming!
Of course, if you have the spare bandwidth and nothing better to do, you could just make those zip files as symlinks to /dev/urandom. The fun would never end!
/dev/zero instead?
What, and let them gobble up your entropy pool?
Why not just feed them
Clara Harris killed her husband with her Mercedes, was found guilty of 1st degree murder, and was only sentenced to 20 years (she'll get out in 10).
;-)
I think something is wrong with a system that gives you more time for installing a program that doesn't do any damage than it does for murdering a person in cold blood.
"Cold blood" means that the murder was committed for no real reason. Clara Harris ran over her husband because he was cheating on her, not because she just felt like killing someone that day.
Of course, the "damage" of a cold-blooded murder is the same as that of any other murder: the victim is still dead, no matter how you slice it... (sorry, couldn't resist...
Your main argument is still good (and I completely agree with the point of it), but I think you could make it more convincing (especially when you're preaching to the un-converted) by avoiding hyperbole.
Especially when the hyperbole is committed in cold blood...
Or, by changing the paths and actions you took in life, you might inadvertently cause your past self to end up in the wrong place at the worst possible time... like in the path of a runaway bread truck, f'rinstance.
So, advice is out of the question. I'd probably just limit my activities to finding other kids who tried their damndest to make me miserable at that age, and summarily beating the tar out of them. ;-)
Tax software, unlike just about any other software, has a useful life of 4 and a half months (you wouldn't use it earlier than Jan 1st, and probably not later than April 15th) and infact, it's something you use exactly once. So unlike most other software, there's absolutely no chance that you'll "use it, love it, buy it eventually".
Nothing prevents the makers of tax software from creating a "base" tax program, with year-by-year "capsule"-style updates.
Even without this, a user could still "use it, love it, decide to buy it for real next year", so there's really no excuse for deliberately mangling the user's computer.
I, for one, hope that for every would-be pirate TurboTax stops with this stunt, 5 legitimate users get pissed off and migrate to a less destructive tax program.
My email address was csc345@uk.ac.lancs.cent1. To communicate with the rest of the world however, I learnt to always write this as csc345@cent1.lancs.ac.uk.
Puny human!
Morbo laughs at your backward ways!
</Morbo>
Would that be, "a maze of twisty little roads, all alike"?
My eyes! The goggles do nothing!
Well, there are ways to terminate the agreement, but they ain't pretty...
That's not how gcc does it. Is this an MSVC-specific misfeature, or can you quote chapter-and-verse (Stroustrup or the ISO standard will do) to show that gcc does it wrong?
Observe:
$ g++ -Wall -W -ansi -pedantic -o foo foo.cc
$
I'll post the output below in a minute, since the lameness filter is its own worst enemy...
Now they can make pork, ham and bacon all come from the same animal... :P
Or you could do the Right Thing and declare your counters before the loop body. Has the added effect of not re-instantiating a new variable for each (outer) iteration of a nested loop.
I'd hate to be whoever has to clean up the gibs... :P
- that it works in browsers is beside the point when one is talking about compliance
Agreed.
You seem to have missed my original point. I've tested my site with lynx and links, and both work fine. Any IE 5.x or later also works fine. Mozilla works like a dream. Konq, safari, Netscape 6 and higher, all work wonderfully.
My gripe is not against CSS-Free browsers (which will load the page just fine). My gripe is against the transitional generation of browsers (NS 4, IE 3/4), that partly supported a broken, kludgy, half-assed "I-can't-believe-it's-not-CSS", which did nasty things like break support for tables (NS 4), or just shear and uglify the page (IE 3/4).
The types of people who haven't heard of the modern generation of browsers are also probably the types who wouldn't know the distinction between a page that's broken by their browser, and a page that's broken by crappy design.
I feel duty-bound to inform them that their pre-millennial browsers are broken, and that there are plenty of freely-available modern browsers.
It's not like I'm telling them "Don't use Netscape; Don't use IE"; just to upgrade to a less ancient version.
I understand your point of view for the private sector who wants to balance audience and extra cost, but for those who want the widest audience or the government sector who have to reach the widest audience it's not an option.
For a commercial site, I'd probably do things differently (e.g., based on the user-agent, exclude certain stylesheets and insert HTML4 transitional code to indicate graphical markup). It's entirely possible, and not too terribly difficult, but I'd rather have more people upgrade their browsers than get a few extra visitors to my site.
If anything, I think it's important to do what one can to hasten the day when making fully modern, one-code-fits-all-browsers, standards-compliant web pages is an option for anyone.
That said, I use server-side scripts to avoid that unpleasantry. If Netscape 4 or IE 3/4 are detected, instead of the main page, the server will generate a page telling you to upgrade, (or downgrade), or go to a different site. For a commercial site I'd probably do differently, but as it's not, I'm in a position to stand up for myself, and for those who are not in such a position themselves.
And, yes, the "go upgrade" stub page also uses valid xhtml 1.0 and CSS, but without any element/property combinations that are broken on older browsers.
If you want to use CSS Positioning, and/or CSS 2 properties, you're basically SOL with older browsers. (Something will display, typically a sickening mockery of what your page is supposed to look like.) Plain text browsers are infinitely better, because they can still show the logical structure of the page without garbling the results.
So, if you wish, continue bending over backwards to support deprecated browsers that by rights should have died off completely by now; I, for one, will kindly inform webgoers that there are alternatives to pursue, and holding on to their dinosaurian browsers is inadvertant rudeness to everyone on the web.
Incidentally, Ruby, though purely-OO, supports nifty things like true closures, and you can end up doing functional programming without realizing it at first [Ruby, of course, is designed with this sort of thing in mind]. It was the realization that I was doing this (or something very close to it), in conjunction with Paul Graham's essays that got me interested in Scheme (a sleek, lightweight dialect of Lisp).
So, perhaps the only real answer is to learn as many interesting programming languages as you can, and use the broadened perspective you gain to make an informed decision for yourself.
Honestly, you decide to change your eye color one day, and the next thing you know, all the billboards are calling you "Mr. Yakamoto".... :P
If you write a webpage in standards-compliant html or xhtml with CSS stylesheets, it will work fine in IE (with some quirks), Netscape 6 and 7, Mozilla, Konq, Safari, Opera (though I don't recall whether they implement a true DOM yet), links, and hell, even lynx.
Only Netscape 4 and IE 4.x browsers screw things up quite so royally, and they've been doing so for half a decade now!
So, if you're still running one of those crawling horrors, switch to Something Else. You've been holding back the web quite long enough.
http://www.webstandards.org/act/campaign/buc/
"Order-based Deadlock Prevention Protocol"?
Technologies should be named for what they do, not for what they don't do.
I mean, would you rather run an operating system called "Good OS", or "Sucks Slightly Less Than the Competition OS"?
Hearken unto me, O children of Slashdot:
End your torture at the hands of lesser OSes; try NetBSD today! (or whenever 1.6.1 is properly released ;)