PHP 7リリース、言語仕様の大幅拡張と当社比2倍の性能アップを実現 46
ストーリー by hylom
7の世界へ 部門より
7の世界へ 部門より
あるAnonymous Coward 曰く、
PHP開発チームは3日、ついに10年以上にわたるPHP 5の時代に終止符を打ち、「PHP 7.0.0」の公式リリースをアナウンスした(アナウンス、OSDN Magazine)。
PHP 7ではメジャーバージョンが上がっただけのことはあり、大幅な改造が図られている。まず最も恩恵を受けやすいのが実行エンジンの見直しによる性能向上である。内部のデータ構造の見直しなどが図られた結果、その性能はPHP 5.6と比較して2倍高速になり、メモリ使用量も50%改善したという。これによりJITコンパイラを用いるHHVMにも匹敵するパフォーマンスとなっている。
言語仕様にも手が加えられており、Fatal Errorなどの致命的エラーの数々が例外として扱われるようになった他、無名クラスの導入や以前にも話題になったスカラー型宣言、戻り値の型宣言にNull合体演算子の導入など、多数の機能追加が行われている。また廃止予定とされてきたeregなど古いモジュールの削除も実施された。変更点の詳細については「PHP 5.6.x から PHP 7.0.x への移行」ページを参照されたし。
はまりそうなポイント (スコア:1)
非互換な変更をつらつら眺めたけど、一番怖そうなのはこれかな。
> 変数やプロパティ、メソッドへの間接的なアクセスの扱いの変更
http://php.net/manual/ja/migration70.incompatible.php#migration70.inco... [php.net]
Re:はまりそうなポイント (スコア:1)
php5の悪夢再び。
#これが最後の糞仕様変更とは思えない。phpがあるかぎりいずれ第二第三の糞仕様変更が(ry
これによる実際の変更箇所の「個数」は少ないかもしれないけれど、どこがその該当箇所であるかを
検出し、それを等価な処理に変更したことを保証するのがべらぼうに面倒だったりするんだよ。
それって現実的には変更コストが高過ぎて、事実上移植できなくなるってこと。
結局はPHP6以前のコード(メジャーなフレームワークやライブラリも含む)は、
7へ移植されることなしに消えていく運命なのかもね。
Re: (スコア:0)
糞仕様変更がない言語は死んだ言語だけだ。
PHPは元々書き捨てみたいなもんでしょ。
十年以上も使う保守主眼の重厚長大言語じゃないし、さっさと次の物を作った方が早い。
Re: (スコア:0)
>十年以上も使う保守主眼の重厚長大言語じゃないし、さっさと次の物を作った方が早い。
2000年問題から何も学習しなかった老害さんか?
そう言って放置した結果、現行製品の保守もできずに苦労していたPHP開発現場を私は知っている。
そもそもそれで問題が無ければ、こんなに頻繁にフレームワークが入れ替わったりしないのではないか?
Re: (スコア:0)
それってPHPの存在全否定じゃないですか
Re: (スコア:0)
いまだに、たまにPHP4なアプリの改修案件とかが来るしなぁ。
(自分とこが昔作ったコードの場合もあるし、余所が作ったコードの改修だけってのも)
SQLインジェクションとか流行る前のコードだから、脆弱性ありまくりだったり。
まだPHP5への移植案件の方が精神衛生的にうれしいんだけど、
サーバ入れ替えとかテストのやりなおしとかの費用が出せないから、PHP4のまま。
SQLインジェクション可能なのは瑕疵だから無償で直せとか言われて
当時は問題として認識されておらず、それでそっちも検品してるんだから、
金くれないと対応しない、と返して、それで未だに脆弱なままだったりとか
#こんなのIDで書けないからAC
Re: (スコア:0)
自社開発だけど、秘伝のライブラリとかがPHP4時代からのものでいまだにそのコードに引きずられてるんで他人事とは思えない…
Re: (スコア:0)
2000年問題から何も学習しなかった老害さんか?
どうみてもこの人の方がご年配の発想でちょっと笑っちゃった。
10年後にPHPが動く環境が残ってるかなんて誰にも保証できないよw
Re: (スコア:0)
甘ちゃんだね。
ふつーに残るよ、間違いなく。
人間のずぼらさをなめてはいけない。
Re: (スコア:0)
そういう事じゃなくてね。
10年使う事を想定しているサービスは、相応分持つ環境で作らなきゃダメってことなんだよ。
PHPはバージョン毎のサポートが長くて5年、破壊的な文法変更の実績もある。
長期で使うならコードの更新を含むメンテナンスが大前提。
メンテナンスをしないなら、寿命がもって5年ってのは事は最初から決まってるわけ。PHPで作るってことはそういう事。
古いバージョンのまま延命させてるのは無理を通してるだけで、問題の先送りにしかならないよ。
Re: (スコア:0)
そういう事じゃなくてね。
そんな何年も使うつもりもないし持たせる気もないわけよ。
だからわざわざ新しくなんかしないし、問題も解決なんてする必要ない。
2000年問題もそう思われていたんだよ。
「メンテナンスをしないなら、寿命がもって5年ってのは事は最初から決まってるわけ」
「PHPで作るってことはそういう事」
5年後10年後には2000年問題をもってるサービスなんてとうに寿命迎えてなくなってるはずだったんだよ。
問題は先送りしておけば寿命を迎えて解決するはずだったんだよ。
しかし、そうはならなかった。長くても5年の寿命と言われたものでも10年20年残りえる。
それが2000年問題の教訓だよ。
Re: (スコア:0)
作るときは想定はしないけど、実際使ってる、てのが一番よくある現実。
本当にそそういう主張をしたいなら、5年過ぎたら自壊するようにプログラムすべき。
Re: (スコア:0)
内容がうすっペラい。
Re: (スコア:0)
どういう点で「糞」なのかを書かないと「コードを変更するのが大変だから仕様変更は全てダメ」という老害と同じですよ。
Re: (スコア:0)
「既存のコードで(低頻度でも)それなりに使われているだろうコードの挙動を変更しているから」
以外になんかある?
C++のautoキーワードの仕様(用途)変更とかは、autoなんぞ誰も使ってないから出来たような物。
開発が停止して保守しか行われていないコードでこの手の対応を行うのは結構なコストになるが、
古いPHPにとどまろうにもPHP自体のメンテが行われないから脆弱性が放置される事になるし……
PHPなんてネットで使うのがデフォなのに、将来的に脆弱性を放置する羽目になるだろう変更とかクソ以外の何でもないだろ。
Re: (スコア:0)
変数内容をメソッド名に使っての呼び出しでしょ
そこまで頻繁にはやらない印象があるが…まぁ嫌だけど
Re: (スコア:0)
そもそも、レガシーコードは、5.3や5.5の壁を超えられてないだろ。
Python3や予定されているRuby3に比べれば、非互換はかなり少ない。
Re: (スコア:0)
PHPが今までにやってきた、それはないだろうな仕様変更をしれっとマイナーバージョンアップでやってくれた歴史を知っていないんですね、わかります。
Re: (スコア:0)
元コメを擁護するつもりはないですが、マイナーバージョンアップを毎回実施してる人(現場?)ってそれほど多くないのではないかと思います。
指摘内容は事実だと思うけど、それを知らない人がいても批難する部分じゃないと思います、
PHPでの開発に携わっていたら、そういった問題を全て把握していなければいけないというのは、一部の人のエゴです。
実際、コード書くだけの人は、自分が使っている環境のPHPのバージョンすら解ってない人もいますから。
※まぁ、マイナーバージョンアップ時、実装ミスで動作が変わったのを「次のバージョンで戻す」とかやられたこともあるけど、環境を常に最新バージョンに維持しなきゃいけないという縛りがなければ、困らない人の方が多いのかもしれない。
Re: (スコア:0)
PHP5.3.7とか誰もが度肝を抜かれただろうな。
Re: (スコア:0)
Ruby3ってまだ出てないぞ
Re: (スコア:0)
一番エグいのはPHP5用のextension全滅では?
既存プロジェクトで確認せずにバージョン上げると爆発しそう…
Re: (スコア:0)
普通そういうことやらないので、その点については考慮の必要がありません。
Re: (スコア:0)
全滅するなら対応しやすい。extensionなら使っている場所も特定しやすいし。
なので大変だけど怖くはないです。
PHP 6がスキップされた理由は触れてはいけないの? (スコア:0)
こういうこと、Microsoftもやってたな…
そう、DirectX 4.0だよ!
# Windows 9はマーケティング上の理由が大きいからまた別か
Re:PHP 6がスキップされた理由は触れてはいけないの? (スコア:2)
関連リンクにもありますが、もうスキップする話はしつくされたのではないかと思います。
Re:PHP 6がスキップされた理由は触れてはいけないの? (スコア:1)
自分はWinamp 2.x、3.x、5.xを思い出した。
Re: (スコア:0)
Perl 6 の仲間と思われたくなかったからなんでないの?
Re: (スコア:0)
PHPとPerlのバージョンナンバーをごっちゃにする奴って何人くらいいるのかなあ。(#2930147以外で)
Re: (スコア:0)
終わった言語なんでPerlのバージョンナンバーどころか
今いくつなのかすらわからないに1000点。
Re: (スコア:0)
4は死に通じて縁起が悪いからだっけ?
同様に、Windows9は苦に通じて縁起が悪いからスキップ
Re:PHP 6がスキップされた理由は触れてはいけないの? (スコア:1)
Windows 95とかがあるので、あまり戦略的に良くないらしい。
Re: (スコア:0)
Re: (スコア:0)
それは確か外野の憶測です。非常に説得力が強いことは事実ですがね。
公式には7,8,9のダジャレを言っているだけだったはず。つまり本当の理由は秘密ってこと。
Re: (スコア:0)
それは周りの推測でマイクロソフトの公式な発表は"7,8,9"とかいう駄洒落だけでしょ。
「つまり聞かないでくれよ」とか「聞かれても答える気はないよ」ってことなんだろうが。
Re: (スコア:0)
PHP4も、NT4も存在してただろ。
Re: (スコア:0)
政治的な理由は無い
Re: (スコア:0)
どれくらいのサーバーが節約できるのか (スコア:0)
多くのウェブサイトはPHP、特にwordpressで公開されてたりするけど、
すべてのサーバーがPHP7に移行した場合、どれくらいのサーバーが節約できるんだろう。
アクセス多くてスケールしないとやっていけないような人気のサイトは少数だろうし、そこまでインパクトはないか。
いや、それより共有レンタルサーバーがより多くのユーザーを1台に詰め込めるようになるのかな。
それは結構大きいかも。
Re: (スコア:0)
共有レンタルサーバーで動くPHPなんてCGI版なんで、たいして恩恵は受けないでしょ。
言語のバージョン (スコア:0)
オフトピだけど、そういえば、わざわざ言わない場合は、言語のバージョン=実装のバージョン、という暗黙の了解でいいのか。
極端な所では「PHP言語7.0.0」の言語仕様が確定しましたが、それを余すところなく実装したPHPランタイムは未だ無いです、とか、
PHPランタイム7.0.0はPHP言語7.0.0仕様を満たしていないバグがあって修正され、ランタイム7.8.3でようやく言語7.0.0相当になりました、とか、
そういうバージョン間の齟齬はどうやって処理しているんだろう、とか、とりとめのないことを思ってしまった。
サードパーティーのPHPランタイムを作る場合は、PHP言語7.0.0相当を名乗るべきなのか、PHP7.0.0互換を名乗るのべきなのか、とか。
ライブラリを公開する場合に、何対応と言えば良いのかとか。
言語と実装の分離がされてるC++とかCとかと比べてどうなんだろう。
逆に、Rubyの、実装が仕様だ、はまだ生きてるのかな。
使う側は実装が全てで言語仕様を気にするやつなんてPHP厨には居ない (スコア:0)
リファレンスを読んだこともないやつが過半数
やったねstrict がきたよ! (スコア:0)
未定義をやんわりとnoticeしてはまらずに済むんですね!
お前はまだピーエイチピーを知らない (スコア:0)
いまだにPHP4の印象で語っていると老害と笑われるそうですよ。
関係ないけど、Perl5とPerl6は別言語なんだよ、おじいちゃん。
Re: (スコア:0)
誰と闘ってんの?
Re: (スコア:0)
どこかでそういうふうに書かれていたのを書いただけですよねえ。
プログラマならまず知ってる常識でドヤ顔で書くことじゃないですもん。