プログラミングの初学者にどのようなプログラミング言語がお勧めか考えることがことがありました。
知人から「プログラミングを始めたいのだけど、どのプログラミング言語が良いだろうか?」と質問を受けたことがありました。
その時には、プログラミングで何をやりたいか目的に合わせて、向き不向きなプログラミング言語があるので、まず目的を明確化することが大事であることと、早い段階で成果物が見える形にならないと学習するモチベーションが続かないので、本格的なコンパイラ型言語より開発スピードが速いスクリプト言語で、言語として新し目のプログラミングを選ぶ方が良いという自分の考えを話ました。
質問者は特別プログラミングで何かを作りたいわけではなく、スキルとしてプログラミングを身に着けて、新たなビジネスの領域に挑戦したいとのことでした。
本人曰く基礎からしっかり学びたいような雰囲気があり、やる気に満ちています。コンピュータの基本的な振る舞いを知るためには、CPUの命令をそのまま記述したマシン語か、そのマシン語の命令と対となるニーモニックで記述するアセンブリ言語あたりになります。多分最初のプログラミング言語だとは思いますが、今時のプログラミング言語とは大分異質な感じがするはずです。
自分も少し古いCPUのアセンブリ言語の書籍を読んだことがありますが、CPUが実行する命令はかなりシンプルであり、多分シンプルな構成にすることで高速に動作するような設計になっていると思われます。そうなりますと比較的簡単なプログラムでもプログラムを組む側の工数が膨大になります。
この膨大のな工数をあらかじめ作成し、ユーザープログラムから呼び出し可能にしたものがライブラリやフレームワークであり、現代のプログラムはそれらを上手く活用することでプログラミングの生産性を上げています。
目的もなくプログラミングを学ぶことは結構な苦行だと思うのですが、自分自身を高めるという高尚な目的を持った質問者を尊敬するとともに、どんなプログラミング言語が良いのか考えてみました。
思いついたのは、今日コンピュータを使う人間が高確率で使っているであろWebブラウザで動く言語であるJavaScriptが良さそうな感じがしました。OSの違いやPCとスマホのようなプラットフォームの違いもWebブラウザが吸収してくれますし、プログラミングを始めるために必要なものとしてPCとテキストエディタのみから始めることが出来ます。
ただHTML+JavaScript+CSSの組み合わせはフロントエンドですのでサーバーが無いと出来ることが限定的になります。JavaScriptのサーバーサイドの処理系としてnode.jsが有名です。クライアントサーバー型のシステム構築は大掛かりな感じがしますが、サーバーを立ち上げるのではなくPC内でnode.jsを動かすことでPC内で動作するシェルスクリプト的な使い方やデスクトップアプリケーションなども作成することも出来ますので、かなりの領域をJavaScriptでカバーすることが出来ます。
ただ、JavaScriptは結構歴史があり、HTMLやCSSの変遷などと合わせてモダンなスタイルを学ぶ必要があります。また、言語やHTMLの仕様を覚えるだけでなく、主流のライブラリやフレームワークを習得する必要がありますが、比較的短い期間で流行が変わるので追いかけるのが大変です。これは利用者が多く活発に新しい開発が行われている結果であり、喜ばしいことである反面、延々と学び続ける必要があるということに成ります。
質問者がJavaScriptを選ぶかどうかはなんとも言えませんが、今回少し調べてみてJavaScriptとくにnode.jsが面白そうな感じがしましたので、個人的に勉強してみたいと思います。
コメント