ソフト開発者は時と共に多数なプログラミング言語とその環境に触れて行きます。
最近私は Golang と Rust を覚えてここ三ヶ月ほぼフルタイムで使っています。こういう 「近代」な言語を実際なプロジェクトに用いて今まで使ってきた物を反省しながらある事 に気付きました。それは、「プログラミング言語」と「開発言語」の根本的な違い。この 記事はその違いを説明し、ある言語をその観点から分析する連載の最初です。続きは:
さて「開発言語」とは何か。そして、「プログラミング言語」とはどう違うのでしょうか。
「言語」と言ったものとくると、その遅速・短長・難易・美しさなどで比較されます。ネッ ト上ではよくあれこれの言語のシンタックスなどを比べる記事も見られます。しかし、現 場でやるような開発となると、そういう表面的な事はほぼ仕事と無関係。
少し用語の定義を確認しながらそのなぜかを探ってみましょう。
プログラミングとは人間の発想や意志を情報化させる事である
どの形に情報化させたかとその後どう扱ったかは別として。この定義で以下な事は全部 「プログラミング」になります:
そして意外にこういうのも:
この定義ではプログラミングは誰にでも手を付けられるものになります。
その一方、「ソフトウェア開発」があります。
開発とは長い期間使われていくソフトを作る事。
プログラミング・検証・協力・出荷・保守の五行に基づく。
この定義で以下な事は「開発」になります:
「開発の五行」を元に、ある言語がプログラミングだけではなく「開発」に適しているか どうか計れます。特に優れた言語は下記の問いにちゃんとした答えを備えます:
似た点はもっとあるでしょうけれども、まず上の点に「現場にいる」開発者は異議ないで しょう。その反面、上の点は学生や研究者や科学者に関係あるでしょうか。ないのならば:
ソフト開発に向いていると向いていない言語がそれぞれある
Pythonで数百万行のOSは作るべきでしょうか。可能は可能ですがやるべきものではないと 思います。Pythonには他の長所があります。
研究や教育にしてもそう:High Performanceの物理学シミュレーションコードはJavaで書 くべきでしょうか。最初の言語として学生にC++は教えるべきでしょうか。またそれぞれ に他の長所はあると思います。
「良い職人は失敗を道具のせいにしない」と言われますが、高層ビルを槌一つで建てよう とする時と犬小屋を起重機で組み立てようとする時を見極める力が我々開発者に不可欠で す。状況と道具が合っていなければ問題の範囲を再検討するか道具を入れ替えるかのどち らかだと思います。
全ての「開発言語」はプログラミング言語でもありますが必ずしもその逆はありません。 従って、言語のシンタックスを比較する事や「A語対B語」風なブログ記事を書く事や言語 を「トップ十」に並べる事に意味があるでしょうか。
個人的に言うと、自由に創らせて、創った物を長期に亘って容易に保守させてくれる言語 が好みです。
次回、Rustは上の「開発の五行」にどれ程当てはまるか分析して行きます。
ポスト一覧