ภาษาซีพลัสพลัส
ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
เนื้อหาในบทความนี้ล้าสมัย โปรดปรับปรุงข้อมูลให้เป็นไปตามเหตุการณ์ปัจจุบันหรือล่าสุด ดูหน้าอภิปรายประกอบ |
บทความนี้อาจขยายความได้โดยการแปลบทความที่ตรงกันในภาษาอังกฤษ คลิกที่ [ขยาย] เพื่อศึกษาแนวทางการแปล
|
กระบวนทัศน์ | หลายกระบวนทัศน์: เชิงกระบวนการ, เชิงฟังก์ชัน, เชิงวัตถุ, เจเนริก[1] |
---|---|
ผู้ออกแบบ | เบียเนอ สเดราสดร็อบ |
เริ่มเมื่อ | ค.ศ.1985 |
รุ่นเสถียร | ISO/IEC 14882:2017
/ 1 ธันวาคม 2017 |
ระบบชนิดตัวแปร | Static, nominative, partially inferred |
นามสกุลของไฟล์ | .C, .cc, .cpp, .cxx, .c++, .h, .hh, .hpp, .hxx, .h++ |
เว็บไซต์ | isocpp |
ตัวแปลภาษาหลัก | |
แคลง, ชุดแปลโปรแกรมของกนู, ไมโครซอฟท์วิชวลซีพลัสพลัส, ซีพลัสพลัสบิลเดอร์, อินเทลคอมไพเลอร์ซีพลัสพลัส, ไอบีเอ็มเอกซ์แอลซีพลัสพลัส, เอดิสันดีไซน์กรุ๊ป | |
ได้รับอิทธิพลจาก | |
เอดา, อัลกอล68, ซี, ซีแอลยู, เอ็มแอล, ซิมูลา | |
ส่งอิทธิพลต่อ | |
เอดา95, ซีชาร์ป,[2] ซี99, ชาเปล,[3]โคลเชอร์,[4] ดี, จาวา,[5] ลูอา, นิม,[ต้องการอ้างอิง] เพิร์ล, พีเอชพี, ไพทอน,[6] รัสต์, ซี้ด7 | |
|
ภาษาซีพลัสพลัส (อังกฤษ: C++) เป็นภาษาโปรแกรมคอมพิวเตอร์อเนกประสงค์ มีโครงสร้างภาษาที่มีการจัดชนิดข้อมูลแบบสแตติก (statically typed) และสนับสนุนรูปแบบการเขียนโปรแกรมที่หลากหลาย (multi-paradigm language) ได้แก่ การโปรแกรมเชิงกระบวนคำสั่ง, การนิยามข้อมูล, การโปรแกรมเชิงวัตถุ, และการโปรแกรมแบบเจเนริก (generic programming) ภาษาซีพลัสพลัสเป็นภาษาโปรแกรมเชิงพาณิชย์ที่นิยมมากภาษาหนึ่งนับตั้งแต่ช่วงทศวรรษ 1990
เบียเนอ สเดราสดร็อบ (Bjarne Stroustrup) จากเบลล์แล็บส์ (Bell Labs) เป็นผู้พัฒนาภาษาซีพลัสพลัส (เดิมใช้ชื่อ "C with classes") ในปี ค.ศ. 1983 เพื่อพัฒนาภาษาซีดั้งเดิม สิ่งที่พัฒนาขึ้นเพิ่มเติมนั้นเริ่มจากการเพิ่มเติมการสร้างคลาสจากนั้นก็เพิ่มคุณสมบัติต่าง ๆ ตามมา ได้แก่ เวอร์ชวลฟังก์ชัน การโอเวอร์โหลดโอเปอเรเตอร์ การสืบทอดหลายสาย เทมเพลต และการจัดการเอกเซพชัน มาตรฐานของภาษาซีพลัสพลัสได้รับการรับรองในปี ค.ศ. 1998 เป็นมาตรฐาน ISO/IEC 14882:1998 เวอร์ชันล่าสุดคือเวอร์ชันในปี ค.ศ. 2014 ซึ่งเป็นมาตรฐาน ISO/IEC 14882:2014 (รู้จักกันในชื่อ C++14)
รูปแบบของการออกแบบภาษาซีพลัสพลัส
[แก้]- ภาษาซีพลัสพลัสได้ถูกออกแบบมาเพื่อเป็นภาษาสำหรับการเขียนโปรแกรมทั่วไป สามารถรองรับการเขียนโปรแกรมในระดับภาษาเครื่องได้ เช่นเดียวกับภาษาซี
- ในทางทฤษฎี ภาษาซีพลัสพลัสควรจะมีความเร็วเทียบเท่าภาษาซี แต่ในการเขียนโปรแกรมจริงนั้น ภาษาซีพลัสพลัสเป็นภาษาที่มีการเปิดกว้างให้โปรแกรมเมอร์เลือกรูปแบบการเขียนโปรแกรม ซึ่งทำให้มีแนวโน้มที่โปรแกรมเมอร์อาจใช้รูปแบบที่ไม่เหมาะสม ทำให้โปรแกรมที่เขียนมีประสิทธิภาพต่ำกว่าที่ควรจะเป็น และภาษาซีพลัสพลัสนั้นเป็นภาษาที่มีความซับซ้อนมากกว่าภาษาซี จึงทำให้มีโอกาสเกิดบั๊กขณะคอมไพล์มากกว่า
- ภาษาซีพลัสพลัสได้รับการออกแบบเพื่อเข้ากันได้กับภาษาซีในเกือบทุกกรณี (ดูเพิ่มเติมที่ Compatibility of C and C++)
- มาตรฐานของภาษาซีพลัสพลัส ถูกออกแบบมาเพื่อไม่ให้มีการเจาะจงแพลตฟอร์มคอมพิวเตอร์
- ภาษาซีพลัสพลัสถูกออกแบบมาให้รองรับรูปแบบการเขียนโปรแกรมที่หลากหลาย (multi-paradigm)
ตัวอย่างโค้ด
[แก้]#include <iostream>
int main()
{
std::cout << "Hello World"<< endl;
return 0;
}
ความเข้ากันได้
[แก้]คอมไพเลอร์ภาษาซีพลัสพลัสที่เป็นที่นิยมรองรับมาตรฐาน C++ 1998 เกือบทั้งหมด[7]
กับภาษาซี
[แก้]ผู้คนมักจะคิดว่าภาษาซีพลัสพลัสเป็นซูเปอร์เซตของภาษาซี แต่นี่ไม่เป็นความจริงไปทั้งหมด[8] โค้ดภาษาซีส่วนใหญ่สามารถนำมาคอมไพล์ได้อย่างไม่มีปัญหาโดยคอมไพเลอร์ของภาษาซีพลัสพลัส แต่ก็มีโค้ดภาษาซีบางอย่างที่ในภาษาซีพลัสพลัสถือว่าผิดหรือไม่ได้ทำงานตามที่เคยเป็น ตัวอย่างเช่น ภาษาซีรองรับการแปลงชนิดข้อมูลจาก void*
ไปเป็นพอยน์เตอร์ชนิดอื่นแบบโดยปริยาย ในขณะที่ภาษาซีพลัสพลัสไม่รองรับ (เพื่อไม่ให้เกิดการแปลงชนิดข้อมูลโดยไม่ได้ตั้งใจ) นอกจากนี้ ภาษาซีพลัสพลัสยังเพิ่มคำสงวนขึ้นมามากมาย เช่น new
และ class
ซึ่งคำเหล่านี้อาจถูกใช้เป็นชื่อตัวระบุ (เช่นชื่อตัวแปร) ในภาษาซี ส่งผลให้โค้ดภาษาซีดังกล่าวไม่สามารถคอมไพล์ได้
มาตรฐาน C99 ของภาษาซี ได้แก้ไขความไม่เข้ากันระหว่างภาษาซีและภาษาซีพลัสพลัสบางประการ โดยเพิ่มการคอมเมนต์บรรทัด (//
) และทำให้สามารถผสมการประกาศตัวแปรเข้าไปในโค้ดได้ (ก่อนหน้านี้ตัวแปรทั้งหมดต้องประกาศ ณ จุดเริ่มต้นของฟังก์ชัน กล่าวคือ ก่อนหน้าที่จะมีการทำงานใด ๆ ในฟังก์ชัน)[9]
อ้างอิง
[แก้]- ↑ Stroustrup, Bjarne (1997). "1". The C++ Programming Language (Third ed.). ISBN 0-201-88954-4. OCLC 59193992.
- ↑ Naugler, David (May 2007). "C# 2.0 for C++ and Java programmer: conference workshop". Journal of Computing Sciences in Colleges. 22 (5).
Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.
- ↑ "Chapel spec (Acknowledgements)" (PDF). Cray Inc. 1 October 2015. สืบค้นเมื่อ 14 January 2016.
- ↑ "Rich Hickey Q&A by Michael Fogus". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2017-01-11. สืบค้นเมื่อ 2017-01-11.
- ↑ Harry. H. Chaudhary (28 July 2014). "Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans". สืบค้นเมื่อ 29 May 2016.
- ↑ "9. Classes — Python 3.6.4 documentation". docs.python.org. สืบค้นเมื่อ 2018-01-09.
- ↑ Sutter, Herb (15 April 2003). "C++ Conformance Roundup". Dr. Dobb's Journal. สืบค้นเมื่อ 30 May 2006.
- ↑ "Bjarne Stroustrup's FAQ – Is C a subset of C++?". สืบค้นเมื่อ 5 May 2014.
- ↑ "C9X – The New C Standard". สืบค้นเมื่อ 27 December 2008.
- 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.