In general, I feel like the whole "languages for smart people" thing is often hauled out as an excuse for writing obfuscated code that would fail your test 2. Most of us are less smart than we like to think when it comes to programming, and even smart people are often smart in different ways.
I agree in principle with each of your points. Yet, no-one is going out and saying "General Relativity needs to go away because not enough people are mentally capable of understanding it." That's kinda how I see what you're saying. Just because something is complex and hard doesn't mean that it wasn't done correctly.
Of course, we now enter the shifty realm of "How do you know when something is done correctly". My two rules are general purpose ones that maximize for both shareholder value and programmer productivity. (For the record, that's what Paul Graham maximized for with his business.) Other rules might maximize for programmer replacibility or who knows what else. The point is that different languages will meet the needs of different rules.
Here's an example - I can see no need to ever have to use Java in my professional life. However, my professional life (as far as I can see) is a very specialized world that Java doesn't fit into. I can very easily conceive of a world where Java is the absolute right call. Different rules, different tools.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.