Monday, March 29, 2010

Why I Hate All Computer Programming Languages (repost)

[I just can't stop bashing computer science. This is a repost of a previous article.]

That’s All I Want to Do!

I hate computer languages because they force me to learn a bunch of shit that are completely irrelevant to what I want to use them for. When I design an application, I just want to build it. I don’t want to have to use a complex language to describe my intentions to a compiler. Here is what I want to do: I want to look into my bag of components, pick out the ones that I need and snap them together, and that’s it! That’s all I want to do.

I don’t want to know about how to implement loops, tree structures, search algorithms and all that other jazz. If I want my program to save an audio recording to a file, I don’t want to learn about frequency ranges, formats, fidelity, file library interface, audio library interface and so forth. This stuff really gets in the way. I just want to look into my bag of tricks, find what I need and drag them out. Sometimes, when I meditate about modern computer software development tools, I get so frustrated that I feel like screaming at the top of my lungs: That is all I want to do!

Linguistic Straightjacket

To me, one of the main reasons that the linguistic approach to programming totally sucks is that it is entirely descriptive by definition. This is a major drawback because it immediately forces you into a straightjacket. Unless you are ready to describe things in the prescribed, controlled format, you are not allowed to program a computer, sorry. The problem with this is that, we humans are tinkerers by nature. We like to play with toys. We enjoy trying various combinations of things to see how they fit together. We like the element of discovery that comes from not knowing exactly how things will behave if they are joined together or taken apart. We like to say things like, “oh”, “aah”, or “that’s cool” when we half-intentionally fumble our way into a surprising design that does exactly what we want it to do and more. Computer languages get in the way of this sort of pleasure because they were created by geeks for geeks. Geeks love to spoil your fun with a bunch of boring crap. For crying out loud, I don’t want to be a geek, even if I am one by necessity. I want to be happy. I want to do cool stuff. I want to build cool things. And, goddamnit, that’s all I want to do!

Conclusion

Unless your application development tool feels like a toy and makes you want to play like a child, then it is crap. It is a primitive relic from a primitive age. It belongs in the Smithsonian right next to the slide rule and the buggy whip. If you, like me, just want to do fun stuff, you should check out Project COSA. COSA is about the future of programming, about making programming fast, rock solid and fun.

[This article is part of my downloadable e-book on the parallel programming crisis.]

See also:

Parallel Computing: Why the Future Is Compositional
COSA, A New Kind of Programming
Half a Century of Crappy Computing
New Interfaces for Parallel Programming
How to Solve the Parallel Programming Crisis
The COSA Control Hierarchy

3 comments:

hasy said...

How do you want create your "bag of tricks"?

Louis Savain said...

hasy, click on some of the links at the end of the article, especially the first two.

grimpr said...

Future of chip design revealed at ISPD.

http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=224200982&pgno=2

"In perhaps the boldest presentation at ISPD, keynote speaker Louis Scheffer, a former Cadence Design Systems Inc. Fellow who is now at Howard Hughes Medical Institute, proposed adapting EDA tools to model the human brain. Scheffer described the similarities and differences between the functions of VLSI circuitry and biological neural networks, pointing out that the brain is like a smart sensor network with both analog and digital behaviors that can be modeled with EDA."