
Perl 7が発表される。実質的にはPerl 5系のリネーム 43
ストーリー by hylom
現代における素人にはオススメできない言語 部門より
現代における素人にはオススメできない言語 部門より
Perl Foundationが運営するPerlの情報サイトPerl.comで、Perlの時期メジャーバージョンである「Perl 7」が発表された。
Perl 5系の最新安定版は5.32系だが、これをベースにいくつかのデフォルト設定を変更したものがPerl 7としての最初のリリースになる予定。
すでにPerl 5系に続くPerl 6系は2016年にリリース済みだが、その後Perl 6系は「Raku」という名称に名前が変更されている。Perl 5系とPerl 6系とでは互換性はなく、Perl 6が「Raku」となったのはそのことも理由の1つとなっている。
今回のPerl 7はPerl 5系の後継という位置付けで、Perl 5系との互換性が保証されている。いくつかのデフォルト仕様は変更されるが、プラグマで指定することで旧バージョンと同様の挙動にすることも可能だ。
ラクダのアイコンを使ってあげてよ🐫 (スコア:3, すばらしい洞察)
せっかくスラドにはPerlトピック [srad.jp]があるのに仲間はずれなんて
しまった。Perlのラクダはヒトコブだった🐪 (スコア:2)
コメントタイトルを間違えていた。
🐫→🐪に謹んで訂正
# ちゃんと別の絵文字があるのか。Unicodeおそるべし
Re: (スコア:0)
どうでもいいから、あわてないで!
Re: (スコア:0)
こういうのは異体字セレクタで対応すれば良いと思うんだけどなぁ・・・
Re: (スコア:0)
Perlのマスコット?が「ひとこぶらくだ」か「ふたこぶらくだか」か知らないけど
これ [images.srad.jp]は「ふたこぶらくだ」に見える...こぶとは別な腫瘍かも.
Re:ラクダのアイコンを使ってあげてよ🐫 (スコア:1)
複数のトピック選んだ際にどのアイコンが表示されるかの制御は、たれ込んだ人も、多分編集者も、出来ないみたいです
正当な進化 (スコア:2, 興味深い)
Perlに限らず古い言語のアドバンテージは「変わらないこと」なので6のような過ちをしてはいけなかった。
特にPerlなんて世間話するのと同じ感覚でワンライナー書くような奴ばかりなので、大阪人が「明日から津軽弁で会話しろ」って言われるようなもんだ。
ってか、そもそもPerlが最も影響を受けた&現生言語の中で最も多くの人々に(いろんな意味で)愛されているCやシェル言語だって過去のコードが完全に動かなくなるような仕様変更はしてない。
Re: (スコア:0)
つまり、dankogaiの予言(Perl6はだめ)は正しかった、というわけですね。
Re: (スコア:0)
dankogaiもPerl6を激推していた時期(黒歴史)があったけどね。さすがに無理があった
Re: (スコア:0)
えぇ…>Python
Re: (スコア:0)
PythonはAI用言語なので。
Python自体が評価されているわけではないと思う。
長らく低迷してたし、昔Python勉強してましたって人には理解できない世界になってるし。
Re: (スコア:0)
pythonは長いこと変わってませんよ。
その証拠にpythonってコマンドをLinuxのディストリで実行したらpython2がちゃんと起動しますよ。
"""
pythonに関してというかパッケージ管理システムをもってる言語に関して言えば言語として提供しているライブラリと言語の標準に含まれないライブラリがごっちゃになってるのが良くない。
まあprintを教えれば関数をおしえたことになるという普通の言語の常識がPythonで通じるようになったのは良いことだ。
"""
Re: (スコア:0)
これ。
Linux 等も kernel だけ見れば極めて安定している。
Python はそもそもメジャーはおろかマイナーバージョン間の互換性の問題で破綻している。
ユーザが破綻しないように毎回調整してるだけ。これはユーザ数が多いからできるだけであって普通じゃない。
Re: (スコア:0)
> Linux 等も kernel だけ見れば極めて安定している。
MicrosoftがWindows Updateで配信してもいいと思うくらいにね。Linuxのuserlandは借り物だから、カーネルの都合で変えるわけには行かないので、カーネルを変えたことでuserlandの互換性に問題が生じたら100%カーネルが悪いというポリシーを徹底している
互換性が問題になるほど (スコア:0)
Perl使う時ってちょっとしたリネーム作業とか、LAN内程度のCGIとか、バージョンを意識する程使ってないなぁ。
テキストエディタで作業するから新機能が追加されてもサジェストされて気付くとかもないし。
やっぱりバージョンの違いは認識しておいた方が良いのかなぁ?
Re:互換性が問題になるほど (スコア:2, 興味深い)
requireやuseのデフォルト参照先から、'./'(カレントディレクトリ)を外す、という変更は打撃が大きかった。
自身のライブラリをモジュール化して、カレントにぶら下げていたため、動かないスクリプトが多数発生...
Re: (スコア:0)
「Perl6の互換性」について特に知らないのなら別に何も気にしなくていい
Re: (スコア:0)
4系と5系の違いとか、5.8前後の違いくらいじぇね?
# utf8がまともに動くようになったのは5.8であってたよね??
今更Perlのような物の話題をしても・・・ (スコア:0)
新しい話題が何もないんだからそっとしておいてやんなよ・・・
正直バージョンを上げる必要すらもうないのでは
Re: (スコア:0)
6系の存在はセキュリティフィックスのノリで最新版突っ込むと
今まで動いてた大量のコードが爆死するっていうバグみたいなものなので、
旧Verの系列を最新の番号振ってバージョンを上げる事には大いに意義がある。
6についてバージョン上げる必要、もとい作る必要がなかったって意味ならその通りだと思う。
今回のストーリーのはその尻拭いの話。
JPerlが消えてからというもの (スコア:0)
日本語対応に関してencoding周りの右往左往はきつかった
5.6系のころ、5.8.22ぐらいまで、~5.30あたりで互換性のない変更がかかる
encodingのフィルタ指定が消えたのは痛かった
ようやく安定してきたが、まだおまじないが冗長なのでまだ変更がかかるんだろうな
7系はどうなのさ、と思ったら短くなる方向でまた変わるみたいに書いてあった:-)
# 悪いのはあいつ
Perlも使うけど、シビアな日本語対応のためにRubyも覚えた。Perl6の代わりでもある。
Re: (スコア:0)
Perl 5.8 が当たり前の環境で、 open() で読み書きするには PerlIO を使って 2 番目の引数で :encoding() を指定したり、
標準入出力については binmode() で同様のことをしたりする程度で、特に Encode モジュールを明示的に使うこともなく Unicode 文字を扱えていたのですが、
際どいことをしようとすると何か問題があったのでしょうか。
同じ問題を踏んだときに困らないよう、
> 5.8.22ぐらいまで
> ~5.30あたり
の非互換を共有いただけますか?
Re: (スコア:0)
openに引数を追加するのではなくencodingのフィルタでcp932にしてソースが
cp932でもよいようにするというのが途中で消えたということです。
まあ日本語のWindowsだけの話ですが、これによってcp932で書いてあった文字コードを
utf-8に変えなきゃならなくなってdiffが悲惨な事に。
文字コードがutf-8な環境ではこのような問題はないでしょう。
use utf8だけで済むなら簡単だが、
そのあと
use open ':encoding(console_out)';
use Encode::Locale;
binmode STDIN, ":encoding(console_in)";
binmode STDOUT, ":encoding(console_out)";
binmode STDERR, ":encoding(console_out)";
Re: (スコア:0)
Perlは正規表現が言語処理系に含まれている類まれな設計で、JPerlの場合は日本語が処理できる。それにひきかえ、モダンパールのほうはというと...。
Re:JPerlが消えてからというもの (スコア:1)
utf8 プラグマを使えば、ソースコードさえ UTF-8 で書いてあれば日本語どころか絵文字まで対応できてしまいますね。
Re: (スコア:0)
でもきっと、お高いんでしょう?
Re: (スコア:0)
Rakuという別言語になったという事は読めば判ると思うんだがな
Re: (スコア:0)
それは2016年の話
今はperl 7の話をしてるんですが…
Re: (スコア:0)
記事のリンク先にずばり書いてあるのくらい読もうよ。
・Perl5 は長期メンテナンスモードに入る。
・Perl7 は Perl5 からの破壊的変更も含め、改善を加えていく
Re: (スコア:0)
結局互換性の維持はどの程度頑張るんでしょうね。
Re: (スコア:0)
互換性がなくなったら、また別名をつけるんでは。
笑っている顔に見えるし、こんなカンジで。
https://ja.wiktionary.org/wiki/%E8%8B%A6#/media/%E3%83%95%E3%82%A1%E3%... [wiktionary.org]
Re: (スコア:0)
Re: (スコア:0)
Perl 4って26年前じゃないですか。
しかも「Perl4までは」ってことはPerl 3以前からのユーザですか。
Perl 5に移らずに一体何のスクリプト言語に乗り換えたのか私、気になります。
# Python 1.0のリリースがPerl5のリリースと同じく1994年、Ruby 0.95のリリースが1995年
# PythonかRubyの最初期からのユーザならPerl 5は使わなかったということもありうる……のか?
Re: (スコア:0)
Perl4から5への移行ってなかなか進まなかった記憶が。
98~2000年ぐらいまではPerl4使ってたのでは?
Re:Perl 5系とPerl 6系とでは互換性はなく (スコア:2)
HIRATA Yasuyuki
Re:Perl 5系とPerl 6系とでは互換性はなく (スコア:1)
相変わらずPerl4時代のようなソースコードが量産されていた。
インタプリタなのにソースコードって言うのがPerl4流?
Re:Perl 5系とPerl 6系とでは互換性はなく (スコア:1)
変?
ベーマガに乗ってるBASICのソースは普通にソースコードだったし
(日本語的)LL言語だからと言ってソースコードと言わないなんて聞いたことないな
Re: (スコア:0)
当時はソースコードなんて呼ばなかったけどねえ
https://image.middle-edge.jp/medium/a1f098ea8a3d79c8c9c0d5bf7ea1f1f9.jpg [middle-edge.jp]
Re: (スコア:0)
> インタプリタなのにソースコードって言うのがPerl4流?
インタプリタに入力するのはソースコードだと思いますが…何を言いたいのでしょう?
もしかしてスクリプト言語とソースコードが別物だと勘違いしてるんでしょうか?
もしかして一行のワンライナーはソースコードじゃないと言いたいのでしょうか?
もしかしてperlで書かれたライブラリやツール(アプリ)が存在することをご存知でない?
Re: (スコア:0)
Perl4みたいなPerl5のコードなら今でも時々見る。
泣く。
Re: (スコア:0)
my を使わず local を使ったり、use を使わず require を使ったり…
Re: (スコア:0)
localがあればまだ幸せ。
Perl最大の罪は宣言せずに変数使えるところだ。
(しかも「use strictって書いてあったら動かないので消しました」って言う奴までいるところ)