5 ms·
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 an
by jbert 12y ago
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.
- logicallee 12y ago(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.)
- jbert 12y agoA 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?
- logicallee 12y agoAs 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.
- kbenson 12y agoI 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.
- logicallee 12y agoI 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 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 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.