綾log(x^b)

毎日眠たい

馬鹿にプログラミングは難しい

最近プログラミングを勉強している。英語と記号の羅列で何をしているのかさっぱり分からない。入門書に書いてあるPythonC言語のコードは読めるし書けるが、ある程度複雑になってくると分からない。シェルスクリプトを用いたプログラミングは複雑で理解すら出来ない。

プログラミングというのは独学が基本である。自分でコードや説明を読みながら理解して書いて失敗して書き直してを延々と繰り返してやっとある程度出来るようになる。調べる力と理解する力が必要である。当然忍耐力も求められる。

プログラミングが出来ない人は基本的に勉強が足りていない。数学のように一つ一つの理解が難しいわけではない。文法を覚えたりコンピュータの仕組みを理解する作業をしていないから難しいのである。時間を掛けて勉強すればある程度の知識は身に付き、程度に差はあれど、ある程度理解できるようになる。


初心者にとって一番の壁は環境構築である。ネットで調べると色々出てくるし入門本にも色々書いてある。だがコンピュータに疎い人間には当たり前に出てくるPC用語を理解出来ない。ファイルとフォルダって何が違うの?エクスプローラーって何?拡張子って何の意味があるの?何をどこに保存すればいいの?そういうレベルである。少なくとも私はそうだった。出来る人は皆言う、「調べたら出てくるじゃん」、その通りである。後から読むと普通に理解できる、だがやる前は読んでもよく分からない。些細なことに疑問を抱き思わぬところで引っ掛かる、中々前に進まない。書いて保存して実行する、たったこれだけのことが出来ない。いくら文法を勉強しても世界に挨拶すら出来ないのである。

私も環境構築には相当苦戦した。調べても意味不明な用語や意味不明な概念ばかり。Pythonはanacondaがいいらしい、取り合えずインストールしよう。あれ、何をどこに保存すればいいんだろう。どうやって開くんだ?なんか黒い画面が出てきた、何これ、分からない。数か月後、たまたま読んだ本に「黒い画面にはpythonと打てばいいよ!」と書いてあった、打ってみると起動出来た。高性能電卓の誕生である。1行だけ書けるようになった。ファイルの呼び出し方法や、spyderやJupyter notebookの使い方を知るのはもっと後の話である。

C言語にも苦戦した。統合開発環境?なくても出来る?コンパイル?よく分からない言葉や概念がたくさん出てくる。色々悩んでいると、「atomが簡単でオススメだよー」と教えてもらった。色々なサイトを見ながらatomで環境を作った。慣れるまで保存や実行に四苦八苦していたが、なんとか書けるようになった。教えてくれた人には感謝の極みである。

ようやく環境を構築できたら今度はエラー地獄である。おかしい、文法は合ってるはずなのにエラーが出てくる。ファイルが存在しないと言われる、保存したはずなのに。確認する。確かにファイルは存在する。もしかして保存場所がおかしいのか?そう思って場所を移動する。まだエラーが出る。なぜ?調べても分からない。拡張子がおかしいのでは?調べる。確かにこれであってるはずだ。ファイルの情報を見る。拡張子が間違っている、どういうことだ、調べる。デフォルトで拡張子が非表示になっているらしい、表示されている文字を拡張子だと勘違いしていたようだ。これでやっと実行出来る、出来た。ここまで数日掛かった。度重なるエラーに嫌気が差し、日を跨いでしまった。一度分かると後は簡単である。同じようなエラーが起きても同じように調べれば対処出来る。色々試して新しい環境で実行する度にファイルが見つからないと言われる。色々して解決する、もはや恒例行事である。

そもそもプログラムって何が出来るんだ?今はこの段階にいる。プログラミングでやったことといえば世界に挨拶して四則演算をしたくらいである。ループや分岐を駆使して簡単な数値解析をした程度である。まだ何かを作れるほどの知識はない。正直あまり楽しくない。当たり前だ、まだ自分で何も書いていない。書き写しや簡単な計算しかやっていないのだから楽しいわけがない。自分で何かを作って初めてプログラミングを楽しいと思えるのだろう。


コンピュータ素人にとってプログラミングは語学である。よく分からないものに英語や記号を打ち込んでerrorと共に大量の英語が表示される。ひたすら新しい文法を覚えて書いての繰り返し。ある程度上達すればアルゴリズムなど数学的な要素が出てくるのだろうが、とにかく最初は異世界語を理解するところから始まる。話の通じないコンピュータとの対話である。彼らは機械語のネイティブであり第一外国語は英語である、我々と一緒だ。あらゆる条件を揃えて初めて思い通りに動いてくれる。

色々言ってきたがプログラミングはやれば出来るようになるのである。分からないなら調べる、分からないから試す、分からないので調べる、調べる、試す、調べる、その繰り返しである。初学の段階では書いた内容によるエラーよりもコンピュータの知識不足によるエラーの方が圧倒的に多い。プログラミング教育で真っ先に教えるべきは文法ではなくコンピュータの基礎知識ではないかと思う。

私はコンピュータについてあまりよく知らないし英語だって読めない。毎日何時間も必死に取り組めるような性格でもない。Excelの勉強してた方が将来の役に立つのでは?といったレベルである。それでも私は勉強をしている、道のりは長い。馬鹿にプログラミングは難しいのである。