เรามาเรียนรู้เกี่ยวกับ C# และ C++ กันก่อน -
- C# เป็นภาษาโปรแกรมเชิงวัตถุทั่วไป
- ถือว่าเป็นภาษาการเขียนโปรแกรมเชิงวัตถุอย่างแท้จริง
- ออกเสียงว่า 'ซี ชาร์ป'
- ได้รับการพัฒนาโดย Anders Hejlsberg และทีมงานของเขาที่ Microsoft
- การจัดการหน่วยความจำทำโดยอัตโนมัติโดยตัวรวบรวมขยะ
- เป็นหน้าที่ของภาษาที่จะลบวัตถุโดยอัตโนมัติเมื่อวัตถุประสงค์เสร็จสิ้น
- เป็นหน้าต่างเฉพาะ กล่าวคือ ใช้กับทุกระบบไม่ได้
- ไม่รองรับการสืบทอดหลายรายการ
- พอยน์เตอร์ใน C# ใช้ได้เฉพาะในโหมดไม่ปลอดภัยเท่านั้น
- ถือเป็นภาษาระดับสูง
- เมื่อคอมไพล์โค้ดแล้ว โค้ดจะถูกแปลงเป็นภาษากลาง
- สามารถใช้ในการพัฒนาแอปพลิเคชันคอนโซล เช่นเดียวกับแอปพลิเคชันมือถือและ Windows
- เข้าใจและใช้งานได้ง่าย เนื่องจากมีลำดับชั้นของคลาสที่ชัดเจน
- การตรวจสอบขอบเขตในโครงสร้างข้อมูลอาร์เรย์ดำเนินการโดยคอมไพเลอร์
- ด้วยเหตุนี้ เมื่อโปรแกรมเมอร์พยายามเข้าถึงดัชนีอาร์เรย์ที่ไม่ถูกต้อง จะส่งผลให้เกิดข้อผิดพลาดในการรวบรวม
C++
- C++ เป็นภาษาแบบหลายกระบวนทัศน์ที่พิมพ์แบบสแตติก
- เป็นภาษาการเขียนโปรแกรมเชิงวัตถุด้วย
- แต่ไม่ใช่ภาษาการเขียนโปรแกรมเชิงวัตถุล้วนๆ เนื่องจากมีประเภทข้อมูลพื้นฐานบางประเภท
- หลังจากคอมไพล์โค้ดแล้ว โค้ดจะถูกแปลงเป็นโค้ดของเครื่อง กล่าวคือ ภาษาระดับต่ำโดยตรง
- ในขั้นต้น มันถูกเรียกว่า C กับคลาส ต่อมาเปลี่ยนเป็น C++
- ออกเสียงว่า 'C plus plus'
- ได้รับการพัฒนาโดย Bjarne Stroustrup ที่ AT &T Bell Laboratories
- การจัดการหน่วยความจำใน C++ ดำเนินการโดยโปรแกรมเมอร์/นักพัฒนา พวกเขาสร้างวัตถุ และมีความรับผิดชอบในการใช้และทำลายมันเมื่อหมดอายุการใช้งาน
- Platform Dependency:โค้ดในภาษา C++ สามารถทำงานได้บนทุกแพลตฟอร์ม
- ใช้ในกรณีที่แอปพลิเคชันต้องการโต้ตอบกับฮาร์ดแวร์โดยตรง
- การสืบทอดหลายรายการ:C++ รองรับการสืบทอดหลายรายการด้วยความช่วยเหลือของคลาส ซึ่งหมายความว่าเมื่อชั้นเรียนสามารถขยายได้มากกว่าหนึ่งชั้นเรียนในแต่ละครั้ง
- พอยน์เตอร์ C++ ใช้ได้ทุกที่ในโปรแกรม
- โดยทั่วไปจะใช้ในการพัฒนาแอปพลิเคชันคอนโซล
- การตรวจสอบขอบเขตไม่ได้กระทำโดยคอมไพเลอร์ เมื่อโปรแกรมเมอร์พยายามเข้าถึงดัชนีอาร์เรย์ที่ไม่ถูกต้อง จะไม่ทำให้เกิดข้อผิดพลาดในการรวบรวม แต่จะแสดงเอาต์พุตที่ไม่ถูกต้อง
ให้เราดูความแตกต่าง -
C# | C++ |
---|---|
C# เป็นภาษาโปรแกรมเชิงวัตถุทั่วไป | C++ เป็นภาษาแบบหลายกระบวนทัศน์แบบสแตติก |
ถือว่าเป็นภาษาการเขียนโปรแกรมเชิงวัตถุอย่างแท้จริง | แต่ไม่ใช่ภาษาการเขียนโปรแกรมเชิงวัตถุล้วนๆ เนื่องจากมีประเภทข้อมูลพื้นฐานบางประเภท |
ตัวรวบรวมขยะทำการจัดการหน่วยความจำโดยอัตโนมัติ | ตัวรวบรวมขยะทำการจัดการหน่วยความจำโดยอัตโนมัติ |
ไม่รองรับการสืบทอดหลายรายการ | C++ รองรับการสืบทอดหลายรายการด้วยความช่วยเหลือของคลาส ซึ่งหมายความว่าเมื่อชั้นเรียนสามารถขยายได้มากกว่าหนึ่งชั้นเรียนในแต่ละครั้ง |
พอยน์เตอร์ใน C# สามารถใช้ได้ในโหมดไม่ปลอดภัยเท่านั้น | พอยน์เตอร์ C++ ใช้ได้ทุกที่ในโปรแกรม |
สามารถใช้ในการพัฒนาแอปพลิเคชันคอนโซล เช่นเดียวกับแอปพลิเคชันมือถือและ Windows | โดยทั่วไปจะใช้ในการพัฒนาแอปพลิเคชันคอนโซล |
การตรวจสอบขอบเขตในโครงสร้างข้อมูลอาร์เรย์ดำเนินการโดยคอมไพเลอร์ | คอมไพเลอร์ไม่ได้ตรวจสอบขอบเขต เมื่อโปรแกรมเมอร์พยายามเข้าถึงดัชนีอาร์เรย์ที่ไม่ถูกต้อง จะไม่ทำให้เกิดข้อผิดพลาดในการรวบรวม แต่จะแสดงเอาต์พุตที่ไม่ถูกต้อง |