前に、Pythonではクラスオブジェクトを扱うことで、プロトタイプベースなオブジェクト指向プログラミング(以下OOP)が可能であることを書いた。今回はその続編として、より快適にPythonでプロトタイプベースOOPが可能となるような実装を見つけたので書いていこうと思う。
続きを読むなぜC言語のポインタは難しいと言われるのか
- 2021/09/04 最後に補足を追加
- 2021/09/05 「補足」項にて、ローカル文字列の注意点を追記
Cを学ぶにあたってよくぶち当たる壁と言われているのがポインタである。
なぜポインタは難しいと言われるのか?今回はそもそもポインタとは何なのかを交えてわかりやすくなるように努めて解説していこうと思う。
続きを読むコピーセマンティクスとムーブセマンティクス
- 2021/07/18
- Rustのムーブによるエラーの解決策に参照を使った方法を追加
- シャローコピーが採用されているプログラミング言語の例を記述
- 2022/07/10
- シャローコピーの認識が大きく異なっていたので修正
- シャローコピーの例のJavaScriptコードをより見やすいものに変更
- 「シャローコピー」項の変更に伴い「ディープコピー」項の冒頭を変更
個人的に代入演算子=
は甘く見ていると、自分の思っていた挙動とは違っていたために痛い目を見てしまうことが多いと思う。というのも、代入演算子=
はプログラミング言語によってさまざまな意味を持つためだ。
今回は、代入演算子=
の挙動を理解する基本的なセマンティクスとしてコピーセマンティクスとムーブセマンティクスについて解説していこうと思う。
C言語でオブジェクト指向プログラミング
- 2021/07/04
- 載せたコードにミスがあったので修正
- 「サブクラス」、「スーパークラス」を「派生クラス」、「基底クラス」に統一
- 2022/08/05
- 「参照渡し」の誤用があったので修正
前にRustはオブジェクト指向型言語ではないという記事を書いた後で、Twitterで以下のような発言をしていた。
ふむ・・・今思ったのだが、CでOOPができると書いた手前CでOOPを実現すると言う記事を投稿していないのはどうかなと思った。
— Ukicode (@opaupafz2) 2021年6月12日
一度やったことがあるので、自信を持って「Cはオブジェクト指向型言語ではないがOOPは可能」と書いたが。
でも面倒なのよな。メソッドは簡単に実現できるけど、継承が。
今回はこれを有言実行しようと思う。
続きを読む