เกรียนไทยยังชิดซ้าย คุณครูยังอายม้วน

เกรียนไทยยังชิดซ้าย คุณครูยังอายม้วน
เมื่อเจอ เกรียนเมืองนอก อย่างฮา!

ลองดูเด็กฝรั่งทำข้อสอบ เล่นเอาฮาเลย
โจทย์มีอยู่ว่า?ภาษาโปรแกรมมิ่งอย่าง C กับ C++ แตกต่างกันอย่างไร ?

ข้อแตกต่างระหว่าง ภาษา C กับ C++
ข้อที่ ภาษา C ภาษา C++
1 มีเพียงตัว 'C' มีตัว 'C' ตามด้วย '++'
2 ออกเสียงเป็น "ซี" ออกเสียงเป็น "ซี พลัส พลัส"
3 เคยเรียนในเทอม 1 อยู่ในเทอม 2
4 มีเพียงตัวอักษรเดียว คือ 'C' มี 3 ตัวอักษร ได้แก่ 'c' '+' '+'
5 มันคือ? "a little hardware oriented" มันไม่ใช่? "a little hardware oriented"
6 เราใช้คำสั่งอย่าง cin cout และอื่น ๆ เราใช้คำสั่งอย่าง printf scanf และอื่น ๆ
7 สอนโดย GOBIND Sir สอนโดย ROSY Maam

ลองมาดูต้นฉบับคำตอบ เป็นของเด็ก 2 คน ที่ตอบเหมือนกันยังกับแกะ …แหมยังอุตสา copy กันมาได้ 555+

กระดาษคำตอบ คนแรก

525801_10151108174225802_

Photo Credit loledhard.com


กระดาษคำตอบ คนที่สอง

16337

Photo Credit onlinefundb.com


น้อง ๆ หนู ๆ ถ้าตอบข้อสอบอย่างนี้ นอกจากติดศูนย์แล้ว คุณครูยังจำหน้าน้องได้แม่น และเอาไปเล่าสู่รุ่นน้อง แถมเป็นตราบาปแก่คณาจารย์และคณะอีกด้วย

ถ้าใครอยากได้คะแนน ควรตอบแบบนี้
(ที่มา http://studytipsandtricks.blogspot.com/2012/05/15-most-important-differences-between-c.html)

แนะนำข้อมูลเบื้องต้น

  • ภาษา C++ มีที่มาจากภาษา C และก็เป็นซุปเปอร์เซต (Superset) ของ C
  • เริ่มต้นทีเดียว C++ จะรู้จักกันว่ามันคือ ภาษา c ที่มีคลาส (class)
  • ใน C++ ได้มีการเปลี่ยนแปลงครั้งใหญ่ โดยการเพิ่มคลาส และมีกลไกลการสืบทอดคลาสของออบเจ็กต์ ไปยังคลาสอื่น ๆ ได้
  • โปรแกรมที่เขียนด้วย C ส่วนใหญ่ สามารถคอมไพล์ด้วย คอมไพลเลอร์ของภาษา C++
  • นิพจน์ (expressions) ใน C++ จะเหมือนในภาษา C
  • ตัวดำเนินการ (operators) ของภาษา C ทั้งหมด สามารถใช้ได้ใน C++
ข้อแตกต่างระหว่าง ภาษา C กับ C++
ข้อที่ ภาษา C ภาษา C++
1 เป็นภาษาเชิงกระบวนการ (Procedural Language) เป็นภาษาเชิงวัตถุ (Object oriented Language)
2 ไม่มี virtual Functions มีใช้ virtual Functions
3 ไม่มี Polymorphism มีใช้ Polymorphism ซึ่งเป็นฟีเจอร์สำคัญมากใน OOP
4 ไม่มี Operator overloading Operator overloading เป็นหนึ่งในฟีเจอร์ที่จำเป็น
5 การออกแบบโปรแกรมเป็น วิธีจากบนลงล่าง "Top down" การออกแบบโปรแกรมเป็น วิธีจากล่างไปสู่บน "Bottom up"
6 ไม่มี namespace ใช้ namespace เพื่อหลีกเลี่ยงชื่อซ้ำกัน
7 อนุญาตให้การประกาศตัวแปรโกลบอล (global variables) ไม่อนุญาตให้การประกาศตัวแปรโกลบอล
8 scanf() ใช้เป็นอินพุต และ printf() ใช้เป็นเอาท์พุต Cin>> ใช้เป็นอินพุต และ Cout<< ใช้เป็นเอาท์พุต
9 mapping ระหว่างข้อมูลกับฟังก์ชัน จะยากและซ้ำซ้อน mapping ระหว่างข้อมูลกับฟังก์ชัน โดยทำเป็น Objects
10 สามารถเรียก main() ผ่านฟังก์ชั่นอื่นได้ ไม่สามารถเรียก main() ผ่านฟังก์ชั่นใด ๆ ได้
11 ตัวแปรทั้งหมดต้องประกาศ ตั้งแต่แรก เมื่อเริ่มเขียนโปรแกรม สามารถประกาศตัวแปรที่ใดก็ได้ โดยขอให้อยู่ใน scope ของการเรียกใช้งานครั้งแรก
12 ไม่มี inheritance มี inheritance
13 malloc() กับ calloc() ใช้จัดสรรหน่วยความ ส่วน free() ใช้ยกเลิกหน่วยความจำที่จัดสรร มีตัวดำเนินการอย่าง new กับ delete เพื่อใช้จัดสรรหน่วยความ และยกเลิกหน่วยความจำที่จัดสรร
14 มีทั้งชนิดข้อมูลแบบ built-in กับแบบพื้นฐาน (primitive data types) มีทั้งชนิดข้อมูลแบบ built-in กับ? define data types.
15 ไม่มีกลไกล Exception Handling มี Exception Handling โดยใช้ Try กับ Catch Block

น้อง ๆ ถ้าตอบแบบนี้ได้ นอกจากจะได้คะแนนแล้ว ก็จะได้ไม่เสียชื่อสถาบัน โปรแกรมเมอร์นะครับ

เขียนโดย แอดมินโฮ โอน้อยออก