ãªãã¸ã§ã¯ãæåè¨èªã®è©±ãããã¨ãã«ä¾¿å©ãªããã«ãJavaãä¸å¿ã«ããã°ã©ãã³ã°è¨èªãã¾ã¨ãã¦ã¿ã¾ããã
Javaã«å½±é¿ä¸ããããJavaããå½±é¿ãåããããã¨ããæãã§ããã
Simula
ãªãã¸ã§ã¯ãæåã¯ããããå§ã¾ã£ãã¨è¨ããã¦ãã¾ãã
ã¯ã©ã¹ããªãã¸ã§ã¯ããç¶æ¿ãä»®æ³é¢æ°(å¤æ
)ã¨ãã£ãããªãã¸ã§ã¯ãæåã®åºæ¬è¦ç´ ãåãã£ã¦ãã¾ããã
ãã ããããªãã¸ã§ã¯ãæåãã¨ããè¨èã¯çã¾ãã¦ãã¾ããã
Smalltalk
Simulaããçºæ³ãå¾ã¦ããªãã¸ã§ã¯ãæåãã¨ããè¨èãçãã ã®ã¯ã¢ã©ã³ã»ã±ã¤ã§ããã
ããããã¢ãã«ã¨ãã¦ã¯Simulaã¨ã¯ç°ãªãã¡ãã»ã¼ã¸ã³ã°ã主ä½ã¨ãããã®ã§ãããã¾ããã¢ã©ã³ã»ã±ã¤ã®ããªãã¸ã§ã¯ãæåãã¯ããã°ã©ãã³ã°ã®ãã©ãã¤ã ã ãã§ã¯ãªãã人ãã³ã³ãã¥ã¼ã¿ãã©ã®ããã«æ±ããã¨ããã¡ã¿ãã¡ã§ããããã¤ãããã¯ã¨ãããã¼ãã¦ã§ã¢ããã®ã¦ã¼ã¶ã¼ã¤ã³ã¿ãã§ã¼ã¹ãå«ããã®ã§ããã
Smalltalkã¯ããã®ãããªææ³ã§ã³ã³ãã¥ã¼ã¿ãæ±ãããã®ç°å¢ã¨ãã¦éçºããã¾ããã
ããã§Smalltalkã«é¢ãã¦ã¯3ã¤ã®ãã¼ã¸ã§ã³ãåãã¦ãã¾ãããããã¯ããªãã¸ã§ã¯ãæåãã®æºæµã¨ãã¦ã®Smalltalkãæ±ãã¨ãã«ããã¼ã¸ã§ã³éã®å¤é·ãéè¦ã«ãªãããã§ãã
ã¡ãã»ã¼ã¸ã³ã°ã®ãªãã¸ã§ã¯ãæåã«ããã³ã³ãã¥ã¼ãã£ã³ã°ãå®ç¾ããããã«éçºãããæåã®ãã¼ã¸ã§ã³ã¯Smalltalk 72ã§ãããSmalltalk-76ã§ã¯Simulaã®ãªãã¸ã§ã¯ãæåã®ãããªã¯ã©ã¹ãç¶æ¿ãåãå
¥ãã¦ãã¾ãã
ããã¦ãSmalltalk-80ã¨ãã¦åç¨åããç¾å ´ã®ããã°ã©ãã使ãããã«ãªã£ãã®ã§ããããã®ãã¼ã¸ã§ã³ã«é¢ãã¦ã¢ã©ã³ã»ã±ã¤ã¯ãSmalltalk-80ã¯ç§ã®æãé¢ããLisp好ãã®å½±é¿ãå¼·ãåãã¦ããã®ãããªãã¨ãè¨ã£ãããã§ãã
https://matz.rubyist.net/20060608.html
ã¾ããã¨ã³ãã¦ã¼ã¶ã¼ã§ã¯ãªãéçºç¾å ´ã®ããã°ã©ãã使ãããã«ãªã£ããã¨ããSmalltalkã®æ»ãã¨ã表ç¾ãã¦ããããã§ãã
https://sumim.hatenablog.com/entry/20060612/p1
ã¤ã¾ããåç¨åããåºãéçºã§ä½¿ãããããã«ãªã£ãSmalltalkããã¢ã©ã³ã»ã±ã¤ã®ãªãã¸ã§ã¯ãæåãå®ç¾ããè¨èªãã¨ããã®ã¯ãã¾ãé©åã§ã¯ãªãã¨ãããã¨ã§ãã
C++ã®ãªãã¸ã§ã¯ãæåã¨Smalltalkã®ãªãã¸ã§ã¯ãæåã¯éãã¨ãããããã¨ãããã¾ãããGoFã®ããã¶ã¤ã³ãã¿ã¼ã³ããSmalltalkã§æ´çããåºçãããã¨ãã«C++ã«æ¸ãç´ããããã¨ãããããããã両è
ã¨ãåãåé¡ãçºçãåããç¶æ¿ã使ã£ã解決æ¹æ³ãã¨ããã¨ã«ãªããããä¼¼ã¦ããã¨ãããã¨ã«ãªãã¾ãã
C++
C++ã¯Cã«Simulaã®ã¯ã©ã¹ãå°å
¥ãããã®ã§ãã
詳ããã¯ãã¡ãã®æ¬ã«ã
Java
Javaã¯C++ããã¼ã¹ã«ããããã«è¨ããã¾ãããå®éã«ã¯Objective-Cã®å¾ç¶ã§ããObjective-Cã«C++ã®æ§æãè¼ãããã¨ããã®ãé©åã ã¨æãã¾ãã
ã¤ã³ã¿ãã§ã¼ã¹ã¯Objective-Cã®ãããã³ã«ã§ãããã¯ã©ã¹ã大æåã¯ãããã¡ã½ããããã£ã¼ã«ãã¯å°æåã¨ããå½åè¦ç´ãObjective-Cã¨åæ§ã§ãã
Objective-Cã¯Cã«Smalltalkã®ãªãã¸ã§ã¯ãæåãæã£ã¦ãããã®ãªã®ã§ãJavaã®ãªãã¸ã§ã¯ãæåãSmalltalkç±æ¥ã¨è¨ãã¾ãã
JavaãC++ã§ã¯ãªãObjective-Cã®æµãã§ããã¨ãã話ã¯ãJavaã®éçºè
ã®ã²ã¨ãã§ããPatrick Naughtonã®ã¡ã¼ã«ã®ã¢ã¼ã«ã¤ãã«ã
https://web.archive.org/web/20110713014816/http://cs.gmu.edu/~sean/stuff/java-objc.html
JavaScript
ã¯ã©ã¹ãã¤ã³ã¹ã¿ã³ã¹ããªãã¸ã§ã¯ãã¨ããç¨èªã®åºå¥ã«æ©ãã ãã¨ã¯ãªãã§ããããï¼ãã¯ã©ã¹ã®ãªãã¸ã§ã¯ããã¨è¨ã£ãã¨ããã¯ã©ã¹ã表ããªãã¸ã§ã¯ããªã®ãã¯ã©ã¹ãã¤ã³ã¹ã¿ã³ã¹åããããªãã¸ã§ã¯ããªã®ãããããããã®èª¬æãªã«ãã£ã¦ãããããããããã«ãªã£ãããã¦ãªãã§ããããã
ããã§ãSmalltalkãããªãã¸ã§ã¯ãæåã®çºæ³ããã¤ã¤ãå
¨é¨ãªãã¸ã§ã¯ãã§ãããããæ°ãããªãã¸ã§ã¯ããä½ãã¨ãã«ã¯ããããã¿ã¤ãã«ãªããªãã¸ã§ã¯ããã³ãã¼ããã°ãããããã¨ããèãã®ãã¨Selfã¨ããè¨èªãã§ãã¾ããã
To make a new object in SELF, an existing object (called the prototype) is simply cloned (shallow-copied)
https://dl.acm.org/doi/pdf/10.1145/74878.74884
ããã¦ãã¤ã³ã¿ã¼ããããæµè¡ã£ãã¨ãã«ãã©ã¦ã¶ã®ä¸ã§ããã°ã©ã ãåãããããªã¼ã¨Breandan Eichãå¼ãã§ãã¦Schemeãåãããããã¨ããã¨ãããå½æ話é¡ã«ãªã£ã¦ããJavaã«ä¼¼ããå¿ è¦ãããã¨ãããã¨ã§Selfã®ãããã¿ã¤ããã¼ã¹ã®ãªãã¸ã§ã¯ãæåãåãè¾¼ã¿ã¤ã¤Javaã®è¦ãç®ã¨ã©ã¤ãã©ãªããã¶ãã¦JavaScriptãã§ããããã¾ããã
ã©ã¤ãã©ãªããã®ã¾ã¾ç§»æ¤ãããããjava.util.Dateã®2000å¹´ãã°ã¾ã§ãã£ã¦ãã¦ãã¾ã£ãã¨å¾æãã¦ãã¾ããããã¨ããªããã£ããã
JavaScriptèªçã®è©±ã¯ãã¡ã
https://brendaneich.com/2008/04/popularity/
Câ¯
C#ã¸ã¨è³ãéãé·ãã§ããã
ã¾ãWindowsç¨ã«Delphiã¨ããéçºç°å¢ãããã¾ãããããã¯Pascalã¨ããè¨èªã«ãªãã¸ã§ã¯ãæåãã®ããObject Pascalã¨ããè¨èªã使ã£ã¦ãã¾ãããVBã®ãããªéçºç°å¢ã§ãããVBããããªãããã¨ããè©å¤ã«ã
ããã¦ãDelphiã¨åããã¨ãC++ã§ãããããã«ã¨ãC++Builderãéçºããã¾ããããã®ã¨ãããã¿ã³ã®ã¤ãã³ããã³ãã©ãç»é²ããã¨ãã«é¢æ°ãã¤ã³ã¿ã«ã¤ãã³ãã®åãåããªãã¸ã§ã¯ããçµã³ä»ããå¿
è¦ããã£ãããã__closureã¨ããæ¡å¼µãè¡ããã¦ãã¾ãã
ãã¦ããããªã¨ããã«Javaãæµè¡ã£ã¦ãã¾ãããMicrosoftã¨ãã¦ã¯Javaã§Windowsã¢ããªãä½ããããã«ããããããã«Delphi/C++Bulderã®éçºè
ã§ããAnders HejlsbergããBorlandã®éçºç°å¢é¨éå»æ¢ã§ä¼ç¤¾ã追ãåºãããã®ã§ãJavaãæ¡å¼µãã¦J++ãä½ã£ã¦ããã£ãã®ã§ããããã®æ¡å¼µã¯ãC++Builderã®__closureãJavaã«æã£ã¦ãããã®ã§ãdelegateã¨å¼ã°ãã¾ããã
ããããWrite Once Run Anywareãæ²ãã¦Javaãä½ã£ã¦ããSun Microsystemsã¯ãããªç¬èªæ¡å¼µã許ãããããªãã
http://web.archive.org/web/20040404002128/http://java.sun.com/docs/white/delegates.html
ã¨ãããã¨ã§Microsoftã¯Javaãé¢ããC#ã¨ããç¬èªè¨èªãä½ã£ãã®ã§ããã
PHP
PHPã¯PHP/FIãããã¡ãã£ã¨ã¡ããã¨ãã¦PHP3ã«ãªã£ãã¨ãã«æµè¡ãã¾ããã ããã¦ç¨éãåºã¾ãã¨ãã«Zend社ãå ¥ã£ã¦ããç¨åº¦ãã£ãããããã®ã«ãã¤ã¤ããªãã¸ã§ã¯ãæåãåãå ¥ããã®ãPHP4ã§ãããã®ã¨ããJavaãè¶ æµè¡ã£ã¦ããããPHPã®ãªãã¸ã§ã¯ãæåã¯Javaã®æ©è½ãåç¾ããæãã«ãªã£ã¦ãã¾ãã
Scala, Kotlin, Swift
Scalaã¯Javaã®è³ç£ãå©ç¨ãã¤ã¤é¢æ°åãã¨ãããã§å®ç¨çã«ä»ä¸ããè¨èªã§ãã
Kotlinã¯æ´å²ã®ç©ãã£ãJavaããªã»ãããã¦ç¾ä»£çã«ã¤ãããªãããè¨èªã¨ããã¾ãã
Swiftã¯Objective-Cã®ä»£æ¿ã¨ãã¦ç¾ä»£çã«ã¤ãããªããããè¨èªã§ããã
ã¨ããããªæãã§ã¾ã¨ãã¦ã¿ã¾ããã
â»è£è¶³ RubyãPythonãRustãGoã«ã¤ãã¦ã¯ããã®å³ã«ããã¦ãã©ããããç·ãå¼ãããªãããããªãã¸ã§ã¯ãæåã®æ©è½ãããã ããSimulaãSmalltalkã®å½±é¿ã¯åãã¨ããããç¨åº¦ã®ã¤ãªããã«ãªã£ã¦ãããªé¢ç½ããªããªã¼ã¨ãªã£ã¦è¼ãã¦ãªãã§ããGoã¯Cã«ãRustã¯C++ã«ã¤ãªãã¦ã代æ¿ãããããããã®é¢ä¿ã«ã»ã»ã»(ãã¨Javaã¨ã¤ãªãã¦ãåé¢æ師ãã£ã¦ããã)
ãã¨ãããããæãåºãã°ééãªãã®ã§ãTiobe index20ä½ãããã¦50ä½ã«å
¥ãç¨åº¦ã«ã¡ã¸ã£ã¼ãªãã®ã£ã¦ããã¨GroovyãClosureã¯å¤ãã¦ã»ã»ã»ããªãã¸ã§ã¯ãæåã®è©±ã¨ãã¦ãããªã«çºå±ããªããã
â»è¿½è¨ 2023/11/27 SmalltalkããSelfã«ç·ãå¼ãã¾ããã
â»è¿½è¨ 2023/11/27 Goã¨ãRustã¨ãKotlinã¨ãSwiftã¨ãã2010å¹´ãããããã®è¨èªã®å ´åãããã®æ©è½ã¯ãã®è¨èªç±æ¥ããã®æ©è½ã¯ãã®è¨èªç±æ¥ãã¨ããã®ã§ã¯ãªãã¦ãæçããããã°ã©ãã³ã°è¨èªéçºã®ä¸ã§ãã¼ã¿ã«ã§ãã©ã³ã¹èããªããè¨è¨ãããã¨ããæããããã®ã§ãè¨èªç¸é¢å³ã®ä¸ã§ã®ç·ãã²ãã«ããæ°ããã¾ãããªã®ã§ãKotlinãSwiftã¯ãã¼ã¹ã®ãã©ãããã©ã¼ã ããã®ç·ã¯ã²ãããã©ããã®ä»ã®é¨åã«ã¤ãã¦ã¯ãç¾ä»£åãã¨ãã¦ã¾ãã