人とコンピュータが会話をするためのコンピュータ言語。
いつしか人と人とコンピュータのためのものに。
その歴史の中でコンピュータ言語は進化し、変化を続けてきた。
今は当たり前のように存在する一つ一つに、
経緯、必要性、意味を付与してくれている。
そう、
新人の素朴な疑問に解を与えてくれる。
・・・かもしれない。
(以下抜粋。○:完全抜粋、●:簡略抜粋)
○Pythonでは、標準で添付されているdisライブラリを使って
VMを実行する命令列を表示させることができます。(P.20)
○Pythonに標準添付されているastライブラリを使えば、
特定のコードがどういう構文木になるかがわかります。(P.23)
●なぜfinallyを導入したのか
Microsoft扱いやすいエラー処理の仕組みとして、
構造化例外(Structured Exception Handling)を導入しました。
構造化例外を採用することにより、
コードの信頼性を高めることができます。
プログラムが予期せず終了した場合でも、
リソースを正しく破棄することができます。
またgotoステートメントや戻り値の入念なテストを必要としない、
簡素な構造化コードで対処できます。(P.68-69)
○「おかしくなったら処理を停止して速やかに報告すべき」
という設計思想は
「フェイルファースト」と呼ばれています。(P.76)
○C#は多くの部分でJavaを参考にしていますが、
検査例外は採用しませんでした。
C#の設計者AndersHejlsbergは、
「検査例外のアイディアには何も間違ったところはない。
検査例外はすばらしいものだ。
だけどJavaみたいな実装のしかたでは、
いくつかの問題をなくすかわりに別の問題を持ち込んだだけだ。
もっとよい方法が見つかればC#にも検査例外を入れるだろう。」(P.80)
●型ですべての仕様を表現する世界が来るか
今でも人間がドキュメントやソースコードから、
「このデータを入力したらどれくらいの処理時間がかかるのか?」
「この処理の過程でどれくらいのメモリが必要になるのか?」
「スレッドの中でこの処理を使っても大丈夫か?」
などを判断しているのが現状です。(P.124)
○ここで日本のコンピュータのパイオニア、
後藤英一の文章を引用したいと思います。(P.132)
●NUL文字にまつわる不具合の例(P.164)
#include
#include
int main(){
int x = 9252;
char str[3] = “abc”;
char str[3] = “def”;
printf(“%s\n”, str2);
printf(“%zu\n, strlen(str2));
return 0;
}
出力結果は、
defabc$$
8
となる。
これはdefの後ろのnullがabcに置き換えられ、
さらにその後ろにxの9252が格納されてしまっているため。
●オブジェクト指向とは何か(P.186)
2人のオブジェクト指向言語の設計者が、
「オブジェクト指向」という言葉をまったく違う意味で使っています。
・BjarneStroustrup
・C++の設計者
・オブジェクト指向プログラミングとは
ユーザ定義型と敬称を使ったプログラミングのことだ
・AlanKey
・Smalltalkの設計者
・「オブジェクト指向」という言葉の発明者
・オブジェクト指向とは
『状態を持ったオブジェクトが
メッセージを送りあうことでコミュニケーションする』
というモデルでプログラムを表現することだ
●クラスが持つ3つの役割(P.210)
1.まとまったものを作る生成器
2.どういう操作が可能かという仕様
3.コードを再利用する単位
いつしか人と人とコンピュータのためのものに。
その歴史の中でコンピュータ言語は進化し、変化を続けてきた。
今は当たり前のように存在する一つ一つに、
経緯、必要性、意味を付与してくれている。
そう、
新人の素朴な疑問に解を与えてくれる。
・・・かもしれない。
(以下抜粋。○:完全抜粋、●:簡略抜粋)
○Pythonでは、標準で添付されているdisライブラリを使って
VMを実行する命令列を表示させることができます。(P.20)
○Pythonに標準添付されているastライブラリを使えば、
特定のコードがどういう構文木になるかがわかります。(P.23)
●なぜfinallyを導入したのか
Microsoft扱いやすいエラー処理の仕組みとして、
構造化例外(Structured Exception Handling)を導入しました。
構造化例外を採用することにより、
コードの信頼性を高めることができます。
プログラムが予期せず終了した場合でも、
リソースを正しく破棄することができます。
またgotoステートメントや戻り値の入念なテストを必要としない、
簡素な構造化コードで対処できます。(P.68-69)
○「おかしくなったら処理を停止して速やかに報告すべき」
という設計思想は
「フェイルファースト」と呼ばれています。(P.76)
○C#は多くの部分でJavaを参考にしていますが、
検査例外は採用しませんでした。
C#の設計者AndersHejlsbergは、
「検査例外のアイディアには何も間違ったところはない。
検査例外はすばらしいものだ。
だけどJavaみたいな実装のしかたでは、
いくつかの問題をなくすかわりに別の問題を持ち込んだだけだ。
もっとよい方法が見つかればC#にも検査例外を入れるだろう。」(P.80)
●型ですべての仕様を表現する世界が来るか
今でも人間がドキュメントやソースコードから、
「このデータを入力したらどれくらいの処理時間がかかるのか?」
「この処理の過程でどれくらいのメモリが必要になるのか?」
「スレッドの中でこの処理を使っても大丈夫か?」
などを判断しているのが現状です。(P.124)
○ここで日本のコンピュータのパイオニア、
後藤英一の文章を引用したいと思います。(P.132)
●NUL文字にまつわる不具合の例(P.164)
#include
#include
int main(){
int x = 9252;
char str[3] = “abc”;
char str[3] = “def”;
printf(“%s\n”, str2);
printf(“%zu\n, strlen(str2));
return 0;
}
出力結果は、
defabc$$
8
となる。
これはdefの後ろのnullがabcに置き換えられ、
さらにその後ろにxの9252が格納されてしまっているため。
●オブジェクト指向とは何か(P.186)
2人のオブジェクト指向言語の設計者が、
「オブジェクト指向」という言葉をまったく違う意味で使っています。
・BjarneStroustrup
・C++の設計者
・オブジェクト指向プログラミングとは
ユーザ定義型と敬称を使ったプログラミングのことだ
・AlanKey
・Smalltalkの設計者
・「オブジェクト指向」という言葉の発明者
・オブジェクト指向とは
『状態を持ったオブジェクトが
メッセージを送りあうことでコミュニケーションする』
というモデルでプログラムを表現することだ
●クラスが持つ3つの役割(P.210)
1.まとまったものを作る生成器
2.どういう操作が可能かという仕様
3.コードを再利用する単位
コメント
コメントを投稿