プログラミング言語論

関数の誕生(ジャンプ命令)

関数の誕生 関数を利用=「関数にジャンプ」してから「呼び出し先の最後で呼び出し元に戻る」 呼び出し元に戻るのもジャンプ命令。つまりどちらもジャンプ命令 前者はジャンプ先は固定なので実装はシンプルだが、後者は実行毎に異なるので実装に工夫が必要。…

1月4日の学び

最近はGithubに直接Haskell関連は記載するようになった。 結合法則 集合Sに二項演算○が定義されているとき、(a ○ b) ○ c = a ○ (b ○ c ) がSの任意の元a, b, cに対して成り立てばこの演算は結合的(結合法則を満たす)であるという。 加算や乗算は結合的。 …

12月11日の学び

そもそも型は、変数がメモリにアクセスする場合にint型ならXXXバイト、char型ならXXXバイトというようにアクセスするサイズを決めるために用いられると思っていたけど、それだけではないらしい。 型を用いることである種のバグが存在しないことにも繋がるら…

12月2日の学び(プログラミング言語の分類)

プログラミング言語の分類の助けになりそうな概念をつらつらとまとめてみた。 オブジェクト指向とか関数型言語とかは大丈夫そうなのでパス。 自分は型推論がない言語でないとやってられない! 型推論 周囲の文脈から型を推論すること 変数に対する型の記載が…

11月2日の学び

Stacktrace 例外のthrow箇所で文字列を引数に与えることで、スタックトレース時に例外の発生状況を確認できる。 if (Objects.isNull(nextState)) { throw new NextStateException("Current State is " + name + ". " + "Next Character is " + currentString…

11月1日の学び(その②)

例外処理は真剣に考えると凄く難しい(そして面白い)。 例外処理の目的 例外の回復 例外の通知 例外の回復 例えばDBのにアクセスできない場合にリトライするなど。 そもそも回復できるという保証はない。 その場合は呼び出し元に通知する。 例外の通知 呼び…

10月9日の学び

型安全 ・下の説明は凄い。BOF攻撃と型安全の間には関係があったのか。。。 ・プログラミング言語において「文法的な正しさ」と「意味的な正しさ」が一致するとは限らない。 ・「文法的に正しいが実装のない実装(=動作未定義)」が存在し、往々にしてセキ…

10月4日の学び

・Javaにおいてはコンストラクタが例外を発生させるのはあり。これがC++においては望ましくない。前者はガーベジコレクションの機能があるが、後者には存在しないのが理由。 ・Javaは良くも悪くも設計書通りに実装できる言語。ウォータフォール向きだと感じ…

動的型付け・静的型付け

動的型付け...変数の型をプログラムの実行前に規定しない。型宣言が不要。 静的型付け...変数の型をプログラムの実行前に規定する。型宣言が必要。