<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>bow_der_kleine's blog</title>
  <link rel="alternate" type="text/html" href="http://www.blognone.com/blog/8"/>
  <link rel="self" type="application/atom+xml" href="http://www.blognone.com/blog/8/atom/feed"/>
  <id>http://www.blognone.com/blog/8/atom/feed</id>
  <updated>2007-04-11T11:40:05+07:00</updated>
  <entry>
    <title>รัฐบาลเยอรมันเตือน &quot;ไม่ควรใช้ Chrome&quot;</title>
    <link rel="alternate" type="text/html" href="http://www.blognone.com/node/8876" />
    <id>http://www.blognone.com/node/8876</id>
    <published>2008-09-08T17:17:04+07:00</published>
    <updated>2008-09-08T17:17:04+07:00</updated>
    <author>
      <name>bow_der_kleine</name>
    </author>
    <category term="Browser" />
    <category term="Chrome" />
    <category term="Germany" />
    <category term="Google" />
    <summary type="html"><![CDATA[<!--paging_filter--><p>
<p>หลังจากที่ Google ได้ส่ง <a href="http://gears.google.com/chrome/">Google Chrome</a> เวบบราวเซอร์ตัวใหม่เข้าลงแข่ง ประชันความสามารถกับเวบบราวเซอร์ตัวอื่น ๆ เป็นที่ฮือฮาในวงการผู้ใช้อินเตอร์เนตทั่วโลก ความแรงของ Google Chrome ทำให้นักท่องอินเตอร์เนตชาวเยอรมันจำนวนมากสนใจ และดาวน์โหลดมาทดลองใช้งาน</p>
<p>ล่าสุดทาง <a href="http://www.bsi.de/">Bundesamt für Sicherheit in der Informationstechnik (BSI)</a> หรือแปลได้ว่า สำนักงานความปลอดภัยในเทคโนโลยีข้อมูลข่าวสารแห่งสหพันธรัฐเยอรมนี ได้ออกมาเตือนประชาชนไม่ให้ทดลองใช้ Google Chrome เพราะ Google Chrome จะส่งข้อมูลส่วนตัวบางอย่างของผู้ใช้งานกลับไปยังบริษัท</p>
<p>น่ี่ไม่ใช่ครั้งแรกที่ BSI ออกมาเตือนประชาชนในเรื่องการใช้งานเวบบราวเซอร์ ก่อนหน้านี้ BSI เคยออกมาแนะนำประชาชนให้ใช้งาน Firefox แทน Internet Explorer โดยอ้างถึงความปลอดภัยในเรื่องการป้องกัน Phishing</p>
<p>น่าสนใจว่าเหตุใดกระทรวง ICT บ้านเราจึงไม่เคยสนใจในเรื่องความเป็นส่วนตัว และความปลอดภัยของผู้ใช้งานอินเตอร์เนตบ้าง แต่กลับละเมิดความเป็นส่วนตัวของผู้ใช้งานเสียเอง โดยการสั่งให้เก็บ log อีก</p>
<p>ที่มา - <a href="http://www.e-recht24.de/news/datenschutz/948.html">e-recht24</a></p>    ]]></summary>
    <content type="html"><![CDATA[<!--paging_filter--><p>หลังจากที่ Google ได้ส่ง <a href="http://gears.google.com/chrome/">Google Chrome</a> เวบบราวเซอร์ตัวใหม่เข้าลงแข่ง ประชันความสามารถกับเวบบราวเซอร์ตัวอื่น ๆ เป็นที่ฮือฮาในวงการผู้ใช้อินเตอร์เนตทั่วโลก ความแรงของ Google Chrome ทำให้นักท่องอินเตอร์เนตชาวเยอรมันจำนวนมากสนใจ และดาวน์โหลดมาทดลองใช้งาน</p>
<p>ล่าสุดทาง <a href="http://www.bsi.de/">Bundesamt für Sicherheit in der Informationstechnik (BSI)</a> หรือแปลได้ว่า สำนักงานความปลอดภัยในเทคโนโลยีข้อมูลข่าวสารแห่งสหพันธรัฐเยอรมนี ได้ออกมาเตือนประชาชนไม่ให้ทดลองใช้ Google Chrome เพราะ Google Chrome จะส่งข้อมูลส่วนตัวบางอย่างของผู้ใช้งานกลับไปยังบริษัท</p>
<p>น่ี่ไม่ใช่ครั้งแรกที่ BSI ออกมาเตือนประชาชนในเรื่องการใช้งานเวบบราวเซอร์ ก่อนหน้านี้ BSI เคยออกมาแนะนำประชาชนให้ใช้งาน Firefox แทน Internet Explorer โดยอ้างถึงความปลอดภัยในเรื่องการป้องกัน Phishing</p>
<p>น่าสนใจว่าเหตุใดกระทรวง ICT บ้านเราจึงไม่เคยสนใจในเรื่องความเป็นส่วนตัว และความปลอดภัยของผู้ใช้งานอินเตอร์เนตบ้าง แต่กลับละเมิดความเป็นส่วนตัวของผู้ใช้งานเสียเอง โดยการสั่งให้เก็บ log อีก</p>
<p>ที่มา - <a href="http://www.e-recht24.de/news/datenschutz/948.html">e-recht24</a></p>    ]]></content>
  </entry>
  <entry>
    <title>Hard Fight : Java vs. Python vs. Ruby</title>
    <link rel="alternate" type="text/html" href="http://www.blognone.com/node/4385" />
    <id>http://www.blognone.com/node/4385</id>
    <published>2007-04-09T15:15:46+07:00</published>
    <updated>2007-04-11T11:40:05+07:00</updated>
    <author>
      <name>bow_der_kleine</name>
    </author>
    <category term="Special Report" />
    <category term="Development" />
    <category term="Java" />
    <category term="Python" />
    <category term="Ruby" />
    <summary type="html"><![CDATA[<p><img src="http://www.biolawcom.de/files/member/1/blog/583/fight.jpg" border="0" alt="image" hspace="10" vspace="10" width="137" height="91" align="left" />ผมเป็นคนที่ชอบศึกษาเรื่องภาษาเขียนโปรแกรม ดังจะเห็นได้จาก จำนวนบล็อกที่ผมเขียนเกี่ยวกับภาษาเขียนโปรแกรม ที่มีมากกว่าในเรื่องอื่น ๆ จากการศึกษาโดยการเข้าไปหาข้อมูลในอินเตอร์เนตพบว่า เรื่องภาษาเขียนโปรแกรมเป็นเรื่องศาสนา คือ เป็นเรื่องที่มีพื้นฐานอยู่บนความเชื่อ มากกว่าเหตุผล</p>
<p>ทฤษฎีทางความเชื่อเกี่ยวกับภาษาเขียนโปรแกรมจำนวนมาก ได้ถูกกล่าวอ้างโดยไม่ได้รับข้อพิสูจน์ โดยเฉพาะจากเหล่าสาวกของภาษานั้น ๆ บางครั้งเวลาผมอ่านก็เคลิ้มตามไปเหมือนกัน บางครั้งก็อดตั้งคำถามไม่ได้ว่า มันจะจริงเหรอ ???</p>
<p><strong>หมายเหตุ : </strong> ขอโฆษณาต้นฉบับหน่อยครับ ที่ <a href="http://www.biolawcom.de/">BioLawCom.De</a> :D</p>
    ]]></summary>
    <content type="html"><![CDATA[<p><img src="http://www.biolawcom.de/files/member/1/blog/583/fight.jpg" border="0" alt="image" hspace="10" vspace="10" width="137" height="91" align="left" />ผมเป็นคนที่ชอบศึกษาเรื่องภาษาเขียนโปรแกรม ดังจะเห็นได้จาก จำนวนบล็อกที่ผมเขียนเกี่ยวกับภาษาเขียนโปรแกรม ที่มีมากกว่าในเรื่องอื่น ๆ จากการศึกษาโดยการเข้าไปหาข้อมูลในอินเตอร์เนตพบว่า เรื่องภาษาเขียนโปรแกรมเป็นเรื่องศาสนา คือ เป็นเรื่องที่มีพื้นฐานอยู่บนความเชื่อ มากกว่าเหตุผล</p>
<p>ทฤษฎีทางความเชื่อเกี่ยวกับภาษาเขียนโปรแกรมจำนวนมาก ได้ถูกกล่าวอ้างโดยไม่ได้รับข้อพิสูจน์ โดยเฉพาะจากเหล่าสาวกของภาษานั้น ๆ บางครั้งเวลาผมอ่านก็เคลิ้มตามไปเหมือนกัน บางครั้งก็อดตั้งคำถามไม่ได้ว่า มันจะจริงเหรอ ???</p>
<p><strong>หมายเหตุ : </strong> ขอโฆษณาต้นฉบับหน่อยครับ ที่ <a href="http://www.biolawcom.de/">BioLawCom.De</a> :D</p>
<p><!--break--></p>
<p>ผมจึงรู้สึกว่า น่าจะเขียนบล็อกขึ้นมาหนึ่งบล็อก เพื่อเปรียบเทียบคุณสมบัติต่าง ๆ ของภาษาเขียนโปรแกรมขึ้นมาหนึ่งบล็อก เพื่อเปรียบเทียบให้เห็นกันจะ ๆ และพยายามเป็นกลางให้มากที่สุด (อันนี้แหละยาก) เผื่อว่าใครจะเอาข้อมูลไปใช้ประกอบการตัดสินใจ โดยภาษาที่ผมจะนำมาเปรียบมวยมีด้วยกัน 3 ภาษา คือ Java, Python และ Ruby เพราะเป็นภาษาที่ได้รับความนิยมในขณะนี้ และดูที่อนาคตจะไปได้สวย (จริง ๆ อยากเขียน C# เหมือนกัน แต่ดูเหมือน C# จะแผ่วไปเยอะในช่วงหลัง)</p>
<p>อันที่จริงมีคนเปรียบมวย Python กับ Java ไว้แล้วเยอะเหมือนกัน ไม่ว่าจะเป็น <a href="http://ferg.org/projects/python_java_side-by-side.html">Python &amp; Java: Side by Side Comparison</a><br />
(รู้สึกหน้านี้จะเสีย ลองไปอ่านที่ <a href="http://209.85.135.104/search?q=cache:FaJx1g7WFYsJ:ferg.org/projects/python_java_side-by-side.html+python+vs+java&amp;hl=de&amp;ct=clnk&amp;cd=1&amp;gl=de&amp;client=firefox">Google-Cache</a>  ดูครับ), <a href="http://www.dmh2000.com/cjpr/">C++ vs Java vs Python vs Ruby : a first impression</a>  และ  <a href="http://furryland.org/~mikec/bench/">Python vs. Perl vs. Java vs. C++ Runtimes</a> แต่ส่วนมากมักเป็นข้อมูลเก่า (ยกเว้น  C++ vs Java vs Python vs Ruby : a first impression ข้อมูลค่อนข้างใหม่) ผมจึงอยากอัพเดดข้อมูลบางอย่างเพิ่มเติมลงไป และทดสอบโดยใช้โปรแกรมที่ใกล้เคียงกับการใช้งานจริงมากที่สุด</p>
<h4><u>About me</u></h4>
<p>ก่อนอื่นผมต้องแนะนำตัว เกี่ยวกับพื้นหลังการเขียนโปรแกรมของผมก่อนครับ เพื่อให้คนอ่านใช้ประกอบวิจรณญาณในการอ่าน</p>
<p>ทุกวันนี้ผมทำงานโดยใช้ Python ในการเขียนโปรแกรม Simulation เกี่ยวกับเคเบิลใยแก้วนำแสง ดังนั้น คนอ่านไม่ต้องแปลกใจครับ หากผมจะลำเอียงไปทาง Python แต่ผมจะพยายามรักษาความเป็นกลางไว้ให้มากที่สุดครับ</p>
<p>ส่วน Java นั้น ในมหาวิทยาลัยผม บังคับเรียนหนึ่งเทอม จำนวน 2 หน่วยกิจ ขออนุญาตขี้โม้หน่อยนึงครับ ว่าตอนสอบผมได้คะแนนเกือบเต็ม เป็นหนึ่งในไม่กี่วิชา ที่ผมได้คะแนนดีกว่าเพื่อนเยอรมัน และผมเคยพยายามทำโปรเจคโดยใช้ Java เลยมีหนังสือ Java เต็มบ้าน แต่สุดท้ายก็ไม่สำเร็จ เพราะจนถึงทุกวันนี้ผมยังงงอยู่เลยว่า อาจารย์ที่ปรึกษาคนนั้นต้องการอะไรจากผม ดังนั้น ผมคิดว่าความรู้ Java ที่ผมมีนั้นก็พอไปวัดไปวาได้เหมือนกัน แต่หลัง ๆ มา ผมไม่ค่อยชอบ Java เท่าไร</p>
<p>ผมไม่เคยศึกษา Ruby อย่างเป็นเรื่องเป็นราว แต่ก็ผ่าน ๆ ตามาบ้าง โดยการใช้งาน <a href="http://www.rubyonrails.org/">Ruby on Rails</a>  ความรู้ Ruby ผมจึงเป็นแบบ งูงู ปลาปลา อย่าถือสากันนะครับ :D</p>
<h4><u>About this fight</u></h4>
<p>การเปรียบมวยครั้งนี้ ผมได้เขียนขึ้นโดยวิเคราะห์จากการเขียนโปรแกรม <a href="http://www.biolawcom.de/?/blog/571">โปรแกรมค้นหาข้อมูลสำหรับ CMS</a> ซึ่งเดิมทีนั้น ผมเขียนขึ้นโดยใช้ PHP แล้วนำมาเขียนใหม่โดยใช้  Java, Python และ Ruby โดยมีการตัดโค้ดบางส่วนออก และปรับปรุงอีกเล็กน้อย เพื่อให้เหมาะสมกับการทดสอบ</p>
<p>ส่วนการทดสอบความเร็วนั้น ผมได้อ้างอิงตาม <a href="http://furryland.org/~mikec/bench/">Python vs. Perl vs. Java vs. C++ Runtimes</a> โดยมาปรับปรุงสำหรับ Ruby และเพิ่มการทดสอบในกรณีอื่น ๆ เข้าไปอีกเล็กน้อย</p>
<p>ในแต่ละยกผมจะให้คะแนน แต่ละภาษาโดยให้เป็น <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> ยิ่งมากยิ่งดี โดยมีคะแนนเต็ม <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> (คิดถึงตอนเรียนอนุบาลเลย)</p>
<h4><u>Round 1 : The first impression</u></h4>
<p>ในยกนี้ผมวิเคราะห์ตามความรู้สึกของผม ที่ได้เขียนโปรแกรมในภาษานั้น ๆ เป็นครั้งแรก ประกอบกับความรู้สึกของเพื่อน ๆ ที่เขียนโปรแกรมภาษานั้น ๆ เป็น</p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> <strong>: </strong>เป็นภาษาที่เหมาะกับวิศวกรซอพท์แวร์ แต่ไม่ค่อยถูกโฉลกกับคนวงการอื่น ๆ ในครั้งแรกที่เริ่มเขียน Java อะไร ๆ ก็ดูยากไปหมด ผมและเพื่อนทุกคนเห็นพ้องต้องกันตอนเรียน Java ว่า Java ยากกว่า C อีก อีกทั้งตัวภาษาไม่เอื้อต่องานประเภท Quick and Dirty คือลองเขียนเล่น ๆ สั้น ๆ คนที่จะเขียนโปรแกรม Java โปรแกรมแรกได้นั้น ต้องรู้จัก JRE, JDK, class, object, public, static, void, main ก่อนถึงจะเขียนได้ อีกทั้งยังเจอ Concept แปลก ๆ ที่คนที่ไม่เคยเขียน Java มาก่อน ก็ต้องงงไปตาม ๆ กัน เช่น Interface, Abstact Class, Iteration, Type Cast เป็นต้น สรุปคือ กว่าจะเขียน Java เป็นต้องใช้เวลาค่อนข้างนาน </li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : คงเหมือนกับภาษา Script ภาษาอื่น ๆ ที่ไม่ต้องรู้อะไรมากก็ลงมือเขียนได้เลย มี Interactive-Console ให้ใช้งาน ลองเล่นไปตามเรื่องตามราว แต่สิ่งที่กวนประสาทมาก ๆ คือ Indent เป็นเรื่องที่ต้องใช้เวลาในการปรับตัวกันนานพอสมควร</li>
<li><strong>Ruby</strong> : <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ครั้งแรกที่ลองใช้งาน อะไร ๆ ก็ดูง่ายไปหมด หากรู้จักภาษา Script  อื่น ๆ มาก่อน Ruby แล้ว การเรียนรู้ Ruby ก็จะใช้เวลาน้อยมาก
</li>
</ul>
<h4><u>Round 2 : Community</u></h4>
<p>Community เป็นปัจจัยสำคัญมากในการเลือกใช้งานภาษาเขียนโปรแกรมในปัจจุบัน ภาษาที่มี Community ที่แข็งแกร่ง ย่อมหมายถึงโอกาสอยู่รอดของภาษาในอีกสิบปี ยี่สิบปีข้างหน้าก็จะสูงตามไปด้วย</p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : เนื่องจาก Java เป็นภาษาที่ได้รับความนิยมสูงสุด มีบริษัทยักษ์ใหญ่จำนวนมากให้การสนับสนุน Java และเลือก Java เป็นภาษาหลักในพัฒนาซอพท์แวร์ของตัวเอง อีกทั้งในขณะนี้ Java กลายเป็น OpenSource เป็นที่เรียบร้อยแล้ว ดังนั้น Community ของ Java จึงแข็งแกร่งไร้เทียมทาน</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" />: Python เป็น OpenSource โดยกำเนิด และเป็นภาษาที่ได้รับความนิยมมากขึ้นเรื่อย ๆ มีองค์กรณ์สนับสนุนอย่างเป็นทางการมากมาย (PSF, Google, Zope) แม้ความนิยมในตัว Python ยังไม่เทียบเท่า Java แต่ความแข็งแกร่งของ Community ก็ไม่ได้เป็นรอง Java แม้แต่น้อย</li>
<li><strong>Ruby :</strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" />: แม้ว่า Ruby จะเป็นภาษาที่ค่อนข้องใหม่ แต่ในระยะเวลาสองปีที่ผ่านมา Ruby ได้รับความนิยมเพิ่มขึ้นอย่างรวดเร็ว สาเหตุก็เนื่องมาจาก Ruby on Rails ความแข็งแกร่งของ Community ของ Ruby จึงเพิ่มขึ้นอย่างน่าจับตามอง แม้กระนั้นก็ตาม Community ของ Ruby ยังอยู่ในภาวะสร้างตัว จึงยังไม่แข็งกร่งเท่าภาษาเขียนโปรแกรมรุ่นพี่อย่าง Java และ Python แต่คาดว่าอีกปีหรือสองปี Ruby อาจเทียบชั้นมาตีเสมอได้ไม่ยาก
	</li>
</ul>
<h4><u>Round 3 : Library</u></h4>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : เนื่องจาก Java เป็นภาษาที่ได้รับความนิยมอย่างสูง จึงไม่ใช่เรื่องแปลกที่ Java จะมี Library ให้เลือกใช้มากมาย โดยเฉพาะอย่างยิ่งการเขียนโปรแกรมเชิงธุรกิจ แต่ Library ส่วนใหญ่ของ Java ได้รับการออกแบบมาซับซ้อนเกินไป ทำให้ใช้ยาก อีกทั้งยังขาด Library สำหรับโปรแกรมทางวิทยาศาสตร์อีกจำนวนมาก
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" width="16" height="15" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : แม้ว่า Library ของ Python คลอบคลุมการใช้งานมากกว่า Java (ทางวิทยาศาสตร์, Image Processing, Latex, 3D-Rendering, etc.) แต่ Library ส่วนใหญ่ยังมีมาตรฐานไม่เทียบเท่าของ Java ส่วนหนึ่งเนื่องมาจากเป็นโครงการ OpenSource ขนาดเล็ก
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ความเป็นภาษาใหม่ของ Ruby ทำให้ Ruby มี Library ให้เลือกใช้ยังไม่มากนัก แต่ Library ของ Ruby ก็น่าจับตามอง เนื่องเพราะเป็น Library ที่ใช้งานง่าย และมีมาตรฐาน เมื่อเปรียบเทียบกับ Java และ Python
	</li>
</ul>
<h4><u>Round 4 : Time to code</u></h4>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ใครบอกว่า Java เขียนง่ายผมคนหนึ่งล่ะที่ไม่เชื่อ คนส่วนใหญ่บอกว่า Java เขียนง่ายกว่า C++ ผมเห็นด้วยเพียงครึ่งเดียว Concept ของ Java แม้จะทำให้เขียนโปรแกรมง่ายกว่า C++ ก็จริง แต่ก็เข้าใจยากกว่าเหมือนกัน (แค่ Itration อ. ที่สอนต้องใช้เวลาอธิบายอยู่หลายอาทิตย์ กว่าพวกผมจะเข้าใจ) และเนื่องจาก Java ยังเป็น Compiled Language อยู่ การลองโน่นลองนี่จึงไม่ใช่เรื่องง่าย เพราะต้องเสียเวลาในการ Compile อีกทั้งความพยายามออกแบบ Java ให้ Common มากที่สุด ก็ทำให้ Java ซับซ้อนเกินกว่าเหตุ
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ความเป็น Script ของ Python ทำให้การเขียนโค้ดด้วย Python รวดเร็วทันใจอยู่แล้ว บวกกับคอนเซพท์ที่เข้าใจง่ายของ Python ยิ่งทำการเขียนโค้ดของ Python เร็วขึ้นไปอีก เครื่องมือในการหาข้อผิดพลาดที่พร้อม คุณภาพโค้ดที่ได้ก็สูง เพราะโดนบังคับโดยตัวภาษา โครงสร้างของภาษาที่รองรับโครงการขนาดใหญ่ โดยส่วนตัวผมเห็นว่า Python น่าจะเป็นภาษาที่เขียนโค้ดได้เร็วที่สุดในขณะนี้
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : คุณสมบัติดี ๆ หลายอย่างของ Perl และ Python ถูกสอดแทรกลงใน Ruby ได้อย่างลงตัว แม้ว่า Ruby จะเป็นภาษาที่ใช้เครื่องหมายมากเกินไป (ออกแนว Perl) ทำให้โค้ดที่ได้อ่านยากไปบ้าง แต่ก็ถูกทดแทนด้วยคอนเซพท์หลายอย่างที่ไม่เหมือนใคร (symbol, attr_reader)  ในขั้นต้นการเขียนโค้ดด้วย Ruby อาจเร็วกว่า Python แต่ในระยะยาว Ruby อาจประสบปัญหาเดียวกับ Perl คือ Write only coding
</li>
</ul>
<h4><u>Round 5 : How does the language do ?</u></h4>
<p><strong>5.1 : Block</strong></p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : สำหรับผมแล้วการแบ่งบล็อกด้วยวงเล็บปีกกา {} เป็นการแบ่งบล็อกที่ผมชอบมากที่สุด เพราะสามารถทำได้ง่าย รวดเร็ว และชัดเจน แม้ว่าจะมีปัญหาเกิดขึ้นบ้าง เวลาที่มีบล็อกซ้อนบล็อกมากเกินไป แต่ปัญหานี้ไม่ว่าจะใช้วิธีการแบ่งบล็อกแบบไหน ก็เกิดขึ้นได้ทั้งนั้น การเลี่ยงการเขียนบล็อกซ้อนบล็อกจึงน่าจะเป็นทางออกที่ดีกว่า
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : แม้ว่าการแบ่งบล็อกด้วย indentation มีข้อดีหลายอย่าง ทั้งง่าย รวดเร็ว เป็นการบังคับให้คนเขียนโปรแกรมเขียนโค้ดที่อ่านง่าย แต่ก็มีอันตรายแอบแฝงหลายอย่าง เช่น การใช้ Tabalator ผสมกับการเว้นวรรค ขนาด indentation ที่ไม่เท่ากัน การเขียนโปรแกรมด้วย Python จึงต้องใช้ Editor ที่มีคุณภาพพอสมควร เพื่อป้องกันปัญหาดังกล่าว อีกทั้งต้องมีการตกลงกันระหว่าคนเขียนโปรแกรมว่าจะใช้ indentation แบบใด
</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : การแบ่งบล็อกด้วย begin และ end แม้ว่าจะทำให้อ่านง่ายขึ้น แต่ก็ง่ายกว่าการใช้วงเล็บปีกกาไม่มากนัก Ruby เองก็ไม่ใช่ภาษาที่อ่านง่ายอยู่แล้ว การใช้ begin และ end จึงไม่มีข้อได้เปรียบที่ชัดเจน นอกจากจะทำให้โค้ดยาวขึ้น</li>
</ul>
<p><strong>5.2 : Loop</strong></p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : การวนลูปของ Java เริ่มต้นเดิมทีได้นำวิธีการของ C มาใช้ จากนั้นก็เพิ่ม Iteration เข้ามา แม้ว่า Iteration จะได้เปรียบ for ธรรมดาอยู่หลายอย่าง แต่ก็ทำให้โค้ดที่ได้อ่านยาก ต้องเขียนโค้ดยาว งง ๆ คนส่วนมากจึงยังคงใช้ for ธรรมดามากกว่า Iteration ใน Java 5 จึงได้มี for-each เพิ่มเข้ามา แต่ก็ยัง for-each ที่ยัง งง ๆ อยู่ ถึงตอนนี้ผมยังคอมไพล์โปรแกรมที่มี for-each ไม่ผ่านเลยครับ
</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : คอนเซพท์ for-loop ของ Python ถือว่าเป็นคอนเซพท์ที่ดีมาก มีการนำ iteration  มาใช้โดยที่คนเขียนไม่ต้องทำความเข้าใจเรื่อง iteration แต่อย่างใด for-each เป็นการวนลูปที่เร็วที่สุดใน Python (เร็วกว่า while) มีฟังก์ชั่น zip() ให้ใช้ ทำให้สามารถใช้ for-each กับข้อมูลสองชุดที่มีขนาดเท่ากันพร้อมกันได้
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : คอนเซพท์วนลูปของ Ruby คล้ายคลึงกับของ Python มาก ข้อเสียเดียวที่ผมมองเห็นในการวนลูปของ Ruby คือ incosistence Ruby มีการวนลูปหลายรูปแบบเกินไป ทำให้เกิดความสับสนในการใช้งานในบางครั้ง
	</li>
</ul>
<p><strong>5.3 : Container</strong></p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ตอนผมเรียน Java อ.ที่สอนท่านชอบบอกว่า Collection-Classes ของ Java มันเจ๋งอย่างไรบ้าง หากเปรียบมวยกับ Array ของ C++ มันก็เจ๋งกว่าจริง ๆ นั่นแหละ แต่มันซับซ้อนมาก ๆ มากเกินไป การทำความเข้าใจ Collection-Classes ของ Java ให้แตกฉาน เป็นศาสตร์ และศิลป์ในตัว ต้องใช้เวลานาน มีจำนวน Classes ให้เลือกใช้มากเกินไป ทั้งที่แต่ละ Class ก็ไม่ต่างกันมาก การนำข้อมูลดิบใส่ลงไปใน Container ก็ไม่ใช่เรื่องง่าย ๆ (ดูตัวออย่างโปรแกรม)
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ใน Python มี Container เพียงสามแบบ คือ [List], {Dictionary} และ (Tuple) สามารถนำไปใช้งานง่าย คลอบคลุมทุกการใช้งาน เจ๋งไหม
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : คอยเซพท์ Container ของ Ruby เหมือนของ Python ทุกอย่าง แต่ไม่มี Tuple ให้ใช้
</li>
</ul>
<h4><u>Round 6 : OOP</u></h4>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : Java เป็นภาษาเขียนโปรแกรมที่นำทฤษฎี OOP มาใช้งานได้เต็มรูปแบบ และสมบูรณ์ที่สุด มีเพียง C# เท่านั้น ที่สามารถเทียบชั้นกับ Java ได้ในเรื่องนี้ แต่คำถามคือ เรามีความจำเป็นเพียงใด ในการใช้ OOP เต็มรูปแบบ
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : แม้ว่า Python จะรองรับการเขียนโปรแกรมแบบ OOP แต่ผมก็มองว่าเป็น OOP แบบขำ ๆ มีคอนเซพท์ OOP หลายอย่างที่ขาดใน Python  (public, private, protected, interface, abstact calss, etc.) อีกทั้งทุกอย่างใน Python ไม่จำเป็ต้องเป็น Object สำหรับคนที่เรียน วิชา Software Engineering หรือ Software Architect มา อาจเริ่มต้นกับ Python ไปไม่ถูกเหมือนกัน แต่สิ่งเหล่านี้ถูกทดแทนได้โดย Meta- , Functional-Programming และ Dynamic Typing
</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : Ruby อาจไม่รองรับ OOP เท่า Java แต่ดีกว่า Python และทำหน้าที่ OOP ได้อย่างไม่ขาดตกบกพร่อง OOP ในส่วนที่ขาดไปของ Ruby สามารถทดแทนได้ด้วย Dynamic Typing 
	</li>
</ul>
<h4><u>Round 7 : Web-Development</u></h4>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : แม้ว่า Java จะสร้างชื่อเสียงของตัวเองด้วยการใช้งานบนอินเตอร์เนต แต่ Framework เกี่ยวกับ Web-Development ของ Java ก็ไม่เคยประสบความสำเร็จอย่างจริงจัง Applet โดนโลกลืมอย่างน่าสงสาร Servlet และ JSP ก็โดน PHP กินส่วนแบ่ง ทิ้งห่างอย่างไม่เห็นฝุ่น เพราะมันดันใช้ยาก และตะกละตะกลาม แม้ว่าจะมี Web-Framework ใหม่ ๆ ออกมาให้ใช้งานมากมาย  แต่ก็กินส่วนแบ่งกันเอง และไม่มีนวัตกรรมใหม่ ๆ ที่น่าสนใจ 
</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : <a href="http://plone.org">Plone</a> ถือเป็น Killer Application ของ Python และเป็นเครื่องยืนยันได้ถึงคุณภาพด้านนี้ของ Python ได้อย่างดี อีกทั้ง Google และ YouTube ต่างก็หันมาใช้ Python อย่างออกหน้าออกตา สำหรับ Framework ก็มีทั้ง <a href="http://www.zope.org/">Zope</a> , <a href="http://www.djangoproject.com/">Django</a>  และ <a href="http://www.turbogears.org/">Turbo-Gear</a>  ให้เลือกใช้ แต่ปัญหามันอยู่ตรงนี้แหละครับ มันมีให้เลือกใช้เยอะเกินไปจน inconsistence
</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : บอกได้คำเดียวครับว่า <a href="http://www.rubyonrails.org/">Rails</a>  มันสุดยอด
	</li>
</ul>
<h4><u>Round 8 : GUI</u></h4>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : เป็นจุดอ่อนของที่ติดตัว  Java มานานนับปี <a href="http://en.wikipedia.org/wiki/Abstract_Window_Toolkit">AWT</a> , <a href="http://en.wikipedia.org/wiki/Standard_Widget_Toolkit">SWT</a>  และ <a href="http://en.wikipedia.org/wiki/Swing_%28Java%29">Swing</a> ต่างก็มีจุดอ่อนจุดแข็งของตัวเอง แต่เมื่อเปรียบเทียบทั้งสามกับ GUI ภาษาอื่น บอกได้เลยครับว่ามันห่วย สาเหตุก็เนื่องมาจาก Java มันเป็น Manage Code จึงไม่สามารถดึงพลังของ CPU มาใช้สำหรับ GUI ได้เท่า Native Code
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : Python เป็นภาษาเขียนโปรแกรมที่มี GUI ให้เลือกใช้มากที่สุดภาษาหนึ่ง ไม่ว่าจะเป็น Tk, Qt, KDE, GTK, Gnome, wxPython และทุก GUI-Toolkit ต่างก็เป็น GUI-Toolkit ที่มีประสิทธิภาพทั้งสิ้น
</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ความเป็นภาษาใหม่ของ Ruby ทำให้ Ruby ยังมี GUI ให้ใช้ไม่มากนัก แต่ไม่นานครับ ตอนนี้นักพัฒนาโปรแกรมของ Ruby ต่างเร่งผลิต Toolkit เหล่านี้ให้เราใช้งานอยู่ อีกสองสามปี ผมคิดว่า GUI ของ Ruby คงเทียบชั้น Python ได้ไม่ยาก
	</li>
</ul>
<h4><u>Round 9 : ETC.</u></h4>
<p><strong>9.1 : Tools</strong></p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : เนื่องจาก Java เป็นภาษาที่เขียนยาก แต่มีคนใช้เยอะ เลยมี IDE ดี ๆ ให้เลือกใช้งานหลากหลายตามไปด้วย สองผู้นำในวงการ IDE ของ Java ได้แก่ <a href="http://www.netbeans.org/">NetBeans</a>  และ <a href="http://www.eclipse.org/">Eclipse</a> ซึ่งทั้งสองเป็น IDE ที่มีคุณภาพสูง แถมทั้งคู่เป็น OpenSource อีกต่างหาก นอกจาก IDE แล้ว Java ยังมีเครื่องมืออื่น ๆ ให้เลือกใช้อย่างจุใจ  
</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : IDLE เป็นเครื่องมือมาตรฐานที่ติดตัวมากับ Python อันประกอบด้วย Editor และ Interactive-Python ซึ่งเป็นเครื่องมือที่เหมาะสำหรับงานขั้นพื้นฐานเท่านั้น แม้ว่า Python จะเป็นภาษาที่ค่อนข้างได้รับความนิยม แต่ถือว่ามีเครื่องมือจำพวก IDE ให้เลือกใช้งานน้อยมาก
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ความเป็นน้องใหม่ของ Ruby ทำให้ Ruby เสียเปรียบในหลาย ๆ ด้าน ไม่เว้นแม้แต่ด้านเครื่องมือการพัฒนาโปรแกรม โดยส่วนตัวผมคิดว่า ในอนาคตเราก็อาจไม่มีเครื่องมืออลังการอย่าง NetBeans หรือ Eclipse สำหรับ Ruby หรือ Python มาใช้งานกัน เพราะคุณสมบัติของภาษา Script ทำให้เครื่องมือต่าง เป็นเพียงเครื่องอำนวยความสดวก มากกว่าเครื่องมือจำเป็น
	</li>
</ul>
<p><strong>9.2 : Platform</strong></p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : คอนเซพท์ Write once run any where ของ Java นั้น ถือเป็นนวรรตกรรมบรรลือโลก ที่ถึงตอนนี้ยังไม่มีใครมาเทียบรัศมี (.NET ฟังดูดี แต่ในความเป็นจริงมันงี่เง่า เพราะใช้งานได้เฉพาะ OS ความหวังจึงน่าจะอยู่ที่ Mono) Byte-Code ที่ได้ไม่ต้องเปลี่ยนแปลงใด ๆ ก็ใช้งานได้ทุก OS ดังนั้นเรื่อง Plattform ต้องยกให้ Java เขาไป
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : แม้ว่า Python จะรองรับหลาย OS ไม่แพ้ Java แต่โค้ดบางส่วน ก็ต้องมีการแก้ไขเพื่อให้เข้ากับ OS โดยเฉพาะในส่วนที่ใช้ Module os ของ Python อีกทั้งการนำไปใช้งาน ก็เป็นการนำซอร์สโค้ดไปใช้ ไม่ได้เป็น Byte-Code อย่าง Java
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : เหมือน Python ครับ :P
	</li>
</ul>
<h4><u>Round 10 : Performance</u></h4>
<p>ในที่สุดก็มาถึงยกสุดท้าย ยกที่สำคัญที่สุด เรื่องความเร็วมักเป็นปัจจัยสำคัญ ที่ได้รับการพิจรณราในการตัดสินใจไม่ใช้ภาษา Script เพราะคนส่วนใหญ่มีความเชื่อว่า ภาษา Script เป็นภาษาที่ช้า แต่จากประสบการณ์และความรู้สึกของผม ภาษา Script ไม่ได้มีความเร็วเพียงแค่ เพียงพออย่างพอเพียง แต่เร็วกว่าภาษา Managed Code อย่าง Java เสียด้วยซ้ำ แต่ก็เป็นเพียงความรู้สึกที่ไม่ได้รับการพิสูจน์ (คนอ่านอย่าคิดลึกเชียวล่ะ) ครั้งนี้ถือเป็นโอกาสดี เลยเอาเสียหน่อย</p>
<p><strong>Platform</strong></p>
<p>Computer-Modell : Notebook Samsung R55<br />
CPU : Intel Core 2 Duo Centrino T5500<br />
CPU-Freq : 1830 MHz<br />
RAM : 1 GB<br />
OS : Ubuntu 6.04 LTS</p>
<p>Java-1.4 : gij (GNU libgcj) version 4.1.0 (Ubuntu 4.1.0-1ubuntu8)<br />
Java-1.6 : Java(TM) SE Runtime Environment (build 1.6.0-b105)<br />
Python : Python 2.4.3 (#2, Oct  6 2006, 07:52:30) , [GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2<br />
Ruby : ruby 1.8.4 (2005-12-24) [i486-linux]</p>
<p><strong>หมายเหตุ </strong>สำหรับ Java ให้ยึด Java 1.6 เป็นหลักครับ เพราะ Java ของ GNU มันไม่ดีเท่า Java 1.6 ของ Sun แต่สูสี Java 1.4 ของค่ายอื่น ๆ อยู่ (แต่จากการคาดการณ์ ผมคิดว่าคนส่วนใหญ่ยังใช้ Java 1.4 อยู่นะ)</p>
<p><strong>Speed</strong></p>
<p><img src="http://www.biolawcom.de/files/member/1/blog/583/speed.png" border="0" alt="image" /></p>
<table border="1" width="90%" align="center" style="border: 1px solid gray">
<tbody>
<tr>
<th align="center">Test</th>
<th align="center">Java 1.4</th>
<th align="center">Java 1.6</th>
<th align="center">Python</th>
<th align="center">Ruby</th>
</tr>
<tr>
<td>Console</td>
<td align="center">12.2</td>
<td align="center">13.9</td>
<td align="center">11.7</td>
<td align="center">12.8</td>
</tr>
<tr>
<td>Hash</td>
<td align="center">7.4</td>
<td align="center">2.0</td>
<td align="center">3.6</td>
<td align="center">11.3</td>
</tr>
<tr>
<td>IO</td>
<td align="center">1.2</td>
<td align="center">0.7</td>
<td align="center">1.9</td>
<td align="center">6.5</td>
</tr>
<tr>
<td>List</td>
<td align="center">2.2</td>
<td align="center">0.4</td>
<td align="center">0.4</td>
<td align="center">5.5</td>
</tr>
<tr>
<td>Math</td>
<td align="center">0.7</td>
<td align="center">0.5</td>
<td align="center">0.3</td>
<td align="center">4.4</td>
</tr>
<tr>
<td>Real-World-Application</td>
<td align="center">14.8</td>
<td align="center">3.6</td>
<td align="center">0.9</td>
<td align="center">1.5</td>
</tr>
</tbody>
</table>
<p><strong>Memory-usage</strong></p>
<p><img src="http://www.biolawcom.de/files/member/1/blog/583/mem.png" border="0" alt="image" /></p>
<table border="1" width="90%" align="center" style="border: 1px solid gray">
<tbody>
<tr>
<th align="center">Test</th>
<th align="center">Java 1.4</th>
<th align="center">Java 1.6</th>
<th align="center">Python</th>
<th align="center">Ruby</th>
</tr>
<tr>
<td>Console</td>
<td align="center">17.9</td>
<td align="center">8.9</td>
<td align="center">17.5</td>
<td align="center">1.6</td>
</tr>
<tr>
<td>Hash</td>
<td align="center">17.7</td>
<td align="center">8.9</td>
<td align="center">2.4</td>
<td align="center">40.7</td>
</tr>
<tr>
<td>IO</td>
<td align="center">17.9</td>
<td align="center">8.9</td>
<td align="center">2.3</td>
<td align="center">1.6</td>
</tr>
<tr>
<td>List</td>
<td align="center">17.9</td>
<td align="center">8.9</td>
<td align="center">2.3</td>
<td align="center">4.1</td>
</tr>
<tr>
<td>Math</td>
<td align="center">24.7</td>
<td align="center">22.3</td>
<td align="center">13.9</td>
<td align="center">19.1</td>
</tr>
<tr>
<td>Real-World-Application</td>
<td align="center">45.3</td>
<td align="center">37.2</td>
<td align="center">6.2</td>
<td align="center">16.7</td>
</tr>
</tbody>
</table>
<p><strong>Console</strong></p>
<p>ในส่วนนี้ไม่มีใครได้เปรียบเสียเปรียบอย่างได้ชัดในเรื่องความเร็ว แต่การใช้ Memory ต้องยกใช้ Ruby ส่วน Python มีการใช้ Memory มากผิดปกติ สาเหตุน่าจะมาจาก range() ที่ต้องผลิต list ขนาดยักษ์</p>
<p><strong>Java</strong></p>
<div class="code" id="code_1">
<pre class="java"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> test <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">String</span></a><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">        <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">1000000</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">        <span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    <span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre></div>
<p><strong>Python</strong></p>
<pre class="python"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1000000</span><span style="color: black;">&#41;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    <span style="color: #ff7700;font-weight:bold;">print</span> x</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Ruby</strong></p>
<pre class="ruby"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#006666;">1000000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |i|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color:#CC0066; font-weight:bold;">puts</span> i</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Hash</strong></p>
<p>Ruby ทำได้ไม่ดีนัก ทั้งในเรื่องความเร็ว และการใช้ Memory ในทางกลับกัน Python กลับทำได้ดีจนน่าแปลกใจ มีการใช้ Memory ขั้นต่ำสุด ความเร็วห่างจาก Java 1.6 ไม่มากนัก </p>
<p><strong>Java</strong></p>
<pre class="java"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #a1a100;">import java.util.*;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> test <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">String</span></a><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">6000</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMap+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Map</span></a> x = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AHashMap+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">HashMap</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> j = <span style="color: #cc66cc;">0</span>; j &lt; <span style="color: #cc66cc;">1000</span>; j++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInteger+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Integer</span></a> I=<span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInteger+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Integer</span></a><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInteger+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Integer</span></a> J=<span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInteger+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Integer</span></a><span style="color: #66cc66;">&#40;</span>j<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				x.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span>J,I<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				x.<span style="color: #006600;">get</span><span style="color: #66cc66;">&#40;</span>J<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Python</strong></p>
<pre class="python"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">6000</span><span style="color: black;">&#41;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    x=<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    <span style="color: #ff7700;font-weight:bold;">for</span> j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1000</span><span style="color: black;">&#41;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">        x<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>=i</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">        x<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Ruby</strong></p>
<pre class="ruby"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#006666;">6000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |i|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	x=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color:#006666;">1000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |j|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		x<span style="color:#006600; font-weight:bold;">&#91;</span>j<span style="color:#006600; font-weight:bold;">&#93;</span> = i</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		x<span style="color:#006600; font-weight:bold;">&#91;</span>j<span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>IO</strong></p>
<p>ในเรื่องความเร็ว ไม่มีอะไรน่าแปลกใจ แต่การใช้  Memory ของทุกภาษาอยู่ในขั้นต่ำสุด</p>
<p><strong>Java</strong></p>
<pre class="java"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #a1a100;">import java.io.*;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> test</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">String</span></a><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AFile+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">File</span></a> f = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AFile+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">File</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;/tmp/scratch&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3APrintWriter+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">PrintWriter</span></a> pw= <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3APrintWriter+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">PrintWriter</span></a><span style="color: #66cc66;">&#40;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				<span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ABufferedWriter+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">BufferedWriter</span></a><span style="color: #66cc66;">&#40;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				<span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AFileWriter+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">FileWriter</span></a><span style="color: #66cc66;">&#40;</span>f<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">1000000</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">				pw.<span style="color: #006600;">print</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			pw.<span style="color: #006600;">close</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">IOException</span></a> ioe<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			ioe.<span style="color: #006600;">printStackTrace</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Python</strong></p>
<pre class="python"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">f=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/tmp/scratch'</span>,<span style="color: #483d8b;">'wb'</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1000000</span><span style="color: black;">&#41;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    f.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Ruby</strong></p>
<pre class="ruby"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">f = File.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;/tmp/scratch&quot;</span>, <span 
style="color:#996600;">&quot;w&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#006666;">1000000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |i|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	f.<span style="color:#9900CC;">syswrite</span><span style="color:#006600; font-weight:bold;">&#40;</span>i.<span style="color:#9900CC;">to_s</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">f.<span style="color:#9900CC;">close</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>List</strong></p>
<p>งานนี้มีการใช้ทริกเล็กน้อยสำหรับ Python ทำให้ Python มีความเร็วเทียบเท่า Java-1.6 ขึ้นมาได้ ส่วน Ruby รั้งท้ายเหมือนเดิม</p>
<p><strong>Java</strong></p>
<pre class="java"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #a1a100;">import java.util.*;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> test <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">String</span></a><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AList+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">List</span></a> initial = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AArrayList+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">ArrayList</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;a&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;b&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;c&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;d&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;e&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;f&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	initial.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;g&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">        <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; <span style="color: #cc66cc;">3000</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AList+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">List</span></a> v = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AArrayList+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">ArrayList</span></a><span style="color: #66cc66;">&#40;</span>initial<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">            <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> j = <span style="color: #cc66cc;">0</span>; j &lt; <span style="color: #cc66cc;">1000</span>; j++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">                v.<span style="color: #006600;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInteger+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Integer</span></a><span style="color: #66cc66;">&#40;</span>j<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">                v.<span style="color: #006600;">get</span><span style="color: #66cc66;">&#40;</span>j<span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">            <span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">        <span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">    <span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Python</strong></p>
<pre class="python"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">a = <span style="color: #008000;">map</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> x : <span style="color: black;">&#91;</span><span style="color: #483d8b;">'a'</span>,<span style="color: #483d8b;">'b'</span>,<span style="color: #483d8b;">'c'</span>,<span style="color: #483d8b;">'d'</span>,<span style="color: #483d8b;">'e'</span>,<span style="color: #483d8b;">'f'</span>,<span style="color: #483d8b;">'g'</span><span style="color: black;">&#93;</span>+<span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1000</span><span style="color: black;">&#41;</span>,<span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">3000</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> a : i</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Ruby</strong></p>
<pre class="ruby"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#006666;">3000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |i|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	v=<span style="color:#006600; font-weight:bold;">&#91;</span>'a','b','c','d','e','f','g'<span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color:#006666;">1000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |j|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		v.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span>j<span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		v<span style="color:#006600; font-weight:bold;">&#91;</span>j<span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Math</strong></p>
<p>การทดสอบในส่วนนี้ค่อนข้างใกล้เคียงการใช้งานจริงที่ผมใช้อยู่ ที่ตลกคือ การจัดการ Memory และระบบ Typecast ของ Java ตอนแรกผมใช้ Class ArrayList ในการเก็บข้อมูล แต่ก็ต้องมานั่งปวดหัวกับเรื่อง Typecast มากกว่าจะมาจดจ่อกับตัวโปรแกรม เลยต้องหันใช้ double[] แทน แต่ตัว double[] ก็เก็บข้อมูลได้เพียง 2000000 หน่วย และไม่สามารถประกาศตัวแปรขนาด 2000000 หน่วย ติดต่อกันได้เกิน 3 ตัวแปร ไม่งั้นมีเรื่อง ส่วน Ruby ก็ช้าจนน่าเกลียด </p>
<p><strong>Java</strong></p>
<pre class="java"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #a1a100;">import java.lang.Math;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> test <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">String</span></a><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> x       = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">200000</span><span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> gauss   = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">200000</span><span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> laplace = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">200000</span><span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> si      = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">200000</span><span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> sisqr   = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">200000</span><span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> bp      = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">double</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">200000</span><span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i = <span style="color: #cc66cc;">0</span> ; i &lt; <span style="color: #cc66cc;">200000</span>; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>       = <span style="color: #66cc66;">&#40;</span>i/<span style="color: #cc66cc;">10000.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">-10.0</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			gauss<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>   = <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">exp</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1.0</span> * x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span> * x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			laplace<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span> = <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">exp</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1.0</span> * <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">abs</span><span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			si<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>      = <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">sin</span><span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>*<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">PI</span><span style="color: #66cc66;">&#41;</span>/<span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>*<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">PI</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			sisqr<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>   = si<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>*si<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">			bp<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>      = si<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>*<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AMath+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">Math</span></a>.<span style="color: #006600;">cos</span><span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>*<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">		<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	<span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #66cc66;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Python</strong></p>
<pre class="python"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color: #ff7700;font-weight:bold;">import</span> numpy</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">x = numpy.<span style="color: black;">arange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">-10</span>,<span style="color: #ff4500;">10</span>,<span style="color: #ff4500;">0.0001</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">gauss   = numpy.<span style="color: black;">exp</span><span style="color: black;">&#40;</span>-<span style="color: black;">&#40;</span>x**<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">laplace = numpy.<span style="color: black;">exp</span><span style="color: black;">&#40;</span>-numpy.<span style="color: #008000;">abs</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">si      = numpy.<span style="color: black;">sin</span><span style="color: black;">&#40;</span>x*numpy.<span style="color: black;">pi</span><span style="color: black;">&#41;</span>/<span style="color: black;">&#40;</span>numpy.<span style="color: black;">pi</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">sisqr   = si**<span style="color: #ff4500;">2</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">bp      = si*numpy.<span style="color: black;">cos</span><span style="color: black;">&#40;</span>x*<span style="color: #ff4500;">100</span><span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Ruby</strong></p>
<pre class="ruby"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">x = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">gauss = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">laplace = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">si = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">sisqr = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">bp = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#006666;">200000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> |i|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	x.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#006600; font-weight:bold;">&#40;</span>i / <span style="color:#006666;">10000.0</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006666;">-10.0</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	gauss.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span> Math.<span style="color:#9900CC;">exp</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">-1.0</span> * x<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> * x<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	laplace.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span>Math.<span style="color:#9900CC;">exp</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">-1.0</span> * x<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">abs</span> <span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	si.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span>Math.<span style="color:#9900CC;">sin</span><span style="color:#006600; font-weight:bold;">&#40;</span>x<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>* Math::PI<span style="color:#006600; font-weight:bold;">&#41;</span> / <span style="color:#006600; font-weight:bold;">&#40;</span>x<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> * Math::PI<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	sisqr.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span>si<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>*si<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">	bp.<span style="color:#9900CC;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span>si<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>*Math.<span style="color:#9900CC;">cos</span><span style="color:#006600; font-weight:bold;">&#40;</span>x<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>*<span style="color:#006666;">100</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;"><span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: Tahoma;">&nbsp;</div></li></ol></pre><p>
<strong>Real-World-Application</strong></p>
<p>การทดสอบสุดท้าย ผมคิดว่าน่าจะใกล้เคียงกับการใช้งานจริงมากที่สุด ในการทดสอบนี้ตัวโปรแกรมต้องสร้าง Query เพื่อสอบถามไปยังฐานข้อมูลก่อน เมื่อได้ข้อมูลมาแล้ว จึงเปลี่ยนแปลงรูปแบบข้อมูลด้วย RegEx และ Splitจากนั้นข้อมูลจะถูกเก็บไว้ใน Hash สุดท้ายก็แสดงผลข้อมูลออกมาทาง Console จะเห็นได้ว่า การทดสอบนี้ มีส่วนประกอบที่ใช้ในการเขียนโปรแกรมเวบไซท์ค่อนข้างครบ</p>
<p>ข้อมูลที่อยู่ในฐานข้อมูลก็คือข้อมูลของ BioLawCom.De คำที่ผมใช้หาในฐานข้อมูลคือ ตัวอักษร <strong>a </strong>ข้อมูลที่ได้มีทั้งสิ้น 690 rows</p>
<p>สิ่งที่น่าเบื่อมากใน Java คือ Typecast และไม่สามารถบรรจุข้อมูลลงใน Hash และ List ได้แบบง่าย ๆ อย่าง Python กว่าผมจะเขียนโปรแกรมนี้ด้วย Java ได้ต้องใช้เวลานานมาก เพราะต้องแก้ไขข้อผิดพลาดเกือบทุกครั้งที่คอมไพล์ ส่วน Ruby และ Python นั้นมีความคล้ายคลึงกันมาก ต่างกันเพียงแค่รายละเอียดเล็กน้อยเท่านั้น</p>
<p>โปรแกรมที่ได้จาก Ruby และ Python มีขนาดใกล้เคียงกันมาก แต่ของ Java มีขนาดใหญ่กว่าเกือบสองเท่า เวลาที่ใช้ในการเขียนอาจจะมากกว่าห้าหรือสิบเท่า ผลที่ออกมาก็ไม่คุ้มกับเวลาที่เสียไปเอาเสียเลย Java ทั้งใช้เวลามากกว่า และใช้ Memory มากกว่า น่าผิดหวังมาก ส่วน Python นั้นนำโด่ง ทิ้งห่าง Ruby เกือบสองเท่า</p>
<p>(เนื่องจากโค้ดยาวมาก ดังนั้น ผมเลยแยกโค้ดออกมาต่างหาก สามารถดาวน์โหลดได้ที่ <a href="http://www.biolawcom.de/files/member/1/blog/583/Real.zip">Real.zip</a>  ครับ)</p>
<ul>
<li><strong>Java : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" width="16" height="15" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : มีความเร็วเหนือกว่า Ruby และ Python ในเรื่องง่าย ๆ และพื้น ๆ เท่านั้น โปรแกรมที่มีความซับซ้อนมากขึ้น Java จะเริ่มตะกละ และอุ้ยอ้าย การจะเขียน Application ขนาดใหญ่ด้วย Java จึงต้องเตรียมรับเรื่องนี้ไว้ให้ดี
	</li>
<li><strong>Python : </strong><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : ต้องยกให้เป็นผู้ชนะในครั้งนี้ครับ เพราะมีความเร็วสูงสุดใน 4 จาก 6  การทดสอบ  ในการทดสอบที่ Python ช้ากว่า Java ก็มีความแตกต่างเกิดขึ้นไม่มากนัก
	</li>
<li><strong>Ruby :</strong> <img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /><img style="width: 16px; height: 15px" src="http://www.biolawcom.de/files/member/1/blog/583/bookmark.png" border="0" alt="image" /> : แม้ว่า Ruby จะไม่ชนะในการทดสอบใดเลย แต่ก็รักษาตำแหน่งการใช้ Memory น้อยได้โดยตลอด แม้ว่าการทดสอบพื้น ๆ Ruby จะเป็น looser แต่ในการใช้งานจริง โดยเฉพาะ Web-Application Ruby ก็สามารถรักษาความเร็วของตัวเองได้ดีทีเดียว แต่สำหรับโปรแกรมจำพวก Simulation ลืม Ruby ไปได้เลยครับ
</li>
</ul>
<h4><u>Conclusion</u></h4>
<p>ในส่วนของผลรวมคะแนน ผมคิดว่าแต่ละคนคงมีตัวคูณสำหรับคะแนนจากแต่ละยกที่ไม่เท่ากัน สำหรับผม ในเรื่อง Peformance x 3 และ Time to code x 2 และ Python ก็เป็นแชมป์ในครั้งนี้ แต่ทั้งหมดทั้งสิ้นก็เป็นการให้คะแนนโดยผมเพียงคนเดียว ซึ่งอาจไม่ตรงใจหลาย ๆ คน ก็สามารถให้คะแนนแต่ละส่วนกันได้ตามความพอใจครับ</p>
<p>ทั้งนี้และทั้งนั้น ในส่วนของ Performance และ Time to code เป็นส่วนสำคัญมาก และ ผลก็คงเปลี่ยนแปลงจากนี้ไปได้ไม่มาก จากสองส่วนนี้ผมพอจะสรุปได้ว่