Slashdot is powered by your submissions, so send in your scoop


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:not why (Score 2) 277

See, I've heard this argument many times, but I've never been able to wrap my head around it. If you tell me that a social system (such as a system of government) has trouble scaling from 1 to 10 people, or from 10 to 100, or from 100 to 1000, then yes, I can see that. If you tell me that it scales fine up to 1000, but has trouble scaling to 10,000, then that's a bit odd (unless we have time/storage constraints and superlinear factors, of course, but that's not really an issue here). My line of thinking is that if you can scale fine to 10 million, then why wouldn't you be able to scale to 400 million or however many people live in the US these days?

In other words, there must be other reasons, and `we could never do that in the US / in Germany / in France / in Japan' is not something that I'm willing to buy.

Comment Re:Bets it has the biggest "feature".... (Score 1) 164

I haven't tested this link yet (hesitant to update my Skype for that very reason), but here's a list of DNS names that supposedly cover all that Skype uses for ad lookup:

Now, Skype could circumvent such a mechanism (hard-code the IPs-- which could be circumvented with custom routing tables-- or inline the ads into the regular data stream, which would be very hard to circumvent, or just refuse to run if it can't access any ads (or `signed ads')), so even if it works now, it may not be forever. ...and now I'll shut up and stop giving Microsoft ideas...

Comment Re:Free market at work (Score 2) 482

From that perspective, you might as well argue that the market distortion here is that the government doesn't permit foreign workers to work in the US under the same conditions as US nationals, since that `unnaturally' restricts the job market (i.e., `national borders distort the job market').

Comment Re:Oy (Score 4, Insightful) 683

OP pointed out that the situation is more similar to the French Revolution than to the Kristallnacht/disenfranchisement of Jews in 30s Germany. I agree with you that most of the tech workers are scape-goats (I have been part of this very group in the past, for the record), but I agree with OP that the situation is closer to that in the French revolution:

(a) The targetted group holds considerable power and is connected to an apparatus that is seen with approval and benevolence `all the way up'
(b) The targetted group lives in a `bubble' that separates its concerns from those of the `lower' classes
(c) Targetting is driven by public disapproval, rather than by governmental machinations (sort of a fall-out of (a)).

Now, are the Googlers etc. to blame for the situation? Most of them aren't of course, they're just innocent participants `in the system' and can't be blamed for not wanting to not participate. But I'm confident that most of the French aristocracy had little intent of stomping on the common man either-- they just didn't deal with them much. Didn't do their necks much good, in the end.

So yes. This looks way more French revolution, `to the barricades, comrades! We shall throw off our shackles, and then guilloutine everyone who was or might have been sympathetic to these oppressors!' than Nazi `you really want to be there tonight to throw stones at the Jews, dude, or the Gauleiter will want to have a word with you, and you do remember that you have a wife and kids to feed, right?' Reichskristallnacht.

Except modulo the guilloutines. Please.

Comment Representative benchmarks? (Score 4, Interesting) 132

Based on his description, he is using a very synthetic benchmark:

The code I’m testing contains no #include directives, and makes use of only standard C++ code. It starts with one class, and then is followed by 6084 small classes derived from various instantiations of the template classes. (So these 6084 classes are technically not templates themselves.) Then I create 6084 instantiations of the original template class, using each of the 6084 classes. The end result is 6084 different template instantiations. Now, obviously in real life we wouldn’t write like that (at least I hope you don’t).

So in his own words, the code does not reflect realistic compiles. There is no reason to assume that the result generalise to any programs that anyone actually cares about.

Also, there are no error bars of any kind listed.

In other words, I have no reason to assign any meaning to these numbers.

Comment Re:Nice graphical argument for DST (Score 2) 462

Or you could just get up earlier/later on your own time.
If there is a need for government regulation here (which I don't think there is, but I may be missing something), then you can regulate that opening hours of stores stores have to shift by an hour during the summer, relative to their normal posted times. Which will still affect some people, but at least (a) eliminate the main conceptual issues of double/missing hours, and (b) remove the practical issues for _some_ of the people affected now.

Comment Re:Umm, Ya (Score 1) 586

There's one big change that you are not considering there: the _rate of change_ is greater than ever before. In the past, if someone invented a loom, then a bunch of workers unable to learn the new skills would be out of work and replaced by (mostly younger) people who had grown up with the new technology. This was a problem for about half a generation, during which the younger people could support their out-of-work relatives.

Nowadays, the new skills come and go at a much faster rate. The 16 bit assembly programming skills I learned as a kid about a generation ago are almost useless to me today (in the sense that everything I _need_ to know about low-level programming I could have learned from C). Imperative programming, the way I learned it, is considered largely obsolete by today's vocal OO majority. The APIs I developed against in the late 90s are dead and buried, subsumed in wrapper APIs that one should use instead (who programs directly against xlib these days?) or evolved into entirely new forms (such as OpenGL). Sure, the core Unix APIs are still alive (and so is XML, sadly), but the vast majority of APIs, languages, tools, and hardware from the last few decades have gone the way of the dodo. Compare that to the small number of technological advances we saw in centuries past.

Now, I'm not complaining-- many of these changes were for the better, and even the ones that weren't are likely to be superceded by better ideas within the next couple of years. But note that at the same time at which we see this unprecedented rate of change, poverty statistics show that the gap between rich and poor is growing at similarly unprecedented rates.
Yes, this is merely correlation, and it shows nothing. For all I know it might just be that TPTB have become more effective at making people docile and exploitable, or that laws and legal practice have gradually become so complex and expensive that the privilege of freedom has become even more exclusive than it used to be.

But I'd like to think that the increased rate of change is a strong contributor to that change in poverty rates, if only because that is one thing that I see some hope for, via improved education and better tools.

Comment Re:H1-B karma burner (Score 2) 250

No, there is no assumption that an H-1B holder `will return to their home country.' The H-1B is a dual-intent visa, meaning that you can apply for a permanent resident card while in the US and then legally stay as long as you want.

Incidentally, I'm currently on that very route. I still don't expect to ever see any benefits from the near-decade social security and taxes I've already paid while working on F-1 and J-1 non-immigrant visas.

Comment Use cases? (Score 1) 716

Can someone explain the use cases IPad-like finger-only tablets are intended for to me?

Laptops I understand: you can use them to code, do your e-mail, ssh into machines to get stuff done etc.
Phones I get: you can use them to read your e-mail `on the go' and perhaps even send quick replies to important things, read maps, and do skype if you're the adventurous kind who likes voice communication.
Tablets with pens I also get: you can read and annotate papers/books with them or draw.

But I don't understand the use cases for finger-only tablets. They seem to be selling well, so my guess is that it's games or porn. Does anyone have experiences with these fingery tablets?

Comment Re:Anti-Modular? (Score 5, Interesting) 755

Yes, there has been much progress in module systems. The very Bob Harper mentioned there was involved in the design of the SML module system, which is often cited in the CS literature as `the' reference module system. SML achieves a level of isolation that is simply impossible to achieve in a language like Java or Smalltalk. in Java, any object you can still call `hashcode()' and `toString()' etc. on, and it's often possible for someone to subclass one of your internal classes and thereby break your intended module structure.

In SML, you can confine types through (e.g.) the following signature:

(* this is imperative code; a typical SML program focuses on functional code, but it's good enough for illustration purposes. *)
signature STACK =
    type 'a stack (* 'a is a type parameter, so "'a stack" is what OO-land calls a `generic type' *)
    empty : unit -> 'a stack (* create fresh stack *)
    push : 'a stack -> 'a -> unit (* take a stack of 'a elements, take an element of type 'a, and plug them together *)
    pop : 'a stack -> 'a option (* "'a option" means that the operation may fail *)

You can then implement this stack in various structures that match this signature, and confine it in such a way that only the operations listed above are available. That is, you can't stringify stacks (there is no such operation listed there, though you can choose to add one), you can't compare them (again, no such operation), you can't `reflect' on them and you can't access their `protected' functionality by subclassing them, unless the stack implementer put a separate view of the structure into place for that particular purpose.

Why is this good? Client code won't end up using features that you didn't want to expose. Why is it bad? If you forgot to expose something important, someone else will have to re-implement it. But that's your fault, then, not the language's fault.

SML also allows you to build modules from other modules through something called `functors', but let's leave that for another time.

Now, SML's modules have issues-- you can't have mutual dependencies between them (which does have advantages, too, though), and the question of how to integrate type classes (something you may know as `C++ concepts') is unresolved. But the concepts behind the module system are clear and powerful. So if you want to teach the concepts underlying modular software design, this is a vastly better choice than most other options out there. (I remember the Modula-3 module system being fairly good, too, but not quite at this level.)

So, for teaching purposes I'd say Bob Harper is closely connected to the best system out there that has actual working implementations tied to it.

Comment Re:His tool chugged along for DAYS? (Score 1) 154

Some program analyses are linear, others log-linear, others worse. Some require fixed point computation that may run as long as you want it to run. Check the program analysis literature: you'll find analyses for almost any level of complexity you want, and if you pick carefully, more run-time will usually give you better results (though it may or may not be worth the effort).

Was your tool flow-sensitive? Was it context-sensitive? If so, to what level? Did it normalise the AST, or did it represent the source code (as you might want to do for a source code clone analysis)? What kind of alias analysis did you use?

Please don't go tossing all program analyses into the same bin. If you've implemented a type checker for C, you may think that the idea of type checking being exponential is ridiculous-- yet that is what it is in languages like SML or Haskell.

Comment Re:Why Support Java At All? (Score 1) 264

For the needs of a modern VM, Python would be a step back from Java. To jit a language efficiently, you want to have as much information about the programs as you can get, particularly static types. Python as a dynamically typed language is about as hard to jit as Javascript is-- we're only just beginning to see adaptive compilation systems (i.e., composed baseline/optimising-compilers or composed interpreter/compilers) for that.

Python has its niche, but it's not "a platform for competing on equal terms with native-code apps for iOS".

You could pick a different statically typed language (e.g. something based on Modula-3 or Eiffel), but even if you provide a re-engineering tool to translate from the old code to the new code, you are going to alienate many of your coders, especially inexperienced ones who have trouble seeing beyond syntax. And those are in the majority, in my experience.

Slashdot Top Deals

"Show me a good loser, and I'll show you a loser." -- Vince Lombardi, football coach