Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
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 (Canon) 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: (8)
As of 2015-07-07 07:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (87 votes), past polls