"There are no such thing as "democratic" or "undemocratic" technology. Technology is neutral;"
That's not actually the case.
The basic architecture of any system is NOT politically neutral, it very deeply influences how that system can be used and whether control is centralised or distributed. If you want a stable democratic system, you really need distributed control - otherwise, you will constantly be fighting the centralisation tendency of the architecture. In a centralised system, even with your best efforts, the closest you can come to democracy will be a sort of elected central proxy - which due to its lack of transparency can easily devolve into a soft dictatorship.
Some examples of technology which is natively centralised and anti-democratic (generally the same thing as 'a natural monopoly - 'economy of scale' applies so a few large players dominate):
* capital-intensive industrial manufacturing and power generation - large plant investment required * nuclear power - same as above, only extreme safety concerns and military involvement increase the centralisation * the 'telecoms' (Bell) model of 'smart networks' where policy is in the middle * mainframe computing * cloud computing - in many ways it's a return to the * Google - search technology now requires * railroads * silicon chip fabrication * Monsanto-style modern agribusiness, especially with hybrid seeds, genetic engineering and patenting * large hydro dams and regional water-control policies * fiber-optic networking at the national trunk level * the division of the Web into two tiers of browsers vs servers, where access to servers requires renting * compilation and shipping of binary-only modules as a software engineering practice - those who don't have access to the compilers become a lower class * C++ and.NET - large languages with syntax and semantics defined by central bodies, highly dependent on the exact implementation of the toolchain
Some examples of technology which is naturally distributed, therefore pro-democratic:
* small-scale power production - windmills, solar (though not the production of solar cells themselves) * organic horticulture, permaculture - can be done locally with small investment * open source software production * WiFi mesh networking * the basic architecture of TCP/IP - 'end to end principle' which puts policy at the host, and where every host can get an IP * Wikis * the original CERN WWW concept where every browser could also edit and every host was a server * scripting languages and interpretation generally as a software engineering practice vs compilation * Forth and Lisp - small languages whose syntax can be redefined by the user and give them the same rights as the language designer or compiler implementer
This is not a null distinction. The requirement for democracy in technology puts some very specific requirements on the *shape* of that technology. Some of the people who have investigated this are E.F. Schumacher (father of the 'appropriate technology' movement) and Christopher Alexander (Pattern Language) as well as Chuck Moore, Richard Stallman, and many of the Lisp people. Also Jacques Ellul in his critique of the 'technological society', Marshall McLuhan ('the medium is the message') and Dee Hock (founder of Visa and 'chaordic commons').
But as a society, we haven't really yet grasped how important is shape of our tools, and how our tools affect our whole life - including our political aspirations. You can't actually build a democracy with centralising forces, but we're still trying.
I don't understand why ANYONE is allowed to block their phone number from Caller ID. If I'm receiving a call from you, I have the right to know who you are. Period.
It's like From: addresses on SMTP email. Nobody needs the right to falsify those. Nobody.
We have 'identity' for a reason - because without it, you can't track reputation, and without reputation, you can't evaluate potential transactions before entering into them.
If you want the freedom to be able to do stuff that people dislike and have them not know that you did it and yet still be able to do it over and over again to new victims - sorry, but that's not part of the social bargain you enter into with civilisation.
"It's amazing the number of times in computing where something, while inferior, was good enough for a lot of things and ended up dominating..."
And it's also amazing the number of times that "inferior but good enough" product, after dominating the low-end field due to its small and lightweight design, then has to scale up by painfully and clumsily reintroducing all the "bloated" features of the higher quality and better-designed product. And then of course, makes the better product extinct not on its own merits, but because it's dragged a social and aftermarket ecosystem (often one designed purely to patch its flaws) up with it.
Case in point: virtualization. In the 1970s, IBM mainframes had VM. The PCs laughed at the mainframes and slowly took over. Now, we're reinventing all that mainframe virtualization tech... and putting it over the top of Windows, which is still DOS- and 80x86 compatible. Meanwhile, even the IBM 360 had invented fully virtualized, hardware-independent instruction sets... but in the bold new Wintel data centre world, we have emulated x86, an instruction set not at all designed for portability.
It was probably IBM's fault for being so tightly protective of their IP and not realising that they could possibly be out-competed by the descendants of the micros - but we haven't necessarily ended up with a better solution, in the long run, by reinventing the mainframe the long and hard and clumsy way.
"I'm not sure SQL counts as a programming language"
Right, it's not Turing-complete... but what if we added stuff so it was? So you could say 'select * from blah where (and-now-a-function-occurs)'? And then export that as a function and store it in a table? And built an entire world out of nested tables?
SQL (or rather, relational theory) does some things amazingly right which the rest of the programming universe has still to even notice. But it's crippled itself by not choosing to become a real language.
"For that matter, why are we still defining code chunks via brackets instead of the indentation that's already there?"
Because even in 2009, there *still* isn't widespread, pervasive standardisation - to the point where you can absolutely, totally, 100% guarantee that your code won't get mangled in translation - of what the codes for 'indentation' are. Indentation is whitespace - and by definition, in many coding guidelines and Internet transfer protocols, whitespace is fair game for destruction. Until or unless this situation changes, you simply can't guarantee that whitespace is totally system-portable.
Snap exam time: how many spaces in a tab stop? If I type that many spaces, is it the same as a tab or different? Does it look visually different? Does it look different on a printout? If I type it from eye from a magazine or a textbook, will it compile and parse EXACTLY the same?
Is CR the same as LF?
And is that always the case?
On Linux? On Windows? On MacOS? On a mainframe? On an iPhone? On a Palm? On a CE device? On a set-top-box? In SMTP email? In a GUI text box widget? After copy-paste? After In a HTML browser? In XML? In WhateverFancyGadgetDuJour 2030? 2050?
You quite sure about that?
Brackets, however, are always and forever brackets, unmangled in translation, until the end of the Net. Amen.
"eg. a special language that only does GUIs (but really cleanly and easily) but otherwise is only barely Turing Complete."
And that will work well right up until you realise that you need to do some computation to display your form.
At which point the language designer's response will probably be to shovel half of C or Lisp or Smalltalk, piecemeal and reinvented badly, into the language, and voila! Yet another general purpose language, except one that's inconsistent with itself.
"the so called "problem" of memory management and exception safety in C++. Simply put, it's NOT a problem"
Then all these buffer overrun security exploit patches which come down monthly through my WSUS and apt-get are just figments of my imagination?
Memory safety IS a problem in C/C++. It's probably the #1 reason why botnets exist.
A language which allows these coding errors on such a massive scale is simply not acceptable for use on the Internet.
Explicit pointer, memory and thread management is HARD. We have computers to do these things automatically. But our programmers refuse to use languages which let the computer do these things automatically, thinking they can do it better. But the evidence shows, apparently they can't.
Every C/C++ programmer thinks he's smarter than average and will never make mistakes. But we've got hundreds of thousands of botnetted machines which say otherwise. Let's just take the ego out of it and fix the problem.
"people that think only Democrats can think of notable solutions and all other ideas will never work?"
Er? That's a weird criticism to make.
By definition, someone who believes a particular political philosophy (such as economic liberalism) is true does believe that ideas which contradict that philosophy (such as economic conservatism) will never work.
Because, well, that's what "not true" means - "will not work".
So to the extent that only one political party, such as the Democrats, holds to the political philosophy they believe to be true, of course they'll believe that only that one party will be able to think of solutions. That's required by logic. If Republicans are believing factually incorrect things, the solutions they come up with WILL NOT WORK.
Why try to attack this with this weird vagueness?
How about actually just saying what you mean: "the philosophy you believe in is WRONG and WILL NOT WORK and the philosophy I believe in is RIGHT and WILL WORK. Therefore I do not support the people or the solutions you propose, and I do support mine."
And reserve the right to change your mind if you turn out to be wrong.
Then you're working for Total Information Awareness, and it's easily solved by [REDACTED] the petaquad antiterrorist [REDACTED] and cross-circuiting helm control to [REDACTED] [REDACTED] [REDACTED] with a squirrel.
"Before you even get to SQL, let alone touch a live database, you're worn out from all the boring math."
Grr!
It's the math that makes programming correct. We need MORE math, not less. If you don't want to understand what you're doing and whether it's right or wrong, why do you get to do it on the Internet and to millions of other people's computers?
"you think can continue civilization and the sending of people into outer space with the vandals and goths sacking your major cities?"
Sure! Thanks to the rise of private space tourism, the people who get to pay to be launched into outer space ARE the vandals and goths sacking our major cities!
"There are no such thing as "democratic" or "undemocratic" technology. Technology is neutral;"
That's not actually the case.
The basic architecture of any system is NOT politically neutral, it very deeply influences how that system can be used and whether control is centralised or distributed. If you want a stable democratic system, you really need distributed control - otherwise, you will constantly be fighting the centralisation tendency of the architecture. In a centralised system, even with your best efforts, the closest you can come to democracy will be a sort of elected central proxy - which due to its lack of transparency can easily devolve into a soft dictatorship.
Some examples of technology which is natively centralised and anti-democratic (generally the same thing as 'a natural monopoly - 'economy of scale' applies so a few large players dominate):
* capital-intensive industrial manufacturing and power generation - large plant investment required .NET - large languages with syntax and semantics defined by central bodies, highly dependent on the exact implementation of the toolchain
* nuclear power - same as above, only extreme safety concerns and military involvement increase the centralisation
* the 'telecoms' (Bell) model of 'smart networks' where policy is in the middle
* mainframe computing
* cloud computing - in many ways it's a return to the
* Google - search technology now requires
* railroads
* silicon chip fabrication
* Monsanto-style modern agribusiness, especially with hybrid seeds, genetic engineering and patenting
* large hydro dams and regional water-control policies
* fiber-optic networking at the national trunk level
* the division of the Web into two tiers of browsers vs servers, where access to servers requires renting
* compilation and shipping of binary-only modules as a software engineering practice - those who don't have access to the compilers become a lower class
* C++ and
Some examples of technology which is naturally distributed, therefore pro-democratic:
* small-scale power production - windmills, solar (though not the production of solar cells themselves)
* organic horticulture, permaculture - can be done locally with small investment
* open source software production
* WiFi mesh networking
* the basic architecture of TCP/IP - 'end to end principle' which puts policy at the host, and where every host can get an IP
* Wikis
* the original CERN WWW concept where every browser could also edit and every host was a server
* scripting languages and interpretation generally as a software engineering practice vs compilation
* Forth and Lisp - small languages whose syntax can be redefined by the user and give them the same rights as the language designer or compiler implementer
This is not a null distinction. The requirement for democracy in technology puts some very specific requirements on the *shape* of that technology. Some of the people who have investigated this are E.F. Schumacher (father of the 'appropriate technology' movement) and Christopher Alexander (Pattern Language) as well as Chuck Moore, Richard Stallman, and many of the Lisp people. Also Jacques Ellul in his critique of the 'technological society', Marshall McLuhan ('the medium is the message') and Dee Hock (founder of Visa and 'chaordic commons').
But as a society, we haven't really yet grasped how important is shape of our tools, and how our tools affect our whole life - including our political aspirations. You can't actually build a democracy with centralising forces, but we're still trying.
"I would annihilate it because I care."
That would look good on an emo-industrial T-shirt.
But as a guide to ethical living? Not sure I'd really want to go there. You saw Season 6 Buffy right?
"An english degree helps you write in the same way that a history degree helps you change the world."
Your ideas intrigue me and I would like to enrol for a PhD in History at your institution.
Preferably sometime with zeppelins.
"Remember they also laughed at Bozo the clown."
The Bozos of Mali would like to object!
I don't understand why ANYONE is allowed to block their phone number from Caller ID. If I'm receiving a call from you, I have the right to know who you are. Period.
It's like From: addresses on SMTP email. Nobody needs the right to falsify those. Nobody.
We have 'identity' for a reason - because without it, you can't track reputation, and without reputation, you can't evaluate potential transactions before entering into them.
If you want the freedom to be able to do stuff that people dislike and have them not know that you did it and yet still be able to do it over and over again to new victims - sorry, but that's not part of the social bargain you enter into with civilisation.
Your MOM Online.
"It's amazing the number of times in computing where something, while inferior, was good enough for a lot of things and ended up dominating..."
And it's also amazing the number of times that "inferior but good enough" product, after dominating the low-end field due to its small and lightweight design, then has to scale up by painfully and clumsily reintroducing all the "bloated" features of the higher quality and better-designed product. And then of course, makes the better product extinct not on its own merits, but because it's dragged a social and aftermarket ecosystem (often one designed purely to patch its flaws) up with it.
Case in point: virtualization. In the 1970s, IBM mainframes had VM. The PCs laughed at the mainframes and slowly took over. Now, we're reinventing all that mainframe virtualization tech... and putting it over the top of Windows, which is still DOS- and 80x86 compatible. Meanwhile, even the IBM 360 had invented fully virtualized, hardware-independent instruction sets... but in the bold new Wintel data centre world, we have emulated x86, an instruction set not at all designed for portability.
It was probably IBM's fault for being so tightly protective of their IP and not realising that they could possibly be out-competed by the descendants of the micros - but we haven't necessarily ended up with a better solution, in the long run, by reinventing the mainframe the long and hard and clumsy way.
"Ken Thompson, who invented Unix..."
Yes... about that.... the problem is, Unix isn't exactly the best designed OS of all time. It's there, and it runs, but it's not necessarily pretty.
It survived, like C, so that says something... but mostly about how abysmally awful all the other alternatives have been.
Go looks like a small step forward, in some ways, but... sigh. Better, but so little better.
"Case in point: exceptions."
Aren't exceptions just one specialised application of continuations? So why not just provide generalised continuation support?
Simple solution: Google should rename theirs to 'Goo'...
"I'm not sure SQL counts as a programming language"
Right, it's not Turing-complete... but what if we added stuff so it was? So you could say 'select * from blah where (and-now-a-function-occurs)'? And then export that as a function and store it in a table? And built an entire world out of nested tables?
SQL (or rather, relational theory) does some things amazingly right which the rest of the programming universe has still to even notice. But it's crippled itself by not choosing to become a real language.
"At least as long as you don't mix tabs and spaces. ... Why the big worry?"
You just answered your own question.
Rip off and remove the Tab key from every keyboard ever and then we can talk.
"One of the earlier languages had position dependent coding (code had to start on column 3 or something like that. The name eludes me at the moment"
FORTRAN and COBOL both did this.
In the days of punched cards with strict columns and no proportional bitmap fonts, it was a bit easier to manage, I think. But still evil.
"For that matter, why are we still defining code chunks via brackets instead of the indentation that's already there?"
Because even in 2009, there *still* isn't widespread, pervasive standardisation - to the point where you can absolutely, totally, 100% guarantee that your code won't get mangled in translation - of what the codes for 'indentation' are. Indentation is whitespace - and by definition, in many coding guidelines and Internet transfer protocols, whitespace is fair game for destruction. Until or unless this situation changes, you simply can't guarantee that whitespace is totally system-portable.
Snap exam time: how many spaces in a tab stop? If I type that many spaces, is it the same as a tab or different? Does it look visually different? Does it look different on a printout? If I type it from eye from a magazine or a textbook, will it compile and parse EXACTLY the same?
Is CR the same as LF?
And is that always the case?
On Linux? On Windows? On MacOS? On a mainframe? On an iPhone? On a Palm? On a CE device? On a set-top-box? In SMTP email? In a GUI text box widget? After copy-paste? After In a HTML browser? In XML? In WhateverFancyGadgetDuJour 2030? 2050?
You quite sure about that?
Brackets, however, are always and forever brackets, unmangled in translation, until the end of the Net. Amen.
There's your answer.
"eg. a special language that only does GUIs (but really cleanly and easily) but otherwise is only barely Turing Complete."
And that will work well right up until you realise that you need to do some computation to display your form.
At which point the language designer's response will probably be to shovel half of C or Lisp or Smalltalk, piecemeal and reinvented badly, into the language, and voila! Yet another general purpose language, except one that's inconsistent with itself.
Win!
"the so called "problem" of memory management and exception safety in C++. Simply put, it's NOT a problem"
Then all these buffer overrun security exploit patches which come down monthly through my WSUS and apt-get are just figments of my imagination?
Memory safety IS a problem in C/C++. It's probably the #1 reason why botnets exist.
A language which allows these coding errors on such a massive scale is simply not acceptable for use on the Internet.
Explicit pointer, memory and thread management is HARD. We have computers to do these things automatically. But our programmers refuse to use languages which let the computer do these things automatically, thinking they can do it better. But the evidence shows, apparently they can't.
Every C/C++ programmer thinks he's smarter than average and will never make mistakes. But we've got hundreds of thousands of botnetted machines which say otherwise. Let's just take the ego out of it and fix the problem.
"supporting UTF-8 out of the box"
It does? Then why are strings arrays of bytes rather than arrays of Unicode chars?
"good accurate garbage collections could be considered the most important development in programming languages since OO"
"Since"? Don't you mean "before"? Lisp and GC was around long before OO.
"people that think only Democrats can think of notable solutions and all other ideas will never work?"
Er? That's a weird criticism to make.
By definition, someone who believes a particular political philosophy (such as economic liberalism) is true does believe that ideas which contradict that philosophy (such as economic conservatism) will never work.
Because, well, that's what "not true" means - "will not work".
So to the extent that only one political party, such as the Democrats, holds to the political philosophy they believe to be true, of course they'll believe that only that one party will be able to think of solutions. That's required by logic. If Republicans are believing factually incorrect things, the solutions they come up with WILL NOT WORK.
Why try to attack this with this weird vagueness?
How about actually just saying what you mean: "the philosophy you believe in is WRONG and WILL NOT WORK and the philosophy I believe in is RIGHT and WILL WORK. Therefore I do not support the people or the solutions you propose, and I do support mine."
And reserve the right to change your mind if you turn out to be wrong.
Then you're working for Total Information Awareness, and it's easily solved by [REDACTED] the petaquad antiterrorist [REDACTED] and cross-circuiting helm control to [REDACTED] [REDACTED] [REDACTED] with a squirrel.
Relationship databases are the new 'little black book', right?
"Before you even get to SQL, let alone touch a live database, you're worn out from all the boring math."
Grr!
It's the math that makes programming correct. We need MORE math, not less. If you don't want to understand what you're doing and whether it's right or wrong, why do you get to do it on the Internet and to millions of other people's computers?
Kids these days.
"What makes you think that relational calculus can't be extended to support spatial information "
Isn't "extend" a word that makes mathematicians cringe, because it's indistinguishable from "completely break all the algebraic properties"?
(Okay, with the possible exception of Mark Shuttleworth, and the clown dude.)
"you think can continue civilization and the sending of people into outer space with the vandals and goths sacking your major cities?"
Sure! Thanks to the rise of private space tourism, the people who get to pay to be launched into outer space ARE the vandals and goths sacking our major cities!