Pretty dystopian view of things. Even if what you said comes to pass, I have faith that someone somewhere would find a way around the problem.
I don't really see that outcome, as history teaches us that while there may be perturbations in the flow of progress, it still continues to move forward. Businesses are seeing the value of open systems - deploying more and more Linux into their network, and chaffing from the limitations imposed by 'black box' vendors - are seeing the business value of having options by casting off their vendor chains. In cloud computing - the freedom of general purpose computing is clearly a positive, as it now separates the management of hardware, from the operating system and applications - providing even more flexibility.
While most consumers will be perfectly happy with the functionality of the tablet computer - there is still a very large minority of people who will pay for the flexibility of a general purpose desktop computer:
1. Hardcore Gamers -- for gamers that play insanely complex simulations (FPS/Flight and combined arms combat simulations), there is no substitute for being able to build and tweak out their own game machine. Console game systems come nowhere near the capabilities of a tricked out game system; and for those who are highly competitive, having the technological edge is worth paying for.
2. Technologists and Scientists - a number of people who program or otherwise work in depth with computers will want to have access to computer resources in real-time for their own personal projects at home. In the old days this was known as 'console access'. It better be able to run all sorts of complex simulations, crunch large amounts of numbers, and compile their latest monster program in nothing flat.
3. Independent Developers - hobbyists and other small scale/independent developers currently can't afford the cost of server grade computers to do their development on. Given the need to provide professional grade systems, at consumer grade prices - this group desires a desktop PC that can provide the best bang for the buck. These are also the same people driving innovation in the marketplace.
Even as small as this group is - they are worth multiple billions of dollars in revenue. If no one caters to their needs, all that revenue would be left on the table. I'm banking that doesn't happen. Given the drive that these people provide - particularly the small developers - for the economy, I don't see it being ignored for very long without serious impacts to the bottom lines of the larger companies who make their living off skimming the proceeds of that work.
Maybe the discussion is all wrong anyway - maybe the form factor will change; maybe it won't be called a desktop (microserver maybe?) - but the functionality of a high performance workstation will exist one way or the other - and I would argue it will be an open system for practical as well as price reasons.
"Yggdrasil is a company that wholesales and retails Linux distributions on CD-ROM."
I recall sending off for a distro for $10 --- from Yggdrasil computing - was Slackware with ELF beta. I still have the CD somewhere...just not in front of me.
If you are too scrupulous there won't be any technology that you'll touch...or are you selective about what you consider moral and immoral in a corporate context to justify your technology selections?
Along those lines - I advocate having a development and test environment that mimics what is in production with enough detail to do meaningful tests of real-world situations (partial load testing and so on). With virtualization, the cost of creating such a system is cheaper than ever - and it can give you meaningful insight into complex end-to-end systems interaction beyond what testing on an isolated server provides.
Instead of having a pool of 100 servers for a given part of your infrastructure - 2 or three VMs on a virtual network may suffice. Care should be taken to ensure the VMs are identical images to what is running in production - or slated to be run along with the deployment of your application. Limit the variables as much as possible so you can get as realistic results as possible - extrapolate those results to the larger network - and see what implications there are for parts of your infrastructure you weren't able to model realistically (e.g. ingress border switches and such).
Beyond the functionality of the application that a user may see - test other things like: * Security * Resource utilization (CPU/RAM/Storage) * Hard to replicate bugs (leave the test running over extended periods of time to weed these out). * Impacts to other systems that interact with the new/new version of the application. and so on...
Given questions about Sarbanes/Oxley, security audits etc for large companies - the answer is no.
However, and this is the twist, I do believe developers should have a good working understanding of the issues associated with the installation and running of their applications in a production environment. To that end, you should have a test environment/network that mimics as much as possible the environment in which the application will live.
Ostensibly programmers are (mostly) computer science graduates - and as such should have an understanding of all aspects of computing - particularly with regard to how their application interacts with the environment in which it lives - yet too many times I've seen issues along these lines: * Mismanagement of hardware resources. * Mismanagement of network and pooled resources. * Security failures. * Operating system environmental dependencies / failures.
As a result I believe developers need more hands-on in test environments. Testing on their personal machines is not enough. They need to get their hands dirty doing what system admins will do when installing and managing the app, and should do automated testing to validate resource management, security and other dependencies can be handled properly. There can be a team that specialises in this - but the programmer should have some basic hands on in the test environment before they hand off to a test/packaging team.
This will give them an appreciation of what others have to deal with - but more importantly, it will make them a better programmer (assuming your measurement of success is working code; and I define working as complete[in terms of installation dependencies and what it is currently designed to do; I do realize that the codebase could be on an iterative life-cycle], secure, and either no resource impacts - or smart enough to have behaviour appropriate when more resources are needed).
I wouldn't trust a programmer who could not build his own machine, load the OS, and integrate that machine into a complex network. I've seen the bad results too many times when this is not the case. A program is not a thought experiment - it is a living/breathing entity existing in a complex environment - with interactions beyond the program logic; too many 'programmers' forget that.
Visiting Boston for work - decided to take in a baseball game at Fenway park with my compadres...in the cheap seats.
It was the Boston Red Sox vs. the Chicago White Sox (I want to say 1999 season?)
Red Sox win...game is over and the people including my fellow work buddies are surging towards the gate - and I witness the most violent confrontations between drunk and apparently wildly happy Red Sox fans. They are punching, shoving, tripping and kicking each other, and several knock down drag outs ensue. Did I mention this was coming out of the cheap seats? Cops/security nowhere in sight.
We all circled the wagons and kept the more wildly stupid at a distance as we made our way to the exit.
All of these terms are conceptual sugar designed to hide all the messy details happening down below...
The amazing ballet that we view as the network of networks is really composed of computer applications running on machines of various types telling peripheral devices attached to them to read a byte here, and write a byte there in a format governed by convention (layers of communications protocols). This is basically the same process regardless if the machine is talking to the hard drive inside of it's case, or the ethernet card attached to an external network.
Seen from this level, the web or internet is really a construct inside of our heads - an agreed upon hallucination - to allow us mere mortals to 'understand' it and our relationship to it. All of the 3D game worlds, social media sites, chat rooms, text messages, email, and other such systems both that serve humans and that serve other machines, are at the most basic level message passing mechanisms - and at the lowest level in the network of backbones and carrier grade IP switches - maze solving mice, in the form of packets and the routing algorithms that control their progress through the network.
All the fun stuff, all the interesting stuff, and all the web stuff happens on the very end points inside the computers and most importantly inside of our minds translating all those messages composed of bits and bytes into something that is meaningful to humans. It allows us to share this hallucination with each other; that the bits I am sending you are a document, or the bits you are sending me are actions in a video game world. It is the stuff of magic to the uninitiated.
The whole concept of 'the web is not the internet' is irrelevant outside of a given context; therefore there is no definitive right or wrong about it.
Grist for a holy war? Yes. An informative article? No.
I use this keyboard at work and at home (I bought the second one for work after I tested it out at home). The Maxim has individual mechanical switches too - and better yet allows me to use in ergo mode - and then close up the clam shell whenever the desktop support guy happens to need to monkey with my machine at work.
As for the QWERTY issue - I just shrug my shoulders. I learned to touch type at 18, so like you I have many years of muscle memory that would have to be retrained out of me. Could I do it? Sure. Would it be painful? Absolutely.
Until a limited battery life device with limited processing power can do the following:
High performance video gaming (FPS, Combat Flight Simulations, MMORPGs etc) where FAST immersive real-time visualisations are critical (particularly for those who are competitive). High speed simulations (Science, Virtual Servers and Networks, and Game Servers). Software Development (compilation cycles faster on powerful multi-core systems). Multimedia Development (3D rendering and animation etc).
There will be a need for powerful general purpose computer systems that can be personalised for a given application domain.
Now - if these capabilities are removed from the consumer market - then individuals, schools, and small businesses will not be able to compete - which would impact the level and pace of innovation in these areas, as established companies with a monopoly are not prodded to improve.
General purpose computing may become more of a niche - but it will be a large niche market that would be stupid to ignore while there is money to be made - so I don't see it disappearing.
Unfortunately, laws are being written by politicians with vested interests (corporations - which are run by and who's net profit most positively benefit the rich) which have the effect of NOT protecting the majority who have less power, money and influence.
The only recourse you have is to vote the yahoos out of office, but that becomes extremely difficult when your vote is put up against 'Joe Sixpack' and the like.
Agreed. This is why I finally broke down and removed Windows from my personal computer network. This also has forced me to come to terms with what I've been tentatively circling around for years: if it doesn't exist today, and I want it in my environment, I'm going to have to build it myself.
This is also why I advocate alternatives to remove inefficient middle men from the picture:
Support Indy art, music, movies and other programming (shows/podcasts) - develop alternatives to the standard advertising pay mode that really only benefits the middle men. Provide means for everyone to enjoy and stream the works, and reward Indy artists directly. radioreddit.com is a good example of just such a system at work.
Create and/or support Free and Open Source software - help make the world a better place for everyone.
Ultimately, there is too much fat in the system - time to cut it out because it is not economically feasible to continue to support it over the long haul.
If by typewriter you mean a quill pen and ink -- then yes he saw a typewriter. http://en.wikipedia.org/wiki/Shakespeare On the other hand, he may have had some means of trans-locating through a wormhole to 1870-ish, to bang out McBeth on one of the first commercially produced typewriters. http://en.wikipedia.org/wiki/Typewriter
You must have never come in contact with an ASCII character code table before then...
Space is represented by : 32 040 20 00100000 (decimal, octal, hexadecimal, binary respectively) Tab is represented by: 9 011 09 00001001
That is traditionally 'whitespace'. This may have different encodings using other systems (EBCDIC etc).
As for your/n 'newline' -- or better expressed as end of line, or EOL - It all depends on what hardware/operating system you are running on when you write your text file to disk: Linux and Unix (and numerous other related and unrelated OSs) use Line Feed to represent the EOL marker. Windows/DOS use Carriage Return - Line Feed (2 characters) to represent the EOL marker.
Carriage Return is represented by: 13 015 0D 00001101 Linefeed which is represented by: 10 012 0A 00001010
If you are talking about regular expressions - then/n may not be considered whitespace -- because it can serve as a delimiter -- represented by $ character. This also translates to editors such as vi. In Fortran and Python, the EOL marker is significant because it represents the end of a statement...and there are was to 'escape' the EOL such that a single statement can extend beyond a single line. As such it is not considered 'whitespace' during compilation.
So really what is/is not whitespace comes down to a mix of operating system, tool/programming language and libraries (e.g. regex) used when parsing said text file.
All my tabs are written out as 4 spaces in Emacs as well... No problemo.
Emacs python mode allows you to manage blocks easily in python too.
I had some experience with Fortran long ago -- which also has some bondage regarding white space (column 6 to start a statement - columns 1-5 being significant for such things as labels), no statement ending punctuation (limited to 72 characters per line maximum), and blocks denoted through indentation (only by convention - not required). Maybe that explains why I don't find find python all that difficult?
Personally, not having to count nested ending curly braces is a godsend.
Would I use python for everything? No. But, it has replaced anything I would do today with shell (bash, sed, awk), Perl, Java or C# for my personal needs. If I want performance for systems programming - I'll still grab C or C++ (which I could also modularly integrate with python if desired for even more flexibility - avoid premature optimisation being the watchword there).
"In the early 18th century, English spelling was not standardised. Differences became noticeable after the publishing of influential dictionaries. Current British English spellings follow, for the most part, those of Samuel Johnson's A Dictionary of the English Language (1755), whereas many American English spellings follow Noah Webster's An American Dictionary of the English Language (1828).
Webster was a strong proponent of English spelling reform for reasons both philological and nationalistic. Many spelling changes proposed in the United States by Webster himself, and in the early 20th century by the Simplified Spelling Board, never caught on. Among the advocates of spelling reform in England, the influences of those who preferred the Norman (or Anglo-French) spellings of certain words proved to be decisive. Subsequent spelling adjustments in the United Kingdom had little effect on present-day American spellings and vice-versa. In many cases, American English deviated in the 19th century from mainstream British spelling, but it has also retained some older forms.
The spelling systems of most Commonwealth countries and Ireland, for the most part, closely resemble the British system. In Canada, however, the preferred spellings include some American forms and some British, and Canadians are somewhat more tolerant of foreign forms."
There you have it.
My suggestion is to clearly define which country you hail from, so we can all judge the merits, or lack thereof, of your spelling properly.
I had a similar path -- started programming in BASIC and Fortran...then later taught myself C using their slim volume to lead me the way. I owe the quality of my coding efforts today in other languages in no small part to the discipline I learned from K&R.
How would a computer language be able to better secure data memory from being abused (by the insertion and running of executable code)?
We could simply segregate 'executable' and 'data' memory -- but then you would be stuck with a finite size for each - dependent again upon an arbitrary choice of a given equipment vendor - rather than a more flexible solution.
Please explain how a compiler would be able to solve that problem (in all cases).
Pretty dystopian view of things. Even if what you said comes to pass, I have faith that someone somewhere would find a way around the problem.
I don't really see that outcome, as history teaches us that while there may be perturbations in the flow of progress, it still continues to move forward. Businesses are seeing the value of open systems - deploying more and more Linux into their network, and chaffing from the limitations imposed by 'black box' vendors - are seeing the business value of having options by casting off their vendor chains. In cloud computing - the freedom of general purpose computing is clearly a positive, as it now separates the management of hardware, from the operating system and applications - providing even more flexibility.
While most consumers will be perfectly happy with the functionality of the tablet computer - there is still a very large minority of people who will pay for the flexibility of a general purpose desktop computer:
1. Hardcore Gamers -- for gamers that play insanely complex simulations (FPS/Flight and combined arms combat simulations), there is no substitute for being able to build and tweak out their own game machine. Console game systems come nowhere near the capabilities of a tricked out game system; and for those who are highly competitive, having the technological edge is worth paying for.
2. Technologists and Scientists - a number of people who program or otherwise work in depth with computers will want to have access to computer resources in real-time for their own personal projects at home. In the old days this was known as 'console access'. It better be able to run all sorts of complex simulations, crunch large amounts of numbers, and compile their latest monster program in nothing flat.
3. Independent Developers - hobbyists and other small scale/independent developers currently can't afford the cost of server grade computers to do their development on. Given the need to provide professional grade systems, at consumer grade prices - this group desires a desktop PC that can provide the best bang for the buck. These are also the same people driving innovation in the marketplace.
Even as small as this group is - they are worth multiple billions of dollars in revenue. If no one caters to their needs, all that revenue would be left on the table. I'm banking that doesn't happen. Given the drive that these people provide - particularly the small developers - for the economy, I don't see it being ignored for very long without serious impacts to the bottom lines of the larger companies who make their living off skimming the proceeds of that work.
Maybe the discussion is all wrong anyway - maybe the form factor will change; maybe it won't be called a desktop (microserver maybe?) - but the functionality of a high performance workstation will exist one way or the other - and I would argue it will be an open system for practical as well as price reasons.
Is this a reverse troll? I'm not sure how to respond to this...
Found the answer myself:
From the 1996 distro readme:
"Yggdrasil is a company that wholesales and retails Linux distributions
on CD-ROM."
I recall sending off for a distro for $10 --- from Yggdrasil computing - was Slackware with ELF beta. I still have the CD somewhere...just not in front of me.
Was Yggdrasil an actual distribution? I thought it was just a delivery mechanism for Slackware...?
What is the moral imperative here?
If you are too scrupulous there won't be any technology that you'll touch...or are you selective about what you consider moral and immoral in a corporate context to justify your technology selections?
Mine looks very similar to yours - mostly the order:
Slackware on CD
Yellow Dog
Mandrake
Redhat
Debian
Slackware
Ubuntu
Slackware
Debian + Slackware
Along those lines - I advocate having a development and test environment that mimics what is in production with enough detail to do meaningful tests of real-world situations (partial load testing and so on). With virtualization, the cost of creating such a system is cheaper than ever - and it can give you meaningful insight into complex end-to-end systems interaction beyond what testing on an isolated server provides.
Instead of having a pool of 100 servers for a given part of your infrastructure - 2 or three VMs on a virtual network may suffice. Care should be taken to ensure the VMs are identical images to what is running in production - or slated to be run along with the deployment of your application. Limit the variables as much as possible so you can get as realistic results as possible - extrapolate those results to the larger network - and see what implications there are for parts of your infrastructure you weren't able to model realistically (e.g. ingress border switches and such).
Beyond the functionality of the application that a user may see - test other things like:
* Security
* Resource utilization (CPU/RAM/Storage)
* Hard to replicate bugs (leave the test running over extended periods of time to weed these out).
* Impacts to other systems that interact with the new/new version of the application.
and so on...
Given questions about Sarbanes/Oxley, security audits etc for large companies - the answer is no.
However, and this is the twist, I do believe developers should have a good working understanding of the issues associated with the installation and running of their applications in a production environment. To that end, you should have a test environment/network that mimics as much as possible the environment in which the application will live.
Ostensibly programmers are (mostly) computer science graduates - and as such should have an understanding of all aspects of computing - particularly with regard to how their application interacts with the environment in which it lives - yet too many times I've seen issues along these lines:
* Mismanagement of hardware resources.
* Mismanagement of network and pooled resources.
* Security failures.
* Operating system environmental dependencies / failures.
As a result I believe developers need more hands-on in test environments. Testing on their personal machines is not enough. They need to get their hands dirty doing what system admins will do when installing and managing the app, and should do automated testing to validate resource management, security and other dependencies can be handled properly. There can be a team that specialises in this - but the programmer should have some basic hands on in the test environment before they hand off to a test/packaging team.
This will give them an appreciation of what others have to deal with - but more importantly, it will make them a better programmer (assuming your measurement of success is working code; and I define working as complete[in terms of installation dependencies and what it is currently designed to do; I do realize that the codebase could be on an iterative life-cycle], secure, and either no resource impacts - or smart enough to have behaviour appropriate when more resources are needed).
I wouldn't trust a programmer who could not build his own machine, load the OS, and integrate that machine into a complex network. I've seen the bad results too many times when this is not the case. A program is not a thought experiment - it is a living/breathing entity existing in a complex environment - with interactions beyond the program logic; too many 'programmers' forget that.
I have a Logitech M13 game keyboard - you could program in macros to do common things in your language of choice...
Visiting Boston for work - decided to take in a baseball game at Fenway park with my compadres...in the cheap seats.
It was the Boston Red Sox vs. the Chicago White Sox (I want to say 1999 season?)
Red Sox win...game is over and the people including my fellow work buddies are surging towards the gate - and I witness the most violent confrontations between drunk and apparently wildly happy Red Sox fans. They are punching, shoving, tripping and kicking each other, and several knock down drag outs ensue. Did I mention this was coming out of the cheap seats? Cops/security nowhere in sight.
We all circled the wagons and kept the more wildly stupid at a distance as we made our way to the exit.
So, yeah, I can relate.
All of these terms are conceptual sugar designed to hide all the messy details happening down below...
The amazing ballet that we view as the network of networks is really composed of computer applications running on machines of various types telling peripheral devices attached to them to read a byte here, and write a byte there in a format governed by convention (layers of communications protocols). This is basically the same process regardless if the machine is talking to the hard drive inside of it's case, or the ethernet card attached to an external network.
Seen from this level, the web or internet is really a construct inside of our heads - an agreed upon hallucination - to allow us mere mortals to 'understand' it and our relationship to it. All of the 3D game worlds, social media sites, chat rooms, text messages, email, and other such systems both that serve humans and that serve other machines, are at the most basic level message passing mechanisms - and at the lowest level in the network of backbones and carrier grade IP switches - maze solving mice, in the form of packets and the routing algorithms that control their progress through the network.
All the fun stuff, all the interesting stuff, and all the web stuff happens on the very end points inside the computers and most importantly inside of our minds translating all those messages composed of bits and bytes into something that is meaningful to humans. It allows us to share this hallucination with each other; that the bits I am sending you are a document, or the bits you are sending me are actions in a video game world. It is the stuff of magic to the uninitiated.
The whole concept of 'the web is not the internet' is irrelevant outside of a given context; therefore there is no definitive right or wrong about it.
Grist for a holy war? Yes. An informative article? No.
Do we really WANT editors who are too stupid to operate the simple interface? It is not rocket science.
Additionally - the (VERY SIMPLE) markup language is what a WIKI is all about...so making it WYSIWYG would make it NOT A WIKI.
Read This, and may you'll get a clue (for those who want to change the wikipedia interface).
I use this keyboard at work and at home (I bought the second one for work after I tested it out at home). The Maxim has individual mechanical switches too - and better yet allows me to use in ergo mode - and then close up the clam shell whenever the desktop support guy happens to need to monkey with my machine at work.
As for the QWERTY issue - I just shrug my shoulders. I learned to touch type at 18, so like you I have many years of muscle memory that would have to be retrained out of me. Could I do it? Sure. Would it be painful? Absolutely.
Until a limited battery life device with limited processing power can do the following:
High performance video gaming (FPS, Combat Flight Simulations, MMORPGs etc) where FAST immersive real-time visualisations are critical (particularly for those who are competitive).
High speed simulations (Science, Virtual Servers and Networks, and Game Servers).
Software Development (compilation cycles faster on powerful multi-core systems).
Multimedia Development (3D rendering and animation etc).
There will be a need for powerful general purpose computer systems that can be personalised for a given application domain.
Now - if these capabilities are removed from the consumer market - then individuals, schools, and small businesses will not be able to compete - which would impact the level and pace of innovation in these areas, as established companies with a monopoly are not prodded to improve.
General purpose computing may become more of a niche - but it will be a large niche market that would be stupid to ignore while there is money to be made - so I don't see it disappearing.
Unfortunately, laws are being written by politicians with vested interests (corporations - which are run by and who's net profit most positively benefit the rich) which have the effect of NOT protecting the majority who have less power, money and influence.
The only recourse you have is to vote the yahoos out of office, but that becomes extremely difficult when your vote is put up against 'Joe Sixpack' and the like.
Agreed. This is why I finally broke down and removed Windows from my personal computer network. This also has forced me to come to terms with what I've been tentatively circling around for years: if it doesn't exist today, and I want it in my environment, I'm going to have to build it myself.
This is also why I advocate alternatives to remove inefficient middle men from the picture:
Support Indy art, music, movies and other programming (shows/podcasts) - develop alternatives to the standard advertising pay mode that really only benefits the middle men. Provide means for everyone to enjoy and stream the works, and reward Indy artists directly. radioreddit.com is a good example of just such a system at work.
Create and/or support Free and Open Source software - help make the world a better place for everyone.
Ultimately, there is too much fat in the system - time to cut it out because it is not economically feasible to continue to support it over the long haul.
If by typewriter you mean a quill pen and ink -- then yes he saw a typewriter. http://en.wikipedia.org/wiki/Shakespeare
On the other hand, he may have had some means of trans-locating through a wormhole to 1870-ish, to bang out McBeth on one of the first commercially produced typewriters. http://en.wikipedia.org/wiki/Typewriter
You hit the nail on the head. Succinct and accurate. Bravo!
You must have never come in contact with an ASCII character code table before then...
Space is represented by : 32 040 20 00100000 (decimal, octal, hexadecimal, binary respectively)
Tab is represented by: 9 011 09 00001001
That is traditionally 'whitespace'. This may have different encodings using other systems (EBCDIC etc).
As for your /n 'newline' -- or better expressed as end of line, or EOL -
It all depends on what hardware/operating system you are running on when you write your text file to disk:
Linux and Unix (and numerous other related and unrelated OSs) use Line Feed to represent the EOL marker.
Windows/DOS use Carriage Return - Line Feed (2 characters) to represent the EOL marker.
Carriage Return is represented by: 13 015 0D 00001101
Linefeed which is represented by: 10 012 0A 00001010
If you are talking about regular expressions - then /n may not be considered whitespace -- because it can serve as a delimiter -- represented by $ character. This also translates to editors such as vi. In Fortran and Python, the EOL marker is significant because it represents the end of a statement...and there are was to 'escape' the EOL such that a single statement can extend beyond a single line. As such it is not considered 'whitespace' during compilation.
So really what is/is not whitespace comes down to a mix of operating system, tool/programming language and libraries (e.g. regex) used when parsing said text file.
All my tabs are written out as 4 spaces in Emacs as well... No problemo.
Emacs python mode allows you to manage blocks easily in python too.
I had some experience with Fortran long ago -- which also has some bondage regarding white space (column 6 to start a statement - columns 1-5 being significant for such things as labels), no statement ending punctuation (limited to 72 characters per line maximum), and blocks denoted through indentation (only by convention - not required). Maybe that explains why I don't find find python all that difficult?
Personally, not having to count nested ending curly braces is a godsend.
Would I use python for everything? No. But, it has replaced anything I would do today with shell (bash, sed, awk), Perl, Java or C# for my personal needs. If I want performance for systems programming - I'll still grab C or C++ (which I could also modularly integrate with python if desired for even more flexibility - avoid premature optimisation being the watchword there).
From wikipedia: http://en.wikipedia.org/wiki/American_and_British_English_spelling_differences
"In the early 18th century, English spelling was not standardised. Differences became noticeable after the publishing of influential dictionaries. Current British English spellings follow, for the most part, those of Samuel Johnson's A Dictionary of the English Language (1755), whereas many American English spellings follow Noah Webster's An American Dictionary of the English Language (1828).
Webster was a strong proponent of English spelling reform for reasons both philological and nationalistic. Many spelling changes proposed in the United States by Webster himself, and in the early 20th century by the Simplified Spelling Board, never caught on. Among the advocates of spelling reform in England, the influences of those who preferred the Norman (or Anglo-French) spellings of certain words proved to be decisive. Subsequent spelling adjustments in the United Kingdom had little effect on present-day American spellings and vice-versa. In many cases, American English deviated in the 19th century from mainstream British spelling, but it has also retained some older forms.
The spelling systems of most Commonwealth countries and Ireland, for the most part, closely resemble the British system. In Canada, however, the preferred spellings include some American forms and some British, and Canadians are somewhat more tolerant of foreign forms."
There you have it.
My suggestion is to clearly define which country you hail from, so we can all judge the merits, or lack thereof, of your spelling properly.
I'm from the USA btw.
May the fork wars begin!!
I had a similar path -- started programming in BASIC and Fortran...then later taught myself C using their slim volume to lead me the way. I owe the quality of my coding efforts today in other languages in no small part to the discipline I learned from K&R.
Requiat en pace DMR
How would a computer language be able to better secure data memory from being abused (by the insertion and running of executable code)?
We could simply segregate 'executable' and 'data' memory -- but then you would be stuck with a finite size for each - dependent again upon an arbitrary choice of a given equipment vendor - rather than a more flexible solution.
Please explain how a compiler would be able to solve that problem (in all cases).
That is incredibly ironic because Python is implemented in C (as is Perl).
"The C Programming Language — A language which combines the flexibility of assembly language with the power of assembly language."