スポンサーリンク



2018年12月09日

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

 ども勉三です。プログラミングの初心者が最初に学び始めるのはどの言語がいいか、というのはよく議論になり、だいたいそれぞれが自分の経験や好みに基づいて主張しだすので、収拾がついた試しはありません(笑)今回は勉三の持論を書かせて頂きます。

そもそも「どの言語をやればいいですか?」と聞く人は向いてない

 まず、そもそもなのですが、「プログラミングに興味があるのですが、どの言語をやるのがいいですか?」といった質問をする人は、プログラミングに向いていません。

 プログラミングに向いている人は、そんな質問をせず自分で適当な言語の本を買って勉強して、数日後には簡単な自作プログラムを作ってるような人です。質問している間に言語1つぐらいざっと習得できますからね。

 これが「私はこういうアプリを作りたいのですが、どの言語を勉強するのがいいですか?」という質問であれば構わないのです。目的があれば、そのためのOS、プラットフォームなどは絞られますし、そのOSやプラットフォームで開発をするために向いた言語というのも絞られますから、経験者も「この言語がいいんじゃない?」と言えるわけです。

 ですが、何の目的もなしにプログラミングが勉強したい、というのだけだと、答えが出るわけがありません。別にどのプログラミング言語でもいいし、極端にいえばその人が習得できようができまいがどちらでも変わりはありません。どうせ、そういう人はプログラミングを覚えたところで何かを作るということもないでしょうから。そういう人は単にプログラミングの「勉強」がしたいだけで、何かを作るためにプログラミングをしたいわけではないのです。

プログラミングの勉強がしたいならC言語が一番いい

 ここまでの議論を踏まえて勉三の持論を書きますが、プログラミングの「勉強」がしたいのであればC言語が一番いいと思います。

 まず、手続き型言語としてはその後の殆ど全ての言語に影響を与え、デファクトスタンダードの位置にあり、Cさえしっておけば他の言語にも応用がきくこと。また、どのOSでも無料で使える開発環境があるでしょうし、入門書の類も豊富です。

 たまに「C言語は難しいから初心者に向いていない」「もっと簡単に作れるものをすすめるべき」という人が言いますが、そもそもプログラミングの「勉強」がしたい人にとっては、簡単なことよりも、バランスよく勉強できることの方が大事でしょう。

 型やポインタ、メモリの概念を隠ぺいした言語であっても、あくまで隠蔽しているだけで、必ずそういった概念の理解はゆくゆくは必要になってきます。コンピュータでプログラミングをする以上、これらの概念は避けては通れないのです。であれば、プログラミングを勉強したいといってるのに、そういったことを教えないのは、数学を勉強したい人に難しいからといって三角関数や微分は教えないようなものでしょう。もちろん、内容を簡単にすれば理解できる確率は上がりますし、達成感はありますが、それは単に教えるべき内容を削っているだけに過ぎません。ゆとり教育みたいなものです。

 また、Cをやったことがなく C# やら Python やらから入ったとして、「Cではポインタという非常に難しいものがある」とか「Cではメモリ管理をきちんとやらないといけない。最近の言語はその辺気にしなくても書けるからバカでもできる」とか、そういう主張を目にすることは遅かれ早かれあると思います。

 その時、Cを知らないとそういった意見を信じてしまうしかなく、何か自分の知らない難しい概念があるぐらいにしか考えることができません。Cを勉強しない限り一生その影はついてきます。もし知っていれば「ポインタなんて難しくないでしょ。バカじゃない?」「メモリ管理は今やC++でさえスマートポインタが導入され、解放を極力自動化できるようにしている。それがベストプラクティスと認識されているのだから、GCに頼ることは何も悪いことではない」といった反論ができるようになります。勉三はこれもCをやっておくことの大きな利点だと思います。

 ちなみに私はC#やPythonも大好きな言語ですので、これらの言語を否定しているわけではありませんので、そこは誤解されないようにして頂ければと思います。

スポンサーリンク




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

メールアドレス:

ホームページアドレス:

コメント:

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

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