スポンサーリンク


2018年12月10日

最初に学ぶべきプログラミング言語とは?(2)

 前回からの続きで、プログラミングの初心者が最初に学び始めるのはどの言語がいいかという永遠のテーマについて勉三の考えを述べていきたいと思います。

そもそも言語って1つじゃなく、いくつも覚えることになる

 よく勘違いしてる人がいますが、プログラミング言語って到底1つじゃ足りないんですよね。環境や用途によってデファクトスタンダードの言語って違ってきますし、時代によっても変化する。勉三自身の遍歴を振り返ると、昔懐かしのN88 BASICから始まって、C,C++, Java, C#, VBA, R, Python, MATLAB などなど色々やってきましたよ。

 別にこれらは私が好きで選択してきたものばかりではありません。目的を実現するためには色々な言語を使わざるをえなかったのです。例えば、会社のPCだと余計なソフトがインストールできなかったりするので、(MSOfficeが入っていれば)何の追加ソフトも必要なくプログラミングができる VBA は非常に重宝しました。

 また、機械学習や人工知能の研究をしていると、論文で誰かが報告したばかりの最先端のアルゴリズムを使うわけですが、そんな時は論文著者がウェブ上で公開しているソースコードを使うしかなかったりします。それも書かれている言語はバラバラ。出来合いのソフトやライブラリーのようにすぐ使えることも少なく、大抵はコードにバグがあるので、自分で中身を解読して修正しなければいけません。

 そうでなくとも、プログラムの心臓部(ビジネスロジック)はポータビリティや高速化のためにC/C++などで実装し、ユーザインターフェイスはJavaやC#、Webサイト構築ではPHPやRubyのフレームワーク、それにJavaScriptなどを組み合わせて作ることは日常茶飯事でしょう。

 言語は1つを極めるのではなく、適材適所で使い分けざるをえないのです。

最初にCから入ると他の言語への以降がスムーズ

 勉三が前回「最初にCからやれ」と言ったのは、まさにこのためです。Cを最初にやっておくと、大抵の言語は怖くありません。まあ、オブジェクト指向やジェネリクス(テンプレート)指向といった部分に関しては、Cは弱いので、流石にCをやった後にC++かJavaあたりも勉強すべきだと思いますが、手続き型の世界で必要とされることは、ほぼCでカバーされてますからね。

「C++なんて使いこなせる人はいないから、使わないほうがいい?」

 で、またこういうと「C++の全機能なんて使いこなせる人はいないから、使うべきではない」とか主張しだすアホな人が必ずいます。

 同じような主張は、Word とか Excel とかソフトについても目にするんですが、そもそも全機能を使いこなす必要はないですよね。自分が必要な機能だけ使えていれば、立派にそのソフトを使っていることになるのです。

 特に、C++は、ある意味で世界観をユーザに押し付けがちな他のいくつかの言語と違って、「便利なものは色々用意したから好きなものだけ使ってね」という思想のもとで作られた言語です。実際、C++の生みの親であるビャーネ・ストラウストラップ氏もそういってます。興味ある方は「プログラミング言語C++」でも読んでみてください。この本はプログラミング言語の歴史を語る上では必読で結構面白いですよ。

 ですので、あくまで自分の必要なものだけを使うという姿勢で問題ないのです。何も色んな機能があるから、それを全部使いこなしてC++っぽく書かないといけない、といった言語ではありません。

とにかく迷ったら最初はC、その次にC++かJavaかC#か

 というわけで、勉三のおすすめは迷ったらC、でその次にC++/Java/C#などの非軽量なオブジェクト指向言語をやる。これで、後はどんな言語もほぼ怖いものなしになるでしょう。

 逆に、最初にとっつきやすい言語から入って、あくまで入門の時期だけならともかく、そればっかりになると辛いですよ。

 もちろん、何か明確にやりたいことが決まってる人は、その限りではありません。「俺はSNSチックなウェブサービスを作りたいんだー」って人に、いきなりCから勧めることは流石に勉三もしません。あくまで前提は、プログラミングの「勉強」がしたい人向けのおすすめです。

スポンサーリンク



posted by 勉三 at 23:58 | Comment(0) | TrackBack(0) | IT
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/185178128
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック