a companion discussion area for blog.codinghorror.com

The Principle of Least Power


This has nothing to do with language, it has to do with data structures.
Programming languages should be powerful, data structures should be accessible.


Just wait until you have to go through the contortions needed to code all your business logic in BPEL XML instead of a real programming language.


I can see where the JavaApplet is counter intuitive to getting and parsing the information. I guess you could say Microsoft WPF could be a solution to this. The GUI is written totally in xaml, which is xml based, and can be parsed and anaylized.


I’m reminded of the Principle of the Least Fun. Which says that the fun of using computers decreases in proportion as computers become more complex and, ha-ha, user-friendly. I.e., WordStar was infinitely more fun than MS Word, the more rudimentary versions of Linux, once mastered, are more fun than Ubuntu. Etc.


David: “One of my biggest complaints with Windows is how Windows has taken what in the Unix world would be straight forward ASCII text and made it “object oriented”. In Unix, everything is a file stream while in Windows it is an object.”

Umm… What? Windows doesn’t have a file object. The .NET Framework does, but Windows itself doesn’t. The Windows API has the OpenFile() function that returns a file handle, like in Unix. You use that handle with ReadFile(), just like in Unix.


Writing javascript stuff feels a bit like the old demo scene but turned inside out. The platforms (browsers, AIR, iphone, rhino etc.) all have interesting constraints which actually help people push the envelope. I tend to think that developers hang themselves when given unlimited computing resources - already iPhone development has people refocusing their efforts on optimizing what they do with JS/HTTP.


@Jesse McNelis Aaron G.

At first, I was a bit confused by Tim’s writing too. In my mind, the word “language” was naturally restricted to refer to “programming language” and he sounded like a dumb guy who didn’t know his foot from a PDF document on the ground.

I needed to step a bit back from the programmers POV and realize that there is a thing called “Markup Language” (ML in X/SG/HTML).

He’s talking mainly about markup languages, and when you read it that way, it surely does make sense.


I assume [Atwood’s Law] is somewhat tongue in cheek, but I’m not sure what you’re getting at. Are you saying that people will run everything possible in a browser? Or that programmers are moving to simpler, more permissive languages? Or that programmers like showing off, building space shuttles out of popsicle sticks just to show they can?

Can I select “all of the above”?


As the W3C document mentions, Javascript is basically as powerful as Java in the sense under dicussion:


If the weather program were written as a ball of JS webapp code rather than a Java applet, that wouldn’t necessarily make the weather data any easier to pull out of it.


I see he used a NeXTCube – what ever happened to this wonderful machine?

Is anyone using this now?



The NeXT OS and APIs were subsumed into Apple’s OS X. NeXT applications can generally be ported to OS X with little more than a recompile. Examples include Apple’s Mail and TextEdit apps, and OmniGroup’s OmniWeb web browser.


I have to agree with some of the other responses. At the least, we haven’t been given a good example of why a less powerful language would be better, but rather why it’s important to have easily parse-able output.

Feasibly you could even have some server based Java code generating the web page in a nice, parse-able format, just like you were using RoR or PHP - and I fail to see how using a simpler language to produce the same text output would be better.

If analysis of the code itself were being done, though - but even then, I’d think that more concise, legible code would be easier to analyze. Though I don’t see why many people would want to do that (with another language, at least). Extending a program, on the other hand, is something that people would want to do, and something that’s fairly prevalent with AJAX; but I fail to see how it’s the language’s lack of power that allows this.


As someone who is more experienced in less powerful languages (I mostly work in PHP and Javascript), I wonder sometimes if a more powerful (compiled vs interpreted) language would be better. I also have a similar problem with content described. Using AJAX makes things harder for search engines, but easier for users. I guess it all depends on your preferences.


I don’t like that Javalet example. On the one hand you have the raw text data, on the other hand you have a visual image made by Java - and !shock! the image is harder to parse. On the one hand the text is already in the right format, but on the other you have to use complex OCR algorithms.

This is like saying: Some raw ASCII text is easy to read as raw ASCII text, but it’s harder to parse text that’s part of a photo of some rather sloppy handwriting writen by a druken programmer. Maybe I’m suffering Fridayitis and the brain has decided to stop working.


kenji - Microsoft already did. It was called JScript. The clever people realised this situation sucked and Ecma created ECMAScript (which is what most people mean by Javascript today). Microsoft aren’t stupid enough to return to the browser war days by scrapping javascript for their own version.
Browsers ARE following standards. The days of the browser wars are over. They might not be able to immediately make huge leaps and bounds and get the standards perfect straight away, but noone wants to return to the days of proprietary scripts and tags.


This subject reminds me of Occam’s (Ockham’s I checked it on Wiki) Razor. “Entities should not be multiplied beyond necessity” or “All things being equal, the simplest solution tends to be the best.” Now if one were to compare this rather eloquent bit of logic to the principle of least power, one should dismiss the cluttered logic of the principle and replace it with Occam’s. After 30 years of writing code in 5 different languages, Occam’s logic has never failed. “ALL THINGS ARE ESSENTIALLY EQUAL” before the one starts the journey down that project road.


One of my biggest complaints with Windows is how Windows has taken what in the Unix world would be straight forward ASCII text and made it ‘object oriented’. In Unix, everything is a file stream while in Windows it is an object.

I’ve got a dumb question. What is an .so file? What’s the difference between ld and ldd?

I’m sorry, that was way too easy. However, I feel like I have to ask the next one, too. How do I connect a stream to GTK+ so I can draw a pretty GUI with it?


3D TOMB II: A fully texturized first-person shooter in 4003 bytes of JavaScript


Click on play and have some fun!


Atwood’s law is going come to fruition thanks in large part to the iPhone. :).


"HTML should be a dead markup language. The web has grown far beyond what it should be doing with HTML, but due to backwards compatibility, we instead force HTML to do thinks it was never intended to do.

So we keep hacking away mixing markup with logic at a vain attempt to create a rich user experience."

Amen, brother. Amen.