現代社会を生き抜く術を考える

考察と日記を織り交ぜたブログです。

文系学生が独学でプログラミングをどれだけ習得できるのかに関する考察②

前回の記事の続きである。

 7、書籍を用いた学習

Javaの学習で挫折をしたことに伴い、基本から少しずつ学習を進めていくことが重要であると考えた。

そこで、今度は基礎レベルを取り扱っている書籍を利用し、プログラミング言語の学習を進めることとした。

先ほどはJavaを学習したが、ここからはPythonを学ぶことにする。

使った書籍は、オライリージャパンが出版している初心者向けの本(名前はあまり覚えていないが、おそらく「入門Python3」か「Pythonチュートリアル」のどちらか)である。

オライリージャパンの書籍を読むこと自体がほとんど初めてのことであったが、内容は分かりやすく、基本的なレベルを順調に学習することができたと感じた。

8、書籍を用いた学習の成果

書籍1冊を2週間ほど取り組み、Pythonの基本的な文法事項(Print、四則演算、条件分岐など)は理解することができ、自分でコードを書くこともできるようになった。

だが繰り返し処理(forやwhileなど)は上手く仕組みが分からず、どのような処理なのかを理解することは難しかった。

挫折したJavaの学習に比べれば良い結果が得られたが、プログラミング言語を習得するという観点から考えると目標にはほど遠い状況であった。

9、インターネット上の無料サービスを用いた学習

より深くプログラミング言語を理解するために分かりやすいチュートリアルを探すことを模索した。

YouTubeや個人、企業のホームページ、ブログにはプログラミング言語が学習できるさまざまなコンテンツに溢れている。

ここで私が着目したのは「Atcoder(アットコーダー)」というサービスである。

これは日本企業が運営する競技プログラミングサイトであり、学生を中心に世界中の人たちがプログラミングスキルを競い合うことができる。

Atcoderをどのようにして知ったかはよく覚えてはいないが、競技プログラミングについて興味があり、初学者ながら挑戦してみようと思った。

Atcoderのサイトには最も多くのユーザーから利用されている言語、C++チュートリアルが掲載されている。

このチュートリアルは動画形式ではないが、しっかりとした目次が用意されており学びやすそうだと考え、Atcoderを使ってC++を勉強することにした。

10、学習の成果

Atcoderでのチュートリアルを使って1~2週間ほどC++の学習を続けた。

このチュートリアルは問題を解きながら学ぶことができ、解説もややこしくなく簡明であったため、Pythonの学習時にはあまり理解ができなかったforやwhileのやり方や使い方についても理解することができた。

Atcoderに登録してから約10日後には初めてコンテストに挑戦し、一番簡単な問題であるA問題を正答することができた。

約2週間後にはA問題よりも少し難易度が上がるB問題も正答でき、約1か月後のコンテストではやや難解であるC問題も突破できた。

レート*1についてはなかなか急速に上がることはなく、現在でも100~200の間を行ったり来たりしている状況ではあるが、基本的な知識は付けることができたと感じる。

11、他言語への応用

各のプログラミング言語は文法事項に類似している点が多いため、1つの言語をある程度習得すれば他言語も比較的容易に学習をすることができる。

そこで、前回は基本の理解が不十分であったPythonに再び戻り、学習を進めた。

ここではこれといった教材を利用することはせず、C++チュートリアルで学んだ事柄をPythonに応用した。

forやwhileをAtcoderチュートリアルで理解できたため、前回は上手くできなかった繰り返し処理も容易に行うことができ、基礎事項が身に付いていることを実感した。

12、プログラミングスキルの可視化

 Atcoderだけでなく、他にもプログラミングができるサイトを利用してみたいと考え、「Paiza(パイザ)」の利用も始めた。

まだ使い始めたばかりであるが、今のところC、Dランクの問題であれば難なく解くことができ、Bランクでは1問だけ正答することができた。

PaizaではAtcoderと同様に自分のレーティングを知ることができるが、その値はすぐに1500を超えた。

Atcoderのそれと比べるとレーティングの幅は狭いため実力を正確に測れているかどうかは分からないが、Paizaホームページに書かれている説明を読む限りでは、ある程度の実力があると捉えても良いだろう。

paizasupport.zendesk.com

 13、結果の分析、考察

これまで1年以上にわたってさまざまな手法を使ってプログラミング学習に取り組んだ。

結果を整理すると、インターネット上で利用できる教材を用いた場合に最も効率よく実力を上げることができたことが分かった。

書籍を利用した場合でも一定の成果はあったが、やや不完全な点もあった。

おそらく、コードを書きながらすぐに説明を参照できるという点でインターネットを用いて勉強をする方が効率的なのではないかと考えられる。

しかし、必ずしもインターネット上の教材こそが最適だと言うことはできない。

一連の学習では書籍を参照することはそれほど多くはなく、短期間だけ使用することが多かったため(図書館で借りた本を使っていたため)上手く内容を吸収できなかった可能性もある。

書籍にももちろん優れたものは数多く存在しているため、今後はより多くの書籍を用いた学習についても検討してみたい。

独学でのプログラミング学習は難しい点が多いが、より分かりやすい教材を用いて基本的な所から勉強を進めることが重要であることが分かった。

すぐにでも何かを開発したいと考える人もいるかもしれないが、まずは基礎事項を理解してから取り組むのが良いだろう。

 

*1:ユーザーのプログラミング能力を示す数値のこと。レベルが高いユーザーは数千単位でレートを獲得している。レートが400を超えるとある程度競技プログラミングに精通していると言える。