ã¯ããã«
ãæè¿èªåã®ä¸ã§Scalaã¨ããè¨èªãç±ããRubyãPythonçã®ã¹ã¯ãªããè¨èªããJavaãC#çç¾å¨ã®ã¨ã³ã¿ã¼ãã©ã¤ãºé åãæ¯ããè¨èªãHaskellãErlangã¨ãã£ã颿°åè¨èªãããããããªã«ãã£ã±ãããè¨èªãããä¸ã§ããªãä»Scalaãªãã ããï¼ ãããªçç±ã解説ãã¦ã¿ããã¨æãã¾ãã
Rubyã®çç£æ§
ãããæ°å¹´LLãã¼ã ã§ãã¨ãããæ¥æ¬ã§ã®Ruby人æ°ã¯ç®è¦ã¾ãããã®ãããã¾ããå®ã¯çè ãRubyã¯ã¨ã¦ããæ°ã«å ¥ãã§ããæåã«è§¦ãå§ããé ã¯ããRubyã¯ããããã¨ãã話ã ã£ãã®ã§åå¼·ãã¦ãå°ããªãµã³ãã«ãä½ã£ã¦éãã§ããã®ã§ããããã®é ã¯ã楽ãããªããæ°æã¡ããè¨èªã ãªãã¨ããç¨åº¦ã§ãã¾ãç±å¿ã«ãã£ã¦ãã¾ããã§ããããªããªãç§ã¯ãä»äºã§ä½¿ãããã¨ãããã¨ãé常ã«éè¦ããã¿ã¤ãã ããã§ãã
ããã®èªèãä¸å¤ããã®ãRubyã«ããWebã¢ããªã±ã¼ã·ã§ã³éçºã®ãã©ãããã©ã¼ã ã§ããRuby on Railsã触ãå§ãã¦ããã®ã¢ã¼ããã¯ãã£ã®åãã¨æ¥½ã¡ããã使ãã¦ããã§ãã
ãçç£æ§ãJavaã®Webã¢ããªã±ã¼ã·ã§ã³å ´åã¨æ¯ã¹ã¦ã10åãã¨å®£ä¼ããã¦ãããç§ã¯ãã©ããèªåçæãããçã¤ã°ãããã¨ããããã¨æã£ã¦ãã¾ããã
ãããããå®éã«è§¦ã£ã¦ã¿ãã¨ç¢ºãã«10åãã©ããã¯æªããããããã¾ããããå°ãªãã¨ãJavaã®ä¸è¬çãªWebã¢ããªã±ã¼ã·ã§ã³æ§ç¯ããæã«æ¯ã¹ã¦ãå§åçã«çç£æ§ãããã®ã¯ééããªãã¨æãã¾ããããããçç£æ§ãããçç±ã¯ä¸è¦èªåçæã«è¦ãã¾ãããããã§ãªã¯ãã®ã§ãã
ããã®çç±ã¯ããè¨èªã®ãã¯ã¼ãã§ãããRuby on Railsã¯JavaCoCã®ææ³ããã¡ããçç£æ§ã«å¤§ããå¯ä¸ãã¦ãã¾ãããJavaãC#ã§ã¯çµ¶å¯¾ã«ããå¾ãªããã¨ãRubyã§ã¯ãã¨ãç°¡åã«ã§ãã¦ãã¾ãã¾ããä¾ãã°Ruby on Railsã§ã社å¡ãã®ã¡ã³ããã³ã¹ã«é¢ããã¢ãã«é¨åã¯ä¸è¨ã®ã³ã¼ãã ãã§æ¸ãã§ãã¾ãã¾ãã
class Employee < ActiveRecord::Base end
ããã£ãããã ãã§ãä¾ãã°ã社å¡ï¼Employeeï¼ã®ç»é²ãªãã
employee = Employee.new
employee.name = "å±±ç°"
employee.salary = 500
employee.save
ãã¨ããã¨ããã¼ã¿ãã¼ã¹ã®employees表ã«SQLãçºè¡ããã¦ãã¼ã¿ã¼ã¹ã«name="å±±ç°"ãsalary=500ã¨ãããã¼ã¿ãä¿åããã¾ãã社å¡è¡¨ã«åå¨ããé ç®åããã³ã¼ãã£ã³ã°ãã¦ãã¾ããã確ãã«ããã¯ãããçç£æ§ã§ãã
ãããã«ã給æã500åã®äººã®ãªã¹ããå¾ãã«ã¯ã
employees = Employee.find_by_salary(500)
ãã§OKã§ãããã¬ã¼ã ã¯ã¼ã¯ãä½ã£ã人ã«ã¯ãæåããEmployeeã¯ã©ã¹ã«salaryã¨ããé ç®ãããããªãã¦åããã¯ããããã¾ããã
åçè¨èªã¨éçè¨èª
ãããã¯ãRubyã®æã¤ãåçãªè¨èªãã¨ãã¦ã®æ§è³ªã ã£ãããå¼·åãªã¡ã¿ããã°ã©ãã³ã°ã®æ§è³ªã«ãããã®ã§ããRubyã§ã¯ã¯ã©ã¹ããªãã¸ã§ã¯ãã«å¯¾ãã¦ããã¬ã¼ã ã¯ã¼ã¯ãå¾ä»ãã§å±æ§ã追å ããããã¡ã½ããã追å ããããããã¨ãã§ãã¾ãã
ãä¾ãã°å ã®find_by_salary(500)ã§ã¯ãRubyã®ã¯ã©ã¹ãå®è¡ããã¨ãã¡ã½ãããè¦ã¤ãããªãå ´åã¯method_missingã¨ããã¡ã½ãããå¼ã°ãã¾ãï¼ãã®ä¾ã§ã¯ã¹ã¼ãã¼ã¯ã©ã¹ã®ä¸ã«æ¸ãã¦ããã¾ãï¼ããã®method_missingã®ä¸ã§ãä»å¼ã°ããã¡ã½ããã¯ãfind_by_salaryã§å¼æ°ã¯500ãã¨ããã®ã夿ã§ãã¾ãã
ããã®æ å ±ã¨èªåã®ã¯ã©ã¹åï¼Employeeï¼ãè¤æ°åã«å¤æãã¦ãsalary=500ã¨ããæ¡ä»¶ãã¤ãã¦SQLãçµã¿ç«ã¦ã¦çºè¡ããã°ããã§OKã¨ããæãã ã¨æãã¾ãï¼å®éã«ActiveRecordããããªã®ãã¯ç¥ãã¾ããããå°ãªãã¨ãRubyã®ææ³ã§ã¯ä¸è¨ã®ãããªãã¨ãå¯è½ã§ãï¼ã
ããããã£ããã¨ã¯JavaãC#ã¨ãã£ããéçåä»ãã®è¨èªãã§ã¯ã§ãã¾ããããããããéè¡ãã®ãããªãã¨ã使ãããããRubyãPythonã¨ãã£ããåçåä»ãã®è¨èªãã¯ãéçåä»ãã®è¨èªãã«æ¯ã¹ã¦å§åçã«ç°¡æ½ã«ã人éã®æè¦ãããã¦ãèªç¶ãªè¨è¿°ã§ããã°ã©ã ãæ¸ããã¨ãã§ããããã«ãªãã¾ãã
ãä½è«ã§ãããçè ã®ååã§Smalltalkã§ä»äºããã¦ãã人ãããã®ã§ãããå½¼ã¯ã
JavaãSmalltalkã®å¾ã«åºã¦ãã¦ããããä»äºã«ããã¨ããéåãããã¨æã£ã
ãã¨è¨ã£ã¦ãã¾ãããSmalltalkã¯åçåä»ãã®è¨èªã§ãããJavaã¯ãã®ãããªæè»æ§ãç¡ããããããã®ã³ã¼ããæ¸ããªãã¦ã¯ããã¾ãããæè¿ã¯Javaã§ãç°¡æ½ã«ããããã¬ã¼ã ã¯ã¼ã¯ãå¤ãã§ã¦ãã¾ããããã¨ãã¨ãããè¨èªã®ãã¯ã¼ãã¯åçãªè¨èªã¨æ¯è¼ããã¨ãã¯ãå¼±ãã¨æãã¾ãã
ããã®ä»ã®ã¡ãªããã¨ãã¦ã¯ãä½åãªäºãã³ã¼ãã£ã³ã°ããªãã¦ãããã®ã§ãã³ã¼ãã®ãæ¬è³ªé¨åãã ããè¨è¿°ããã°ããæè¦ã§ãåå¿è ã«ãã¨ã¦ãåªãããªãã¾ãã
ã以åãçè ã¯ããã°ã©ã ã®çµé¨ããã¾ããªã人ã«ãJavaã®Webããã°ã©ãã³ã°ã®æ¬ã渡ãã¦ããµã³ãã«ãä½ã£ã¦ã¿ã¦ãã¨è¨ãã2é±éå¾ã«ãã©ãã ã£ãï¼ãã¨èãã¦ã¿ãã¨ãé£ããã¦æ¯ããã¡ã¾ããã§ãããã¨è¨ããããã¨ãããã¾ãããRuby on Railsã®æ¬ã渡ãã¨1æéãç«ããªããã¡ã«ãæåã®WEB-DBããã°ã©ã ãã³ã¼ãã£ã³ã°ãã¦åããã¦ãã¾ããã
ãèªåã§ããã°ã©ã ãä½ãæãRubyã®ã楽ã¡ãããã«æ £ãã¦ãã¾ãã¨ãJavaãC#ã¯ç´ æ´ãããIDEã®ãµãã¼ããããã®ã«ãããããããã©ããã¦ããJavaãC#ã¯é¢åãããããæéããã£ã¡ãããããã¨ããæè¦ã«ä»ã¯ãªã£ã¦ãã¾ããã¡ããã©ãJavaã«æ £ããå¾ã«C++ã触ã£ãã¨ãã«ãããã©ããããã¨æã£ãæè¦ã«ä¼¼ã¦ãã¾ãã
