วันอังคารที่ 13 กรกฎาคม พ.ศ. 2553

การเปรียบเทียบข้อดีและข้อเสียภาษาcomputer

ข้อดี
PHP
ยืดหยุ่น ไม่ซับซ้อน สามารถพัฒนาแบบ Object ได้ (PHP5 ขึ้นไป) มีบริษัทที่ให้การสนับสนุนโปรแกรมระดับ Enterprise นักพัฒนาสามารถ หา Compiler ได้ฟรีๆ ไม่ต้องเสียตัง มีโปรแกรมเสริมจำนวนมาก มีคำสั่งครบถ้วน
http://www.thaiadmin.org/board/index.php?action=printpage;topic=4968.0

Java
โปร แกรมจาวาที่เขียนขึ้นสามารถทำงานได้หลาย platform โดยไม่จำเป็นต้องแก้ไขหรือ compile ใหม่ ทำให้ช่วยลดค่าใช้จ่ายและเวลาที่ต้องเสียไปในการ port หรือทำให้โปรแกรมใช้งานได้หลาย platform
ภา ษาจาวาเป็นภาษาเชิงวัตถุ ซึ่งเหมาะสำหรับพัฒนาระบบที่มีความซับซ้อน การพัฒนาโปรแกรมแบบวัตถุจะช่วยให้เราสามารถใช้คำหรือชื่อ ต่าง ๆ ที่มีอยู่ในระบบงานนั้นมาใช้ในการออกแบบโปรแกรมได้ ทำให้เข้าใจได้ง่ายขึ้น
ภาษาจาวามีความซับซ้อนน้อยกว่าภาษา C++ ทำให้ใช้งานได้ง่ายกว่าและลดความผิดพลาดได้มากขึ้น
ภา ษาจาวามีการตรวจสอบข้อผิดพลาดทั้งตอน compile time และ runtime ทำให้ลดข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม และช่วยให้ debug โปรแกรมได้ง่าย
ภาษาจาวาถูกออก แบบมาให้มีความปลอดภัยสูงตั้งแต่แรก ทำให้โปรแกรมที่เขียนขึ้นด้วยจาวามีความปลอดภัยมากกว่าโปรแกรมที่เขียนขึ้นด้วยภา ษาอื่น
มี IDE, application server, และ library ต่าง ๆ มากมายสำหรับจาวาที่เราสามารถใช้งานได้โดยไม่ต้องเสียค่าใช้จ่าย ทำให้เราสามารถลดค่าใช้จ่ายที่ต้องเสียไปกับการซื้อ tool และ s/w ต่าง ๆ
http://www.thaiblogonline.com/boongpig.blog?PostID=13211

C++
เป็นภาษาที่ทำงานได้รวดเร็ว เมื่อเทียบกับภาษาอื่น
สามารถทำงานได้บนเครื่องคอมพิวเตอร์ต่างประเภทกัน โดยอาศัยการคอมไพล์โปรแกรมให้
http://images.thanakornj.multiply.multiplycontent.com/attachment/

ภาษาC
สั้น กะทัดรัด การรองรับ pointer มีหนังสือ Algorithms ดีๆ ที่ใช้ภาษา C อ้างอิงอยู่มาก
http://www.thaiadmin.org/board/index.php?action=printpage;topic=4968.0

VB
การครอบคลุมตลาด ตั้งแต่ RAD ไปกระทั่ง VB Script สำหรับเขียน ASP บน Web หรือแม้กระทั่ง Application ต่างๆ เช่น Office VISIO ก็ล้วนแล้วแต่รองรับการเพิ่มความสามารถด้วย VBA และในปัจจุบัน Microsoft ได้ขยายสังเวียนการต่อไปไปถึง Pocket PC อีกด้วย สำหรับ VB นัยว่า Store procedure ของ SQL Server Microsoft จะรองรับภาษา VB ด้วย มีจุดหนึ่งที่ทำให้ VB ดูดีกว่าภาษาตระ***ล C ก็คือ Case Insensitive คงไม่ปฏิเสธว่า Case Sensitive มันก็มีความยืดหยุ่นสูง แต่มันก็ทำให้เขียนโปรแกรมแล้วหลงได้ง่าย บางคนเลือก VB เพราะเหตุผลนี้เป็นหลัก
http://www.thaiadmin.org/board/index.php?action=printpage;topic=4968.0

VB.net
- รองรับ Optional argument ซึ่งสำคัญมากที่คุณต้องการใช้งานร่วมกับ ActiveX component หรือการเขียนโค้ดชนกับพวก Office- ทำตัวไม่ซีเรียสได้ คือยอมรับการทำ late-binding ได้ถ้าไม่กำหนด Option Strict On การเขียนโค้ดพวกนี้ใช้กับพวก ActiveX อีกนั่นเอง (ผมแนะนำให้หลีกเลี่ยงการเขียนโค้ดแบบ late-binding ใน .Net)- รองรับการทำ named indexer (การสร้าง property ที่มี argument)- มีคำสั่ง VB แบบเดิมๆ เช่น Left, Mid, UCase, ... ให้ใช้ง่ายๆ สำหรับ ผู้ใช้ VB6 มาก่อน (การเรียกใช้ฟังก์ชันแบบเดิมๆ นี้จะมีผลต่อประสิทธิภาพ ของโปรแกรม)- มีประโยค With..End With ให้ใช้ - ความเรียบง่าย เช่นการสร้างประโยค Event - สามารถกำหนดชื่อเมธอดของการ implements interface ที่ต่างจาก ที่กำหนดไว้ใน interface ได้ (ผมว่าไม่ค่อยได้ประโยชน์เลย ทำให้ยุ่งยาก ในการค้นหาเสียมากกว่า)- มีประโยค Catch...When... ทำให้สามารถทำการ filter exception ด้วยเงื่อนไขได้ นอกเหนือจากการ filter ด้วยชนิดของ exception เท่านั้น- Visual Studio .Net จะทำการ compile โค้ดในลักษณะ background ซึ่งช่วยเป็นข้อดีในโปรเจ็กต์ขนาดเล็ก แต่ถ้าโปรเจ็กต์ขนาดใหญ่มหึมา จะกลับเป็นข้อเสียอย่างมาก (มีฝรั่งหลายคนบ่นว่าต้องถึงกับต้องยอม เปลี่ยนจาก VB.Net มาเป็น C# เลย ในโปรเจ็กต์ที่มีไฟล์มีคลาสเป็นพันๆ)
http://dotnet.exteen.com/20071223/vb-net-vs-c

ปาสคาล
- เป็นภาษาในยุกเริ่มแรก เหมาะสำหรับงานทั่วไป
- เหมาะสำหรับทำงานใน DOS
http://www.blmiacec.ac.th/E-learning/bscom/9-3.html

JavaScript
ความเร็ว . เป็นฝั่งไคลเอ็นต์, JavaScript มีความรวดเร็วเพราะมีฟังก์ชัน code สามารถทำงานทันทีแทนที่จะต้องติดต่อเซิร์ฟเวอร์และรอคำตอบ
Simplicity. JavaScript is relatively simple to learn and impleเรียบง่าย . JavaScript ค่อนข้างง่ายที่จะเรียนรู้และใช้
Versatility. JavaScript plays nicely with other languages and can be used in a huge variety of applicatioเก่งกาจ . JavaScript เล่นอย่างกับภาษาอื่น ๆ และสามารถใช้ในมากมายของการใช้งาน Unlike PHP or SSI scripts, JavaScript can be inserted into any web page regardless of the file extension. ต่างจาก PHP หรือสคริปต์ SSI, JavaScript สามารถแทรกลงในหน้าเว็บใด ๆ ไม่ว่านามสกุล JavaScript can also be used inside scripts written in other languages such as Perl and PHP. JavaScript สามารถใช้ในการเขียนสคริปต์ในภาษาอื่น ๆ เช่น Perl และ PHP
Server Load. Being client-side reduces the demand on the website server. Load Server . เป็นฝั่งไคลเอ็นต์เซิร์ฟเวอร์ลดความต้องการในเว็บไซต์
http://www.mediacollege.com/internet/javascript/pros-cons.html


AS2 - ภาพชัด - ขนาดเล็ก - โหลดได้เร็ว - ทำงานแทน CGI ได้ในระดับหนึ่ง - ทำภาพเคลื่อนไหวได้โดยไม่ต้องพึ่ง Java Script - สร้างฟอร์มสำหรับกรอกข้อมูลได้
http://www.thaimisc.com/flash/article/1/index.html

C#
- รองรับ XML documentation คล้ายๆ javadoc คือเอาคอมเม้นต์ในโค้ดมาแปลงเป็นเอกสาร technical manual ได้เลย แต่ใน VB.Net เวอร์ชั่น 2005 (Whidbey) ก็จะรองรับในคุณสมบัตินี้ด้วย
- สามารถทำ operator overloading ได้ (VB.Net 2005 ก็จะทำได้เช่นกัน)
- รองรับ unsigned datatype (VB.Net 2005 ก็จะทำได้เช่นกัน)
- มีประโยค using เพื่อใช้จัดการกับ resource ที่เป็นแบบ unmanaged
- รองรับ unsafe code
http://guru.google.co.th/guru/thread?tid=6ce0454ac322fbd2
AS3
1. มันเขียนโค้ดลงบนวัตถุไม่ได้ (เช่น เขียนโค้ดลงบนปุ่ม) ต้องเขียนบนเฟรม หรือไฟล์ as เท่านั้น2. ทุกอย่างทำงานเป็น Event และมี Listener อย่างชัดเจน อธิบายคร่าวๆ คือ.. มี "ยาม" มานั่งเฝ้า "เหตุการณ์" ที่กำลังจะเกิดขึ้น เช่น "ยาม" นั่งเฝ้าตึกอยู่ หากมี "โจรปีนตึก" ยามจะต้องทำอะไรบ้าง!!! เราก็กำหนดไป3. คำสั่งใน AS2 บางส่วนตัดทิ้งไป และใช้งานคนละแบบกันใน AS3 เลย อย่างเช่น gotoAndPlay ปกติแล้ว AS2 เราจะใส่ชื่อ Scene ก่อนแล้วตามด้วยเฟรม แบบนี้1.gotoAndPlay("Scene 1", 1);แต่ AS3 จะต้องใส่ เฟรม ก่อนชื่อ Scene (ระวังให้ดี)1.gotoAndPlay(1, "Scene 1");แต่เหตุที่ต้องเปลี่ยน เพราะอะไร? ไว้ผมจะอธิบาย ใน "ยาม" ที่เราเข้าถึงเหตุการณ์ "เรียน OOP"


ข้อเสีย
PHP
ถ้าต้องการการเข้ารหัส Code จะต้องเสียเงิน เพื่อใช้บริการของ Third Party ตัวภาษาเองไม่สามารถเข้ารหัสได้ Developer Environment ยังเป็นแบบ Code Based อยู่ไม่มี Compiler เพื่อสร้าง Binary สำหรับแต่ละ OS
http://www.thaiadmin.org/board/index.php?action=printpage;topic=4968.0

Java
ทำงาน ได้ช้ากว่า native code (โปรแกรมที่ compile ให้อยู่ในรูปของภาษาเครื่อง) หรือโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น อย่างเช่น C หรือ C++ ทั้งนี้ก็เพราะว่าโปรแกรมที่เขียนขึ้นด้วยภาษาจาวาจะถูกแปลงเป็นภาษากลางก่อน แล้วเมื่อโปรแกรมทำงานคำสั่งของภาษากลางนี้จะถูกเปลี่ยนเป็นภาษาเครื่องอีกที หนึ่ง ทีล่ะคำสั่ง (หรือกลุ่มของคำสั่ง) ณ runtime ทำให้ทำงานช้ากว่า native code ซึ่งอยู่ในรูปของภาษาเครื่องแล้วตั้งแต่ compile โปรแกรมที่ต้องการความเร็วในการทำงานจึงไม่นิยมเขียนด้วยจาวา

tool ที่มีในการใช้พัฒนาโปรแกรมจาวามักไม่ค่อยเก่ง ทำให้หลายอย่างโปรแกรมเมอร์จะต้องเป็นคนทำเอง ทำให้ต้องเสียเวลาทำงานในส่วนที่ tool ทำไม่ได้ ถ้าเราดู tool ของ MS จะใช้งานได้ง่ายกว่า และพัฒนาได้เร็วกว่า (แต่เราต้องซื้อ tool ของ MS และก็ต้องรันบน platform ของ MS)
http://www.thaiblogonline.com/boongpig.blog?PostID=13211


C++
เป็นภาษาที่เรียนรู้ยาก
การตรวจสอบโปรแกรมทำได้ยาก
ไม่เหมาะกับการเขียนโปรแกรมที่เกี่ยวข้องกับการออกรายงานที่มีรูปแบบซับซ้อนมากๆ
http://images.thanakornj.multiply.multiplycontent.com/attachment/

ภาษาC
ซับซ้อน อ่านยาก ภาษา C มองทุกอย่างเป็น Case Sensitive ทำให้เขียนโปรแกรมแล้วหลงเรื่อง Case เป็นประจำ ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง
http://www.thaiadmin.org/board/index.php?action=printpage;topic=4968.0

VB
เรื่องความเร็ว แน่นอนภาษา VB ช้ากว่าภาษาอื่นมาก เรื่องนี้จริง แต่คนส่วนมากที่ใช้ VB จะไม่ค่อยรู้สึก เพราะงานที่ต้องใช้ความเร็วจริงๆ มีไม่มาก ถ้างานที่ต้องใช้ความเร็วจริงๆ ก็ใช้ภาษาอื่น VB ไม่ใช่เป็นภาษาที่เป็น OOP เต็มรูปแบบ ไม่สามารถทำ Implementation Inheritance ได้
http://www.thaiadmin.org/board/index.php?action=printpage;topic=4968.0

VB.net
ไม่สามารถจับตัวชี้โดยตรง -- นี้สามารถเสียเปรียบเพราะมีจำเป็นต่อการเข้ารหัสและคิดจะจัดการชี้ Additional coding results in additional CPU cycles; which in turn requires additional processing time; which results in slower applications. ผลการเขียนโปรแกรมเพิ่มเติมในรอบการทำงานเพิ่มเติม; ซึ่งจะต้องใช้เวลาการประมวลผลเพิ่ม; ซึ่งผลในการใช้งานช้า

Large Talent Pool – Since VB is so easy to learn there is a significantly larger pool of competition; thus, there can be more programmers applying for the same employment or project and this can ultimately drive the market value of the programmer's services down. ใหญ่ Talent Pool -- เมื่อ VB เป็นเพื่อง่ายต่อการเรียนรู้มีสระว่ายน้ำขนาดใหญ่อย่างมีนัยสำคัญของการแข่งขัน; จึงมีสามารถเขียนโปรแกรมเพิ่มเติมสมัครงานเดียวกันหรือโครงการนี้และในที่สุดสามารถไดรฟ์มูลค่าตลาดบริการโปรแกรมของลง

Intermediate Language (IL) compilation – These types of compilers can be easily decompiled (aka Reverse Engineered); there is little that can be done to deter decompiling of the application, and nearly nothing that can be done to pIntermediate Language (IL) รวบรวม -- ประเภทนี้ compilers ได้ง่าย decompiled (aka Reverse Engineered) มีน้อยที่สามารถทำได้เพื่อยับยั้ง decompiling ของโปรแกรมและเกือบไม่มีอะไรที่สามารถทำได้เพื่อป้องกันไม่ให้

Just-In-Time (JIT) compiler – JIT compiling is the way the computer can interpret the IL compilation. Just - In - Time (JIT) compiler -- JIT รวบรวมรวบรวมเป็นวิธีที่คอมพิวเตอร์สามารถ IL ตีความ This is essential to running the application. นี้เป็นสิ่งจำเป็นที่จะใช้โปรแกรม This means the target computer will be required to have JIT and that the application can receive performance degradation because of the extra CPU cycles required to use JIT. ซึ่งหมายความว่าเครื่องคอมพิวเตอร์เป้าหมายจะต้องมี JIT และสมัครได้รับการย่อยสลายเพราะของรอบการทำงานพิเศษที่จำเป็นในการใช้ JIT

Large Libraries – Because VB is an IL there is a large number of libraries required for the JIT compiler to interpret the application. ห้องสมุดขนาดใหญ่ -- เนื่องจาก VB เป็นโปรแกรม IL มีขนาดใหญ่จำนวนห้องสมุดต้อง JIT เพื่อรวบรวมไปตีความ Large libraries require more hard drive space, more computing time and most of all it can be a nuisance if the application is being deployed over the internet and the user must obtain these libraries in addition to the files of the compiled application. ห้องสมุดขนาดใหญ่ต้องใช้พื้นที่ว่างในฮาร์ดดิสก์เพิ่มเติมเวลาการใช้คอมพิวเตอร์มากขึ้นและส่วนใหญ่ทั้งหมดอาจจะรำคาญถ้าสมัครจะถูกใช้งานผ่านทางอินเทอร์เน็ตและผู้ใช้จะต้องได้รับห้องสมุดนี้นอกจากไฟล์ของโปรแกรมรวบรวม
http://dotnet.exteen.com/20071223/vb-net-vs-c

ปาสคาล
ไม่เหมาะสำหรับงานควบคุม หรือ สร้างภาพกราฟฟิคที่มีความยุ่งยาก เช่น เขียนเกมส์ที่มีความสมจริง หรืองานทางด้านวิศวกรรม การคำนวนทางด้านวิศวกรรมhttp://www.blmiacec.ac.th/E-learning/bscom/9-3.html

JavaScript
Security . เนื่องจากรหัสรันบน'ผู้ใช้คอมพิวเตอร์ในบางกรณีก็สามารถใช้ประโยชน์เพื่อวัตถุประสงค์ที่เป็นอันตราย This is one reason some people choose to disable JavaScript. นี่คือเหตุผลหนึ่งที่บางคนเลือกที่จะปิดการใช้งาน JavaScript
Reliance on End User. JavaScript is sometimes interpreted differently by different browsers. พึ่งพา End User . JavaScript ถูกแปลบางครั้งแตกต่างจากเบราว์เซอร์ที่แตกต่างกัน Whereas server-side scripts will always produce the same output, client-side scripts can be a little unpredictable. ส่วนสคริปต์ฝั่งเซิร์ฟเวอร์มักจะผลิตออกเดียวกันสคริปต์ฝั่งไคลเอ็นต์สามารถคาดการณ์เล็กน้อย Don't be overly concerned by this though - as long as you test your script in all the major browsers you should be safe. ไม่ต้องกังวลจนเกินไปโดยนี้แม้ว่า -- ตราบเท่าที่คุณทดสอบ script ของคุณในทุกเบราว์เซอร์ที่สำคัญคุณควรจะปลอดภัย
http://www.mediacollege.com/internet/javascript/pros-cons.html

AS2
- ผู้ใช้ที่มี Browser รุ่นเก่าๆจะไม่สามารถดู Flash ได้
- จำเป็นต้องไปโหลดปลั้กอินเพิ่มเติมเอาเอง (บางที Browser รุ่นไหม่ที่ไม่มีปลั๊กอินก็ดูไม่ได้เหมือนกัน)
http://www.thaimisc.com/flash/article/1/index.html

C#
ผมแค่อยากกล่าวว่า C# นั้นลอก Java มาครับ Microsoft มีจุดไม่ดีมากๆ ก็เรื่องชอบลอกนี่แหละครับ Windows ก็ลอก Apple LISA และ Macintosh มา IDE ของการเขียนโปรแกรมก็ลอก Borland มา และอื่นๆ อีกมาก รวมทั้ง .NET Framework ก็ลอก JAVA Platform มาไม่น้อยกว่า 80% แต่ก็นั่นแหละครับ Microsoft เป็นจอมลอกที่มีพรสวรรค์ครับ ลอกแล้ว ถ้าใครไม่ใช่แฟนพันธุ์แท้ จะดูไม่รู้เลยครับ
http://guru.google.co.th/guru/thread?tid=6ce0454ac322fbd2

AS3
1. มันเขียนโค้ดลงบนวัตถุไม่ได้ (เช่น เขียนโค้ดลงบนปุ่ม) ต้องเขียนบนเฟรม หรือไฟล์ as เท่านั้น2. ทุกอย่างทำงานเป็น Event และมี Listener อย่างชัดเจน อธิบายคร่าวๆ คือ.. มี "ยาม" มานั่งเฝ้า "เหตุการณ์" ที่กำลังจะเกิดขึ้น เช่น "ยาม" นั่งเฝ้าตึกอยู่ หากมี "โจรปีนตึก" ยามจะต้องทำอะไรบ้าง!!! เราก็กำหนดไป3. คำสั่งใน AS2 บางส่วนตัดทิ้งไป และใช้งานคนละแบบกันใน AS3 เลย อย่างเช่น gotoAndPlay ปกติแล้ว AS2 เราจะใส่ชื่อ Scene ก่อนแล้วตามด้วยเฟรม แบบนี้1.gotoAndPlay("Scene 1", 1);แต่ AS3 จะต้องใส่ เฟรม ก่อนชื่อ Scene (ระวังให้ดี)1.gotoAndPlay(1, "Scene 1");แต่เหตุที่ต้องเปลี่ยน เพราะอะไร? ไว้ผมจะอธิบาย ใน "ยาม" ที่เราเข้าถึงเหตุการณ์ "เรียน OOP"