Linked by Takuya Murata on Tue 18th May 2004 06:26 UTC
My physics teacher likes to say that physics like to make problems they face look like ones that they know how to solve. A simple harmonic oscillation was one he frequently used in class, as is presumably the case in physics in general.
Permalink for comment
To read all comments associated with this story, please click here.
The author is correct and insightful in stating that reuseablity is a dream. Hasn't decades of development taught us anything?
Decades of development has taught us that while we are advancing more quickly than almost any other industry in history, we still have a long way to go. Software has spent much of the last 2-3 decades evolving rather than being rebuilt every couple of years from scratch, which is in itself a testament to reuse. Software that was developed 2-3 decades ago can, in some cases, be run on computers available today running modern operating systems, even when it was often assumed then that no one would be running that software for more than a few years. At the same time we've had the evolution of the GUI, near-constant increases in the speed and capabilities of the hardware, a fundamental shift in the interface hardware for computers (the mouse), and the development of a multitude of programming languages either for specific or general use, many of which have faded into obscurity. The very longevity of a language like C or C++ is a testament to the design of the languages, but the design of languages like C#, VB, Python, Perl, Java, and so on are signs of the gaps to be filled.
Shouldn't we have software systems that have abstracted extremely complex operations in an automated, intellegent & self-executing fashion by now? Shouldn't it ubiquitous?
Evolution and reuse of software often leads to slower transcendence beyond the existing system. The mass-marketability of software has also slowed the evolution of software (because breaking compatability is extremely taboo, for example, and people are unwilling to try a new OS if it doess not have X, Y, and Z applications).
Still, how do you define an extremely complex operation? How abstract must it be? What determines whether it has been done in an automated, intelligent, self-executing fashion? How many people really want computers to do everything for them without being told what to do?
C# and the .Net runtime make reading and writing from the console as simple as Console.Read and Console.Write (or ReadLine and WriteLine), but for some that's just not simple enough. Reading and writing from a textbox on a form becomes as simple as someStringVariable = textbox.Text or textbox.Text = someStringVariable, but for some people that's not simple enough.
Should it be ubiquitous? Well, different people have different views of how it should be done. At some point it will become ubiquitous for a certain percentage of the population, but there will always be someone out there that uses Linux without a desktop environment and still wants to program everything in C, which is still a step up from coding directly in an assembly language.
The author is correct and insightful in stating that reuseablity is a dream. Hasn't decades of development taught us anything?
Decades of development has taught us that while we are advancing more quickly than almost any other industry in history, we still have a long way to go. Software has spent much of the last 2-3 decades evolving rather than being rebuilt every couple of years from scratch, which is in itself a testament to reuse. Software that was developed 2-3 decades ago can, in some cases, be run on computers available today running modern operating systems, even when it was often assumed then that no one would be running that software for more than a few years. At the same time we've had the evolution of the GUI, near-constant increases in the speed and capabilities of the hardware, a fundamental shift in the interface hardware for computers (the mouse), and the development of a multitude of programming languages either for specific or general use, many of which have faded into obscurity. The very longevity of a language like C or C++ is a testament to the design of the languages, but the design of languages like C#, VB, Python, Perl, Java, and so on are signs of the gaps to be filled.
Shouldn't we have software systems that have abstracted extremely complex operations in an automated, intellegent & self-executing fashion by now? Shouldn't it ubiquitous?
Evolution and reuse of software often leads to slower transcendence beyond the existing system. The mass-marketability of software has also slowed the evolution of software (because breaking compatability is extremely taboo, for example, and people are unwilling to try a new OS if it doess not have X, Y, and Z applications).
Still, how do you define an extremely complex operation? How abstract must it be? What determines whether it has been done in an automated, intelligent, self-executing fashion? How many people really want computers to do everything for them without being told what to do?
C# and the .Net runtime make reading and writing from the console as simple as Console.Read and Console.Write (or ReadLine and WriteLine), but for some that's just not simple enough. Reading and writing from a textbox on a form becomes as simple as someStringVariable = textbox.Text or textbox.Text = someStringVariable, but for some people that's not simple enough.
Should it be ubiquitous? Well, different people have different views of how it should be done. At some point it will become ubiquitous for a certain percentage of the population, but there will always be someone out there that uses Linux without a desktop environment and still wants to program everything in C, which is still a step up from coding directly in an assembly language.