なんか考えてることとか

変な人が主にプログラミング関連で考えていることをまとめる。

Haskellで再帰を心置きなく書いて良い理由(補足編)

opaupafz2.hatenablog.com前回、スタックメモリの観点からもHaskellで再帰をしても良いと言う理由と再帰を書く際に気を付けなければならないことについて書いた。今回は、その補足として「末尾再帰で書かざるを得ない状況」について書いていこうと思う。

Haskellで再帰を心置きなく書いて良い理由

Haskellのような純粋関数型プログラミング言語では基本破壊的代入が許されていないために、ループするための構文、または式が用意されていない。そのために、再帰を使ってループを表現する、というのが一般的となっている。しかし、手続き型言語に慣れたプロ…

なぜC言語のポインタは難しいと言われるのか

2021/09/04 最後に補足を追加 2021/09/05 「補足」項にて、ローカル文字列の注意点を追記 Cを学ぶにあたってよくぶち当たる壁と言われているのがポインタである。なぜポインタは難しいと言われるのか?今回はそもそもポインタとは何なのかを交えてわかりやす…

プログラミング言語であることの簡単な証明方法

2021/08/12 Brainf*ckインタプリタのコードにミスを見つけたので修正 Brainf*ckはスタック指向ではないため「Brainf*ckはスタック指向である」旨の記述を削除 ※注意※ 今回の記事は人によって考えが異なる可能性のある内容が含まれています! したがって今回…

コピーセマンティクスとムーブセマンティクス

2021/07/18 Rustのムーブによるエラーの解決策に参照を使った方法を追加 シャローコピーが採用されているプログラミング言語の例を記述 個人的に代入演算子=は甘く見ていると、自分の思っていた挙動とは違っていたために痛い目を見てしまうことが多いと思う…

C言語でオブジェクト指向プログラミング

2021/07/04 載せたコードにミスがあったので修正 「サブクラス」、「スーパークラス」を「派生クラス」、「基底クラス」に統一 前にRustはオブジェクト指向型言語ではないという記事を書いた後で、Twitterで以下のような発言をしていた。ふむ・・・今思った…

Pythonで始めるプロトタイプベースOOP

Pythonのクラスは他言語のクラスと比べると少し異質なものである。その性質は、プロトタイプベースオブジェクト指向プログラミング(以下OOP)をするには十分である。というわけでPythonでプロトタイプベースOOPをしてみる。

奇妙なプロトタイプベースオブジェクト指向型言語JavaScript

前の記事でオブジェクト指向にはざっくり2つの考え方があると書いた。それとは別にオブジェクト指向を実現するためのアプローチとしてプロトタイプベースのオブジェクト指向がある。

Rustがオブジェクト指向型言語ではないのとその理由

2021/06/12 「Rustにはメッセージングという概念がない」「Rustはオブジェクト指向型言語ではない」で説明不足な点を追記 Simulaベースのオブジェクト指向型言語としてRubyを入れていた→除外 2021/06/15 「追伸」追加 ja.wikipedia.org Rustはマルチパラダイ…

【補足】RustのトレイトはMixinか?など。

Rustのトレイトはトレイトではないの続編的な物。というか補足。

Rustのトレイトはトレイトではない

プログラミング言語「Rust」に登場する「トレイト(Traits)」は、実はSchärli氏らが提唱しているトレイトではないという話。これについて自分は幾度となくTwitterで発言しているのだが、あまり理解・納得されるようなツイートではないと感じたので、ここで…

ブログ新開設しました。

Ukicodeと申します。本日より「考えていることをまとめようかなー」という備忘録の意味を込めて、ブログを始めることにしました。実は昔ブログを開設していたのですが、正直言って黒歴史でした。 Twitterもやっているのですが、これも今までの自分を切り捨て…