Unfortunately, it's hearsay to me; it came up in conversation (about computability and complexity) with a professor, and I took his word for it at the time; I've been meaning to ask him for a reference ever since, but never got around to it.
But at least one thing I can see is that in PR, you need to fix the upper bounds of the loops (/recursion depth) ahead of time, not "on the fly". If you're doing some kind of iterative approximation, you probably don't know what those bounds "should" be, because you're going to terminate on some other condition, like, the change in the value has become negligible. Your upper bound will be a worst-case estimate -- which you have to do extra work to compute -- and I don't see how it differs much, in practice, from a timeout, which has the advantage (again from a systems perspective) of being measured in clock time rather than cycles.
Not sure about parallelization. PR doesn't suggest any advantages to me for that offhand, but then, I haven't thought about it.
I'm interested in approaches like this too, but there are some practical considerations that seem to complicate it:
* from a systems point of view, an infinite loop is no worse than a routine that doesn't return after a reasonable amount of time. PR is a huge complexity class (it contains NEXP); just because a function always terminates doesn't mean it's efficient (or as efficient as you would like/need it to be.)
* PR functions are somewhat easier to reason about than general recursive functions (no need to mess around with bottom and domain theory) but I haven't seen a lot of evidence that that translates to making them easier to aggressively optimize.
* In fact, I have heard many PR functions have a more efficient GR equivalent, and I don't know of any way to automatically derive the GR version from the PR; and I expect (just on hunch) that no perfectly general PR->GR conversion could exist.
* Granted, a function can be shown to be total without necessarily being PR, but then you have the burden of proving that it is total, and it seems inelegant to move that burden to hardware. Maybe it's not, maybe that's just "normal science" talking.
* In practice, if I want to run an interpreter for an existing TC programming language on this architecture, it has to treat the architecture as TC (i.e. conceptually break its separation between executor and evaluator) anyway.
Good to know that "by definition" it's "not outsourcing". Failing to fall into that particular narrow categorization makes all the difference to the economies involved.
To this day, I find myself deleting comments or whitespace under some misguided pavlovian notion that my code will run faster.
Ouch!
btw, I think "fill the screen with @'s" must be the "Hello, world!" of Commodore machine-language programming. (Back when you could call it "ML" and not get it confused with a functional programming language, too.)
Useful information to disseminate; however, I fear trying to "correct" the popular perception on this would be quixotic, much like trying to change how "begs the question" is used back to what it originally meant.
Descriptivistically, the "Mount Gox" backronym seems to have more currency. (pun intended, but immediately regretted!)
If that theory was correct, one might expect Forth to be really popular among Japanese speakers. I don't see a lot of evidence for that.
I tend to think it's a more general effect where humans actually want a certain amount of irregularity in their languages/notations, to act as markers or error-detecting codes of some sort. e.g. "he", but "him" in accusative case. But who knows; English gets by with "you" being both singular and plural...
You'll have a hard time finding a chromatic trumpet outside of a museum.
This is kind of a confusing statement to me. Most instruments called "trumpets" where I come from are valved instruments which are fully capable of producing chromatics. (Maybe this is technically incorrect and we should be properly calling them "cornets" or something, I don't know.)
My point is, you certainly don't have to go to a museum to find one, and I expect, in a museum (of history anyway), any trumpet you'd find would be more likely to to be valveless and non-chromatic.
We can debate how large an obstacle it is, or whether learning to overcome it is valuable, but clearly it is there, even if it's just an annoyance. I just think it would be really nice for (e.g.) a clarinetist to be able to sub in on an alto sax part on sight without having to go the extra mental work of "Ah, right, up a perfect fourth --"
I've often thought that if there's space for something to be reformed in musical notation, it's the fact that different wind instruments are notated in different keys[1]. I realize there are historical reasons, but it just seems like such an artificial barrier between musicians in a modern band or orchestra.
Redundancy can actually be useful in notation as a sort of error-detecting code. In this case, if the pitch-symbol and pitch-position don't match up, someone must have made a mistake in transcribing it.
Whether it helps one when reading music is another matter. I remember learning to play an electric organ as a youngster with a book of sheet music that came with the organ; being aimed at beginners, each note head had the note letter written inside it. Hummingbird is basically using the same idea, just replacing the letter with a symbol. It probably does make it easier to learn. Whether it would be of any use for an experienced musician, I kind of doubt. (I certainly outgrew expecting the note head to contain the note letter, myself.)
I completely support anyone who wants to invent new notations for things. It's fun. But I'd just like to note that if logical, regular notation was necessarily better, we'd all be speaking Lojban and programming in Scheme. Also, I suspect a conventional eighth note would be easier to make out in a dim concert hall...
I wonder if the value would ever fall to precisely zero. Mightn't they still have value as a novelty or collector's item? Like, "Hey, a Bitcoin! I remember those... sure, I'll buy one, just to say I have one." It's unfortunate that you couldn't mount it in a decorative frame, though.
Some would call it "narcissism", which (with an appropriately nuanced meaning) I think is more accurate than "bragging".
I strongly agree with the article. Sharing your experiences with social networking isn't necessarily about needing to get validation from others on your experience in order for the experience to feel complete for you... but for some people, it is. And I have to wonder, the more prevalent social networking becomes, are more and more people going to use it as their image-of-self crutch? And I have to wonder, what does such a society look like after a few decades? It's a bit like Warhol's "15 minutes of fame", except minutes are the wrong unit of measure. Everybody's a 15 milligram celebrity...
"Stop using strncpy already!"... or you might as well write an article called "Stop using null-terminated strings already!"... or since many commenters here have already pointed that out, and the author is talking about C++ anyway, perhaps "Stop fearing std::string already!"
I dunno. There are vast patches of ocean that are going pretty much unused right now.
(Yes, I know that's still science-fiction, but is it really that much more of a stretch than the AI/robot/automation "software will eat the world" firm-belief that you see daily on HN?)
Since I've been trying to deconstruct "programmer" into "systems analyst" and "coder" in other comments, I might as well continue in that vein here, but with a slightly different tack:
Farming is a lot more like "software engineering" than "programming". You can't pause a farm. It's an "engine" that you have to keep running, no matter what calamity occurs (weather, breakdowns, etc.)
Does being able to land on other celestial bodies and examine them up close not count as world-changing for you? Or do you think we could pretty much just do space exploration without computers?
I don't disagree - but energy, mining, and forestry are also fundamental parts of the economy (with transportation, construction, and manufacturing on the level just above those), and if we're talking about giving kids a rudimentary insight of the mechanics and economy of this big system in which we all live, I don't see any reason to stop at agriculture.
But at least one thing I can see is that in PR, you need to fix the upper bounds of the loops (/recursion depth) ahead of time, not "on the fly". If you're doing some kind of iterative approximation, you probably don't know what those bounds "should" be, because you're going to terminate on some other condition, like, the change in the value has become negligible. Your upper bound will be a worst-case estimate -- which you have to do extra work to compute -- and I don't see how it differs much, in practice, from a timeout, which has the advantage (again from a systems perspective) of being measured in clock time rather than cycles.
Not sure about parallelization. PR doesn't suggest any advantages to me for that offhand, but then, I haven't thought about it.