ผลต่างระหว่างรุ่นของ "ภาษาซีพลัสพลัส"

จากวิกิพีเดีย สารานุกรมเสรี
เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
ไม่มีความย่อการแก้ไข
บรรทัด 27: บรรทัด 27:
== ความเข้ากันได้ ==
== ความเข้ากันได้ ==


[[คอมไพเลอร์]]ภาษาซีพลัสพลัสที่เป็นที่นิยมรองรับมาตรฐาน C++ 1998 เกือบทั้งหมด<ref>{{cite web |url=http://www.drdobbs.com/c-conformance-roundup/184401381 |title=C++ Conformance Roundup |work=[[Dr. Dobb's Journal]] |first=Herb |last=Sutter |date=15 April 2003 |accessdate=30 May 2006 }}</ref>
ซึ่งปัจจุบัน [[ภาษาซีพลัสพลัส]] สามารถใช้ แม่แบบ [[ภาษาซีพลัสพลัส]] 1998 ได้เกือบทั้งหมด


=== กับ ภาษาซี ===
=== กับภาษาซี ===
ผู้คนมักจะคิดว่าภาษาซีพลัสพลัสเป็น[[ซูเปอร์เซต]]ของภาษาซี แต่นี่ไม่เป็นความจริงไปทั้งหมด<ref name="superset">{{cite web |url=http://www.stroustrup.com/bs_faq.html#C-is-subset |title=Bjarne Stroustrup's FAQ&nbsp;– Is C a subset of C++? |accessdate=5 May 2014}}</ref> โค้ดภาษาซีส่วนใหญ่สามารถนำมาคอมไพล์ได้อย่างไม่มีปัญหาโดยคอมไพเลอร์ของภาษาซีพลัสพลัส แต่ก็มีโค้ดภาษาซีบางอย่างที่ถือว่าผิดหรือไม่ได้ทำงานตามที่เคยเป็นในภาษาซีพลัสพลัส ตัวอย่างเช่น ภาษาซีรองรับการแปลงชนิดข้อมูลจาก <code>void*</code> ไปเป็น[[พอยน์เตอร์]]ชนิดอื่นแบบ[[การแปลงชนิดข้อมูล#การแปลงชนิดข้อมูลแบบโดยปริยาย|โดยปริยาย]] ในขณะที่ภาษาซีพลัสพลัสไม่รองรับ (เพื่อไม่ให้เกิดการแปลงชนิดข้อมูลโดยไม่ได้ตั้งใจ) นอกจากนี้ ภาษาซีพลัสพลัสยังเพิ่มคำสงวนขึ้นมามากมาย เช่น <code>new</code> <code>class</code> ซึ่งคำเหล่านี้อาจถูกใช้เป็นชื่อตัวระบุ (เช่นชื่อตัวแปร) ในภาษาซี ส่งผลให้โค้ดภาษาซีดังกล่าวไม่สามารถคอมไพล์ได้
ภาษาซีพลัสพลัส มักจะคิดว่าเป็น ซูเปอร์ภาษาซี แต่ไม่เป็นความจริง ภาษาซี เป็นภาษาที่ง่ายต่อการคอมไพเลอร์และถูกใน ภาษาซีพลัสพลัส
{{cn-span|แต่บางสิ่งบางอย่างจาก ภาษาซี ก็ทำบน ภาษาซีพลัสพลัส ไม่ได้ ยกตัวอย่างเช่น <code>void*</code> เป็นต้น}}
และภาษาซีพลัสพลัสมีคำใหม่เพิ่มเข้ามามาก ยกตัวอย่างเช่น <code>new</code> <code>class</code> เป็นต้น


มาตรฐาน [[C99]] ได้แก้ไขความไม่เข้ากันระหว่างภาษาซีและภาษาซีพลัสพลัสบางประการ เช่น เพิ่มการคอมเมนต์บรรทัด (<code>//</code>) และทำให้สามารถผสมการประกาศตัวแปรเข้าไปในโค้ดได้ (ก่อนหน้านี้ตัวแปรทั้งหมดต้องประกาศ ณ จุดเริ่มต้นของฟังก์ชัน กล่าวคือ ก่อนหน้าที่จะมีการทำงานใด ๆ ในฟังก์ชัน)
ในปี 2542 บางอย่างถูกลบออกใน ภาษาซี แต่ภาษาซีพลัสพลัสยังสามารถใช้ได้อยู่ ยกตัวอย่างเช่น ข้อความของบรรทัด (<code>//</code>)


== อ้างอิง ==
== อ้างอิง ==

รุ่นแก้ไขเมื่อ 02:50, 21 มิถุนายน 2558

ภาษาซีพลัสพลัส (อังกฤษ: C++) เป็นภาษาโปรแกรมคอมพิวเตอร์อเนกประสงค์ มีโครงสร้างภาษาที่มีการจัดชนิดข้อมูลแบบสแตติก (statically typed) และสนับสนุนรูปแบบการเขียนโปรแกรมที่หลากหลาย (multi-paradigm language) ได้แก่ การโปรแกรมเชิงกระบวนคำสั่ง, การนิยามข้อมูล, การโปรแกรมเชิงวัตถุ, และการโปรแกรมแบบเจเนริก (generic programming) ภาษาซีพลัสพลัสเป็นภาษาโปรแกรมเชิงพาณิชย์ที่นิยมมากภาษาหนึ่งนับตั้งแต่ช่วงทศวรรษ 1990

เบียเนอ สเดราสดร็อบ (Bjarne Stroustrup) จากเบลล์แล็บส์ (Bell Labs) เป็นผู้พัฒนาภาษาซีพลัสพลัส (เดิมใช้ชื่อ "C with classes") ในปี ค.ศ. 1983 เพื่อพัฒนาภาษาซีดั้งเดิม สิ่งที่พัฒนาขึ้นเพิ่มเติมนั้นเริ่มจากการเพิ่มเติมการสร้างคลาสจากนั้นก็เพิ่มคุณสมบัติต่างๆ ตามมา ได้แก่ เวอร์ชวลฟังก์ชัน การโอเวอร์โหลดโอเปอเรเตอร์ การสืบทอดหลายสาย เทมเพลต และการจัดการเอกเซพชัน มาตรฐานของภาษาซีพลัสพลัสได้รับการรับรองในปี ค.ศ. 1998 เป็นมาตรฐาน ISO/IEC 14882:1998 เวอร์ชันล่าสุดคือเวอร์ชันในปี ค.ศ. 2003 ซึ่งเป็นมาตรฐาน ISO/IEC 14882:2003 ในปัจจุบันมาตรฐานของภาษาในเวอร์ชันใหม่ (รู้จักกันในชื่อ C++0x) กำลังอยู่ในขั้นพัฒนา

รูปแบบของการออกแบบภาษาซีพลัสพลัส

  • ภาษาซีพลัสพลัสได้ถูกออกแบบมาเพื่อเป็นภาษาสำหรับการเขียนโปรแกรมทั่วไป สามารถรองรับการเขียนโปรแกรมในระดับภาษาเครื่องได้ เช่นเดียวกับภาษาซี
  • ในทางทฤษฎี ภาษาซีพลัสพลัสควรจะมีความเร็วเทียบเท่าภาษาซี แต่ในการเขียนโปรแกรมจริงนั้น ภาษาซีพลัสพลัสเป็นภาษาที่มีการเปิดกว้างให้โปรแกรมเมอร์เลือกรูปแบบการเขียนโปรแกรม ซึ่งทำให้มีแนวโน้มที่โปรแกรมเมอร์อาจใช้รูปแบบที่ไม่เหมาะสม ทำให้โปรแกรมที่เขียนมีประสิทธิภาพต่ำกว่าที่ควรจะเป็น และภาษาซีพลัสพลัสนั้นเป็นภาษาที่มีความซับซ้อนมากกว่าภาษาซี จึงทำให้มีโอกาสเกิดบั๊กขณะคอมไพล์มากกว่า
  • ภาษาซีพลัสพลัสได้รับการออกแบบเพื่อเข้ากันได้กับภาษาซีในเกือบทุกกรณี (ดูเพิ่มเติมที่ Compatibility of C and C++)
  • มาตรฐานของภาษาซีพลัสพลัส ถูกออกแบบมาเพื่อไม่ให้มีการเจาะจงแพลตฟอร์มคอมพิวเตอร์
  • ภาษาซีพลัสพลัสถูกออกแบบมาให้รองรับรูปแบบการเขียนโปรแกรมที่หลากหลาย (multi-paradigm)

ตัวอย่างโค้ด

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, world!\n";
    return 0;
}

ความเข้ากันได้

คอมไพเลอร์ภาษาซีพลัสพลัสที่เป็นที่นิยมรองรับมาตรฐาน C++ 1998 เกือบทั้งหมด[1]

กับภาษาซี

ผู้คนมักจะคิดว่าภาษาซีพลัสพลัสเป็นซูเปอร์เซตของภาษาซี แต่นี่ไม่เป็นความจริงไปทั้งหมด[2] โค้ดภาษาซีส่วนใหญ่สามารถนำมาคอมไพล์ได้อย่างไม่มีปัญหาโดยคอมไพเลอร์ของภาษาซีพลัสพลัส แต่ก็มีโค้ดภาษาซีบางอย่างที่ถือว่าผิดหรือไม่ได้ทำงานตามที่เคยเป็นในภาษาซีพลัสพลัส ตัวอย่างเช่น ภาษาซีรองรับการแปลงชนิดข้อมูลจาก void* ไปเป็นพอยน์เตอร์ชนิดอื่นแบบโดยปริยาย ในขณะที่ภาษาซีพลัสพลัสไม่รองรับ (เพื่อไม่ให้เกิดการแปลงชนิดข้อมูลโดยไม่ได้ตั้งใจ) นอกจากนี้ ภาษาซีพลัสพลัสยังเพิ่มคำสงวนขึ้นมามากมาย เช่น new class ซึ่งคำเหล่านี้อาจถูกใช้เป็นชื่อตัวระบุ (เช่นชื่อตัวแปร) ในภาษาซี ส่งผลให้โค้ดภาษาซีดังกล่าวไม่สามารถคอมไพล์ได้

มาตรฐาน C99 ได้แก้ไขความไม่เข้ากันระหว่างภาษาซีและภาษาซีพลัสพลัสบางประการ เช่น เพิ่มการคอมเมนต์บรรทัด (//) และทำให้สามารถผสมการประกาศตัวแปรเข้าไปในโค้ดได้ (ก่อนหน้านี้ตัวแปรทั้งหมดต้องประกาศ ณ จุดเริ่มต้นของฟังก์ชัน กล่าวคือ ก่อนหน้าที่จะมีการทำงานใด ๆ ในฟังก์ชัน)

อ้างอิง

  • Josuttis, Nicolai M. The C++ Standard Library. Addison-Wesley. ISBN 0-201-37926-0.
  • Koenig, Andrew; Barbara E. Moo (2000). Accelerated C++ - Practical Programming by Example. Addison-Wesley. ISBN 0-201-70353-X.
  1. Sutter, Herb (15 April 2003). "C++ Conformance Roundup". Dr. Dobb's Journal. สืบค้นเมื่อ 30 May 2006.
  2. "Bjarne Stroustrup's FAQ – Is C a subset of C++?". สืบค้นเมื่อ 5 May 2014.