I cannot mod the parent up, so I will just have to give my wholeharted approval through this reply.
Just one caveat... the forces of mediocrity have found a way to neuter the essay question, by instructing the graders to score by style rather than content. As a result, an SAT essay can be graded as well by weighing it as by reading it: http://www.npr.org/templates/story/story.php?storyId=4634566 (admittedly, things may have changed since 2005, but for the better?)
... the great names and myths of science (mainly Popper and The Scientific Method)
These are names and myths of philosophy, not science.
... he was attacking the philosopher's misguided dreams of an epistemological foundation of science...
If Feyerabend has found deep problems with philosophy's attempt to come to terms with science, then it's a problem for philosophy, not science. Fortunately, science will keep on going and philosophy will keep on being irrelevant.
In such matters, actual cases can help us see where abstract philosophizing has ended up in the bushes (science has observation to get itself out of that trouble). Consider the matter of anthropogenic climate change: we have seen a politician call upon a novelist to deny the fact, and a state attorney-general threaten scientists with baseless, harassing subpoenas to suppress it. I doubt that they will call on a voodoo priest to support their denial, but I bet they would take a christian minister, if they haven't already.
The point is that empirical effectiveness is not an inferior basis for authority than epistemological foundations, it is incomparably superior. On what does the epistemological foundation rest? It's turtles all the way down, I believe.
It took me a while to decide where I stand on this. Generally speaking, users of a free product who complain about what they get have an over-active sense of entitlement. I would make an exception in the case of blatant deceit, but I don't think that this quite qualifies as such -- a reasonably careful reading of what they say shows what little they actually claim to offer. What they deserve some grief for, IMHO, is poisoning the well for more selfless and principled purveyors of freeware, whose interests are presumably harmed if people are turned away from trying their products on account of actions like these, and also for spreading confusion over so important an issue as security.
It's just one skirmish in the fight for those with votes = 1, mediocre analytical thinking, and a belief that they are being shafted. Actually, it is not much of a fight, because librals don't seem to have a clue about what is happening.
I was amazed and delighted by this:
http://www.sci.brooklyn.cuny.edu/~arnow/ED/correctnessproofs.html
"Program correctness proofs have recently been successfully added to Brooklyn College's required course on mathematical and computer literacy for the general student". They are apparently teaching 'non-techie' students at least the rudiments of a skill that I would bet a majority of 'professional' programmers have not mastered.
I don't think it is just a matter of haptic feedback, it's also one of the pilots having their own lives on the line. Everyone will tell you "I would never put anyone's life at risk; I would treat it as my own", but you only have to look at the decisions leading up to the two space shuttle crashes, where managers avoided and ignored clear evidence of danger, to realize that we don't work this way. I would guess that even the threat of the death penalty for causing a fatal accident would not be as effective in concentrating the mind as actually being in the cockpit because, regardless of how much rational analysis you put into it, judgement in risky situations (including the recognition that a situation has become risky) is ultimately an emotional one, and emotions are heavily influenced by the situation we are in (we haven't evolved to operate dangerous machinery by remote control.)
The fact that these are merely regulations violations is no excuse; when violations are high, the chances of real accidents is raised - this is being underscored as we learn more about the corporate culture of BP and also Massey Mining.
The danger of highly focused training is that you can end up with people who don't know how shallow their knowledge is, like the author of the Therac 25 code, who apparently didn't understand the dangers of concurrency and ended up killing people.
Fortunately, at Zoho, nothing of that importance is likely to be worked on. When they are as innovative as Google, I will believe their model is superior.
By ocean circulation. The article mentions that the location is 'at least 12 miles from open water', and considers whether the creatures came from there (which is thought possible but unlikely). This, then, is not an isolated water pocket, which would be much more interesting.
These creatures probably depend on free oxygen to live, which comes from plant life on the unglaciated parts of the Earth's surface.
This is not an argument against the possibility of life on Europa, it is an argument against assuming that the environment under Europa's ice is as life-friendly that under Antarctica's.
Compression ignition is the hallmark of a diesel engine. Some of Rudolph Diesel's initial work used coal dust as a fuel (!), injected by a blast of compressed air. I can imagine he ran into problems with wear, ash buildup, and fuel delivery.
That is because the referenced article is about security (you cannot tell this from the title alone, but it is clear from the context in which the original appears.) It does not address design or semantic errors, so the 'chip & pin is broken' issue from yesterday would not be a candidate, and the chosen errors are weighted by frequency of occurrence. All in all, it is a pretty narrow scope for such a grandiose title.
They may think this is their justification: "Staff, parents, and students agree that we should follow guidelines for Socially Responsible Behavior during the school day and at all school sponsored events.Socially Responsible Behavior includes, but is not limited to..." (my italics) -- i.e. 'we can make up the rules after the event'. The speciousness of a supposed policy document containing this sort of language should be obvious to reasonable people, but I cannot say what position the law would take on it.
The official statements appear to be trying to give the impression that the student was at fault, without actually saying, much less doing, anything that would get their sorry asses sued.
Regardless of motives, this is a valid complaint. If I search for something, I don't want to see anything from anyone who has no information on that topic.
A computer uses machine code, so why should we use higher-level languages? The reason is so they can be better understood by humans -- firstly and most importantly, by the author herself. Correct code can be written more quickly, and errors more readily detected, when using languages that approximate to natural (human) language, and Knuth is simply proposing that we go further in that direction.
Knuth is not suggesting one should be incorrect for the sake of maintainability, understandability, or anything else. In programming, if a solution is possible, there are infinitely many solutions, a few of them are easier to understand than most of them, and understanding is the key to verification and so to the writing of correct code.
The problem has a hard part, and another that is just tedious. The authors declare the latter is solved, but ignore the former.
Given a working upgrade, rolling it out while keeping things running is 'just' a matter of careful preparation and attention to detail. Being able to understand the existing system so you can get to a working upgrade is often the hard part, and while modular programming might be part of the solution, doing it right is not so easy, judging by the frequency with which it is done poorly (the phrase 'modular programming' itself belongs with 'buy low, sell high' in terms of the completeness with which it specifies a solution to a problem.)
In Aristotle's day, it may have encompassed all of abstract knowledge and thinking, but the spin-off of Natural Philosophy into Science left a big hole. Nowadays, is there any more coherent a definition than 'that which is taught and studied in philosophy departments'?
I saw your first line in the preview, and immediately thought, 'have you never forgotten to unlock a mutex?' Failure to check return codes or catch exceptions also fall into the same category of missing code that causes failure. Nevertheless, I am in complete agreement with your general principles: from my experience, I have come to consider the prevalence of inordinate and gratuitous complexity as being the least-recognized problem in software design today - though it's really a symptom of a deeper problem, in how developers think about design, for which I have no solution.
I am in complete agreement with you on the value of compile-time checking, and I have found the Gimpel Lint to be helpful with C++, though only with code that was written from the start to be checked this way.
I don't believe that code can be truly self-documenting (at least not in C++ and similar languages), and I see that, unlike some other responders to this question, you don't take an absolute position on this. The problem lies in dealing with interactions between textually and temporally separated aspects of the code: two components whose interaction preserves some invariant; "we need to do this / it's safe to do this because..."; "this is better than {the obvious solution} because...". Design needs to be understood, and to be understood, it needs to be explained where not self-evident (is there a self-documenting C++ implementation of the qwiksort algorithm? Even if there is, it's too small in scope in comparison to real-world software engineering problems.) Nevertheless, I agree that naming is important, and for this reason: if you can't give a good name to a component of your code, that's a warning that it has ill-defined semantics.
The idea that good design should be readable is not new: Donald Knuth, no less, wrote about 'Literate Programming' three decades ago. The technology has moved on, but the principle remains sound.
Design is a creative activity, so your developers also have to understand the domain of possible solutions. Case in point: the Therac 25 disaster, where the developer's lack of understanding of concurrency contributed to the death or maiming of several people (e.g. http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html.)
This may stem from the Graphical Fallacy -- 'a picture is worth a thousand words'. While pictures often do help in understanding things, they are not nearly as expressive as human language, especially for abstract ideas of any complexity (if you don't agree, try drawing a diagram that self-evidently refutes this assertion!) From this perspective, it's not hard to see that diagram-based techniques, of which UML is one, can work for sketching, but run out of power if they are called on to substitute for language.
I cannot mod the parent up, so I will just have to give my wholeharted approval through this reply.
Just one caveat... the forces of mediocrity have found a way to neuter the essay question, by instructing the graders to score by style rather than content. As a result, an SAT essay can be graded as well by weighing it as by reading it: http://www.npr.org/templates/story/story.php?storyId=4634566 (admittedly, things may have changed since 2005, but for the better?)
... the great names and myths of science (mainly Popper and The Scientific Method)
These are names and myths of philosophy, not science.
... he was attacking the philosopher's misguided dreams of an epistemological foundation of science ...
If Feyerabend has found deep problems with philosophy's attempt to come to terms with science, then it's a problem for philosophy, not science. Fortunately, science will keep on going and philosophy will keep on being irrelevant.
In such matters, actual cases can help us see where abstract philosophizing has ended up in the bushes (science has observation to get itself out of that trouble). Consider the matter of anthropogenic climate change: we have seen a politician call upon a novelist to deny the fact, and a state attorney-general threaten scientists with baseless, harassing subpoenas to suppress it. I doubt that they will call on a voodoo priest to support their denial, but I bet they would take a christian minister, if they haven't already.
The point is that empirical effectiveness is not an inferior basis for authority than epistemological foundations, it is incomparably superior. On what does the epistemological foundation rest? It's turtles all the way down, I believe.
It took me a while to decide where I stand on this. Generally speaking, users of a free product who complain about what they get have an over-active sense of entitlement. I would make an exception in the case of blatant deceit, but I don't think that this quite qualifies as such -- a reasonably careful reading of what they say shows what little they actually claim to offer. What they deserve some grief for, IMHO, is poisoning the well for more selfless and principled purveyors of freeware, whose interests are presumably harmed if people are turned away from trying their products on account of actions like these, and also for spreading confusion over so important an issue as security.
It's just one skirmish in the fight for those with votes = 1, mediocre analytical thinking, and a belief that they are being shafted. Actually, it is not much of a fight, because librals don't seem to have a clue about what is happening.
I was amazed and delighted by this: http://www.sci.brooklyn.cuny.edu/~arnow/ED/correctnessproofs.html "Program correctness proofs have recently been successfully added to Brooklyn College's required course on mathematical and computer literacy for the general student". They are apparently teaching 'non-techie' students at least the rudiments of a skill that I would bet a majority of 'professional' programmers have not mastered.
The fact that these are merely regulations violations is no excuse; when violations are high, the chances of real accidents is raised - this is being underscored as we learn more about the corporate culture of BP and also Massey Mining.
The danger of highly focused training is that you can end up with people who don't know how shallow their knowledge is, like the author of the Therac 25 code, who apparently didn't understand the dangers of concurrency and ended up killing people. Fortunately, at Zoho, nothing of that importance is likely to be worked on. When they are as innovative as Google, I will believe their model is superior.
> How did the oxygen get down there?
By ocean circulation. The article mentions that the location is 'at least 12 miles from open water', and considers whether the creatures came from there (which is thought possible but unlikely). This, then, is not an isolated water pocket, which would be much more interesting.
These creatures probably depend on free oxygen to live, which comes from plant life on the unglaciated parts of the Earth's surface. This is not an argument against the possibility of life on Europa, it is an argument against assuming that the environment under Europa's ice is as life-friendly that under Antarctica's.
Compression ignition is the hallmark of a diesel engine. Some of Rudolph Diesel's initial work used coal dust as a fuel (!), injected by a blast of compressed air. I can imagine he ran into problems with wear, ash buildup, and fuel delivery.
That is because the referenced article is about security (you cannot tell this from the title alone, but it is clear from the context in which the original appears.) It does not address design or semantic errors, so the 'chip & pin is broken' issue from yesterday would not be a candidate, and the chosen errors are weighted by frequency of occurrence. All in all, it is a pretty narrow scope for such a grandiose title.
They may think this is their justification: "Staff, parents, and students agree that we should follow guidelines for Socially Responsible Behavior during the school day and at all school sponsored events.Socially Responsible Behavior includes, but is not limited to..." (my italics) -- i.e. 'we can make up the rules after the event'. The speciousness of a supposed policy document containing this sort of language should be obvious to reasonable people, but I cannot say what position the law would take on it.
The official statements appear to be trying to give the impression that the student was at fault, without actually saying, much less doing, anything that would get their sorry asses sued.
Regardless of motives, this is a valid complaint. If I search for something, I don't want to see anything from anyone who has no information on that topic.
A computer uses machine code, so why should we use higher-level languages? The reason is so they can be better understood by humans -- firstly and most importantly, by the author herself. Correct code can be written more quickly, and errors more readily detected, when using languages that approximate to natural (human) language, and Knuth is simply proposing that we go further in that direction.
Knuth is not suggesting one should be incorrect for the sake of maintainability, understandability, or anything else. In programming, if a solution is possible, there are infinitely many solutions, a few of them are easier to understand than most of them, and understanding is the key to verification and so to the writing of correct code.
Given a working upgrade, rolling it out while keeping things running is 'just' a matter of careful preparation and attention to detail. Being able to understand the existing system so you can get to a working upgrade is often the hard part, and while modular programming might be part of the solution, doing it right is not so easy, judging by the frequency with which it is done poorly (the phrase 'modular programming' itself belongs with 'buy low, sell high' in terms of the completeness with which it specifies a solution to a problem.)
In Aristotle's day, it may have encompassed all of abstract knowledge and thinking, but the spin-off of Natural Philosophy into Science left a big hole. Nowadays, is there any more coherent a definition than 'that which is taught and studied in philosophy departments'?
I saw your first line in the preview, and immediately thought, 'have you never forgotten to unlock a mutex?' Failure to check return codes or catch exceptions also fall into the same category of missing code that causes failure. Nevertheless, I am in complete agreement with your general principles: from my experience, I have come to consider the prevalence of inordinate and gratuitous complexity as being the least-recognized problem in software design today - though it's really a symptom of a deeper problem, in how developers think about design, for which I have no solution.
I am in complete agreement with you on the value of compile-time checking, and I have found the Gimpel Lint to be helpful with C++, though only with code that was written from the start to be checked this way.
I don't believe that code can be truly self-documenting (at least not in C++ and similar languages), and I see that, unlike some other responders to this question, you don't take an absolute position on this. The problem lies in dealing with interactions between textually and temporally separated aspects of the code: two components whose interaction preserves some invariant; "we need to do this / it's safe to do this because..."; "this is better than {the obvious solution} because...". Design needs to be understood, and to be understood, it needs to be explained where not self-evident (is there a self-documenting C++ implementation of the qwiksort algorithm? Even if there is, it's too small in scope in comparison to real-world software engineering problems.) Nevertheless, I agree that naming is important, and for this reason: if you can't give a good name to a component of your code, that's a warning that it has ill-defined semantics.
The idea that good design should be readable is not new: Donald Knuth, no less, wrote about 'Literate Programming' three decades ago. The technology has moved on, but the principle remains sound.
Design is a creative activity, so your developers also have to understand the domain of possible solutions. Case in point: the Therac 25 disaster, where the developer's lack of understanding of concurrency contributed to the death or maiming of several people (e.g. http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html .)
This may stem from the Graphical Fallacy -- 'a picture is worth a thousand words'. While pictures often do help in understanding things, they are not nearly as expressive as human language, especially for abstract ideas of any complexity (if you don't agree, try drawing a diagram that self-evidently refutes this assertion!) From this perspective, it's not hard to see that diagram-based techniques, of which UML is one, can work for sketching, but run out of power if they are called on to substitute for language.