本6 コーディングを支える技術

 

これは本 Advent Calendar 2016 - Adventar6日目の記事です

6日目はコーディングを支える技術です。 プログラミング言語の主要な文法についてその文法がなぜ作られてきたのかについて書いてある本です。 特定の言語に依存した本ではないですが、 Pythonの講師でifやfor、関数などの文法の説明の参考にしようと読みました。

プログラミング言語は楽をするためにつくられたもの。ただし何を楽にしたかったのかは言語によって異なる。

ifやforの文法についてifやforのないアセンブリでの実装とCを比べたりしているので非常にわかりやすいです。

アセンブリを知らない人でもCのgotoを使った繰り返しの実装とforによる実装を比較して説明していたりするので わかりやすいです。

Pythonで教えるときはどうしようか。

関数の役割として理解と再利用を上げていたのは理解しやすいと思い、今度使います。

以前遭遇した問題

外のスコープの変数を再束縛できないという問題がPythonにはありました。変数宣言が必要のない言語だったため

こうなります。

x = 10

def f():
    x = 5 # 新しい変数をつくってしまう
    return

これはnonlocalという宣言を行うことで解決できるようになりました

x = 10
def f():
    nonlocal x
    x = 5
    return
 ```

---
プログラミングを経験したことのない人にプログラムがどのように動くのかとかをしっかりと伝えるのか、
それとも例えをふんだんに用いて教えるのか。これから考えていきたいです。
みなさんならどう教えますか?

借りて読んだのですが、今度買います。