PHPエンジニアから見た他のプログラミング言語

Pocket

いろいろなプログラミング言語を少し知っていると専門外のソースコードからでも知識が得られます。また、普段使っているものがどれだけ奇異なものなのかわかったりもするので常識的なプログラミングをする上でも重要な事だと思います。

そこで普段 PHP を中心に使っている自分から見た他の言語の印象と特徴を書いてみます。
偏見だらけで間違った内容も含まれます。あまり真剣に捉えないでくださるとありがたいです。

Python

Python でもウェブプログラミングはできますが、人工知能やディープラーニングなどの機械学習分野での活躍のほうが目立っています。インデントに意味を持たせた書き方は独特で驚きましたが可読性が高く合理的です。学術系のライブラリが充実しているのも特徴で、この分野においては他の言語よりも圧倒的に生産効率が高いです。
Django フレームワークを使ったウェブサイト制作や、3DCGのスクリプトなどいろいろな分野をカバーしています。
個人的には FontForge でウェブフォントを作るのに使ったりします。
国内での情報は Ruby に比べるとやや少ないものの海外ではかなりメジャーな言語です。

Ruby

ウェブに関わる者にとって Ruby の存在感は大きいです。なかでも Ruby on Rails は PHP 製フレームワークに強く影響を与えた存在でもあるので構造には見慣れた感じがあります。ウェブサービスの分野では主要な言語なのでいつかマスターしてみたいと思う気持ちは強いです。
小規模なレンタルサーバーなどでは動作する環境が揃っていない事が多く、AWS などのクラウドサービスや VPS などの自由度の高いサーバーで使う機会がほとんどなので環境構築自体が難しく、気楽に始められるものではない印象です。
ウェブに強い言語ではありますがその他の分野でも利用でき、Vagrant などのソフトウェアの開発言語としても知られています。
いくつかフレームワークはあるものの Ruby on Rails がほぼ一強なので「Ruby ができる = Ruby on Rails ができる」と言えるため、フレームワーク選定に迷わなくて済むのはちょっと羨ましいです。

PHP

HTML内にプログラムを埋め込めるため簡易テンプレートとして使われることが多かった PHP ですが、最近ではクラスの実装や大型フレームワークの登場、PHP 7.0 での高速化によってちゃんとしたウェブプログラミングができるように成長しました。
文字列や配列はメソッドを持たないため、「$foo->count()」のようにする代わりに「count($foo)」とするなど関数が中心となっています。
クラスの作成がサポートされるようになってからも標準関数中心の時代からの影響を引きずっています。
代表的なブログアプリケーションである WordPress は大きなシェアを持っており、使うぶんには優れていますが、古い設計と新しい設計が混在するソース構造はひどい状態で、常用されるグローバル変数とクラスにまとめられていない変数群が多用されており、良いお手本とはいえません。
人気のあるフレームワークの Laravel は PHP の良い面を活かした柔軟なフレームワークで中規模サイトでの活躍も増えてきました。

Perl

一昔前までは CGI といえば Perl で、掲示板やチャットはこれで作るものという状況がありましたが今ではすっかり影が薄くなって元気がない印象です。
この頃は CGI は自分で作るものというよりも大御所の配布サイトから頂いて設置したり、レンタルするものと言う感覚がありました。ある意味では国内でウェブプログラミングが停滞した理由はこのあたりにあるのかもしれません。
いつの間にか Perl で作られたブログは WordPress に取って代わり、個人サイトに掲示板を設置する文化自体なくなってしまいました。

Java

Windows, Mac, Linux など OS を選ばずに動作するのが特徴で、GUI ライブラリも用意されているので見た目や操作感も統一できます。Android プログラミングの主要言語なのでかなりのプログラマーが習得している言語の1つです。
他の言語に与えた影響も大きく、Java を知っておくといろいろな言語のソースコードが何となく読めるようになります。何かのアルゴリズムについて知りたいときはたいてい Java のソースがネット上にあるので PHP に置き換えて使ったりしています。
ちょっとしたデスクトップ GUI ツールが必要で Windows や Mac で使う時に Java で組むことが多いです。以前は GUI の見た目が OS ネイティブからかけ離れた不格好なものだったのであまりおしゃれな印象がなかったのですが最近は随分きれいな見た目になりました。
デメリットとして Java がインストールされていなくては動作せず、Java のバージョンにも大きく左右されるため、ユーザー側にもある程度コンピュータの知識を要求してしまいます。

JavaScript

上述の Java と名前が似ているだけでなんの関係もないというのは有名な話です。
以前はウェブページの文字をちょっと動かしたりマウスカーソルにキラキラするものをつけたりする程度のものでしたがjQuery の登場とブラウザでの実行速度があがってから一気に人気が爆発しました。
ウェブアプリでもほぼ必須の存在で、多くのシングルページアプリケーションが作られています。
Node.js の登場によりサーバーサイドでも動作するようになってから更に人気が加速し、Electron を使ったデスクトップアプリも最近ではよく見かけられるようになりました。OS を選ばずに動作するという意味では Java に近いものがあり、HTML + CSS の知識があれば簡単に見た目が作れるためデスクトップアプリの分野でも急速に利用者が増えています。
ES2015(ES6)で正式なクラス構文やモジュール構文を始めとした重要な機能追加があったのですが互換性確保のため Babel, TypeScript, CoffeeScript などのトランスパイラを利用するのが事実上必須になるなどまだちょっとふわふわと落ち着かない感じがあります。

C#

基本的には Windows での GUI プログラムを作成するための言語ですが最近では他の OS でも使えるように努力が続けられています。
Java と似たところのある書き方で直感的に作れるのが魅力で、アプリケーションの実行には .NET Framework が必要なものの Windows には標準付属のため事実上のネイティブアプリを作ることができます。
優れた IDE である Visual Studio で利用でき、C言語や C++ よりも最初の一歩を踏み出すハードは低いです。
人気のゲームエンジン Unity でも C# が使えることも高い人気の理由です。

Visual Basic

C# が今ほどメジャーになる前は Visual Basic はよく使われていました。学習用言語 BASIC を大幅に拡張したもので、業務用のアプリケーション開発で人気がありました。
C# 同様に Visual Studio で GUI の作成ができ、プログラミング初心者に限らず多くのアプリケーションが作られていました。
Microsoft Excel などで簡易版の VBA が利用できるため、事務書類作成の効率化の分野で重宝されています。

Swift

非常に癖があり難解だった Objective-C に替わるものとして作られた言語で、iOS アプリや Mac 用のデスクトップアプリケーション開発用に使われています。
型や nil の扱いに厳しく、暗黙的な型変換が行われないためいい加減な作り方をすることが許されません。ある意味では安定したソフトウェアを作るよう強制されているともいえます。
現時点では限られた用途にしか使えませんが Swift はオープンソース化されているので将来的には Android や Windows などの OS でも動かせるようになるかもしれません。


以上が主要なプログラミング言語の紹介でした。
言語自体の優劣よりもライブラリの人気が言語の人気に大きく関わっています。
普段使っている言語がこの先も使われ続ける保証はないので特定の言語に依存せず時代の流れについて行けるかが重要になってくると思います。


Similar Posts:




  • コメントを残す

    メールアドレスが公開されることはありません。