null references redux + Looney Tunes

Nick Sabalausky a at a.a
Sat Oct 3 14:01:20 PDT 2009


"language_fan" <somewhere at internet.com.invalid> wrote in message 
news:ha87kd$2j3d$1 at digitalmars.com...
> On Sat, 03 Oct 2009 14:35:22 -0400, Jeremie Pelletier wrote:
>>
>> Think of the english languages, how many words does it have? I would
>> hate to try and express my ideas if I had only 100 words to choose from.
>> Some people do but we call them simple minded or uneducated :)
>
> Comparing spoken languages and formal languages used to program computers
> is rather far fetched. Even a small child recognizes more words than a
> complex programming language has keywords. There are programming
> languages with rather minimal set of core keywords and constructs. This
> makes them in no way more suitable for less intelligent people.

I think his point was that number of keywords isn't a particularly good 
measure of language complexity. To bring it back to programming languages, 
VB has keywords coming out the wazoo, but the only thing complex about VB is 
the complexity involved in trying to express high-level (or low-level) 
concepts that VB is just too *simple* to handle.

> And your
> stance of disagreeing with everyone here does not make you better than
> the rest of us, it is just irritating.
>

I think I missed the memo indicating that disagreeing with others had 
suddenly become a bad thing. ;)

> D is pretty verbose in many respects. There are some totally unnecessary
> words like 'body' in the grammar. Also things like foreach_reverse should
> just die. Even a novice programmer can write a meta-program to replace
> foreach_reverse without any runtime performance hit. Designing a crappy
> programming language is not hard. Usually the elegance arises from clever
> use of powerful, generic core structures.

Fair enough. *But*, I really think "elegantly simple" language design is 
double-edged sword. In my experience, and I think this is what Jeremie was 
alluding to, I've found that an "elegantly simple" language, no matter how 
well-chosen the primitives are, generally results in a problematic lack of 
expressiveness and a frequent sense of fighting against the language instead 
of merely using it.

For example, the most elegantly simple languages I've seen are Java (at 
least earlier versions, anyway), JavaScript, Smalltalk, Haskell, and maybe 
Forth. And I really do admire those languages from a theoretical 
perspective...but only in the same sense that I admire Brainfuck. I'd never 
want to actually use any of those languages for any real work simply because 
their "elegantly simple" designs lead to many cases where I'd have to (or 
have had to) fight against them to accomplish what I need. I guess it just 
comes down to "as simple as possible, *but no more*."

In a more complex language like D, I never feel like I need to try to keep 
the whole langauge in my head. I just need some subset at any particular 
time, and then when (and I do mean "when", not "if"), when I need something 
else, it's nice to know that it's there to use and that I won't have to try 
to cram it into the wrong tool for the job or constantly switch between an 
array of languages while trying to keep them all playing nice with each 
other.

It's like a professional handyman having the smallest possible possible 
toolbox with only the barest essentialls, versus a big super-toolbox that 
has all the *right* tools he might need. Just because it's there doesn't 
mean it has to be used, but if I were a handyman and had to remove a 
phillips-head screw, I'd want to be able to reach for a forward/reverse 
drill and an appropriately-sized phillips-head bit, and not have to pry it 
out with the bare minimum (the back of a hammer, or a 
sort-of-sized-similarly manual flathead screwdriver), and also not have to 
put one specialized mini-toolbax back and switch to a 
differently-specialized mini-toolbox for every different task.





More information about the Digitalmars-d mailing list