Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm serious in the sense that some of the extreme syntax-sugar and leniency, more than one way to do it, etc, that Perl is loved for are the reasons that people dislike it in a modern context, and these are to simply be removed with no equivalent replacement.

If you move toward a readable standard "Perl" that supports (only) modern coding styles, you will have something that old Perl users wouldn't really recognize as Perl.

Consider something as simple as: https://news.ycombinator.com/item?id=4774426

This is "Perl" and recognized as such... but my suggestion of calling some entirely different language Perl in the future would make this essentially a non-script. The same is true for most syntax, as well as a large amount of fundamental structures, regexes, etc.

I'll speak following my analogy: I'll call Perl the Apple ][ and some language that wouldn't be recognized as Perl by today's Perl users, but which should be called Perl in the future I will call the iPad.

For example, it's fairly clear that the iPad language should have every single variable be a full object. The Apple ][ does not force this. Likeweise, classes and OOP would not be optional on an iPad, but a fundamental part of writing any program. But on the Apple ][ it is optional. On the iPad it is clear that $_ would be meaningless and not used, ever. It's a syntax error.

On the iPad all source code is UTF-8 or Unicode, and all built-in standard operators including the iPad version of a regular expression (which uses almost none of the syntax of the Apple ][ language natively operate on UTF-8 or Unicode.

The iPad language is longer and has more explicit, longer keywords. The syntax itself is extremely orthogonal and you could describe the entirety of it to anyone who has programmed in any language in a relatively low number of slides, and they can just start coding. It is fully readable to someone who has never read the iPad language, i.e. if you were to read a numerical algorithm or datamining algorithm that was just talked about in a textbook, you wouldn't be distracted by the textbook having to explain what the iPad is. It speaks for itself.

This explicitness is part of the language; there is no way to write one-liners or extremely concise hacks the way the Apple ][ could.

The iPad language lives on the web. It has primitives for handling a client connection as well as a standard framework for rich client-side connections. A persistent connection over http is as everyday as standard input and standard output was on the Apple ][.

And boy can you Google this. The Apple ][ could have a syntactic structure, special variables [1] that were almost impossible to Google. All sorts of Context.

The iPad language has no such context. There is very little you can set to change the fundamental syntax, no way to change the default index on arrays and related things, or any such high-context things or syntactic context. There is just one context, and everything that is done in a program is spelled-out and eminently Google-able. You never have to ask what something actually does, on a syntactic level, or figure it out by running it. You don't have to spend even six days to get to this level at the language: an afternoon tells you all the context that you will ever need. Anything beyond that, you can Google.

Sure, you may not understand what a piece of code does on a higher level. What happens if you apply a fourier transform to _____. It may not be obvious.

But syntactically, it is extremely easy to read off what you're doing. No more difficult than reading off pseudocode in a textbook.

And the language is succinct. The basic syntax is so small, so orthogonal, that you can be handed a 20-page description, having never seen an iPad language, and be able to more or less implement a version in the language of your choice, in a few weeks, without any further information or context. There is not a lot of magic involved.

Of course, the only thing that the iPad language will have in common with the Apple ][ is just the brand (Perl)..or the fact that at some level they're both turing-complete.

The future of Perl is calling an iPad language that is unrecognizable to any current user of Perl, Perl.

Gone are the days of syntactic sugar or short little idioms.

[1]http://www.kichwa.com/quik_ref/spec_variables.html



I think you're constructing a strawman and then having a few swipes at it.

Perl evolved into it's "new form" some time ago. Modern Perl came out 5 years ago and was really just codifying best practice at the time.

It's still the same language if you want it to be. Backwards compatability is taken very seriously. Which - yes - does mean that you can write crappy old perl in it if you want to. (And also that all the crappy old perl you have lying around will continue to work).

But it's also a pretty vibrant, modern language. Any new project or new perl codebase can and should be written in modern perl. And - despite your assertions - it's still very much the same language.

Just now with extra, better stuff too.


(Not a straw man, I wasn't writing ironically or derisively about anything, but rather made a genuine suggestion to break "apple ][" code - referring to current Perl - with a totally modern and incompatible "iPad" language - referring to a future usage of the brandname without any common technology - that has absolutely nothing in common with the former, whatsoever. Nothing.)

So I am actually making the opposite point, that it shouldn't be the same language. I don't think the new form is new enough, I wouldn't call it the iPad of my analogy. In particular, I am also saying that "the iPad shouldn't run Apple ][ code". (at all.) Nearly all Apple ][ code shoudl be a syntax failure on the iPad. Including even $_. Every syntactical element should behave differently, minimally. Much simpler syntax with very little sugar. Much more verbose.

Basically a totally different language should be whitebranded with the brand currently worn by this language. People who used that language shouldn't recognize this language. People who use this language, shouldn't be able to understand that language. They shouldn't have anything in common.

The two things should have literally as much in common as the Apple ][ does with an iPad, which is nigh-unto nothing.

You say, "it's still the same language if you want it to be", but that is a problem. It is like saying you can still pull a jumbo jet with a horse if you want to. No, you shouldn't be able to pull a jumbo jet with a horse at all, a jet just shouldn't support acting as a cab. It should fail to move forward. The horse should give up. The horse in this case is Ascii. It should never even be hitched to it.

Nothing should remain of Perl but the brand, and that they're both turing-complete, just as the intersection between an iPad and an Apple ][ is the null set (plus the fact that they're both physical objects, and a few similar superficial similarities that would apply to every computing device / programming language.)


A new language with the same brand has been tried. It's called perl6.

I'm also not entirely sure what you intend by "changing everything but keep the name the same". Why not use a new name?


As you mention, the problem with perlt6 is that it is "still Perl", in the exact sense that an iPad ISN'T "still an Apple ][."

The only thing the latter have in common is the name Apple.

The reason you wouldn't use a new name is to show the community of people that you are the same group of people. No other reason.


I think you really don't know what Perl 6 is, and are incorrectly inferring from some statements here that you "can run perl 5 code in perl 6" what that means, and what it's purpose is (library support, utilizing the massive amount of CPAN modules that already exist).

Perl 6 is not Perl 5, in the same way an iPad isn't still an Apple ][.

Other than that, the main problem I see is you taking a lot of opinion on what you think are good language features and transposing those desires onto "people" who decide what a modern language is. Many of those ideas are based in opinion, or in a language philosophy that is orthogonal to Perl's guiding philosophies, which are very strong and influenced it's design very much.


I think you're talking about other people's comments, not mine. I realize that you might be used to talking with those people, but it doesn't really have much to do with what I write. My statements have more or less nothing to do with Perl. (Please let that sink in.)

As far as my "understanding" of Perl 6. According to

http://perl6.org/compilers/std-viv

"The Perl 6 standard grammar is written in Perl 6, and specifies how a Perl 6 program is parsed. The source code can be found on github in the perl6/std project in the file STD.pm6."

That file is here:

https://github.com/perl6/std/blob/master/STD.pm6

Are you saying this is not written in Perl 6?

This is what informs my impression of what Perl 6 is.

It includes lines like this:

  token longname {
      <name> {} [ <?before ':' <[ a..z A..Z _ \< \[ \« ]>> <colonpair> ]*
  }
and

  :my $*QSIGIL ::= '';
and

  token comment:sym<#(...)> {
      '#' <?opener>
      <.suppose
          <quibble($¢.cursor_fresh( %*LANG<Q> ))>
          <!before <[,;:]>* \h* [ '#' | $$ ] >   # extra stuff on line after closer?
      >
      <.worry: "Embedded comment seems to be missing backtick"> <!>
  }
and

  token pod_comment {
      ^^ \h* '=' <.unsp>?
      [
      | 'begin' \h+ <identifier> ::
          [
          || .*? "\n" [ :r \h* '=' <.unsp>? 'end' \h+ $<identifier> » \N* ]
          || <?{ $<identifier>.Str eq 'END'}> .*
          || { my $id = $<identifier>.Str; self.panic("=begin $id without matching =end $id"); }
          ]
      | 'begin' » :: \h* [ $$ || '#' || <.sorry: "Unrecognized token after =begin"> \N* ]
          [ .*? "\n" \h* '=' <.unsp>? 'end' » \N* || { self.panic("=begin without matching =end"); } ]
          
      | 'for' » :: \h* [ <identifier> || $$ || '#' || <.sorry: "Unrecognized token after =for"> \N* ]
          [.*?  ^^ \h* $$ || .*]
      | :: 
          [ <?before .*? ^^ '=cut' » > <.panic: "Obsolescent pod format, please use =begin/=end instead"> ]?
          [<alpha>||\s||<.sorry: "Illegal pod directive">]
          \N*
      ]
  }



I've searched for $_ and get, for example:

  token old_rx_mods {
          <!after \s>
          (\w+) 
          {
              given $0.Str {
                  $_ ~~ /i/ and $¢.worryobs('/i',':i');
                  $_ ~~ /g/ and $¢.worryobs('/g',':g');
                  $_ ~~ /m/ and $¢.worryobs('/m','^^ and $$ anchors');
                  $_ ~~ /s/ and $¢.worryobs('/s','. or \N');
                  $_ ~~ /x/ and $¢.worryobs('/x','normal default whitespace');
                  $_ ~~ /c/ and $¢.worryobs('/c',':c or :p');
                  $_ ~~ /e/ and $¢.worryobs('/e','interpolated {...} or s{} = ... form');
                  $_ ~~ /r/ and $¢.worryobs('/c','.subst');
                  $_ ~~ /a/ and $¢.worryobs('/a','Unicode');
                  $_ ~~ /d/ and $¢.worryobs('/d','Unicode');
                  $_ ~~ /l/ and $¢.worryobs('/l','Unicode');
                  $_ ~~ /u/ and $¢.worryobs('/l','normal regex');
                  $_ ~~ /p/ and $¢.worryobs('/c','substr or /$<PREMATCH>=[...] <(...)> $<POSTMATCH>=[...]');
                  $¢.obs('suffix regex modifiers','prefix adverbs');
              }
          }
      }

or

  my @t = grep { substr($_.Str,0,2) ne '::' }, @$t;


>Perl 6 is not Perl 5, in the same way an iPad isn't still an Apple ][.

It's true that "an iPad isn't still an Apple ][" but I specifically chose those two examples because they have nothing in common. Whether someone has ever used one wouldn't affect their ability to use the other in any way, they are in no sense in the same 'family'. Nothing in common but the brand.

Perl 5 and Perl 6 are clearly in a same general family.

Your final paragraph is extremely fair. Perhaps I should state that I don't know much about why other people don't/wouldn't choose Perl as the first language to do a dynamic web site in in 2018 if they need to pick some language up. It is fair to state that I'm just expressing my own opinion.


I think the problems with your argument boil down to a few thigs:

1) You seem to be making an argument for some future language. That it would drop many of the things the make Perl Perlish is presupposed as what "people" would want. It would keep the name, as you state, because it would be the same community of people. The community of people that would keep the Perl name are not the same "people" you refer to that after their complaints are fixed would result in a Perl that is not Perlish.

2) If you are just talking about some abstract future language not actually related to Perl, don't use the Perl name. All you are doing is getting people riled up because you are attributing views to them (as the actual Perl community) that they disagree with. Again, I think this can be attributed to you taking a more abstract approach to what you are saying, but choosing to use concrete names, such as Perl, and doing so in the comments of an article about a new Perl release. People here would likely engage you gladly if it was obvious it's just a thought experiment about some futuristic language with nothing to do with Perl, including the name (although there would be challenges as to what you believe are the best features for this new language).

3) You presuppose it's a solved question of what's "best" for specific language features. For example, longer more explicit keywords, very simple to explain, very easy to read by a someone who doesn't know it. These are all good things when you try to maximize learning by novices. One could argue that at the same time, they don't really even allow experts. We have domain languages because they allow us to be more concise and accurate in our definitions. This necessitates learning the domain language, but I think few would argue that the hassle outweighs the future benefit to chemists, physicists, lawyers, engineers and architects to learn the specifics of the domain languages and representations they've developed. As a simple example, look at Ten Hundred Words of Science[1]. I admit it's probably useful to get laymen to understand a topic in general, but is it always sufficient to explain the specifics of that topic in the precise way it requires? Should experts in the field converse with each other this way? Should new bodies of work attempt to use this in the future instead of the domain languages they have developed? It's important to see these for what they are, tools used to shift focus towards or away from specific attributes. It's all a matter of perspective and what the goal is.

[1]: http://tenhundredwordsofscience.tumblr.com/


This is very good, though this thread is a bit old and deep. Your italicized part ("Again, I think this can be attributed to you taking a more abstract approach to what you are saying, but choosing to use concrete names, such as Perl, and doing so in the comments of an article about a new Perl release.") made me laugh :)

You are possibly right, though I was just making an off-hand remark and only just clarified when prompted explicitly. I think the 90 words / 4 lines I wrote originally were fine, and if someone asks for clarification no reason not to include it. In general I don't think an article on a new version of Perl is a bad place for such thoughts.

I like your comments, especially, on domain specific languages, though as mentioned the thread is a bit old and deep to continue here. I couldn't find an email but if you reply with one I'm happy to discuss. Your tenhundredwordsofscience is a really good example of how it gets awkward not to use specialist vocabulary. I like your analogy with chemists, physicists, lawyers, engineers, and architects. The former two especially use specialist symbols that are impenetrable to total laypersons. anyway if you have an email I'll respond to your good points.


I updated my about with a slightly encoded version of my email, if you want to continue.


Hi, tried to email you. You'd written "k e n t r a k # google's mail" but kentrak@google.com (the only way I could think of interpreting that) bounced. (I don't mind including it here as Google's server says that mailbox doesn't exist).

Kind of ironic given our conversation :-) Could you bit a bit more explicit ;-)


@google.com is for people who work at google, @gmail.com is what I meant, as "google's email service". I agree, it wasn't very clear, but I don't particularly want harvesters having an easy time.


wow, how bizarre. I could have sworn I sent it to a gmail address, I thought that it was obvious you meant gmail, and even after your reply I thought "well yeah of course I sent it to gmail, that part was obvoius" and thought I must have just mistyped it here, but sent correctly in my sent mail. It's weird that I actually did send it to @google.

The thing is that I must have just carefully been doing character transliteration, changing your #, removing spaces, etc, to deobfuscate and @google didn't end up looking wrong enough! Sorry. Sent to the correct (and obvious) email.

BTW the fact this happened is just too good, given the subject! I forgot to dereference a literal in a string. :)

Anyway I've re-sent the email.


The point was not your analogy. The point was that you made wild claims about something you obviously have no clue about.

(That is why you write so damn much text about something else. Standard behavior for non serious people that are shown to be wrong.)

And the environment changes for everything in computing. Perl is extensible. The use is very different today compared to e.g. before the millennium before testing took over.

So go troll on some subject you know.

(Perl 6 is a different language in the same family. Quite a few features have been backported.)


I've flagged your post for your last sentence before your parentheses. Here are the forum guidelines:

http://ycombinator.com/newsguidelines.html

"Be civil. Don't say things you wouldn't say in a face to face conversation. When disagreeing, please reply to the argument instead of calling names. E.g. "That is an idiotic thing to say; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3." Please avoid introducing classic flamewar topics unless you have something genuinely new to say about them."

As for trolling, at the moment I have four and a half times your karma and am engaging in civil discourse. Try to do the same.

You missed a serious implication with the fact that I'm writing about 'something else'. Which is that what I'm writing about has nothing to do with your language wars. Complaining that I would be wrong if I weren't writing about something else is similar to complaining that an obituary you have read shows extremely shoddy reporting, since a) you're alive, b) they got your birth date, gender, occupation, family history, professional history, and name wrong. They're clearly writing about someone else. Well, yes. I'm actually not part of your language war.

I actually haven't made a single claim about Perl, nor rehashed any arguments.

I explained what features I think a totally new language should have, and that the Perl community should start branding a totally new language as Perl, without starting out from Perl in any way. (As radically new as the iPad is to an Apple ][). It's my opinion.

Without any compatibility or sense of being Perl in any other sense, just like there is zero continuity or compatibility between an Apple ][ and an iPad.

Yes, I agree with you that Perl 6 is a different language in the same family. Perl 6 isn't a candidate for the language that I think should bear Perl branding in the future.

In summary, I like the Perl community and want it to work on some other language and call it Perl. I've given a high-level description of some of the features that I think such a language should have.

My main point is that you could brand anything you want as Perl. It doesn't have to still be Perl to be called Perl. If you disagree, that's fine, but you can't disagree with me for not writing about what you would like me to.


>>I've flagged your post for your last sentence before your parentheses.

Which were that you made wild claims about stuff you obviously know nothing.

>>I actually haven't made a single claim about Perl

:-)

In the same comment you make explicit claims about what is part of "real" Perl and what is not:

>>My main point is that you could brand anything you want as Perl. It doesn't have to still be Perl to be called Perl.

(Quite fun, considering that programmable language extensions have been on CPAN (/in the Perl binary) for lots of years!)

Originally, I reacted to this claim about what is "real" Perl:

>>even though the modern language has [..] standard computer science constructs like OOP and Unicode etc that require coding against a different abstraction than Perl.

That is not [ignorant] claims about Perl?! (There are more examples.)

Again:

The Perl Unicode support is one of the best of the scripting languages -- and todays std OO (Moo[se]) is arguably better than the other scripting languages.

And OO has been in Perl 5 since the start (1990s).

TL;DR: 1. TRIVIALLY bad claims. 2. Long messages without touching the bad claims. 3. "I never made any claims at all".


In case it was an honest mistake, I was referring to "So go troll on some subject you know". Your way of parsing my reference as referring to your second sentence is extremely bizarre, though possible if you were hasty.

If every variable is a reference to an object, that would be a different abstraction from Perl. "The modern language" refers to my hypothetical language which has nothing to do with Perl.

My entire post refers to something hypothetical, which is why you state that it was written about 'something else'.

We are not arguing, and I'm not making any claims about Perl.

I am talking about a hypothetical language in which writing any normal Perl fails with a syntax error.


>>In case it was an honest mistake, I was referring

You wrote "I've flagged your post for your last sentence before your parentheses."

Which was what I discussed. (I did have a 2nd parenthesis, too.)

>>I'm not making any claims about Perl.

I quoted you twice as saying two old language features, which are probably best among the std scripting languages, goes against being Perl. At least one of those features is from the 1990s.

That might mean something different than making claims, but you have carefully not touched it, despite multiple opportunities (while being both called "troll" and down voted over that).


I've flagged this as well, for your argumentative style, specifically that you write:

>despite multiple opportunities while being both called "troll" and down voted over that

This style of discussion is not normal here. Nobody but you has called me a troll, because that goes against our community guidelines. Please read the guidelines.

Until then you will not receive more replies from me. If you pay a bit of attention you will note that this community is much more civil than you may be used to from elsewhere.

("But why??" - I hope if you give it some thought you can appreciate the broader context that there is insight to be gained from discussion, as shown by congresses of minds from Athens to the Royal Society, from the Continental Congress to the National Academy of Sciences, all of which have shown that amazing things can be borne of civil discourse.

Whether you think you have anything to gain from anyone else's opinion is up to you to decide. Engaging in name-calling, cheap argumentative tricks (as repeated here), and willful misinterpreting is not up to you.

Please read the guidelines and contribute or ask honest questions, rather than attack. You are very welcome to express a differing opinion, of course, as long as it is done in civil terms.)


On consideration, this was interesting.

You are called troll because of stupid statements on basic points.

You refuse to talk about WHY you are stamped a troll in multiple comments -- instead you complain in big blocks of text about impoliteness!

This is a common troll strategy, but does it really work?

Do a causal reader miss that you refuse to talk about why you are called troll -- and just see two people complaining about each others?

Edit: So your smoke screen of complaints will change my behavior. :-) The next troll with your strategy will just get a note that he refuses to touch why he is called troll + link.


I did talk about why you (and only you, a user with 239 karma, less than a quarter of mine) called me a troll - it's because you don't understand our guidelines and civil discourse. This style of discourse is frowned upon by this community and YC employs a full-time moderator (dang) just to make sure nobody like you is doing this where anyone is reading. He and others are doing a really good job, and you won't see a single comment like yours in any thread. If you have any questions about the comments I actually made you can write politely to yc tech mgr @ gmail.com


I am just going to note that in five comments you carefully avoid discussing how I motivate that you are a bad troll: https://news.ycombinator.com/item?id=7809359

Trying to avoid that is admitting I am correct.

(See my declaration on how to handle trolls in GP.)


I did carefully address your statement. Follow up by email if you have any real questions.


The fourth time I write this, THEN you claim to have answered!

Strange that you forgot to link, troll...

I am just going to note that in five^H^H^H^H six^H^H^H seven comments you carefully avoid discussing how I motivate that you are a bad troll: https://news.ycombinator.com/item?id=7809359


[deleted]


I am just going to note that in five^H^H^H^H six comments you carefully avoid discussing how I motivate that you are a bad troll: https://news.ycombinator.com/item?id=7809359

Trying to avoid that is admitting I am correct.

(And to call an obvious troll for troll is not insulting.)


Sigh, I'll just note that you missed yet another opportunity to explain your strange statements that some of Perl 5's older and stronger features are not Perly.

(You even quoted part of my comment where I discussed that.)

But it is informative with indignation, while repeatedly refusing to discuss criticism.




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

Search: