EY-Office ブログ

私の愛したプログラミング言語たち (Rubyは死んだのか)

“Rubyは死んだ”のか? まつもとゆきひろ氏が語る「プログラミング言語サバイバル」とRubyの未来Rubyは果たして死んだのか | 日経 xTECH(クロステック) 。。。。 など Rubyは死んだのか がバズっていますね。

私は今までにいろいろなプログラミング言語を使って来ました。この中には 死んだと言われるプログラミング言語も多くあると思うので、それらのプログラミング言語に敬意を表し、今までに使ってきたプログラミング言語に付いて書きたいと思います。

www.tiobe.com

学生時代

FORTRAN

大学のプログラミングの授業で使いました。大学の計算機センターにある大型コンピュータ(と言っても16bitマシンでした)をクラブの先輩大学院生のアカウントで使いまくりました。その当時クラブで作っていたマイコン(6800)用のクロスアセンブラーをFORTRANで書いたりしました、FORTRANは数値計算用の言語なのでアセンブラーのようなものを書くのには向きませんでしたが、計算機センターで使える言語はFORTRANしかなかったのです。

アセンブラー

マイコンのソフト開発にはアセンブラーまたは機械語しかなかったのです。 エディターやDisk管理システム、TinyBasicなどを書きました。小さなプログラムでしたがスケッチブックにアセンブラーのコードを書きながら考え、マイコンで動かしデバッグしました。アセンブラーはちょっとしたバグですぐに暴走してしまうのでデバッグに苦労しましが気力で乗り切っていました ^^;

Pascal

計算機センターのコンピュターにある先生がPascalを移植したので、Pascalにふれる事が出来ました。FORTRANとは違う優雅なコードに感銘しました。またPascalで書かれたPascalコンパイラーのコードも見せてもらい、美しい内部構成・美しいコードにも感銘しました。

Lisp

過去の話シリーズ(1) 卒業研究でLisp処理系を作った に書いたように私の人生を変えたプログラミング言語です。再帰呼び出し、高階関数、マクロなのど多数のプログラミングの概念を学ぶ事が出来た私の基礎を作ってくれた言語です。

就職後

最初の会社は組み込み系だったので主にアセンブラーを使っていました。CADのベンチャー企業に転職してからは PascalやC言語を使っていました。この頃になるとワークステーションが使えるようになり現在の開発環境と同じような開発スタイルで開発できるようになりました。

また、ある時期はWindows環境のVisual Studio(VC, VB)や PowerBuilder で開発していた時期もありました。

独立後

独立後はWebを中心に仕事をするようになりました。

Perl

Webと言えば Perl という時代で Perlを使うようになりました。変な文法の言語だなと思いつつもありましたがインタプリターで手軽にコードが書け生産性が高く、たくさんのコードを書きました。また言語以外に以下のようなオープンソース文化を知れたのは素晴らしい経験でした。

  • CPANというライブラリーを登録・管理するサイトがあり、たくさんのライブラリーが登録されている
  • Shibuya Perl Mongers(Shibuya.pm) のようなユーザーコミュニティがあり技術情報や技術者同士の交流が行われている
  • 信頼出来るドキュメントは英語しかないので、英語のドキュメントを読む習慣が出来た

Java

Webアプリ開発には早い時期からJavaも使われていました、私がJavaを使っていたのはバージョン 1.2〜1.5(5.0)くらいまでの期間でした。 Java言語はI/Oや文字列などが言語の中でなく標準ライブラリーにあるという設計に感心しました。ただし、表現力が低く(その後のバージョンアップで改善されたようです)、プログラミングが面倒だなと感じる事もままありました。

本格的にオブジェクト指向を勉強したりしました、またTDDやアジャイル開発を知ったのもJavaのコミュニティからでした。

Ruby

多くの開発者同様に Ruby on Rails のブームで使うようになりました。 Perlの進化形でありオブジェクト指向言語であり、Lispのように動的な言語で直ぐに大好きな言語になりました。 作者の まつもとさん (Matz) の言語デザインセンスの素晴らしを感じる言語です。

Perl以上にコミュニティの活動が活発であり、作者の まつもとさん (Matz) と日本語で直接Rubyの話しが出来るは日本人にはとても嬉しい事ですね。

JavaScript (Node.js)

最初はブラウザーの上で動く邪悪な言語だと思っていました ^^;
しかし慣れてくるとなかなか良い言語です、シンプルな内部構造はLisp的です。またブラウザーの互換性も高まり、最近のES6では文法も改良され V8 など高速な処理系や、npm には膨大なライブラリーがあり便利です。

node.jsをバックエンドに使った事があります、当時はasync/awaitが無く、コールバックに苦労しましたが慣れてしまいました。

また、Angular, React, Vue のようなWebクライアントのライブラリー・フレームワークがアグレッシブに発展していて、とても興味深い世界です。

Objective-C

初めて iPhoneアプリを作った時は Objective-C でした、その後もいくつかのアプリを Objectve-C で作りました。C言語の上に Ruby(本当はSmalltalk)のようなオブジェクト指向を乗せ、Javaの標準ライブラリーのような物を加えた(実はObjective-Cの方が先)言語で、比較的早く馴染めました。ベースがC言語なのでマシンに近い部分からオブジェクト指向を使ったアプリケーション作成まで広い用途で使える言語で、案外好きです。

Swift

Swiftは現代的な言語です、型推論と洗練された構文でプログラムが楽に書けます。またnull安全(Optional)やイミュータブル、ジェネリクス、関数型言語のイデオムなどで安全なプログラムが書け、iOS開発が格段に楽になりました。

発表された直後は Appleの言語でしたが、その後オープンソースになり開発プロセスもオープンになりました。バージョン 1〜3までは非互換なバージョンアップを続け、アプリ開発者を悩ませて来ましたが最近は言語仕様は安定してきたようです。

SwiftはiOS/macOS以外にサーバーサイドで使えるLinux版も開発されています。現在サーバーサイドで使えるC言語レベルの性能が出せる言語としては Go が広まっていますが Rust も人気があり、ここに Swiftが入り込めるのか興味深いところです。

まとめ

私が使った言語で、死んだと言われてないのは Swift のみですね、JavaScriptは瀕死の状態から盛り返した感があります。

流行るのは、その時代の要望に応えられる言語から選ばれてる気がします。例えばインターネットの登場で手軽に使える Perl が広まり、Webベースのエンタプライズシステム構築の要望には Java が選ばれ・・・・

そして時代の要望は変わり、新たなプログラミング言語にフォーカスが当たるのは自然なことだと思います。また新たな言語には新たな特徴や生態系があり、いつまでも興味が尽きない世界です。

- about -

EY-Office代表取締役
・プログラマー
吉田裕美の
開発者向けブログ