Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×

Comment Re:The Golden Age of Programming (Score 1) 294

I used these things. They really existed. And they made modern IDEs like Eclipse and IntelliJ and Netbeans and Visual Studio look really crude and primitive. The Lisp machines were horrendously expensive, though. The last one that the nice Government bought me cost £25,000 at a time when a Sun workstation cost £4,000. And so we really have forgotten what was possible.

However, the machines we have now are enormously more powerful than the machines we had then. My Xerox 1186 in 1987 had (I think) 8Mb of real RAM and about 80Mb of disk, and ran at two MIPS. My desktop machine at home has 16Gb of RAM and runs at 18,000 MIPS. We really could begin to run the big software development environments of the 'golden age' again, on machines everyone can afford. Clojure and LightTable are a real step in the right generation; but they're still a long way behind where we were thirty years ago.

Comment Re:Smalltalk live images (Score 1) 294

InterLisp (and a number of other things coming out of Xerox PARC in the early eighties) had the same feature. You saved the running state of your system to file, you invoked the function (sysout). To restore the running state of your system from a file, you invoked (sysin filename). Essentially this was a memory dump of the heap, but it had the special property that the 'spaghetti stack' - the branching stack structure through which InterLisp managed multitasking - was implemented in the heap rather than as a separate structure, so loading in the heap also loaded in the stack, for all threads.

Obviously, in InterLisp as in Smalltalk, everything in memory was inspectable and editable, and when you edited a function that didn't mean editing and reloading a file, the source code was an in-memory structure. It wasn't entirely without problems - there were small semantic differences between interpreted code and compiled code (if I remember correctly interpreted code implemented shallow binding while compiled code implemented deep binding), so that when you compiled your code its behaviour could change. Also it was possible, if you added a comment in the wrong place, that it could change the semantics of a function. For example if you added a comment as the last form in a function body, that function would always return nil. Nevertheless in terms of programmer productivity these environments were streets ahead of anything that's commercially available now; and although I love LightTable and hope that it is the shape of things to come, even LightTable isn't a patch on InterLisp's DEdit.

Comment Re:Nice touch but too late! (Score 5, Insightful) 162

A small minority of companies, with very special needs, are using NoSql databases for a small proportion of their operations. Those companies do include some big ones, such as Google and Twitter, but still in absolute terms the numbers are small. A tiny minority of companies have moved away from relational databases altogether. But the numbers are statistically insignificant and are likely to remain so for decades. And the relational model does have some real and enduring benefits which will make it the right tool for many jobs far into the future.

Remember this is an industry that advances very slowly indeed. Your bank, and your utility companies, are still using programs written in COBOL - technology which is fifty years behind the curve.

Comment Re:Buggy whips? (Score 2) 769

Actually, this is untrue. The world has never faced a technology which had the potential to take out the entire human ecosystem before. Fossil fuels certainly will become obsolete sooner or later - when 90% of the human population has died of starvation, they'll be obsolete. But it would be a much better thing if we could stop using them before we'd destroyed the atmospheric and ocean systems which we depend on for our survival.

Comment Re:Easy answers (Score 1) 305

OK, so, I'm a hero warrior with a really big battle axe. There's a flimsy door with a little lock on it...

Yes, locked doors can be useful and interesting parts of game puzzles, but make it believable, please! If your first person character is big, strong and well equipped, and you want to make it credible that he can't get through a door, the door also needs to be big, strong and well equipped.

Comment Re:I would think (Score 1) 379

The often repeated mantra that high level language compilers do a better job than humans isn't true, and doesn't become true through repetition. The compilers can do no better than the person programming them, and for a finite size compiler, the optimizations are generic, not specific. And a good low level programmer can take knowledge into effect that the compiler doesn't have.

Two things. Programmers are expensive, silicon is cheap. And really good low-level programmers (which I am not and don't claim to be) are (and deserve to be) very expensive indeed.

When you're writing a bit of code which is going to run on hundreds of thousands of processors all over the world (as OpenSSL is), the cost/benefit does move in low-level programmings favour. If you save just a few cycles on each of billions of operations on millions of processors, it's worth throwing resource at that optimisation. But OpenSSL (like the Linux kernel) is a special case. Most perfectly ordinary good programmers will write more cost-effective code using languages which don't require them (for example) to keep track of memory assignment.

Also, most human beings can't hold an effective map in their minds of the operating states of a moderately complex program. And people make mistakes - even the best of us.Software, by contrast, is very good at detail, repetitious, complex tasks like keeping track of what bit of memory has been assigned for what purpose, and noticing when nothing remaining in the system holds a pointer to that data. There are whole classes of programming error which good compilers will simply never make.

I was doing a post-accident audit on safety-critical (closed source) code a few years ago. The reason for the failure was that someone had used strcat to concatenate strings for an error message, where the strings being concatenated were stored in the data segment (yes, think about it for a moment). It cost millions of pounds worth of damage, and it was very lucky no-one died. If the software concerned had been written in (for example) Java, the accident wouldn't have happened. Yet the software had been written by a very senior C++ programmer, and had gone through four separate code reviews before being accepted into service - and all four had missed it.

Slashdot Top Deals

"Who alone has reason to *lie himself out* of actuality? He who *suffers* from it." -- Friedrich Nietzsche

Working...