ðªšåã·ã¹ãã (Type System)ãšã¯
ããã°ã©ãã³ã°èšèªã«ãããŠ, ãã®åŒãªã©ã®éšåãæã€å€ã, ãã®çš®é¡ (å (type)) ã«æ²¿ã£ãŠåé¡ã, ããã°ã©ã ãæ£ããæ¯ãèãããš, ãšãã£ãæ§è³ªã«ã€ããŠä¿èšŒããææ³ã§ãã.
åã·ã¹ãã ã¯, åçè«ã«åºã¥ããŠãã, ããã°ã©ãã³ã°èšèªã®çè«ã«ãããŠæã確ç«ããã軜éåœ¢åŒææ³ã§ãã.
ðå(Type)ã¯, äžè¬çã«ã¯ðããŒã¿æ§é ãšããŠç¥ãããŠãã. ãã®ã¡ã¢ã§ãããã®ããŒã¿æ§é ã¯ãã¡ãã«ãŸãšããŠ, ãã®ã¡ã¢ã§ã¯ã·ã¹ãã ãšããŠã®åŽé¢ããŸãšãã.
ðããŒã¿æœè±¡(Data Abstruction)
ããŒã¿æœè±¡, Data Abstruction. Expression Problem ã«ããã解決ç.
ããŒã¿æœè±¡ã®å®çŸæ¹æ³
Data Abstruction 㯠2 ã€ã®å®çŸæ¹æ³ããã.
- ðæœè±¡ããŒã¿å(ADT): å€ãšæäœãããããã«ä¿æãã(FP).
- ðãªããžã§ã¯ã(Object): å€ãšæäœãäžç·ã«ä¿æãã(OOP).
ð§©ããŒã¿æœè±¡ã®æ§æèŠçŽ
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 ããã¯ã©ã¹ (ã€ãŸã, ã«ããŽãªã«å±ããã¯ã©ã¹) ã®ã€ã³ã¹ã¿ã³ã¹ãæ ŒçŽã§ããããã«ãªã.
ãªããžã§ã¯ããå ±éã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããŠããå Žå, ä»ã®ãªããžã§ã¯ãã«çœ®ãæããããšãã§ãã.
- ðŠJava ã€ã³ã¿ãã§ãŒã¹ã¯éå±€ãæããªãåã·ã¹ãã
- ðæœè±¡ã¯ã©ã¹ãããã€ã³ã¿ãã§ãŒã¹ãéžã¶
ðŠããŒã¿æœè±¡ã®èª¬æãããã
CPMCPã«ããã説æ
CPMCP p431.
ããŒã¿æœè±¡ãå (Type) ãšãã£ãŠæžãŸãããšããã. ðæœè±¡ããŒã¿å(ADT)ãšã¯, ç¹æ®ãªããŒã¿æœè±¡. å€ã®éåãš, ããã«é¢ããæäœã®éå. 以äžã®ã³ã³ã»ããã«æ¯ããããŠãã
- High-order Programming (é«é颿°)
- Static Scoping (ã¯ããŒãžã£)
- Explicit State (æç€ºçç¶æ )
SICP ã«ããã説æ
ããŒã¿ãªããžã§ã¯ããã©ã衚çŸãããã«é¢ããããã°ã©ã ã®éšåã, ããŒã¿ãªããžã§ã¯ããã©ã䜿ããã«é¢ããããã°ã©ã ããéé¢ããæ¹æ³.(SICP)
constructor(æ§æå), selector(éžæå) ã«ãã£ãŠãã©ã䜿ããã«é¢ããããã°ã©ã ã® æœè±¡ã®å£ ãæ§ç¯ããæœè±¡ã¬ã€ã€ãæ§ç¯ãã.
ããããData Abstruction(ããŒã¿æœè±¡) ãšãã.
ããŒã¿ã«ããã¬ã€ã€ãŒæ§é ãæ§ç¯ããããšã§è€éãªã·ã¹ãã ãããŸãæ§ç¯ããããšãã§ãã.
æœè±¡ã®å£ãšããæå³ã¯ãå£ãã€ããããšã§ãããå Žæã§ã®å€æŽã屿çãªã¬ã€ã€ã®å€æŽã«å°ããããããšãã§ãã.
ðå(Type)
å, ããŒã¿å, Type. äºãã«é¢ä¿ããå€ã®éå.
(OOP ã«ãããŠã¯) å€ã®éåãšå€ã«å¯Ÿããæäœã®éåãäžç·ã«ãããã®.
ð忀æ»(Type Checking)
ããã°ã©ã ãåã«æŽåæ§ããããã©ããããã§ãã¯ããããš. åãã§ãã¯.
- ðã³ã³ãã€ã«: éçãã§ãã¯
- ðã€ã³ã¿ããªã¿: åçãã§ãã¯
ðåæšè«
åããããªããŠãæšè«ããŠã³ã³ãã€ã«æã«è£ã£ãŠãã§ãã¯.
ðåçåä»ãèšèª
- ãŸã€ããšçŽäŒ ããã°ã©ãã³ã°ã®ãªãã 第4åïŒ1ïŒ | æ¥çµã¯ãã¹ããã¯ïŒxTECHïŒ
- ãªããšRubyã®ããã®è§£èª¬ã«ããåçéçã®æ¯èŒèšäº(2005). ããããããw
ðéçåä»ãèšèª
ðåçåä»ã vs éçåä»ã
åçåä»ããšéçåä»ãããåé¡.
- åççä»ã .. å®è¡æã«åæ€æ»
- éççä»ã .. ã³ã³ãã€ã«æã«åæ€æ»
宿è«äºã®ããã«æ ¹æ·±ãã®ã§, ãã®discusstionããŸãšãã.
ðŠéçåãéªéã ãšèšã人ã¯éçãªäººéãæžããéçåçã³ãŒãã®é¢åã®ã€ãããç¥ããªã
;; https://x.com/ncaq/status/1699726265996263652
Clojureã®äœè ãDHHãããã ãã©ããåãé ã®è¯ã人(ç®è)ã®åºæºã§éçåãéªéãšãèšã£ãŠããã©ãéçãªäººéãæžããéçåçã³ãŒãã®é¢åãèŠãªããšãããªã人ã«ãšã£ãŠã¯ããŸã£ããã®ã§ã¯ãªãã
<2024-10-29 Tue 11:22>
ç¬ã£ãwww
ðåãã/åãªã
åãããããªããããåé¡.
- åãªã (untyped)
- åãã (typed)