Hacker News new | past | comments | ask | show | jobs | submit login

> [lang X] doesn't handle [basic math] correctly among other things.

From a recent talk[1], what are x, y, z in the following?

    x       =  7 ÷ 2;
    y       = -7 ÷ 2;
    z       = .1 + .2 - .3

    x    y     z

    3.5  -3.5  0             # human

    3    ?     tiny number   # c89; ? depends on compiler
    3    -4    tiny number   # ruby 
    3    -4    tiny number   # python 2/3    
    3    -3    0             # bc    
    3.5  -3.5  tiny number   # perl5
    3.5  -3.5  0             # perl6
----

It isn't just basic math.

How "long" is the following string?

    ปฏิบัติจริง

    7 characters              # human

    len("ปฏิบัติจริง")    = 33    # python 2
    len("ปฏิบัติจริง")    = 11    # python 3
    "ปฏิบัติจริง".length  = ?     # ruby
(For Ruby, I've found "the core language does not provide a way to count [human perceived characters]". [3] Is that still correct or out of date?)

----

> Perl suffers from having too many magical operators that makes it hard to reason about a snippet of code. I feel Python strikes the right balance.

To quote Larry Wall, "Perl 6 ... has been rethought and rebalanced on every level".[4]

It might be interesting for you to pick a couple Perl 5 operators that you consider too magical; then we could look at the merits and demerits of those ops in Perl 5 and their equivalents in Python and Perl 6.

> It's very easy to express ideas I have in mind without worrying about the details [of Python, now, and Perl, back in the day]

This, of course, has explicitly been a deliberate focus of all the Perls. Part of the point of Perl 6 was to remove the bits in Perl 5 that were problematic (including some "too cute/weird" stuff) and to introduce much nicer higher level abstractions (eg grammars instead of just regexes[5]).

----

I've long encountered vocal folk who underestimate or misunderstand Larry Wall and Perl to an absurd degree. Perl has been focused for over two decades on making it easy to get the right results when doing basic practical things (like integer division and counting characters) and, imo, that ought to be obvious to anyone who looks at the matter carefully.

----

[1] http://www.slideshare.net/Ovid/perl-6-for-mere-mortals and https://www.youtube.com/watch?v=lpu-3UF_b48

[2] http://www.reddit.com/r/perl/comments/2szv7m/beginner_progra...

[3] http://unicode-programming.readthedocs.org/en/latest/count-c...

[4] http://www.infoworld.com/article/2882300/perl/perl-creator-l...

[5] https://github.com/moritz/json/blob/master/lib/JSON/Tiny/Gra...




Wow. This is such a fantastic comment; I am very impressed.

I think my experience with Perl ended at Perl 5 so my comment is a bit dated but the sentiment stayed with me, which I admit is unfair.

I also forgot to give Perl credit for another thing: introduction to regex.

Perl was a great language for me to learn and I should revisit my sentiments about it.


> I think my experience with Perl [is] a bit dated

In some ways, contemporary Perl 5 (eg this year's 5.22 release) is quite unlike older Perl 5s. For example Moose -- which first arrived in 2005 -- is a powerful and relatively clean OO and "roles" system which has matured in to a huge ecosystem of its own within CPAN. (It was/is a kind of back port of the Perl 6 OO model which itself built upon the notions found in systems such as CLOS.[1])

But my personal focus is Perl 6.

> I also forgot to give Perl credit for another thing: introduction to regex.

Perl 6 unifies "regexes", PEGs, and lexical closures. [2].

> Perl was a great language for me to learn and I should revisit my sentiments about it.

Anyone who joins the freenode IRC channel #perl6 and says hi will be welcomed.[3] If you visit, feel free to paste a link to my comment. :)

----

[1] https://en.wikipedia.org/wiki/Common_Lisp_Object_System

[2] https://en.wikipedia.org/wiki/Perl_6_rules

[3] https://kiwiirc.com/client/irc.freenode.net/perl6 (today's log at http://irclog.perlgeek.de/perl6/today)


Someone just pointed out that I missed a line in the bit about string length:

    "ปฏิบัติจริง".chars   = 7     # Perl 6


And someone else just pointed out that the python line should instead be the two lines:

    3    -4    tiny number   # python 2
    3.5  -3.5  tiny number   # python 3




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: