Software still sucks because our software design abilities do not grow at the same pace as our hardware design abilities. We try new things, we experiment, but "engineer" is certainly not a term that is rightfully applied to programmers. We're some weird amalgam of engineer, artist, and con-artist, all rolled into one. Personally, I suspect that until we get to the point where we can start offering formal proofs that our programs are correct, we're still going to limp along -- though we'll limp faster all the time.
There's actually a fair amount of research in functional programming languages such as Haskell about proving program correctness. While granted, there are certain things which cannot be provably correct (as demonstrated by the Halting Problem), the aim of this research is to either develop formal mathematical proof systems for programs, or to calculate programs from mathematically precise specifications. Unfortunately, Gödel had the cheek to prove that any system that contains basic mathematics
Okay, this is the second comment I've seen here recently mentioning Haskell (in a positive way at that!), in a forum that seems to me to live on the opposite side of the programming language universe. How many of you (a) have heard of the language, and (b) find it promising/interesting/fun?
Pardon me for recommending myself:), but you can check out this thread about functional programming [perlmonks.org] that I started on Perlmonks. I give a couple of brief examples in Haskell, though MJD has some far more interesting comments in the thread.
I certainly recommend checking out Haskell. It's an interesting language, though it's not widely used.
I've actually spent quite a bit of time playing around in Haskell. Paul Hudak's Haskore [yale.edu] is a pretty decent MIDI manipulation system, though not as good (IMHO) as CLM [stanford.edu]. It's conceptually interesting in a sort of Puritan way, and practically interesting (and relevant to Perl 6) in trying to compile laziness efficiently. But to me it's always been one of these academic languages that's more about itself than about getting anything done. It's optimized for writing a sexy, intuitive 1-line quicksort. Want to
While granted, there are certain things which cannot be provably correct (as demonstrated by the Halting Problem), the aim of this research is to either develop formal mathematical proof systems for programs, or to calculate programs from mathematically precise specifications. Unfortunately, Gödel had the cheek to prove that any system that contains basic mathematics can lead to statements that are true, but unproveable, thus ensuring that this research cannot be perfect.
It sucks because ... (Score:3, Insightful)
Software still sucks because our software design abilities do not grow at the same pace as our hardware design abilities. We try new things, we experiment, but "engineer" is certainly not a term that is rightfully applied to programmers. We're some weird amalgam of engineer, artist, and con-artist, all rolled into one. Personally, I suspect that until we get to the point where we can start offering formal proofs that our programs are correct, we're still going to limp along -- though we'll limp faster all the time.
Reply to This
Re:It sucks because ... (Score:3, Interesting)
I suspect that until we get to the point where we can start offering formal proofs that our programs are correct..
From what little I remember of my formal methods classes, it's not possible to prove program correctness. The Halting Problem [wikipedia.org]
I try not to think too hard about formal methods in case I have another Z Notation triggered flashback.
I think the real gains will come from not treating programming as something done in a vaccum and working on better management and user involvement.
Re:It sucks because ... (Score:3, Informative)
There's actually a fair amount of research in functional programming languages such as Haskell about proving program correctness. While granted, there are certain things which cannot be provably correct (as demonstrated by the Halting Problem), the aim of this research is to either develop formal mathematical proof systems for programs, or to calculate programs from mathematically precise specifications. Unfortunately, Gödel had the cheek to prove that any system that contains basic mathematics
haskell again (Score:1)
/s
Re:haskell again (Score:2)
Pardon me for recommending myself :), but you can check out this thread about functional programming [perlmonks.org] that I started on Perlmonks. I give a couple of brief examples in Haskell, though MJD has some far more interesting comments in the thread.
I certainly recommend checking out Haskell. It's an interesting language, though it's not widely used.
Re:haskell again (Score:1)
Re:It sucks because ... (Score:2)
While the Halting Probl
Slashdot Post Quality++ (Score:2, Funny)
------------------------------
You are what you think.