プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

プログラミング環境の選び方


プログラミングを学習するには、自分でプログラムを書いてみるのが一番です。何よりプログラムを作っていて楽しいかどうか。これが一番大切なことかもしれません。何が楽しいかは人によると思いますが「これは楽しい!」と感じるプログラミング言語や環境があれば、それを使うといいでしょう。

プログラミングの学習方法


プログラミング入門:ITpro


言うまでもなくプログラミングはコンピュータで何らかの仕事を行うためのプログラムを作成する作業ですが、どのようにしてそのやり方を学んだのか、よく覚えていません。なんとなく無意識のうちにできるようになっていたような気がします。日本語をしゃべれるけれど、どのようにしてしゃべれるようになったのか覚えていないのと同じようなものでしょうか。


とはいうものの、最初は何か覚えるきっかけがあったはずです。初心を振り返ることで普段は気がつかない何かを見つけることができるかもしれません。そして、その体験がこれからプログラミングを学ぼうと考えている人へのヒントになれば嬉しいですね。


だいぶ昔のことなので記憶があいまいなところもありますが、プログラミングを学習した過程を思い出してみることにします。

プログラミングを学んだ過程

出会い


最初プログラミングは私のようなものができるものではないと思っていました。難しそうな記号の羅列、それらを自由自在に操って様々なプログラムを作る人はきっと数学や難しい理論ができる人なのだろう。数学の苦手な私にはとてもマネできないと思っていたのです。


そして出会ったのがBASICのプログラム。英語っぽい表現で書かれたこの言語は、おぼろげながら私にプログラムのイメージを教えてくれました。一見複雑怪奇に見えるそれは単純な命令群から成り立っていたのです。BASICは命令も少なく「これならぼくにもできるかも」と感じました。マイコンショップで命令を実行しては結果を見る。そんな繰り返しから次第にプログラミングを覚えていきました。


また、当時は本や雑誌が貴重な情報源でした。コンピュータの原理や新しい技術などの多くは本から学びました。当時はこづかいも少なくほとんど立ち読みでしたが。たまに買うと、記事は言うに及ばず、広告や読者の一言コーナーなど、それこそ穴のあくほど眺めたものです。


やがて親にPC-8001というマイコンを買ってもらいます。最初はBASICでプログラムを作っていましたが、やがて限界を感じ、機械語を使ってプログラムを組み始めます。機械語はBASICより難しいものでしたが、命令そのものはシンプルなので小さなルーチンを組むことで少しずつ作っていくことができました。

大型コンピュータの世界


そして私はソフトウェア開発の会社に就職します。初めて出会う大型コンピュータの世界はマイコンしか知らなかった私にこの世界の奥深さを教えてくれました。マイコンではその全てをプログラムで制御できましたが、大型コンピュータにはOSというものがあって、アプリケーションはOSからCPUやメモリ・ディスクなどのハードウェア資源をもらって動いていることを知ります。


OSや周辺ソフトウェアは多くのサービスコールと制御テーブルから成り立っていました。システムを使うには多くを学ばなくてはなりません。さらに大型コンピュータは利用できる時間が限られていて、いかに短い時間でソフトウェアをデバッグできるかが重要でした。そのため机上デバッグやコードレビューに多くの時間が使われていたように思います。


技術的には構造化プログラミングやポインタの概念などを学んだのがこの頃です。PL/I系の言語がメインに使われていて、ハードウェアに近い操作ができるような拡張がされていたと記憶しています。

CとUNIX


次に私はUNIXというOSを自社のコンピュータに移植するというプロジェクトに参加します。名前だけは聞いたことがあったものの、やってみると分からないことだらけ。当時は文献も少なく、手探り状態で移植作業をしていました。C言語というものに初めてふれたのもこの頃。


CはPL/Iに似ていたので、言語を理解するのにそれほど時間はかかりませんでした。それはUNIXの設計思想を色濃く反映していて、大型コンピュータに比べると、とにかくシンプルにできていました。理解に苦しむ表現は、展開されたアセンブラを見て理解していましたね(笑)


私がUNIXから学んだことはシンプルなプログラムこそ美しいということです。それまで私はプログラムは難しく書いた方がかっこいいと思っていました。しかし、実は難しく書くのは簡単で、誰にも分かるようにシンプルに書くことが何より難しいことを思い知らされます。構造化プログラミングやUNIX流プログラムは今でも私に大きな影響を与えています。


この後も様々なシステムやプログラミング言語にふれることになるのですが、それはまた別の機会にでも。

どんなプログラミング環境がいいか


ざっとですが、私がプログラミングを学んだ過程を述べてきました。振り返ってみると、私は段階的に学ぶことができて幸せだったと思います。最初は単純なマイコン。次にOSの概論を学び、さらにOSの設計を垣間見る。これがいきなり難しいところから入っていたら、途中であきらめていたかもしれません。


これからプログラミングを学ぼうと考えている人はどのように学習していけばよいのでしょうか。プログラミングを学習するには、自分でプログラムを書いてみるのが一番です。しかし、昔と違って今は多くのプログラミング言語や環境があります。まずはいろいろ試してみて、自分にあうと思った環境を見つけるのがいいと思います。


以下に私の考える言語や環境の選び方を書いてみました。これを見て一人でも多くのプログラマが増えてくれれば、こんなに嬉しいことはないですね。

使うまでに多くを学ぶ必要がない


プログラミングを学習するには、自分でプログラムを書いてみるのが一番です。プログラムにデータを与えて結果を画面に出力する。そういったことができるようになるまで多くのマニュアルや書籍を見なくてはならない言語はさけましょう。自分が本来やりたいことに到達するまでに疲れてしまいますから。


使い方のサンプルが多いのもいいですが、理想は覚えることが少なくて、すぐに学ぶことができそうな言語を探しましょう。

すぐに試すことができる


プログラミングは施行錯誤の連続です。「これはどういう機能なんだろう」そう思った時ちょこっと書いてすぐに実験することができる言語がよいでしょう。ふだん使っているパソコンですぐに実行できる環境であることも大切です。

最初はGUIよりコンソールアプリ


WindowsやMacのグラフィカルなユーザインタフェース(GUI)は使うには優しいですが、作るのは面倒なことが多いです。コマンドプロンプト等から実行できるアプリは地味ですが、プログラミングが楽で本質的な部分に専念できます。もしGUIの設計が楽な言語であればこの限りではありませんが。

作っていて楽しいこと


何よりプログラムを作っていて楽しいかどうか。これが一番大切なことかもしれません。何が楽しいかは人によると思いますが「これは楽しい!」と感じるプログラミング言語や環境があれば、それを使うといいでしょう。




過去の関連記事:
yasuhoの隠れ家 - どのプログラミング言語を学ぶべきか