Beefy Boxes and Bandwidth Generously Provided by pair Networks Bob
There's more than one way to do things
 
PerlMonks  

Re^4: Perl vs. Python for prime numbers

by eyepopslikeamosquito (Canon)
on Jun 15, 2013 at 09:23 UTC ( #1039094=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Perl vs. Python for prime numbers
in thread Perl vs. Python for prime numbers

...the range built-in in Python excludes the upper bound. Makes sense from a mathematical point of view (combining different ranges is easier) but I prefer the more intuitive Perl way to do it.

Theoretically, I prefer semi-open ranges [begin, end), aka half-open intervals, because:

  • The range size is simply "end - begin"
  • Empty ranges are expressed as "begin equals end" and so do not require special handling
  • Two subsequences are adjacent means that the upper bound of the one equals the lower bound of the other
This theoretical superiority was eloquently expressed in hand-written notes by Edsger W Dijkstra in 1982, who further argued that zero (not one) is the natural first array subscript, as in [0, N). With typical attention to detail, I see that the three page numbers of Dijkstra's note are: 0, 1, and 2! :)

In practice, I prefer Python semi-open ranges to the inclusive (closed) ranges emitted by the Perl and Ruby range operator. I remember finding Python's semi-open ranges nicer when golfing with string slices. After enjoying Python string slices, I miss them when coding in Perl; the closest Perl equivalent, the substr function, seems unwieldy by comparison.

Semi-open ranges also feel comfortable to me because they form a crucial part of C++ STL, in particular iterators, which in turn were influenced by C pointers and arrays. Stepanov extended some common (semi-open) C idioms, such as:

for (i = 0; i < N; ++i) { // a[i] ... } for (ptr = a; ptr < a+N; ++ptr)
inventing a more general iterator abstraction:
for (iter = begin; iter != end; ++iter)
thus enabling STL algorithms to work on any container that implements the iterator interface.

References


Comment on Re^4: Perl vs. Python for prime numbers
Select or Download Code
Re^5: Perl vs. Python for prime numbers
by LanX (Abbot) on Jun 15, 2013 at 09:56 UTC
    "Edsger"! Really?

    Wow I didn't know that! 8-o

    Cheers Rolf

    ( addicted to the Perl Programming Language)

    PS: Just kidding ;-)... thanks for the pointers. =)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1039094]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (18)
As of 2014-04-23 17:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (551 votes), past polls