プログラミング学習の壁

環境構築の壁

プログラミングを始めるには、プログラムを書いたり実行したりするための開発環境が必要になります。

90年代の終わり頃までは、Windowsで動作するアプリケーションを書くためには数万円(場合によっては何十万円も)する開発環境を導入する必要がありました。この頃はまだインターネットもそれほど普及しておらず、今のように検索すればどんな情報でも出てきたわけではありませんでしたので、プログラミングに関する技術情報を得るためにはもっぱら専門書籍を買い漁るしかありませんでした。

現在ではWindowsで使える無料の開発環境が多く登場し、昔と比べれば開発環境を構築する敷居は格段に低くなっています。しかし、それでもスマホのアプリをインストールするような手軽さではありません。プログラムを書くのに必要なライブラリ(プログラム部品の集まり)を自力で導入したり、コーディングのためにエディタをセットアップしたりと、プログラムを書き始めるまでの準備がなかなか大変なものが多いのが現状です。

環境構築の時点で挫折しないためにも、なるべく簡単にセットアップできる言語を選びたいものです。

  • 簡単にインストールできてすぐに使い始められること
  • プログラムを書き始めるために必要なもの一式が最初からすべて揃っていること
  • インターネットで技術情報を収集しやすいこと
  • 関連書籍が多数出版されていること
  • 教育・研究・実務の分野で積極的に使われている言語であること
  • ライブラリが豊富にあり、新たに導入するのも簡単であること

プログラミングを初めて勉強するなら、まずはこのような条件を満たす言語を選ぶべきです。実際、選択肢はそう多くありません。

そして、これらの条件を満たすプログラミング言語を挙げるとなると、筆頭にくるのはやはりPythonということになります。

数年前、マサチューセッツ工科大学(MIT)の計算機科学の初学者向けカリキュラムで使用されるプログラミング言語が、Lispの一種であるSchemeからPythonへと切り替えられて話題になりましたが、インストールするだけで何から何までオールインワンの学習環境が無料で構築できてしまうPythonは、学生にとってまさにうってつけの言語であるといえます。

また、Google Colaboratoryという無料のクラウドサービスを使えば、手元のパソコンにPythonをインストールすることなくGoogleのクラウドサーバ上でPythonのコードを実行させ、結果をブラウザに表示させることもできます。このサービスは主に機械学習の研究プロジェクトのためのものですが、こんな至れり尽くせりのサービスを誰でも無料で利用できるなんてすごい時代になったものだとつくづく思います。

専門用語の壁

コンピュータ関連の用語は一般の人にとってかなり難解です。これは単純に英語が多いので難解というわけではありません。むしろ英語の専門用語を日本語に訳したものに難解なものが多いような気がします。

例えば、「引数」という用語。インスウと読んでしまいそうですが、正しくはヒキスウと読みます。これはアーギュメントの訳語ですが、アーギュメントと言われてもなんのことだかわからないでしょう。たとえば三角関数を例に取れば、cos(1.2)の1.2の部分のことです。

「仮引数」という用語もあります。カリヒキスウまたはカビキスウと読みますが、これはパラメータの訳語です。数学の関数定義を例にすれば、f(x,y)=x+yのxとyのことです。なんだかややこしいですね。

そして、様々な誤解のもとになっているのが「関数」という訳語です。そもそもは数学用語ですが、コンピュータの世界でもだいたい同じ意味で使われています。関数というのはファンクションの訳語です。ファンクションとは機能のことなので、本来、「数」とはなんの関係もないものですが、関数という字面から「数に関係する何か」というイメージを持たれがちです。「変数」も数とついてはいますが、バリアブルの訳語なのでそもそも数とは関係の無いものです。

このように、必ずしも関係が無いにもかかわらず数を連想させてしまう訳語がプログラミング関連の専門用語にはたくさんあります。プログラマはデータのことを「値」といったりしますが、これも数値であるとは限りません。

専門用語というのは覚えてしまえば何ということはないものですが、初学者はこんな用語ひとつでもつまずいてしまう恐れがあります。直感的に理解しにくい専門用語の多さも、プログラミングの独習が難しい理由のひとつなのではないでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください