The Web is in the mess it now is because Microsoft (and, to a lesser extent, Netscape, back in the day) has gone through so many iterations of deliberately trying to create subtly incompatible variants of HTML. Creating a browser which is backwards compatible with that mess simply perpetuates the mess. The new browser should simply refuse to render non-conforming legacy pages at all - that would force web site owners to clean up their act in short order.
Slashdot videos: Now with more Slashdot!
We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).
Not actually true. Ultra-orthodox Jews do not (yet) have to serve in the army.
<sarcasm>After all, the ultra-orthodox never provoke any trouble with the Palestinians, so why should they contribute to defence?</sarcasm>
Speaking as someone who's been following this story as it developed, it seems to me that the data that has been 'lost' is data the high heid yins of Scotland's police were very eager to lose. They'd been acting beyond their remit - and probably beyond the law - and they knew it.
So I suspect someone with scrambled egg on their hat took that programmer into a quiet room and said 'you will make an unfortunate error this afternoon, or we'll be sending the boys round'. I'm pretty sure the government suspect the same.
Heads will, I suspect, roll - and I don't think they will be the heads of programmers.
I can't say five good things about Windows, and I've worked on every version since Windows 2.0.
Dammit, I don't think I can say one good thing about Windows.
It was 1993 for me. And I moved to Linux from, guess what, BSD. I've never gone back and I don't plan to.
Yes, I really have been using Linux as my main operating system for more than twenty years, and I still haven't found anything better. And Linux, in 1993, was just a reimplementation of UNIX, which is forty years old. Software evolves so bloody slowly!
From the article:
From that they got 100 million lines of Java code and tossed out simple methods (those with less than 50 tokens).
Good coding style is to decompose your problem thoroughly, so your methods will be very small. Indeed, using this methodology, the more you refactor the greater proportion of so called 'chaff' you'll get.
I'm not arguing with the general propositions that
- Java is an extraordinarily prolix language, and
- These days, most Java is exceedingly poorly written
But this study doesn't show it, because it arbitrarily tossed away the better-written code and then analysed the remainder.
Tail Call Optimisation is not implemented in Clojure, and the reason given in the documentation is precisely that interoperability with Java prevents this. Instead there's a recur special form, which, in my opinion, is a bit of an ugly hack.
This is kind of nonsense.
In most current compilers for ALGOL derived imperative programming languages (such as C, Java, C#, Pascal...), it's true, because, TRADITION! But it's not true of the underlying hardware, and it's not true of any compiler which implements its stack as a linked list. In principle there is no reason at all why you should not allocate all your available store to stack. There's also no reason why you cannot dynamically implement your stack in your heap.
These are all language (and run-time) design choices, and just because the people who specified ALGOL in 1958 - when I was three, goddammit - were working on machines which were (by modern standards) desperately poor of both mill and store, doesn't mean that we need to continue to copy the design choices they made then.
That's a particularly stupid response, even for Slashdot. Since all iteration can be implemented as recursion, why ever use iteration?
Because some problems are more clearly expressed as iteration and some as recursion.
Try, for example, to describe in normal everyday language a route planning algorithm using iteration. Here it is using recursion:
- Go from here to a junction.
- Am I at my destination? If so, then stop.
- Am I closer to my destination than I was at the previous junction? If so, then recurse.
- Otherwise backtrack to the previous junction and choose the next branch from there.
When you consider that the i386 on which I first ran Linux back in 93 could manage about 15 BogoMIPS, that's ridiculously powerful!
The point of a Raspberry Pi isn't to replace an Intel i7 clocked at 3GHz, it's to replace a 6502 clocked at 2MHz: to provide kids with a system to hack on. You don't need shedloads of performance to develop great software, and, indeed, the less resource you have, the more inclined you are to code tightly and efficiently. As a learning tool, less really can be more.