Comment Yes, unless it's Emacs (Score 1) 627
Emacs is complicated enough that it makes you a better programmer just to use it.
Emacs is complicated enough that it makes you a better programmer just to use it.
Charles Simonyi, one of the creators of Microsoft Word, went on a crusade to enable "intentional programming", which is to programming what the WYSIWYG word processor was to LaTeX. You can see what he does here. This is a VERY hard problem to solve. Simonyi is a good programmer, has tons of money, yet this is not a battle that he has clearly won yet.
I once received a phone call at work from a Forbes journalist, saying that Simonyi had described my own pet project, XL (http://xlr.sf.net), and the associated "Concept Programming" ideas as one of the only competitors to Intentional Programming. That was interesting, because it shows that Simonyi had "groked" what I wanted to do, despite the total lack of polish of this little project. (As an aside, if you are curious, you can see XL in action in Taodyne's software to create interactive 3D documents)
But what Simonyi saw (I believe) is that the general questioning was similar. How do we transform ideas into code. For Simonyi, this can be done with graphical tools. For XL, this can be done with simple transformations on text (more precisely, on a Lisp-like parse tree generated from the text). For example, with XL, you can implement the "if-then-else" concept using the "->" (transforms into) operator as follows:
if true then X else Y -> X
if false then X else Y -> Y
With this approach, it is possible to use nice notations for arbitrary concepts. In Taodyne's products, for example, a slide is described by something like:
slide "Hello world",
* "This is a bullet point"
* "This is another one"
This pseudo-markup language is then rewritten recursively until we reach "primitive" operations, e.g. 3D graphics rendering or basic computations.
XL is based on text because a) it's easier to do than Simonyi's approach, and b) I think it is generally easier to read and write "globally". If you have a "picture" in a document, of course showing the picture tells you more than just its name. But knowing that there is a picture in a document is easy with something like image "Woman.jpg" or (in HTML) a img tag.
As the experience with HTML or Postscript demonstrated, text or graphical does not matter much anyway. It's possible to have a text-based representation of the code that most people manipulate graphically and never need to be aware of. You can generate your HTML with Word, never need to know anything about it. It's likely the same thing is slowly happening with code as well: IDEs tend to give you more and more meta-data which is "behind" the text and helps you navigate it or code faster.
One important practical freedom is that LLVM works as a library. With GCC, leveraging the GCC backend, even for an open source project such as XL (http://xlr.sf.net), was a pain. With LLVM, it was dead easy. And then, building a commercial product on top of said open-source project (http://www.taodyne.com) was legally possible, whereas with GCC it would have been challenging to say the least.
Yes, it's possible to do better. But inventing new models is not easy, and it's an uphill battle.
See page 184 of the Unix Haters Handbook, http://web.mit.edu/~simsong/www/ugh.pdf. That has to be the most obstinate bug in the world.
Helpful comments in the source code:
if (wtype == w_eol)
{
if (*p2 != '\0')
one of the most common bugs found in makefiles... */
fatal (fstart, _("missing separator%s"),
(cmd_prefix == '\t' && !strneq (line, " ", 8))
? "" : _(" (did you mean TAB instead of 8 spaces?)"));
continue;
}
So they detect it, and they'd rather insult the user. But "no ivory tower", no no, we will just not parse a space when the ATT code only parsed tabs. It's a "makefile bug", not a "make bug". Sure.
And for the fun, I just tried to build make. On MacOSX, supposedly some kind of Unix that I head a few folks actually use to build stuff. Could be a prime citizen. OK, no configure out of the box with the git repository. OK. No makefile, obviously. No install script. Bogus information in the INSTALL that tells me to run nonexistent configure. Well, running the magic incantation, aclocal ; autoheader; automake ; autoconf. Still does not work, missing files like config/compile. Running automake --add-missing. Whatever. Still an error where it's looking for po/Makefile.in.in. Huh?
So to build make, I need not just make, but four other utilities and makefile input inputs? WTF?
Make alone was bad enough. But it was not good enough for portability, so autoconf was added. But it did not work so automake was added. But it did not work, so... And now at version 4.0, we have a system here you need half a dozen commands just to build the damn thing, and it still does not build out of the box. Seriously?
This whole archaic build system is doomed. Go cmake.
Concept programming is the simple idea that the concept is not the code, and that being aware of the differences matters.
See http://xlr.sourceforge.net/Concept%20Programming%20Presentation.pdf for more details.
If you don't like it don't buy it. Enough with the stupid fucking boycotts that are nothing but attempts at silencing free speech.
You're not making any sense. A boycott is nothing but a large group of people saying "we don't like it, so we're not buying it."
But the boycott is not about a large group of people not liking the pasta, it's about a minority not liking what the CEO said, and a large group of people being manipulated into attacking him. If it was a boycott of pasta that were made with whale oil by young kids in poor countries, it would actually be a boycott of the product. But as long as the boycott is in reaction to what the CEO said, then it's a totally different matter. It's actually a blatant attempt at silencing an opinion, not an attempt at criticizing a product. And it makes the boycott totally illegitimate. If you pretend not understanding that, you are simply playing dumb.
Unfortunately, gay activists are often violent like this. They all too often launch vicious hate campaigns against anybody who simply voices vaguely anti-gay opinions. Come on, is it a victory that a guy was bashed for saying he does not want to put gay peoples in ads for... pasta?!? What is the connexion between homosexuality and pasta, seriously? Why should I have homosexuals in ads for pasta and not, say, people with blue hair or ugly people, other minorities that are all too often victimized. Why can't Barilla simply promote pasta, instead of being forced to promote homosexuality at the same time?
Let me be very clear. My own company does not intend to run ads with pasta in them. I hope that this won't cause me to be called a pastaphobic by all pasta lovers. I pray this won't cause a massive stir on twitter, a rally to arms of all the pasta lovers I insulted for not intending to prominently promote their lifestyle in my ads instead of promoting my products. And yes, I'm being sarcastic, because this is exactly what happened to the Barilla CEO.
As of me, I'm so tired of this gay activism that I will say "Go Barilla" on this one, and buy more.
About "surrender monkeys", US citizen should remember their history.
September 1st, 1939: Germany invades Poland
September 3rd, 1939: France and UK declare war on Germany to honor their alliance with Poland, counting on their US ally to follow suit.
September 5th, 1939: The US proclaims their neutrality in the conflict, leaving the road wide open to Germany.
If the US had done for France and UK what France and UK did for Poland, chances are WWII would have stopped in 1939.
Were there fewer fools, knaves would starve. - Anonymous