JavaScript勉強会

JavaScriptの学習日記

プログラミングの勉強は部品集めと同じ

新たにプログラミング言語を学ぶとき、他のプログラミング言語とほぼ同じような機能が用意されていることが分かります。

つまり、今どきのプログラミング言語なら、どれも似たようなもので、余程のことがない限り、全然見たことも聞いたこともないような突飛な機能はない、ということです。

 

でも、同じようなものばかり眺めていると、新鮮味が感じられず、飽きるのも早いですね。

新しいプログラミング言語を学ぶとき、この飽きを解消して、モチベーションを失わずに学習を継続できるような工夫も必要だと感じました。

 

プログラミング言語の文法、構文、書式を1つ1つ学んでいく過程は、「部品集め」に似ていると思いました。

 

部品集め

ハードウェアでもソフトウェアでも、全体を構成する1つ1つの部品を集めて、組み立てられます。

プログラムの場合、小さな関数とか機能を作って、それを組み合わせて大きなプログラムを作ります。

 

 

プログラムの部品の作り方は、プログラミング言語の文法や書き方を学べば理解できます。

で、そのプログラミング言語の文法も、いろいろな機能の集まりになっているので、基本的な1つ1つの機能を学べば、全体の文法が分かるようになっています。

 

この1つ1つの基本的な文法、構文、書式の知識を集めていく過程が、「部品集め」と同じだと思いました。

 

電子工作の部品集め

f:id:jsstudy:20190203104432j:plain

 

f:id:jsstudy:20190203104448j:plain

(via https://www.waolab.jp/news/entry-235/

 

f:id:jsstudy:20190203104501j:plain

(via https://nakanakanohi.at.webry.info/201810/article_4.html

 

f:id:jsstudy:20190203104515j:plain

(via https://www.street-academy.com/myclass/3837

 

UNIX哲学

小さなものから大きなものを作るのは、UNIX哲学と同じですね。

 

jsstudy.hatenablog.com

 

小さなプログラムを組み合わせて大きなシステムを作る。

 

[定理1]:スモール・イズ・ビューティフル

 

UNIXシェルのパイプラインのように、単純な機能をつなげて複雑な処理を実現

 

qiita.com

 

小さなプログラムという発想

なるべく小さな部品に分けよう」という主張や、「小さいほうが保守もテストも楽だ」というメリットはよく聞くが、「みんなそう思ってるのになぜプログラムは肥大化するの?」という点に言及しているのが面白かった。 

  • 一般にソフトウェアの開発者は、巨大なプログラムを書いてしまう。これは「あらゆる不測の事態に対応できるように」という誤った考えに基づくものだ
  • 一方、小さなプログラムの開発者は、未来の予測など最初からあきらめている。彼らの予測することは、明日作られるものは今日作っているものとは違うということでしかない。
  • 作った時には予測できなかったことに対しても、小さなプログラムなら直ちにそれに対処できる。
  • 現実には、その場かぎりの小さな解決策でも解決できない問題はそれほど多くはない。
  • creeping featurism(しのびよる多機能主義)

 

基礎を固める作業は、地味なので退屈に感じる場合が多いです。

すぐに大きな成果を得たいと焦ると、基礎の段階はじれったくて、イライラしたりもします。

でも、焦らなければ、贅沢に時間を使って、のんびりコツコツとマイペースで基礎固めができるでしょう。

 

  • 土台がしっかりしていると、その上に建てる建物もしっかりします。
  • 土台が弱いと、その上に建てる建物もグラグラになり、崩れます。

 

  • 基本を大切にしておくと、応用の段階に入ったときスピードを出せます。
  • 基本をおろそかにしていたら、応用の段階に入ってもスピードが出ません。

 

プログラミング言語の学習は、開発の基礎段階なので退屈ですが、1つ1つの基本事項を頭に叩き込んでおけば、実際の開発に着手したときには速いです。

部品をコツコツと集める努力は、その後に必ず報われるという「確実な報酬性」が、地味な学習を継続するためのモチベーションとして使えると思いました。

 

職人技

「全体は部分から成る」というプロセスは、工芸品の職人技を見ると実感できます。

 

YouTubeで装飾品(指輪)を作る職人技が紹介されていました。

最後の結果だけでなく、その連続した途中の過程も見ると、最初の段階にもちゃんと意味があると理解できます。

 

www.youtube.com

 

素晴らしい手技で、思わず見入ってしまいますねw

 

まとめ

  • プログラミング学習は、プログラミング言語の文法の習得が基本。
  • プログラミング言語の学習は、「部品集め」と似ている。
  • 小さな部品を集めて、大きな全体が作られている。
  • UNIX哲学と同じ。
  • なので、最初は焦らずに、部品集め=基礎固めを大切にする。
  • 基本を大切にしたら、応用に入った段階でその努力が報われる。

 

焦ってすぐに成果を得たい、楽して結果だけ得たい、と思っても、現実には「ないものねだり」はできません。

しかたないので、コツコツと基本を固めていこうと思います。

 

 

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学