Obligatory mention of Intentional Programming (which I think was and still is an important experiment, but not ready for prime time).
Very smart people have developed a lot of rich notation for formal systems, and it seems a shame that we programmers basically can't use it. I think of Pascal syntax diagrams, or sequent calculus, or Penrose graphical notation. It would be nice to be able to drop into a non-text-file notation for just this little bit.
Hey, I once implemented Shell sort in production code. (It was precisely the right tradeoff, by the way; I had about 100 items to sort, and it was on an 8-bit microcontroller where I couldn't afford to use any more RAM than the space of the items themselves.) That's why I added the caveat "deeply unusual"; that does happen over the course of a typical career.
If your library uses quicksort, and it is anywhere near well-engineered enough, it will eventually drop back to insertion sort (not bubble sort, which is never the right answer to any problem).
Having said that, nothing that you said contradicts my point: if you are doing something unusual, then you may have to write your own sort, but you're probably not doing anything unusual, and the library sort probably isn't a bottleneck in your application.
...that all of our tools are designed for text. Our editors, our debuggers, our revision control systems, our continuous integration systems, our collaborative code review systems, our bug/feature tracking systems... they are all designed around text. Replacing text for the writing part of programming does nothing about every other part of the pipeline.
And of course, as Henry James noted, all writing is rewriting. This is just of true of software as everything else.
Everyone who has spoken about the information-density of text is, IMO, missing the point. Information density is not the most important aspect of software development, otherwise everyone would use APL instead of Java.
More random thoughts:
There have been some very good graphical and semi-graphical development environments out there; Newspeak is a good modern example. However, despite 30 years of trying, nobody has yet come up with a graphical programming environment which works well with more than one programming language. No modern system of any complexity is written in only one language, and the only format which they all speak is text.
Oh, and don't forget the vendor lock-in issue. I can edit your text file in any editor or IDE that I want, and I don't have to pay you money or spend time learning your interactive tool. Any decent editor/IDE can be customised to do things like folding and syntax highlighting for your language, even if it doesn't support it out of the box.
Just try to write a quicksort routine using any non-text-based programming language.
If you find yourself having to write quicksort yourself in any modern language, you're either doing something very unusual or doing something deeply wrong.
Use your library's sort. There's been more effort put into engineering it than you have time for right now.
Of course Relativity is flawed. The point is that it's far less flawed than Newtonian mechanics.
Exactly.
Over 2,500 years ago, people believed the Earth was flat. Then people believed it was spherical. Then, around 400 years ago, people believed it was an oblate spheroid. Now we believe it's a lumpy potatoid (even taking local topography into account).
First off, the JMP is perfectly predicted, so it costs basically nothing. Secondly, the above loop fits in an icache line, and also probably fits in the Intel trace cache most of the time. 100 sequential commands of any type would not be.
More than 100 but still small enough to fit in L1 cache? Heapsort.
No way. Heapsort is historically very important (it was the first O(n log n) sorting algorithm), but it's useless in practice except as a fallback. The constant factors are enormous, and it requires O(n log n) time no matter what, even when the collection is almost sorted. Even Shell sort typically does better than heapsort on this size of data.
Hopefully Nye will make dispense his misinformation about religion so a real dialogue could be opened.
AFAIK, Bill Nye doesn't have a (public) opinion on religion-in-general, which is arguably just as it should be. He's against pseudoscience, which is also just as it should be.
I have no idea who this Ham is, [...]
He's a guy who is so fundamentalist that 1980s-era Queensland was too liberal for him. He had to move to the US to find enough people who could buy his nonsense.
I understand how the kernel works technically (along with several dozen production OS kernels which are written in C++ with no problem). But more to the point, I understand that C++ is unsuitable because of how the Linux kernel works sociologically. Despite the "mindless ideologues" comment (which should have been clear was a facetious call-back to an ancestor comment), I'm perfectly fine with this.
Any way religion can get around admitting they're wrong.
So you're saying that someone who doesn't believe that the Bible is the literal inerrant word of a classical deity is "wrong"? That would make you a fundamentalist.
It was already 10 February in Australia when you posted this, you insensitive clod.
It takes an extremist to shift the Overton window.
Obligatory mention of Intentional Programming (which I think was and still is an important experiment, but not ready for prime time).
Very smart people have developed a lot of rich notation for formal systems, and it seems a shame that we programmers basically can't use it. I think of Pascal syntax diagrams, or sequent calculus, or Penrose graphical notation. It would be nice to be able to drop into a non-text-file notation for just this little bit.
Hey, I once implemented Shell sort in production code. (It was precisely the right tradeoff, by the way; I had about 100 items to sort, and it was on an 8-bit microcontroller where I couldn't afford to use any more RAM than the space of the items themselves.) That's why I added the caveat "deeply unusual"; that does happen over the course of a typical career.
If your library uses quicksort, and it is anywhere near well-engineered enough, it will eventually drop back to insertion sort (not bubble sort, which is never the right answer to any problem).
Having said that, nothing that you said contradicts my point: if you are doing something unusual, then you may have to write your own sort, but you're probably not doing anything unusual, and the library sort probably isn't a bottleneck in your application.
...that all of our tools are designed for text. Our editors, our debuggers, our revision control systems, our continuous integration systems, our collaborative code review systems, our bug/feature tracking systems... they are all designed around text. Replacing text for the writing part of programming does nothing about every other part of the pipeline.
And of course, as Henry James noted, all writing is rewriting. This is just of true of software as everything else.
Everyone who has spoken about the information-density of text is, IMO, missing the point. Information density is not the most important aspect of software development, otherwise everyone would use APL instead of Java.
More random thoughts:
There have been some very good graphical and semi-graphical development environments out there; Newspeak is a good modern example. However, despite 30 years of trying, nobody has yet come up with a graphical programming environment which works well with more than one programming language. No modern system of any complexity is written in only one language, and the only format which they all speak is text.
Oh, and don't forget the vendor lock-in issue. I can edit your text file in any editor or IDE that I want, and I don't have to pay you money or spend time learning your interactive tool. Any decent editor/IDE can be customised to do things like folding and syntax highlighting for your language, even if it doesn't support it out of the box.
If you find yourself having to write quicksort yourself in any modern language, you're either doing something very unusual or doing something deeply wrong.
Use your library's sort. There's been more effort put into engineering it than you have time for right now.
...says the AC.
Look, I have opinions about the Beta too. But is every fscking story this week going to be non-stop comments about it?
Exactly.
Over 2,500 years ago, people believed the Earth was flat. Then people believed it was spherical. Then, around 400 years ago, people believed it was an oblate spheroid. Now we believe it's a lumpy potatoid (even taking local topography into account).
Those who believed the Earth was spherical were wrong (only Google, Microsoft, and Yahoo still believe this), but still, they were less wrong than those who believed it was flat.
Relativity is wrong. But it's less wrong than Newtonian mechanics.
If I had a +1 handy, I would mod it up too. Being Right and right is sufficiently rare in public discourse that we should encourage it where we can.
(Lest anyone think I'm having a go at small-government advocates, I am not. I'm lamenting on the execrable state of public discourse.)
Yeah, exactly what I needed today, too.
Not in this case, no.
First off, the JMP is perfectly predicted, so it costs basically nothing. Secondly, the above loop fits in an icache line, and also probably fits in the Intel trace cache most of the time. 100 sequential commands of any type would not be.
Oh, so that explains why Arizona cops are required to check your citizenship papers if you look a little bit brown. I was wondering that.
Sounds like a good argument for mandatory training, to me.
You do know that the complete works of Purple Motion are available in other formats, right? If you have that, you don't need S3M support.
(What's a Skaven?)
That... (roll)... works. Damn. Well, you guys have to pay for the pizza.
"We kept it gray." -- Number 1.0
No way. Heapsort is historically very important (it was the first O(n log n) sorting algorithm), but it's useless in practice except as a fallback. The constant factors are enormous, and it requires O(n log n) time no matter what, even when the collection is almost sorted. Even Shell sort typically does better than heapsort on this size of data.
The System/360 model 91 doesn't count, in your opinion?
All CPU design is evolutionary. Even the Tomasulo algorithm was an evolutionary design.
That should be "bogan".
Given that YEC is a theological position, not a scientific position, then it certainly makes sense that someone with some theology skills should be debating Ham. It would be good if Ham was asked about this, for example.
BTW, he's not a redneck as you would think it. The Australian equivalent of "redneck" is "began", and Ham is certainly not that.
AFAIK, Bill Nye doesn't have a (public) opinion on religion-in-general, which is arguably just as it should be. He's against pseudoscience, which is also just as it should be.
He's a guy who is so fundamentalist that 1980s-era Queensland was too liberal for him. He had to move to the US to find enough people who could buy his nonsense.
Didn't you read TFA? The US isn't a police state because the FBI has defined itself as being no longer the police.
I understand how the kernel works technically (along with several dozen production OS kernels which are written in C++ with no problem). But more to the point, I understand that C++ is unsuitable because of how the Linux kernel works sociologically. Despite the "mindless ideologues" comment (which should have been clear was a facetious call-back to an ancestor comment), I'm perfectly fine with this.
So you're saying that someone who doesn't believe that the Bible is the literal inerrant word of a classical deity is "wrong"? That would make you a fundamentalist.