Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 internet speed test! ×

Comment Re:MapReduce is great (Score 1) 148

I work with (multi-terabyte, not multi-petabyte) GIS databases. I am also a Haskell programmer (though not for my day job) so MapReduce doesn't scare me off at all. It's very hard to see how MapReduce specifically would help large-scale GIS.

The main benefit of MapReduce for most problems isn't the programming model, it's the principle "move your code to where the data is" in a way that's agnostic to precisely where the data is. When you have big data, you need to do that. Precisely what that code does is a secondary concern.

Comment Re:oblig xkcd (Score 1) 319

Google Earth is universally reviled amongst geographers for assuming the Earth is a sphere, thus undoing 400 years of geography. Thanks to that, a thousand apps written by people who know nothing about geography have gone with Google Earth's projection, compounding the problem even further. There is an inside joke to the effect that Google's solution is to patch the Earth.

The coordinate system is formally known as "Google Mercator", to distance it from your great-great-great-great-great-etc-grandfather's Mercator.

Comment Re:Lots of links to articles, phfft (Score 2) 234

I'm sorry, but a program that's thousands of methods and small classes is not clearer than a program with fewer, larger, structures. Yes, write code for Humans, not machines, I agree. BUT remember your other programmers want to understand your program - not any one individual method - so making each method simple only moves the complexity into the interrelationships between methods, something considerably harder to understand.

Actually, I agree with the author on this one, but the title is wrong. It should be something more like: "Write your code under the assumption that dozens of mediocre programmers will be eventually responsible for maintaining it."

This "thousands of 15 line methods and small classes" approach is the only way that we know of, so far, to scale up codebase to dozens or even thousands of mediocre programmers. It sucks, but really good programmers are hard to find.

Comment Re:java (Score 1) 125

I have heard plenty of bad things, but does anyone have anything good to say about Java?

Absolutely! Off the top of my head:

Java broke the logjam in the open source world (though it wasn't called "open source" at the time). Before Java, pretty much everything was in C (and maybe a little Tcl). The Java hype opened up the open source world to all languages. (Note that Perl 5 dates from around the same time as Java 1, and I don't want to discount its relevance, but while Perl and CPAN would have gone on to influence other languages like Perl, it didn't step into C's space like Java did.)

Java broke a significant logjam in programming language research. Almost every single piece of research that has happened in managed execution environments, modern concurrent garbage collection, JIT compilation, reflective virtual machines, and so on are largely thanks to Java.

On that note, in 20+ years, there has never (to my knowledge) ever been a security hole in the Java platform which was caused by the JVM or the Classloader. Plenty in the SecurityManager library, but none in the JVM infrastructure.

Comment Re:Because they weren't written in just ten days (Score 2) 125

In ten days there was no time to have a full complement of types, in fact Javascript can't handle integers. That's a problem because, for example it means 9999999999999999 is equal to 10000000000000000. Floating point comes with all kinds of errors. You're actually not supposed to ever compare to floating point numbers for equality, you're supposed to check whether the difference between them is small. Since JavaScript only HAS floating point numbers, it can't tell whether or not two numbers are equal, in the general case.

Oh, dear.

First off, the main alternative in the scripting world is the union of monotypes model, where a number could be a float, integer, or string depending on context, and the language will silently cast between them as needed. The unpredictability of this model is, in my experience, the cause of far more errors than floating point misuse. JavaScript numbers often aren't what you want, but the vast majority of the time you know exactly where you stand with them.

Secondly, you can and sometimes should compare floating point numbers for equality, and in JavaScript use it's typically the right thing to do. This is the 21st century, and the screwed-up numerics of x87's 80 bit registers are far behind us. A 32-bit integer fits losslessly in a 64-bit floating point number. If you do ring operations (e.g. the vast majority of what happens in CSS layout computations) and don't overflow, they will behave exactly as an integer would. If they don't, send your compiler or FPU back because something is broken.

There are many bad design decisions in JavaScript, but this one was smart.

Keep in mind, though, -1 is less than Number.MIN_VALUE, and MAX_VALUE is less than MIN_VALUE.

As you probably know, this behaviour was inherited from C, where DBL_MIN is famously greater than zero. Most languages since (with the notable exception of C++; see min() vs lowest() in std::numeric_limits) have corrected this mistake but it's arguable whether or not JavaScript should have attempted to do so.

Comment Re:Counts sharing, not use. Javascript always shar (Score 1) 125

Reading this, perhaps we should keep in mind it is based on pull requests on public Github repositories; that's counting how much these languages are *shared*, not how much they are *used*.

Oh... so you're saying the several squillion single-function dependencies that are pulled any time you try to do anything nontrivial in node.js are counted separately every time you deploy it on a new machine? Yeah, that would explain it.

Slashdot Top Deals

Reality must take precedence over public relations, for Mother Nature cannot be fooled. -- R.P. Feynman