เกรียนไทยยังชิดซ้าย คุณครูยังอายม้วน
เมื่อเจอ เกรียนเมืองนอก อย่างฮา!
ลองดูเด็กฝรั่งทำข้อสอบ เล่นเอาฮาเลย
โจทย์มีอยู่ว่า?ภาษาโปรแกรมมิ่งอย่าง 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+
กระดาษคำตอบ คนแรก
Photo Credit loledhard.com
กระดาษคำตอบ คนที่สอง
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++ |
---|---|---|
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 |
น้อง ๆ ถ้าตอบแบบนี้ได้ นอกจากจะได้คะแนนแล้ว ก็จะได้ไม่เสียชื่อสถาบัน โปรแกรมเมอร์นะครับ
เขียนโดย แอดมินโฮ โอน้อยออก