17:51:47TwitterFacebookはてブPocketLINEPerlはRubyやPythonと比較されることが多いですが、Javaとも比較されます。私は年末年始に兄弟に会ったのですが、そこで自社製品をPerlからJavaに書き換えていると聞き、そういった案件もあるのだと知りました。小売店のシステムに人工知能を活用したような製品なので、最新技術を導入した製品です。いった部分でPerlやJavaが使用されているようなので、伸び悩んでいると言われるPerlにも着目しておくべきなのでしょう。PerlからJavaに書き換えられているのでPerl自体は減っているのですが、現状Perlを他の言語に書き換える案件は各所で募集されています。Perlの需要は減ってはいますが現状は保守・運用や書き換えで需要があり、今後もそういった需要は続くでしょう。別の言語への応用も利くので、Perlは学習価値のある言語です。それでは、PerlとJavaにできることの違い等について解説していきます。Perl、Javaのフリーランス案件をチェックしようPerlとJavaにできることや違いまずJavaにできることですが、Javaは現在市場でシェアNo.1だけあってできることが豊富です。OS問わずに開発が可能で、なおかつAndroidの最新システムでも使用されているケースが多いです。既存の古いシステムから最新のスマホアプリまでJavaは幅広く活用されているのです。官公庁の40年ほど前に作られたCobolのシステムをJavaに書き換えるといった開発もあります。これは私が実際に参加したものなのですが、手続き型のコードをオブジェクト指向に書き換えはするものの、シンプルイズベストな設計でした。AndroidのJava開発では新しいライブラリをどんどん活用する機会があり、同じJavaでも開発内容によって幅広いということを体感しました。このようにJavaの開発対象は幅広く、GUIでもCUIでも問題なく開発です。GUIというのはグラフィックなどのことで、たとえばWindowsでファイルを操作する際にアイコンを見て操作することが多いかと思いますが、これはGUIです。一方で、コマンドプロンプトからすべて操作するようなケースでは、CUIで操作していることになります。WindowsはもともとDOSというCUIのみの操作で成り立っていましたが、その後GUIがどんどん入ってきたイメージです。JavaはCUI全盛の時代もGUI全盛の時代も活躍している言語であり、現在もそのどちらともに対応しています。一方で、Perlはテキスト加工が得意な言語です。GUIはあまり得意とはしていません。Perlが誕生した30年ほど昔はCUIがメインの時代だったのでPerlも幅広く活躍していましたが、現在はどちらかというとCUIメインの業務システムに特化しているイメージでしょう。簡単なCUIなら問題なく実装可能ですが、ユーザーの目を引くような最新Webシステムや、直感的に操作しやすいシステムなどで使われるケースはあまりありません。冒頭で私の兄弟がPerlをJavaに書き換えているという話を紹介しましたが、これもユーザビリティの向上が主な目的かと思います。内部ロジック的にはPerlでもJavaでも問題ないのですが、ユーザーが小売店であるため、コマンド入力やシステムの操作を得意としているわけではありません。そのため、使いやすさが非常に重要になるのです。直感的なGUIで操作できた方が良いということで、PerlからJavaに書き換えられているイメージでしょう。PerlとJavaでは他にも言語仕様的な細かな違いは多々ありますが、細かく比較してもあまり意味がないかと思います。大まかに違いをまとめると、PerlはCUIベースで主な用途は業務システム、JavaはCUIにもGUIにも対応しており、用途は業務システムからスマホアプリまで幅広い、といった形になります。PerlはRubyに地位を奪われた、Pythonに地位を奪われた、PHPに地位を奪われた、といろいろなことが言われています。これらの言語にはそれぞれある程度得意分野がありますが、結局のところ各分野でもともとPerlで書かれていたものが各言語に書き換えられているようなイメージです。従来ならPerlで開発したであろうシステムも、今は別の言語で作られることが多いはずです。Perlは特定の言語に取って代わられたわけではなく、全体的にGUI全盛の時代に取り残されつつある状況になります。今Perlを習得すれば希少価値が生まれる今後Perlの案件が縮小していく可能性は高いと思われます。Perlを学習するメリットはないのでしょうか。案件を見る限り、そんなことはありません。Perlの案件が減ると言っても数年で一気になくなるわけではなく、また現状需要はあります。言語への書き換え、といったところで案件が出ています。そのため、今Perlのスキルを身に付ければ仕事があります。Perlが縮小するという情報が出てからPerlを勉強するエンジニアは減っていると思われ、その結果Perl案件が人手不足になっています。Perlだけに特化するのではなく他の言語と並行して学ぶのであれば、Perlを身に付けることで確実に市場価値が上がるということです。これについてはPerlだけでなくCobolやアセンブリでも同様なのですが、Perlの場合Cobolやアセンブリよりもその他のWeb系言語に構造が近いです。そのため他の言語経験があれば学習の障壁が低く、なおかつ別の言語を次に学習する際に応用が利きます。Perl案件が仮に今後ゼロになったとしても、Perlを学習したことはまったく無駄にはならないということです。ちなみにCobolやアセンブリも他の言語に応用が利き、案件がなくなったからといって学んだことが無駄になるわけではありません。オブジェクト指向言語と両方学べばオブジェクト指向の利便性や意味合いも比較でわかりやすく、私自身は学ぶ価値が高いと思っています。スキルの切り替えができるわけではないため、Perlほどの汎用性はないでしょう。プログラミング言語はただのツールよく言われることですが、プログラミング言語はシステムを作るためのツールに過ぎません。言語仕様の細かい部分を覚えるのが重要なのではなく、アルゴリズムやロジックを考えるのが重要で、それを実現するために表面にコードを書いているだけです。コンピューターはそもそも2進数しか理解できないので、プログラミング言語は人間が人間のために用意したもので、それを習得したからといってコンピューターの内部の動きまで正確に理解できるわけでもありません。「根本的なアルゴリズムやロジックを大切にする」「言語については必要なときに必要な言語を学ぶ」「アルゴリズムやロジックは普遍的なものなので、言語が変わっても応用することを意識する」といったことを考えていれば、実はどのプログラミング言語を選ぶか、といったことはそこまで重要ではないのです。開発現場では即戦力が求められるので、ピンポイントの言語やフレームワークのスキルが必要とされます。根本のアルゴリズムやロジックを理解していれば表面的なコーディング技術は応用して習得できる速度が速いため、特定の技術にこだわるのではなく、アルゴリズムやロジックから学んでいくのが理想とは思います。