Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×

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 =
sig
    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 *)
end

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.

Comment Just don't make the same mistake... (Score 1) 1026

...that most other countries made: don't let the transportation companies keep the rail networks. (At least) one company for the rails, and as many for the trains as are willing to invest-- the same way cable/DSL should be handled. Unless you want Amtrak to become the Comcast of transportation, of course.

That being said, I've commuted by rail in Germany, and I've travelled through much of Europe and parts of Japan that way, and it beats all other forms of transportation I have tried. Based on that, I'd consider a 10% increase in federal taxes to finance European-level public transportation to be a good deal.

Comment Misleading summary. (Score 1) 385

From reading the article, I don't think that this is intended as a replacement for deb/rpm or tarballs with configuration scripts. (If it is, it is a very bad idea.)

The tool constructs a reduced dynamic I/O trace of a single program run to determine file dependencies, then packages these. This is great if you're benchmarking deterministic programs on different hardware, and useful for quickly migrating your code onto a bigger machine when a paper deadline is around the corner.

But again, the files it picks are based on a dynamic trace. If you run `cat foo.txt', then `foo.txt' will be part of the trace. If you run it on apache, all the apache modules that apache wound up loading will be part of the trace, but no others. So it's not very general-purpose. Still useful, in the right situation.

Slashdot Top Deals

It's a naive, domestic operating system without any breeding, but I think you'll be amused by its presumption.

Working...