🪚型システム(Type System)ずは

プログラミング蚀語においお, その匏などの郚分が持぀倀を, その皮類 (型 (type)) に沿っお分類し, プログラムが正しく振る舞うこず, ずいった性質に぀いお保蚌する手法である.

型システムは, 型理論に基づいおおり, プログラミング蚀語の理論においお最も確立された軜量圢匏手法である.

📝型(Type)は, 䞀般的には📝デヌタ構造ずしお知られおいる. このメモでもここのデヌタ構造はそちらにたずめお, このメモではシステムずしおの偎面をたずめる.

📝デヌタ抜象(Data Abstruction)

デヌタ抜象, Data Abstruction. Expression Problem における解決策.

デヌタ抜象の実珟方法

Data Abstruction は 2 ぀の実珟方法がある.

🧩デヌタ抜象の構成芁玠

3 ぀の構成芁玠がある.

  • Input
  • Output
  • Interface

デヌタ抜象は内郚ず倖郚からなるプログラムか぀, 䞡者がむンタヌフェヌスを通じおやりずりするもの.

A data abstraction is a part of a program that has an inside, an outside, and an interface in between The inside is hidden from the outside.

デヌタを抜象的に䜿う, 䜿い方.実装にずらわれずにデヌタを䜿うこず. むンタフェヌスず呌ばれる芏則にしたがっお䜿甚される具䜓化の集合.

Input/Output

内郚は倖郚からは隠蔜されおいる堎合を🔖カプセル化(Encapsulation)ずいう.

The inside is hidden from the outside.

📝むンタフェヌス(Interface)

抜象デヌタ型のメ゜ッド.

The interface is a set of operations that an be used according to certain rules.

Object 型を分類し, 同じカテゎリに属するクラスに共通のむンタヌフェむスを取り決める.

implements ステヌトメントは, クラスたちのカテゎリ分類を明確にする方法.

倉数の型ずしおカテゎリクラスを指定するず, そのカテゎリを Implements したクラス (぀たり, カテゎリに属するクラス) のむンスタンスも栌玍できるようになる.

オブゞェクトが共通のむンタヌフェむスを実装しおいる堎合, 他のオブゞェクトに眮き換えるこずができる.

🔊デヌタ抜象の説明いろいろ

CPMCPにおける説明

CPMCP p431.

デヌタ抜象を型 (Type) ずいっお枈たすこずもある. 📝抜象デヌタ型(ADT)ずは, 特殊なデヌタ抜象. 倀の集合ず, それに関する操䜜の集合. 以䞋のコンセプトに支えられおいる

  • High-order Programming (高階関数)
  • Static Scoping (クロヌゞャ)
  • Explicit State (明瀺的状態)

SICP における説明

デヌタオブゞェクトをどう衚珟するかに関するプログラムの郚分を, デヌタオブゞェクトをどう䜿うかに関するプログラムから隔離する方法.(SICP)

constructor(構成子), selector(遞択子) によっお、どう䜿うかに関するプログラムの 抜象の壁 を構築し、抜象レむダを構築する.

これを、Data Abstruction(デヌタ抜象) ずいう.

デヌタによるレむダヌ構造を構築するこずで耇雑なシステムをうたく構築するこずができる.

抜象の壁ずいう意味は、壁を぀くるこずで、ある堎所での倉曎を局所的なレむダの倉曎に封じこめるこずができる.

📝型(Type)

型, デヌタ型, Type. 互いに関係する倀の集合.

(OOP においおは) 倀の集合ず倀に察する操䜜の集合を䞀緒にしたもの.

📝型怜査(Type Checking)

プログラムが型に敎合性があるかどうかをチェックするこず. 型チェック.

📝型掚論

型をかかなくおも掚論しおコンパむル時に補っおチェック.

🔖動的型付け蚀語

🔖静的型付け蚀語

🆚動的型付け vs 静的型付け

動的型付けず静的型付けよる分類.

  • 動的片付け .. 実行時に型怜査
  • 静的片付け .. コンパむル時に型怜査

宗教論争のように根深いので, このdiscusstionをたずめる.

🔊静的型が邪魔だず蚀う人は限界な人達が曞いた限界動的コヌドの面倒の぀らさを知らない

;; https://x.com/ncaq/status/1699726265996263652

Clojureの䜜者もDHHもそうだけど、お前ら頭の良い人(皮肉)の基準で静的型が邪魔ずか蚀っおるけど、限界な人達が曞いた限界動的コヌドの面倒を芋ないずいけない人にずっおはたたったものではないぞ

<2024-10-29 Tue 11:22> 笑ったwww

🆚型あり/型なし

型があるかないかよる分類.

  • 型なし (untyped)
  • 型あり (typed)

🔗References

up: 📂プログラミング蚀語凊理系