complement to $

Nick Sabalausky a at a.a
Fri May 14 22:02:29 PDT 2010


"bearophile" <bearophileHUGS at lycos.com> wrote in message 
news:hskd8g$2bcd$1 at digitalmars.com...
> Ali Çehreli:
>> $ has always bugged me anyway, so how about no character at all:
>
> The $ is not elegant, but it's a good solution to a design problem, how to 
> represent items from the bottom of the array. In Python you write:
> a[-5]
> In D you write:
> a[$-5]
>
> This small one-char difference has an important effect for a system 
> language: the presence of $ allows you to avoid a conditional each time 
> you want to access an array item :-)
> So I think it as one of the smartest details of D design :-)
>

Once upon a time, there was a book called "Writing Solid Code". It seemed 
that anyone who was an established, respectable programmer swore by it and 
proclaimed it should be required reading by all programmers. These days, I 
sometimes feel like I'm the only one who's ever heard of it (let alone read 
it).

So much of the book has made such an impact on me as a programmer, that from 
the very first time I ever heard of a language (probably Python) using 
"someArray[-5]" to denote an index from the end, I swear, the very first 
thought that popped into my head was "Candy-Machine Interface". I instantly 
disliked it, and still consider it a misguided design.

For anyone who doesn't see the the problem with Python's negative indicies 
(or anyone who wants to delve into one of the forerunners to great books 
like "Code Craft" or "The Pragmatic Programmer"), I *highly* recommend 
tracking down a copy of "Writing Solid Code" and reading "The One-Function 
Memory Manager" and "Wishy-Washy Inputs", both in the "Candy-Machine 
Interfaces" chapter.

(Although, the book did have such an impact on the programming world at the 
time, that many of the cautions in it sound like no-brainers today, like not 
using return values to indicate error codes. But even for those, it goes 
into much more detail on the "why" than what you usually hear.)




More information about the Digitalmars-d mailing list