Some years ago, someone figured out that it was possible to abuse the C++ template system into doing arbitrary computations at compile time. This developed a fan club. That fan club has dominated the C++ standards committee, because nobody else cared. So now we have a standard for C++ which supports template-based programming a little better.
Current thinking seems to be that,while template programming is too hard for ordinary programmers, the templates will be written by l33t programmers and then be used by the lower classes.
You're thinking about Template Meta-programming, not the everyday templates I use.
There's a huge speed penalty for allowing such extreme dynamism, about 60x over C/C++.
That number is surely made up; perhaps it applies to some specific set of benchmarks?
In reality the factor is going to vary widely depending on the problem.
And oh, you can't lump C and C++ together and call them C/C++.
Ah, you're mixing up programming language and frameworks. You do realize that the type of guys we are talking about have seen frameworks come and go? Heck, I've seen frameworks come and go and I'm only 34. Remember Enterprise Java Beans? I'm not saying that they aren't used any more, but they were all the hype back when I was a young programmer.
It is true that programming has more become like Lego. Stick together the parts in the right combination and that's it.
Lego may be the way it's done in the Java world.
I've been doing Unix programming and embedded programming for fifteen years,
and I've yet to encounter a framework. (Unless you count the Unix shell and its tools as a framework.
Shell scripting is indeed about sticking components together.)
I suspect what you gain by using framework $foo is often lost in the overhead (from the framework,
and from overcomplicating your problem by fitting it into a general framework)
and by the cost of rewriting everything for framework $bar next year.
This whole "post pc" nonsense allows them to get away with a level of vendor lock that no one would stand for in a PC.
Yes! *That* is really the distinguishing feature we're talking about here!
A desktop PC gives you freedom you don't get anywhere else.
(Also, planned obsolesence.
Nowadays, if you have a desktop, there are few reasons to throw out old hardware.
5--10 year old graphics cards are as good as new ones. So are CPUs, RAM, sound cards, keyboards...
What people do is upgrade their OSes, and replace their hard drives -- and maybe not too much of that either, since many seem to go for NAS storage. Not good for the industry.)
There seems to be confusion in what 'middleboxes' are. I don't believe this term refers to firewalls and NATing devices.
It *does* include those. They define it on page 1 of TFA: "... an invasion of middleboxes that *do* care about what the packets contain, and perform processing at layer 4 or higher *within* the network."
They have to define it that way, because they want the freedom to use IP (the Internet Protocol) between hosts A and B, over the internet. Not unreasonable, I think.
Didn't France ban encryption at least on some strengths years ago? I'm not too familiar with what happened after that, and a quick Googling is just bringing up old hits from when the ban was enacted.
Back in the early 1990s, I believed that useful encryption would eventually be outlawed everywhere. The legal troubles of Phil Zimmerman and PGP didn't look promising. The US export ban on encryption, US and non-US versions of software...
What happened then I suppose was that encryption became a vital part of the infrastructure of the internet, so it couldn't easily get banned.
More importantly, you only need to read the documentation once. Unlike Linux, OpenBSD does not replace admin tools with functionally equivalent ones with a new interface every six months. If you learn how to use OpenBSD, then you know how to use OpenBSD, on any architecture. If you learn how to use Linux, then you know how to use one version of one distribution of Linux, probably on one architecture.
Version: is it unfair to expect things to actually *change* between versions? I don't think so.
Distribution: surely you cannot expect RedHat EL, Debian, Slackware etc to all be exactly identical!
Hardware: you described upthread your problems with Yellowdog Linux on x86 and PPC.
I cannot explain that experience. Yellowdog Linux must suck, because I'm using Debian on x86 and PPC, and there
are *no* unreasonable differences. The only ones I can think of is the bootloader and the disk partitioning scheme,
and both are genuine platform differences.
Lest we forget the "Brazilian killer bee" problem, (which, I believe is still an issue), was the result of a good intention to improve the bee breed by increasing their active response via cross-breeding with more aggressive African strains.
You (and several other posters) make it sound as if breeding and bees implies killer bees.
In reality, bees (like pretty much everything else we use for food) are subject to careful selective breeding,
and have been for hundreds of years. Buy bees and you get to choose between Buckfast, Italians, and whatever they
are called.
Clearly this selective breeding has to continue, or we're stuck with bees optimized for conditions which no longer exist.
Here in Sweden, the problems that need to be dealt with are:
Beekeepers are dwindling. Most of the ones I know are aged 70--90 and about to retire. It's a dirty job, doesn't pay
and you need a lot of equipment.
My dad spent virtually all of his spare time tending to his bees.
The varroa mite reached.se in the 1990s, and kills hives and/or forces the beekeepers to
use pesticides and labor-intensive methods (causing more of them to quit.)
People tend to buy cheap foreign honey rather than local, even though the foreign bees don't pollinate their fruit trees.
The apparent value is in the honey; the real value is in the pollination.
Loss of flowering plants due to the destruction of the landscape.
(Not the official position of the SBF, just my interpretation.)
In my opinion, scientists realy are the ones to blame
[snip conspiracy theory stuff]
By far in yield and quality of honey, the greatest replacement to the Africanized bees, as well as to phase-out all Honey Bees due to the recent contamination, I would choose the Denmark Black Bee. Like the Denmark red cow, the Black Bee is endangered. I find that quite saddening how such a higher-quality animal is always the one on the bench.
That's the same race as the Nordic Bee, right?
My dad (who was a beekeeper from 1940 to 2005) used to keep those and took part in the preservation project.
They're not perfect either. The ones he kept were aggressive little bastards. More than once I heard beekeepers claim
they were as bad as killer bees.
It's still important to preserve this race of course -- for example for breeding more tolerant races.
Worst case scenario would be that they fail. From TFA:
bees pollinate 90% of the world’s food crops
This is not like tinkering around with a ton of fissile material for a lawn ornament, this is breeding bees to ensure we have food.
The "90% of the world's food crops" surely refers to 90% of the kinds of food crops -- not 90% of the biomass we eat.
Wheat, corn, rice are all wind-pollinated... the only ones I can think of which need pollination by bees are fruit trees like
apples, and maybe oil-producing crops like rape.
It's really weird to see "64-bit" applied to Linux in this way, as if it was Windows.
Linux runs well on various 64-bit CPUs, but I bet Adobe cannot be bothered to recompile
for more than one of them...
I love how low-key the whole [putty] thing is. It's like, a hugely ubiquitous tool that's been around (and still works) for like a decade... and it doesn't even have it's own domain!
It's like things *should* work.
One task, one long-term goal, well executed.
No need to make it a bloody *carnival*.
As to C++, I think that abomination would have been better aborted before birth. You need to know far too much about its internal execution model to write efficient code. At the same time, it is not light-weight anymore.
I'm sure that since you have recommended the abortion of C++, the people who wrote Webkit, Firefox, Microsoft Office, Open Office, KDE (and most of its associated apps), Doom3 Engine, Unreal Engine, Call of Duty, Super Mario Galaxy, Halo (and every AAA game ever basically), etc. will realise their incompetence / lack of experience and switch to C, Lua or Python since those are your personal preferred languages "now".
C++ is my favorite language too, but let's be honest -- lots of software which sucks has been written in C++.
It's a language which has had the misfortunate to be hyped in the past, and co-hyped with Object Oriented Everything.
On the other hand, when people like the grandparent can claim to like C and still call C++ an abomination I can only attribute that to ignorance.
Just see what a typical non-trivial C program uses instead of the standard C++ containers -- typically a mess of buffer overflows, memory leaks or homegrown type-unsafe and inefficient containers.
I'd rather see that complexity *once* in the language, than N times with a myriad variations in the programs.
We ARE talking servers from 2005-2007 here. Servers unlikely and unsuitable for production or any other professional use anyway.
We aren't talking just servers, but also workstations.
A workstation from 2005 is not old or unsuitable in any way. Universities and workplaces which went Solaris rather than Windows back in the 1990s may have plenty of them.
As somebody who writes Python professionally, I'm a bit biased, but can say with some assurance that the whitespace thing is not a major problem in the Real World. [...] There are things to go after Python for, but whitespace is definitely not one of them.
AOL.
The whitespace complaint pops up every time non-Python users discuss Python --
but it's just a distraction. Get over it.
... and as long as KDE will allow me to have a *small* panel at the top of the screen onto which I can place launchers for all my favourite apps/locations/files, then it's a done deal:-)
Gnome and KDE aren't the only alternatives. Any window manager will have a way to start programs; mine (ctwm) uses menus.
Another point to make is that the quote in the/. summary from the article discussing the paper, that "required the most extensive tuning efforts, many of which were done at a level of sophistication that would not be available to the average programmer" is misleading, to say the least--the paper doesn't make such a claim, which is yet another example of why it's best to stick to quoting the primary sources whenever possible.
It's a direct quote from VII Conclusions.
Not that I see what it refers to -- the tunings the paper describes seem to be
(a) bloopers in the original code, such as using std::map instead of faster and just as maintainable alternatives;
(b) pretty obvious things, such as writing a custom container to replace the general std::set (TinySet).
(c) algorithm tunings, not really related to C++.
I think it's time we give up on this. Sure, most of us know about the technical distinction between "hacking" and "cracking". But the mass public hasn't picked up on that, and even many hackers (old sense) now use the term hacking (new sense) for cracking.
I don't know -- about the only place I hear or read "hacker" or "hack" in the new sense is on Slashdot.
At my workplace, for example, people always use the words in the original sense(s).
Yeah Debian is ok if you don't mind an OS thats made by people who don't understand sarcasm or irony and are obsessive about sticking to 'policy' even when it leaves things in a horribly broken state, because thats their 'philosophy'.
That reads as "I had a run-in with the Debian people which left me embittered, but the details are too emarassing to me, so I won't give any details."
The new GUIs are bloated pigs and eat processor and GPU resources.
So don't use them. Noone forces you to, not even on a new machine with all of some flashy, userfriendly new Linux
distribution installed.
My desktop environment is, and has always been, at work and at home, on Linux and Solaris,
on huge 16-core multiuser systems with 66GB RAM and on old Pentium boxes with 0.032 GB RAM,
ctwm as a window manager.
It has a menu for starting programs, and it has multiple desktops.
It's supported everywhere, and always will be.
The same goes for fvwm and many other window managers.
Having two monitors is a huge deal if you're copying something from one program into another. One thing that comes to mind (perhaps not particularly common of a developer) is writing up a project report from spreadsheet data, email reports, paraphrasing a contractor's report, copying a lost file that has only been printed and scanned (not common, but it does happen), etc.
I cannot come up with a realistic example where those two things cannot sit in two windows side by side on one monitor.
Unless you have a crappy monitor, that is. I'd rather take one with 1200 pixels vertically than two with 1080 or whatever
the cheap monitors have.
Some years ago, someone figured out that it was possible to abuse the C++ template system into doing arbitrary computations at compile time. This developed a fan club. That fan club has dominated the C++ standards committee, because nobody else cared. So now we have a standard for C++ which supports template-based programming a little better.
Current thinking seems to be that,while template programming is too hard for ordinary programmers, the templates will be written by l33t programmers and then be used by the lower classes.
You're thinking about Template Meta-programming, not the everyday templates I use.
Did you have a robots.txt telling it not to?
If not, your non-techy boss shouldn't complain, except perhaps about his staff.
He could complain about the "downloading ... over and over and over" part.
There's a huge speed penalty for allowing such extreme dynamism, about 60x over C/C++.
That number is surely made up; perhaps it applies to some specific set of benchmarks? In reality the factor is going to vary widely depending on the problem. And oh, you can't lump C and C++ together and call them C/C++.
Ah, you're mixing up programming language and frameworks. You do realize that the type of guys we are talking about have seen frameworks come and go? Heck, I've seen frameworks come and go and I'm only 34. Remember Enterprise Java Beans? I'm not saying that they aren't used any more, but they were all the hype back when I was a young programmer.
It is true that programming has more become like Lego. Stick together the parts in the right combination and that's it.
Lego may be the way it's done in the Java world. I've been doing Unix programming and embedded programming for fifteen years, and I've yet to encounter a framework. (Unless you count the Unix shell and its tools as a framework. Shell scripting is indeed about sticking components together.)
I suspect what you gain by using framework $foo is often lost in the overhead (from the framework, and from overcomplicating your problem by fitting it into a general framework) and by the cost of rewriting everything for framework $bar next year.
This whole "post pc" nonsense allows them to get away with a level of vendor lock that no one would stand for in a PC.
Yes! *That* is really the distinguishing feature we're talking about here! A desktop PC gives you freedom you don't get anywhere else.
(Also, planned obsolesence. Nowadays, if you have a desktop, there are few reasons to throw out old hardware. 5--10 year old graphics cards are as good as new ones. So are CPUs, RAM, sound cards, keyboards ...
What people do is upgrade their OSes, and replace their hard drives -- and maybe not too much of that either, since many seem to go for NAS storage. Not good for the industry.)
There seems to be confusion in what 'middleboxes' are. I don't believe this term refers to firewalls and NATing devices.
It *does* include those. They define it on page 1 of TFA: "... an invasion of middleboxes that *do* care about what the packets contain, and perform processing at layer 4 or higher *within* the network."
They have to define it that way, because they want the freedom to use IP (the Internet Protocol) between hosts A and B, over the internet. Not unreasonable, I think.
Didn't France ban encryption at least on some strengths years ago? I'm not too familiar with what happened after that, and a quick Googling is just bringing up old hits from when the ban was enacted.
Back in the early 1990s, I believed that useful encryption would eventually be outlawed everywhere. The legal troubles of Phil Zimmerman and PGP didn't look promising. The US export ban on encryption, US and non-US versions of software ...
What happened then I suppose was that encryption became a vital part of the infrastructure of the internet, so it couldn't easily get banned.
More importantly, you only need to read the documentation once. Unlike Linux, OpenBSD does not replace admin tools with functionally equivalent ones with a new interface every six months. If you learn how to use OpenBSD, then you know how to use OpenBSD, on any architecture. If you learn how to use Linux, then you know how to use one version of one distribution of Linux, probably on one architecture.
Version: is it unfair to expect things to actually *change* between versions? I don't think so.
Distribution: surely you cannot expect RedHat EL, Debian, Slackware etc to all be exactly identical!
Hardware: you described upthread your problems with Yellowdog Linux on x86 and PPC. I cannot explain that experience. Yellowdog Linux must suck, because I'm using Debian on x86 and PPC, and there are *no* unreasonable differences. The only ones I can think of is the bootloader and the disk partitioning scheme, and both are genuine platform differences.
Lest we forget the "Brazilian killer bee" problem, (which, I believe is still an issue), was the result of a good intention to improve the bee breed by increasing their active response via cross-breeding with more aggressive African strains.
You (and several other posters) make it sound as if breeding and bees implies killer bees.
In reality, bees (like pretty much everything else we use for food) are subject to careful selective breeding, and have been for hundreds of years. Buy bees and you get to choose between Buckfast, Italians, and whatever they are called. Clearly this selective breeding has to continue, or we're stuck with bees optimized for conditions which no longer exist.
Here in Sweden, the problems that need to be dealt with are:
(Not the official position of the SBF, just my interpretation.)
In my opinion, scientists realy are the ones to blame [snip conspiracy theory stuff]
By far in yield and quality of honey, the greatest replacement to the Africanized bees, as well as to phase-out all Honey Bees due to the recent contamination, I would choose the Denmark Black Bee. Like the Denmark red cow, the Black Bee is endangered. I find that quite saddening how such a higher-quality animal is always the one on the bench.
That's the same race as the Nordic Bee, right? My dad (who was a beekeeper from 1940 to 2005) used to keep those and took part in the preservation project. They're not perfect either. The ones he kept were aggressive little bastards. More than once I heard beekeepers claim they were as bad as killer bees.
It's still important to preserve this race of course -- for example for breeding more tolerant races.
Worst case scenario would be that they fail. From TFA:
bees pollinate 90% of the world’s food crops
This is not like tinkering around with a ton of fissile material for a lawn ornament, this is breeding bees to ensure we have food.
The "90% of the world's food crops" surely refers to 90% of the kinds of food crops -- not 90% of the biomass we eat. Wheat, corn, rice are all wind-pollinated ... the only ones I can think of which need pollination by bees are fruit trees like
apples, and maybe oil-producing crops like rape.
It's really weird to see "64-bit" applied to Linux in this way, as if it was Windows. Linux runs well on various 64-bit CPUs, but I bet Adobe cannot be bothered to recompile for more than one of them ...
I love how low-key the whole [putty] thing is. It's like, a hugely ubiquitous tool that's been around (and still works) for like a decade... and it doesn't even have it's own domain!
It's like things *should* work. One task, one long-term goal, well executed. No need to make it a bloody *carnival*.
Given Sony's other actions, I would expect them to put an end to such "foolishness" from Ericsson soon.
They just own a company together. I really doubt that means Sony can dictate Ericsson policy.
Clifford Stoll, who tracked a cracker backwards from the government science-lab networks being snooped on, eventually to eastern Europe
Yes, if you count West Germany as eastern Europe ...
As to C++, I think that abomination would have been better aborted before birth. You need to know far too much about its internal execution model to write efficient code. At the same time, it is not light-weight anymore.
I'm sure that since you have recommended the abortion of C++, the people who wrote Webkit, Firefox, Microsoft Office, Open Office, KDE (and most of its associated apps), Doom3 Engine, Unreal Engine, Call of Duty, Super Mario Galaxy, Halo (and every AAA game ever basically), etc. will realise their incompetence / lack of experience and switch to C, Lua or Python since those are your personal preferred languages "now".
C++ is my favorite language too, but let's be honest -- lots of software which sucks has been written in C++. It's a language which has had the misfortunate to be hyped in the past, and co-hyped with Object Oriented Everything.
On the other hand, when people like the grandparent can claim to like C and still call C++ an abomination I can only attribute that to ignorance. Just see what a typical non-trivial C program uses instead of the standard C++ containers -- typically a mess of buffer overflows, memory leaks or homegrown type-unsafe and inefficient containers. I'd rather see that complexity *once* in the language, than N times with a myriad variations in the programs.
We ARE talking servers from 2005-2007 here. Servers unlikely and unsuitable for production or any other professional use anyway.
We aren't talking just servers, but also workstations. A workstation from 2005 is not old or unsuitable in any way. Universities and workplaces which went Solaris rather than Windows back in the 1990s may have plenty of them.
As somebody who writes Python professionally, I'm a bit biased, but can say with some assurance that the whitespace thing is not a major problem in the Real World. [...] There are things to go after Python for, but whitespace is definitely not one of them.
AOL. The whitespace complaint pops up every time non-Python users discuss Python -- but it's just a distraction. Get over it.
... and as long as KDE will allow me to have a *small* panel at the top of the screen onto which I can place launchers for all my favourite apps/locations/files, then it's a done deal :-)
Gnome and KDE aren't the only alternatives. Any window manager will have a way to start programs; mine (ctwm) uses menus.
Another point to make is that the quote in the /. summary from the article discussing the paper, that "required the most extensive tuning efforts, many of which were done at a level of sophistication that would not be available to the average programmer" is misleading, to say the least--the paper doesn't make such a claim, which is yet another example of why it's best to stick to quoting the primary sources whenever possible.
It's a direct quote from VII Conclusions. Not that I see what it refers to -- the tunings the paper describes seem to be (a) bloopers in the original code, such as using std::map instead of faster and just as maintainable alternatives; (b) pretty obvious things, such as writing a custom container to replace the general std::set (TinySet). (c) algorithm tunings, not really related to C++.
I think it's time we give up on this. Sure, most of us know about the technical distinction between "hacking" and "cracking". But the mass public hasn't picked up on that, and even many hackers (old sense) now use the term hacking (new sense) for cracking.
I don't know -- about the only place I hear or read "hacker" or "hack" in the new sense is on Slashdot. At my workplace, for example, people always use the words in the original sense(s).
Yeah Debian is ok if you don't mind an OS thats made by people who don't understand sarcasm or irony and are obsessive about sticking to 'policy' even when it leaves things in a horribly broken state, because thats their 'philosophy'.
That reads as "I had a run-in with the Debian people which left me embittered, but the details are too emarassing to me, so I won't give any details."
The new GUIs are bloated pigs and eat processor and GPU resources.
So don't use them. Noone forces you to, not even on a new machine with all of some flashy, userfriendly new Linux distribution installed.
My desktop environment is, and has always been, at work and at home, on Linux and Solaris, on huge 16-core multiuser systems with 66GB RAM and on old Pentium boxes with 0.032 GB RAM, ctwm as a window manager. It has a menu for starting programs, and it has multiple desktops. It's supported everywhere, and always will be. The same goes for fvwm and many other window managers.
Having two monitors is a huge deal if you're copying something from one program into another. One thing that comes to mind (perhaps not particularly common of a developer) is writing up a project report from spreadsheet data, email reports, paraphrasing a contractor's report, copying a lost file that has only been printed and scanned (not common, but it does happen), etc.
I cannot come up with a realistic example where those two things cannot sit in two windows side by side on one monitor. Unless you have a crappy monitor, that is. I'd rather take one with 1200 pixels vertically than two with 1080 or whatever the cheap monitors have.
You can't easily "tab between" groups of specifically positioned and sized windows. (Note, I said *easily*).
I'd say that "tabbing between groups of specifically positioned and sized windows" done correctly is the same thing as "virtual desktops".