ประวัติความเป็นมาของภาษาซี §1 ข้อมูลทั่วไปเกี่ยวกับภาษา ขั้นตอนการออกแบบโปรแกรม วงจรชีวิตของแอปพลิเคชัน โมเดล ไวยากรณ์ภาษาการเขียนโปรแกรม C

C++ (อ่าน c-plus-plus) เป็นภาษาโปรแกรมทั่วไปที่คอมไพล์และพิมพ์คงที่ ซึ่งคุณสามารถสร้างโปรแกรมที่ซับซ้อนได้ทุกระดับ
เป็นเวลากว่า 20 ปีแล้วที่ภาษานี้เป็นหนึ่งในสามภาษาการเขียนโปรแกรมที่ได้รับความนิยมและเป็นที่ต้องการมากที่สุด (คุณสามารถตรวจสอบได้โดยไปที่เว็บไซต์ TIOBE)
ภาษานี้ถือกำเนิดขึ้นในช่วงต้นทศวรรษ 1980 เมื่อบียอร์น สตรุสทรัป พนักงานของ Bell Labs ได้พัฒนาภาษา C ขึ้นมาหลายอย่างตามความต้องการของเขาเอง

Bjarne Stroustrup - ผู้สร้างภาษา C++

Stroustrup ตัดสินใจขยายภาษา C ด้วยความสามารถที่พบในภาษา Simula C ซึ่งเป็นภาษาพื้นฐานของระบบ UNIX ที่คอมพิวเตอร์ Bell ทำงานนั้น มีความรวดเร็ว มีคุณสมบัติหลากหลาย และพกพาได้ Stroustrup เพิ่มความสามารถในการทำงานกับคลาสและวัตถุ เป็นผลให้ปัญหาการสร้างแบบจำลองเชิงปฏิบัติกลายเป็นเรื่องง่ายที่จะแก้ไขทั้งในแง่ของเวลาในการพัฒนา (ขอบคุณการใช้คลาสที่คล้าย Simula) และในแง่ของเวลาในการคำนวณ (ขอบคุณความเร็ว C)
นักพัฒนาภาษาพูดถึงเรื่องนี้อย่างไร:



ในปี 1998 มาตรฐานภาษาแรกที่เรียกว่า C++98 ได้รับการเผยแพร่โดยคณะกรรมการมาตรฐาน C++ มีการพัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการในปัจจุบัน หนึ่งในกลุ่มที่พัฒนาภาษา C++ และส่งข้อเสนอเพื่อปรับปรุงต่อคณะกรรมการมาตรฐาน C++ คือ บูสต์ซึ่งมีส่วนร่วมในการปรับปรุงความสามารถของภาษาโดยการเพิ่มคุณสมบัติเมตาโปรแกรมมิงเหนือสิ่งอื่นใด มาตรฐานล่าสุดเปิดตัวในปี 2560 และมีชื่อว่า ค++17- มาตรฐานถัดไปจะมาในเร็วๆ นี้ และคาดว่าจะปรากฏในปี 2020
ไม่มีใครเป็นเจ้าของสิทธิ์ในภาษา C++; ในเดือนมีนาคม 2559 คณะทำงาน WP21 C++ ถูกสร้างขึ้นในรัสเซีย กลุ่มนี้จัดขึ้นเพื่อรวบรวมข้อเสนอสำหรับมาตรฐาน C++ ส่งไปยังคณะกรรมการ และปกป้องข้อเสนอเหล่านั้นในการประชุมสามัญขององค์การระหว่างประเทศเพื่อการมาตรฐาน
C++ เป็นภาษาที่มีหลายกระบวนทัศน์ (จากคำว่า Paradigm ซึ่งเป็นรูปแบบของการเขียนโปรแกรมคอมพิวเตอร์) รวมถึงรูปแบบการเขียนโปรแกรมและเทคโนโลยีที่หลากหลาย มักถูกจัดว่าเป็นภาษาเชิงวัตถุ แต่หากพูดอย่างเคร่งครัด ในกรณีนี้ไม่เป็นเช่นนั้น ในระหว่างขั้นตอนการทำงาน นักพัฒนาจะได้รับอิสระอย่างเต็มที่ในการเลือกเครื่องมือ เพื่อให้ปัญหาที่ได้รับการแก้ไขโดยใช้แนวทางเฉพาะได้รับการแก้ไขอย่างมีประสิทธิภาพมากที่สุด กล่าวอีกนัยหนึ่ง C++ ไม่ได้บังคับให้โปรแกรมเมอร์ยึดติดกับรูปแบบการพัฒนาโปรแกรมเพียงรูปแบบเดียว (เช่น เชิงวัตถุ)
C++ มีไลบรารีมาตรฐานที่หลากหลายซึ่งประกอบด้วยคอนเทนเนอร์และอัลกอริธึมทั่วไป, I/O, นิพจน์ทั่วไป, การสนับสนุนมัลติเธรด และคุณลักษณะอื่นๆ C++ มีอิทธิพลต่อภาษาการเขียนโปรแกรมหลายภาษา รวมถึง: Java, C#, D เนื่องจาก C++ เป็นของตระกูลภาษาตามไวยากรณ์ของภาษา C คุณจึงสามารถเชี่ยวชาญภาษาการเขียนโปรแกรมอื่นในตระกูลนี้ได้อย่างง่ายดาย: JavaScript, PHP , Perl, Objective-C และอื่นๆ อีกมากมาย ฯลฯ รวมถึงภาษาแม่ด้วย - C. -
ในระหว่างที่มันดำรงอยู่ ภาษา C++ ก็มีความเชื่อผิด ๆ มากมายซึ่งถูกหักล้างได้ง่าย (ดูที่นี่: ส่วนที่ 1 และส่วนที่ 2)

ประวัติความเป็นมาของภาษาและการเผยแพร่มาตรฐาน

1983

ผู้สร้างภาษาคือ Björn Stroustrupซึ่งเป็นพนักงานของ Bell Labs ได้เปิดตัวภาษา C++ เวอร์ชันแรกๆ (“C พร้อมคลาส”)

1985

การเปิดตัวเชิงพาณิชย์ครั้งแรกของ C++ ภาษานี้ใช้ชื่อที่ทันสมัย

1986

การเปิดตัว The C++ Programming Language ฉบับพิมพ์ครั้งแรก - หนังสือเกี่ยวกับ C++ ที่เขียนโดย Björn Stroustrup

1998

มาตรฐานสากลสำหรับภาษา C++ ได้รับการรับรองแล้ว: ISO/IEC 14882:1998 “มาตรฐานสำหรับภาษาการเขียนโปรแกรม C++”

2003
2005

รายงานทางเทคนิคของห้องสมุด 1 (TR1) ได้รับการเผยแพร่แล้ว แม้ว่าจะไม่ได้เป็นส่วนหนึ่งของมาตรฐานอย่างเป็นทางการ แต่รายงานก็ได้อธิบายส่วนขยายของไลบรารีมาตรฐานที่ควรรวมไว้ในเวอร์ชันถัดไปของภาษา C++

2011

การเปิดตัวมาตรฐานใหม่ – C++11 หรือ ISO/IEC 14882:2011; มาตรฐานใหม่รวมถึงการเพิ่มเติมในแกนภาษาและการขยายไลบรารีมาตรฐาน รวมถึง TR1 ส่วนใหญ่

2014

การเปิดตัวมาตรฐาน C++14 (“มาตรฐานสากล ISO/IEC 14882:2014(E) ภาษาการเขียนโปรแกรม C++”); C++14 สามารถมองได้ว่าเป็นส่วนขยายขนาดเล็กเหนือ C++11 ซึ่งมีการแก้ไขข้อบกพร่องและการปรับปรุงเล็กน้อยเป็นส่วนใหญ่

2017

การเปิดตัวมาตรฐานใหม่ – C++1z (C++17) มาตรฐานนี้ทำให้เกิดการเปลี่ยนแปลงและเพิ่มเติมมากมาย ตัวอย่างเช่น STD รวมไลบรารีของมาตรฐาน C11 ระบบไฟล์ที่อิงตาม boost::filesystem และไลบรารี TS I รุ่นทดลองส่วนใหญ่

2020

C++20 เป็นชื่ออย่างไม่เป็นทางการของมาตรฐาน ISO/IEC สำหรับภาษาการเขียนโปรแกรม C++ ซึ่งคาดว่าจะเป็นไปตาม C++17 ร่างมาตรฐาน N4800

ปรัชญา C++

ในหนังสือของเขา The Design and Evolution of C++ (2007) Björn Stroustrup อธิบายถึงหลักการที่เขาปฏิบัติตามเมื่อออกแบบ C++ (ตัวย่อ):

  • รับภาษาสำหรับใช้งานทั่วไปพร้อมประเภทข้อมูลคงที่ ประสิทธิภาพ และความสะดวกในการพกพาของภาษา C
  • รองรับรูปแบบการเขียนโปรแกรมที่หลากหลายโดยตรงและครอบคลุม
  • ให้อิสระแก่โปรแกรมเมอร์ในการเลือก แม้ว่าจะเปิดโอกาสให้เขาเลือกผิดก็ตาม
  • รักษาความเข้ากันได้กับ C ให้มากที่สุดเท่าที่จะเป็นไปได้ ดังนั้นจึงทำให้เปลี่ยนจากการเขียนโปรแกรม C ได้ง่าย
  • หลีกเลี่ยงความแตกต่างระหว่าง C และ C++: โครงสร้างใดๆ ที่ถูกต้องในทั้งสองภาษาจะต้องมีความหมายเหมือนกันในแต่ละภาษา และนำไปสู่พฤติกรรมของโปรแกรมเดียวกัน
  • หลีกเลี่ยงฟีเจอร์ที่ขึ้นอยู่กับแพลตฟอร์มหรือไม่เป็นสากล
  • “อย่าจ่ายเงินสำหรับสิ่งที่คุณไม่ได้ใช้” - ไม่มีฟีเจอร์ภาษาใดที่ควรทำให้ประสิทธิภาพของโปรแกรมที่ไม่ได้ใช้ลดลง
  • ไม่ต้องการสภาพแวดล้อมการเขียนโปรแกรมที่ซับซ้อนจนเกินไป

ซี และ ซี++

ไวยากรณ์ของ C++ นั้นสืบทอดมาจากภาษา C แม้ว่าอย่างเป็นทางการแล้ว หนึ่งในหลักการของ C++ ยังคงรักษาความเข้ากันได้กับภาษา C แต่ในความเป็นจริงแล้ว กลุ่มมาตรฐานสำหรับภาษาเหล่านี้ไม่มีการโต้ตอบ และการเปลี่ยนแปลงที่พวกเขาทำ เพียงแต่ไม่สัมพันธ์กัน แต่มักจะขัดแย้งกันในเชิงอุดมการณ์โดยพื้นฐาน ดังนั้นองค์ประกอบที่มาตรฐาน C ใหม่เพิ่มให้กับเคอร์เนลจึงอยู่ในองค์ประกอบมาตรฐาน C++ ของไลบรารีมาตรฐานและไม่ได้อยู่ในเคอร์เนลเลย ตัวอย่างเช่น อาร์เรย์แบบไดนามิก อาร์เรย์ที่มีขอบเขตคงที่ อุปกรณ์ประมวลผลแบบขนาน จากข้อมูลของ Stroustrup การผสมผสานการพัฒนาของทั้งสองภาษานี้จะเป็นประโยชน์อย่างยิ่ง แต่ก็ไม่น่าจะเป็นไปได้ด้วยเหตุผลทางการเมือง ดังนั้นความเข้ากันได้ในทางปฏิบัติระหว่าง C และ C++ จะค่อยๆ หายไป
ในตัวอย่างนี้ ขึ้นอยู่กับคอมไพเลอร์ที่ใช้ "C++" หรือ "C" จะถูกส่งออก:

โปรแกรม 9.1

#รวม int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

นี่เป็นเพราะความจริงที่ว่าค่าคงที่อักขระใน C เป็นประเภท int และใน C++ เป็นประเภท char แต่ขนาดของประเภทเหล่านี้แตกต่างกัน

โมเดลวงจรการใช้งานของแอปพลิเคชัน

วงจรชีวิตซอฟต์แวร์คือช่วงเวลาที่เริ่มต้นจากช่วงเวลาที่ตัดสินใจเกี่ยวกับความจำเป็นในการสร้างผลิตภัณฑ์ซอฟต์แวร์และสิ้นสุดในขณะที่ถูกลบออกจากบริการโดยสิ้นเชิง วงจรนี้เป็นกระบวนการสร้างและพัฒนาซอฟต์แวร์ มีโมเดลวงจรชีวิตหลายแบบ
โมเดลน้ำตกวงจรชีวิต (แบบจำลองน้ำตกภาษาอังกฤษ) ถูกเสนอในปี 1970 โดย Winston Royce จัดให้มีการดำเนินการตามลำดับของทุกขั้นตอนของโครงการในลำดับคงที่อย่างเคร่งครัด การเปลี่ยนไปสู่ขั้นต่อไปหมายถึงงานที่สมบูรณ์ในขั้นก่อนหน้า ข้อกำหนดที่กำหนดในขั้นตอนของการสร้างข้อกำหนดนั้นได้รับการบันทึกไว้อย่างเคร่งครัดในรูปแบบของข้อกำหนดทางเทคนิคและจะถูกบันทึกไว้สำหรับการพัฒนาทั้งหมดของโครงการ แต่ละขั้นตอนจะสิ้นสุดลงด้วยการปล่อยชุดเอกสารที่สมบูรณ์เพียงพอเพื่อให้ทีมพัฒนาอื่นสามารถดำเนินการพัฒนาต่อไปได้
ขั้นตอนโครงการตามแบบจำลองน้ำตก:

  1. การก่อตัวของข้อกำหนด
  2. ออกแบบ;
  3. การดำเนินงาน;
  4. การทดสอบ;
  5. การดำเนินงาน;
  6. การดำเนินงานและการบำรุงรักษา.

ในแบบจำลองแบบเรียงซ้อน การเปลี่ยนจากระยะโครงการหนึ่งไปยังอีกระยะหนึ่งจะถือว่าผลลัพธ์ของระยะก่อนหน้านั้นถูกต้องโดยสมบูรณ์ ในโครงการขนาดใหญ่ แทบจะเป็นไปไม่ได้เลยที่จะบรรลุผลสำเร็จ ดังนั้นโมเดลนี้จึงเหมาะสำหรับการพัฒนาโครงการขนาดเล็กเท่านั้น (ดับเบิลยู. รอยซ์เองไม่ได้ยึดติดกับแบบจำลองนี้และใช้แบบจำลองซ้ำ)
รูปแบบการวนซ้ำ
อีกทางเลือกหนึ่งสำหรับแบบจำลองแบบเรียงซ้อนคือแบบจำลองการพัฒนาซ้ำและแบบเพิ่มหน่วย (IID) ซึ่งได้รับจาก T. Gilb ในยุค 70 ชื่อของแบบจำลองวิวัฒนาการ โมเดล IID เกี่ยวข้องกับการแบ่งวงจรชีวิตของโปรเจ็กต์ออกเป็นลำดับของการวนซ้ำ ซึ่งแต่ละรอบจะมีลักษณะคล้ายกับ "มินิโปรเจ็กต์" รวมถึงกระบวนการพัฒนาทั้งหมดที่นำไปใช้กับการสร้างฟังก์ชันการทำงานเล็กๆ น้อยๆ เมื่อเปรียบเทียบกับโปรเจ็กต์โดยรวม เป้าหมายของการวนซ้ำแต่ละครั้งคือการได้รับเวอร์ชันที่ใช้งานได้ของระบบซอฟต์แวร์ รวมถึงฟังก์ชันการทำงานที่กำหนดโดยเนื้อหาที่ผสานรวมของการวนซ้ำก่อนหน้าและปัจจุบันทั้งหมด ผลลัพธ์ของการวนซ้ำครั้งสุดท้ายประกอบด้วยฟังก์ชันที่จำเป็นทั้งหมดของผลิตภัณฑ์ ดังนั้น เมื่อเสร็จสิ้นการวนซ้ำแต่ละครั้ง ผลิตภัณฑ์จะได้รับการเพิ่มขึ้น - เพิ่มขึ้น - ขีดความสามารถของผลิตภัณฑ์ ซึ่งดังนั้นจึงพัฒนาแบบวิวัฒนาการ


แนวทางการพัฒนาซ้ำหลายแบบถูกนำมาใช้ในวิธีการพัฒนาที่ทันสมัยที่สุด:

กระบวนการพัฒนา - กระบวนการรวมเหตุผล (RUP)

กระบวนการรวมเหตุผลแบบมีเหตุผล (RUP)(กระบวนการแบบรวมเหตุผล) เป็นวิธีการพัฒนาซอฟต์แวร์ที่ดูแลโดย Rational Software (IBM) วิธีการให้คำแนะนำสำหรับทุกขั้นตอนของการพัฒนา: ตั้งแต่การสร้างแบบจำลองธุรกิจไปจนถึงการทดสอบและการว่าจ้างโปรแกรมที่เสร็จสมบูรณ์ Unified Modeling Language (UML) ใช้เป็นภาษาการสร้างแบบจำลอง
วงจรชีวิตการพัฒนาผลิตภัณฑ์ที่สมบูรณ์ประกอบด้วยสี่ระยะ ซึ่งแต่ละระยะจะมีการทำซ้ำอย่างน้อยหนึ่งครั้ง

  • ระยะเริ่มแรก (Inception)
  • การกำหนดขอบเขตของโครงการและจำนวนทรัพยากรที่ต้องการ มีการกำหนดข้อกำหนดพื้นฐาน ข้อจำกัด และฟังก์ชันการทำงานที่สำคัญของผลิตภัณฑ์ มีการประเมินความเสี่ยง การวางแผนปฏิบัติการ เมื่อสิ้นสุดระยะเริ่มแรก จะมีการประเมินความสำเร็จของเป้าหมายวงจรชีวิต ซึ่งคาดว่าจะมีข้อตกลงระหว่างผู้มีส่วนได้ส่วนเสียในการดำเนินโครงการต่อไป

  • ชี้แจง
  • ข้อกำหนดด้านเอกสาร การออกแบบ การใช้งาน และการทดสอบสถาปัตยกรรมปฏิบัติการ ชี้แจงข้อกำหนดและค่าใช้จ่าย การลดความเสี่ยงที่สำคัญ การบรรลุผลสำเร็จของขั้นตอนการพัฒนาหมายถึงการบรรลุเป้าหมายสำคัญของ Lifecycle Architecture

  • การก่อสร้าง
  • ในขั้นตอน "สร้าง" ฟังก์ชันส่วนใหญ่ของผลิตภัณฑ์จะถูกนำไปใช้: การออกแบบแอปพลิเคชันเสร็จสมบูรณ์ มีการเขียนซอร์สโค้ด ขั้นตอนการสร้างจะสิ้นสุดด้วยการเปิดตัวระบบภายนอกครั้งแรกและหลักชัยของความสามารถในการปฏิบัติงานเบื้องต้น

  • การแนะนำ
  • ในขั้นตอน "การนำไปใช้งาน" เวอร์ชันสุดท้ายของผลิตภัณฑ์จะถูกสร้างขึ้นและถ่ายโอนจากนักพัฒนาไปยังลูกค้า ซึ่งรวมถึงโปรแกรมการทดสอบเบต้า การฝึกอบรมผู้ใช้ และการพิจารณาคุณภาพของผลิตภัณฑ์ หากคุณภาพไม่เป็นไปตามความคาดหวังของผู้ใช้หรือเกณฑ์ที่ตั้งไว้ในระยะเริ่มต้น ระยะการใช้งานจะถูกทำซ้ำอีกครั้ง การบรรลุเป้าหมายทั้งหมดหมายถึงการบรรลุเป้าหมายการเปิดตัวผลิตภัณฑ์และดำเนินการวงจรการพัฒนาทั้งหมดให้เสร็จสิ้น



“เทคโนโลยีสารสนเทศ วิศวกรรมระบบและซอฟต์แวร์ กระบวนการวงจรชีวิตของซอฟต์แวร์" มาตรฐานนี้ได้รับการรับรองโดยหน่วยงานกลางด้านกฎระเบียบทางเทคนิคและมาตรวิทยาแห่งสหพันธรัฐรัสเซีย และคล้ายคลึงกับมาตรฐานสากล ISO/IEC 12207:2008 มาตรฐานนี้กำหนดโครงสร้างทั่วไปของกระบวนการวงจรชีวิตซอฟต์แวร์ที่สามารถปฏิบัติตามได้ในอุตสาหกรรมซอฟต์แวร์ มาตรฐานไม่ได้เสนอแบบจำลองวงจรชีวิตที่เฉพาะเจาะจง ข้อกำหนดนี้เป็นเรื่องปกติสำหรับโมเดลวงจรชีวิต วิธีการ และเทคโนโลยีสำหรับการสร้างซอฟต์แวร์ อธิบายโครงสร้างของกระบวนการวงจรชีวิตโดยไม่ระบุวิธีดำเนินการหรือทำกิจกรรมและงานที่รวมอยู่ในกระบวนการเหล่านั้น

การนำเสนอสำหรับบทเรียน
หัวข้อข้อความ
  • มูลนิธิซอฟต์แวร์เสรี (FSF)
  • ลิขสิทธิ์ซอฟต์แวร์ฟรี
  • ซอฟต์แวร์ฟรีและโอเพ่นซอร์ส
  • ประวัติความเป็นมาของการพัฒนาภาษาโปรแกรม
  • ประวัติความเป็นมาของภาษา C และ C++
  • เรื่องราว
  • คำติชมของ C++
  • ประวัติความเป็นมาของยูนิกซ์
  • แบบจำลองวงจรชีวิตของซอฟต์แวร์แบบเกลียว
  • UML (ภาษาการสร้างแบบจำลองแบบรวม)
  • กรอบโซลูชันของ Microsoft
  • IDE สำหรับการเขียนโปรแกรม C/C++ บน Windows
  • คอมไพเลอร์ C/C++
  • การสร้างแอปพลิเคชันคอนโซลบน Windows
คำถาม
  1. เหตุใดการพัฒนาซอฟต์แวร์โมเดลน้ำตกจึงไม่ใช้ในโครงการขนาดใหญ่
  2. อะไรคือความแตกต่างระหว่างโมเดลการพัฒนาแบบน้ำตกและแบบวนซ้ำ?
  3. แสดงรายการขั้นตอนของการพัฒนาซอฟต์แวร์ในระเบียบวิธี Rational Unified Process (RUP)

ภาษาซีและยูนิกซ์

ภาษาโปรแกรม กับ(อ่านว่า "C") ถูกสร้างขึ้นในช่วงต้นทศวรรษที่ 70 เมื่อ Ken Thompson และ Dennis Ritchie จาก Bell Labs พัฒนาระบบปฏิบัติการ UNDC ก่อนอื่นพวกเขาสร้างส่วนคอมไพเลอร์ กับแล้วใช้มันในการคอมไพล์ส่วนที่เหลือของคอมไพเลอร์ กับและในที่สุดก็ใช้คอมไพเลอร์ผลลัพธ์เพื่อคอมไพล์ UNIX ระบบปฏิบัติการ UNIX เดิมถูกแจกจ่ายในรูปแบบซอร์สโค้ดไปยัง กับระหว่างมหาวิทยาลัยและห้องปฏิบัติการ และผู้รับสามารถรวบรวมซอร์สโค้ดเป็นภาษาได้ กับลงในรหัสเครื่องโดยใช้คอมไพเลอร์ที่เหมาะสม กับ.

การกระจายซอร์สโค้ดทำให้ระบบปฏิบัติการ UNIX มีเอกลักษณ์เฉพาะตัว โปรแกรมเมอร์สามารถเปลี่ยนระบบปฏิบัติการได้ และซอร์สโค้ดสามารถถ่ายโอนจากแพลตฟอร์มฮาร์ดแวร์หนึ่งไปยังอีกแพลตฟอร์มหนึ่งได้ ปัจจุบัน มาตรฐาน POSIX กำหนดชุดมาตรฐานของการเรียกระบบ UNIX ที่มีอยู่ใน กับซึ่งจะต้องนำไปใช้ในเวอร์ชันของ UNIX ที่สอดคล้องกับ POSIX C เป็นภาษาที่สามที่ทอมสันและริตชี่พัฒนาขึ้นระหว่างการสร้าง UNIX แน่นอนว่าสองคนแรกคือ และ ใน.

ภาษาแอสเซมบลีมือถือ C

เปรียบเทียบกับภาษาก่อนหน้า - BCPL ภาษา กับได้รับการปรับปรุงโดยการเพิ่มประเภทข้อมูลที่มีความยาวเฉพาะ ตัวอย่างเช่น ชนิดข้อมูล int สามารถใช้เพื่อสร้างตัวแปรที่มีจำนวนบิตเฉพาะ (ปกติคือ 16) ในขณะที่ชนิดข้อมูลแบบยาวสามารถใช้เพื่อสร้างตัวแปรทั้งหมดที่มีบิตจำนวนมาก (ปกติคือ 32) ต่างจากภาษาระดับสูงอื่นๆ กับสามารถทำงานกับที่อยู่หน่วยความจำได้โดยตรงโดยใช้พอยน์เตอร์และการอ้างอิง เพราะว่า กับยังคงความสามารถในการเข้าถึงฮาร์ดแวร์ได้โดยตรง ซึ่งมักจัดเป็นภาษาระดับกลางหรือเรียกติดตลกว่า "ภาษาแอสเซมบลีแบบเคลื่อนที่"

C - ภาษาโปรแกรมที่มีโครงสร้าง

ส่วนเรื่องไวยากรณ์และไวยากรณ์นั้น กับเป็นภาษาโปรแกรมที่มีโครงสร้าง ในขณะที่โปรแกรมเมอร์สมัยใหม่หลายคนคิดในแง่ของคลาสและอ็อบเจ็กต์ แต่โปรแกรมเมอร์ กับคิดในแง่ของขั้นตอนและหน้าที่ ใน กับคุณสามารถกำหนดประเภทข้อมูลนามธรรมของคุณเองได้โดยใช้คีย์เวิร์ด struct ในทำนองเดียวกัน คุณสามารถอธิบายประเภทจำนวนเต็มของคุณเอง (การแจงนับ) และตั้งชื่ออื่นให้กับประเภทข้อมูลที่มีอยู่โดยใช้คำสำคัญ typedef ในแง่นี้ กับเป็นภาษาที่มีโครงสร้างซึ่งมีเชื้อโรคของการเขียนโปรแกรมเชิงวัตถุ

การทำให้ภาษาซีเป็นมาตรฐาน

ภาษาที่แพร่หลาย บนคอมพิวเตอร์ประเภทต่างๆ (บางครั้งเรียกว่าแพลตฟอร์มฮาร์ดแวร์) ส่งผลให้มีภาษาที่หลากหลาย พวกเขาคล้ายกันแต่เข้ากันไม่ได้ นี่เป็นปัญหาสำคัญสำหรับนักพัฒนาซอฟต์แวร์ที่ต้องการเขียนโปรแกรมที่เข้ากันได้ซึ่งสามารถทำงานบนหลายแพลตฟอร์มได้ เห็นได้ชัดว่าจำเป็นต้องมีเวอร์ชันมาตรฐาน - ในปี 1983 ANSI (คณะกรรมการมาตรฐานแห่งชาติของสหรัฐอเมริกา) ได้จัดตั้งคณะกรรมการด้านเทคนิค X3J11 เพื่อสร้างมาตรฐานภาษา (เพื่อ "ให้คำจำกัดความของภาษาที่ชัดเจนและไม่ขึ้นอยู่กับเครื่อง") ในปีพ.ศ. 2532 ได้รับการรับรองมาตรฐาน ANSI ได้ร่วมมือกับ ISO (International Standards Organisation) เพื่อสร้างมาตรฐาน ในระดับสากล; มาตรฐานร่วมได้รับการตีพิมพ์ในปี 1990 และตั้งชื่อว่า ANSI/ISO 9899:1990 มาตรฐานนี้ยังคงได้รับการปรับปรุงและได้รับการสนับสนุนจากบริษัทพัฒนาคอมไพเลอร์ส่วนใหญ่

กำเนิดของ C++

Bjarne Stroustrup ปลดปล่อยศักยภาพเชิงวัตถุ กับโดยการถ่ายโอนความสามารถของชั้นเรียน ซิมูล่า 67วี กับ- เริ่มแรกภาษาใหม่ใช้ชื่อ "C พร้อมคลาส" จากนั้นจึงเริ่มถูกเรียก ซี++- ภาษา ซี++ได้รับความนิยมหลังจากได้รับการพัฒนาที่ Bell Labs และต่อมาถูกโอนไปยังอุตสาหกรรมและองค์กรอื่นๆ ปัจจุบันนี้เป็นหนึ่งในภาษาการเขียนโปรแกรมที่ได้รับความนิยมมากที่สุดในโลก (และเชื่อถือได้) ซี++สืบทอดทั้งด้านดีและไม่ดี กับ.

การเปิดเผยของ Bjarna Stroustrup

บียาร์น สตรุสตรัป: "ฉันคิดขึ้นมาเอง" ซี++เขียนคำจำกัดความเริ่มต้นและดำเนินการใช้งานครั้งแรกให้เสร็จสิ้น ฉันเลือกและกำหนดเกณฑ์การออกแบบ ซี++พัฒนาคุณสมบัติหลักและรับผิดชอบต่อชะตากรรมของข้อเสนอเพื่อขยายภาษาในคณะกรรมการกำหนดมาตรฐาน ซี++" เขียนผู้เขียนภาษาโปรแกรมยอดนิยม - "ภาษา ซี++เป็นหนี้ภาษามาก และภาษา ยังคงเป็นเซตย่อย ภาษาซี++(แต่ C++ ได้แก้ไขข้อบกพร่องร้ายแรงหลายประการในระบบประเภท C) ฉันยังประหยัดเงินอีกด้วย ซึ่งเป็นระดับต่ำเพียงพอที่จะจัดการกับงานของระบบที่สำคัญที่สุด ภาษา ในทางกลับกัน BCPL เป็นหนี้บุญคุณรุ่นก่อนมาก โดยวิธีการแสดงความคิดเห็น // ถูกนำมาจาก ซี++จาก BCPL. แหล่งที่มาของแรงบันดาลใจหลักอีกประการหนึ่งคือภาษา ซิมูล่า67- แนวคิดของคลาส (พร้อมคลาสที่ได้รับและฟังก์ชันเสมือน) ถูกยืมมาจากแนวคิดนี้ วิธีการในการบรรทุกมากเกินไปของผู้ปฏิบัติงานและความสามารถในการวางประกาศทุกที่ที่สามารถเขียนคำสั่งได้ อัลกอล68. "

ทำไมต้อง C++

ชื่อ ซี++คิดค้นโดย Rick Massitti ชื่อนี้บ่งบอกถึงลักษณะวิวัฒนาการของการเปลี่ยนผ่านจากมัน - "++" เป็นการดำเนินการที่เพิ่มขึ้นใน - ชื่อสั้นไปหน่อย ซี+เป็นข้อผิดพลาดทางไวยากรณ์ นอกจากนี้ยังถูกใช้เป็นชื่อของภาษาที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ผู้เชี่ยวชาญด้านอรรถศาสตร์ หาสิ่งนั้น ซี++เลวร้ายยิ่งกว่า ++ค- ชื่อเรื่อง ดีภาษาไม่เข้าใจเพราะเป็นส่วนเสริมของ C และไม่ได้พยายามแก้ไขปัญหาโดยทิ้งฟีเจอร์ต่างๆ ออกไป

เหตุใดจึงจำเป็นต้องใช้ C++?

เริ่มแรก ภาษาโปรแกรม C++ได้รับการออกแบบเพื่อให้ผู้เขียนและเพื่อน ๆ ไม่ต้องเขียนโปรแกรมในภาษาแอสเซมบลี C หรือภาษาระดับสูงสมัยใหม่อื่น ๆ วัตถุประสงค์หลักคือเพื่อให้การเขียนโปรแกรมที่ดีง่ายขึ้นและสนุกสนานยิ่งขึ้นสำหรับโปรแกรมเมอร์แต่ละคน แผนการพัฒนา ซี++ไม่เคยมีอยู่บนกระดาษ การออกแบบ เอกสาร และการใช้งานมีการเคลื่อนไหวไปพร้อมๆ กัน แน่นอนว่าอินเทอร์เฟซภายนอก ซี++ถูกเขียนใน ซี++- ไม่เคยมี "โครงการ C++" หรือ "คณะกรรมการพัฒนา C++" นั่นเป็นเหตุผล ซี++มีการพัฒนาและพัฒนาอย่างต่อเนื่องในทุกทิศทางเพื่อรับมือกับความท้าทายที่ผู้ใช้เผชิญและผ่านการพูดคุยระหว่างผู้เขียนกับเพื่อนและเพื่อนร่วมงานของเขา

C ++ เชิงวัตถุที่แท้จริง

ใน ภาษาซี++หลักการของการเขียนโปรแกรมเชิงวัตถุได้รับการสนับสนุนอย่างเต็มที่ รวมถึงเสาหลักสามประการที่ยึดถือ: การห่อหุ้ม การสืบทอด และความหลากหลาย การห่อหุ้มใน ซี++สนับสนุนผ่านการสร้างประเภทข้อมูลที่ไม่ได้มาตรฐาน (กำหนดเอง) ที่เรียกว่าคลาส ภาษา ซี++รองรับมรดก ซึ่งหมายความว่าคุณสามารถประกาศประเภทข้อมูลใหม่ (คลาส) ที่เป็นส่วนขยายของข้อมูลที่มีอยู่ได้

แม้ว่า ภาษาโปรแกรม C++ถูกต้องเรียกว่าต่อเนื่อง กับและโปรแกรมใด ๆ ที่ใช้งานได้ในภาษา กับจะได้รับการสนับสนุนจากคอมไพเลอร์ ซี++, เมื่อย้ายจาก กับถึง ซี++มีการก้าวกระโดดครั้งสำคัญมาก ภาษา ซี++ได้ประโยชน์จากความผูกพันกับภาษา กับหลายปีที่ผ่านมาอย่างที่โปรแกรมเมอร์หลายๆ คนได้ค้นพบว่าเพื่อที่จะได้ใช้ประโยชน์อย่างเต็มที่ ภาษาซี++พวกเขาจำเป็นต้องละทิ้งความรู้เดิมบางส่วนและหาความรู้ใหม่ กล่าวคือ เรียนรู้วิธีใหม่ในการสร้างกรอบความคิดและการแก้ปัญหาการเขียนโปรแกรม ก่อนที่คุณจะเริ่มเรียนรู้ ซี++, Stroustrup และโปรแกรมเมอร์ส่วนใหญ่ใช้งาน ซี++พิจารณาการเรียนรู้ภาษา กับไม่จำเป็น.

ภาษาโปรแกรม ซี++ปัจจุบันถือเป็นภาษาหลักที่ใช้ในการพัฒนาผลิตภัณฑ์เชิงพาณิชย์ โดย 90% ของเกมเขียนด้วย ซี++โดยใช้ไดเร็คเอ็กซ์

วรรณกรรม

แหล่งที่มา:

  • H.M.Deitel, P.J.Deitel "วิธีการเขียนโปรแกรมด้วย C++"
  • Bjarne Stroustrup "ภาษาการเขียนโปรแกรม C++ ฉบับที่ 3"
  • Simon Robinson, Ollie Cornes, Jay Glynn และคนอื่นๆ
  • Jess Liberty "สอนตัวเองด้วย C++ ใน 21 วัน"
  • Stanislav Gornakov "DirectX บทเรียนการเขียนโปรแกรมใน C ++"

ภาษาโปรแกรม C++

อัปเดตครั้งล่าสุด: 08/28/2017

ภาษาการเขียนโปรแกรม C++ เป็นภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปที่มีการพิมพ์แบบคงที่ระดับสูง ซึ่งเหมาะสำหรับการสร้างแอปพลิเคชันที่หลากหลาย ปัจจุบัน C++ เป็นหนึ่งในภาษาที่ได้รับความนิยมและแพร่หลายที่สุด

มีรากฐานมาจากภาษา C ซึ่งได้รับการพัฒนาในปี 1969-1973 ที่ Bell Labs โดยโปรแกรมเมอร์ Dennis Ritchie ในช่วงต้นทศวรรษ 1980 โปรแกรมเมอร์ชาวเดนมาร์ก บีจาร์น สตรุสทรัป ซึ่งในขณะนั้นทำงานที่ Bell Labs ได้พัฒนา C++ เป็นส่วนเสริมของภาษา C ในความเป็นจริง ในตอนแรก C++ เพียงแต่เสริมภาษา C ด้วยความสามารถด้านการเขียนโปรแกรมเชิงวัตถุบางอย่าง และนั่นคือสาเหตุที่ Stroustrup เรียกมันว่า "C พร้อมคลาส" ในตอนแรก

ต่อมาภาษาใหม่เริ่มได้รับความนิยม มีการเพิ่มคุณสมบัติใหม่ซึ่งทำให้ไม่เพียงแต่เป็นส่วนเสริมของ C แต่ยังเป็นภาษาการเขียนโปรแกรมใหม่ทั้งหมด ด้วยเหตุนี้ “C พร้อมคลาส” จึงถูกเปลี่ยนชื่อเป็น C++ และตั้งแต่นั้นเป็นต้นมาทั้งสองภาษาก็เริ่มพัฒนาแยกจากกัน

C++ เป็นภาษาที่ทรงพลัง ซึ่งสืบทอดความสามารถด้านหน่วยความจำที่หลากหลายจากภาษา C ดังนั้น C++ จึงมักพบการใช้งานในการเขียนโปรแกรมระบบ โดยเฉพาะอย่างยิ่งเมื่อสร้างระบบปฏิบัติการ ไดรเวอร์ ยูทิลิตี้ต่างๆ โปรแกรมป้องกันไวรัส ฯลฯ อย่างไรก็ตาม Windows OS ส่วนใหญ่เขียนด้วยภาษา C++ แต่การใช้ภาษานี้ไม่จำกัดเฉพาะการเขียนโปรแกรมระบบเท่านั้น สามารถใช้ C++ ในโปรแกรมทุกระดับที่ความเร็วและประสิทธิภาพมีความสำคัญ มักใช้เพื่อสร้างแอปพลิเคชันแบบกราฟิกและโปรแกรมแอปพลิเคชันต่างๆ โดยเฉพาะอย่างยิ่งมักใช้เพื่อสร้างเกมที่มีการแสดงภาพที่สมบูรณ์และสมบูรณ์ นอกจากนี้ เมื่อเร็ว ๆ นี้ ทิศทางของมือถือได้รับแรงผลักดัน โดยที่ C++ ก็ค้นพบแอปพลิเคชันของมันเช่นกัน และแม้กระทั่งในการพัฒนาเว็บ คุณยังสามารถใช้ C++ เพื่อสร้างเว็บแอปพลิเคชันหรือบริการสนับสนุนบางอย่างที่ให้บริการเว็บแอปพลิเคชันได้ โดยทั่วไป C++ เป็นภาษาที่ใช้กันอย่างแพร่หลายซึ่งคุณสามารถสร้างโปรแกรมได้เกือบทุกประเภท

C++ เป็นภาษาที่คอมไพล์ ซึ่งหมายความว่าคอมไพลเลอร์แปลซอร์สโค้ด C++ เป็นไฟล์ปฏิบัติการที่มีชุดคำสั่งของเครื่อง แต่แพลตฟอร์มที่ต่างกันก็มีลักษณะเฉพาะของตัวเอง ดังนั้นโปรแกรมที่คอมไพล์แล้วจึงไม่สามารถถ่ายโอนจากแพลตฟอร์มหนึ่งไปอีกแพลตฟอร์มหนึ่งและรันที่นั่นได้ อย่างไรก็ตาม ในระดับซอร์สโค้ด โปรแกรม C++ ส่วนใหญ่จะพกพาได้ เว้นแต่จะใช้ฟังก์ชันเฉพาะระบบปฏิบัติการบางอย่าง และความพร้อมใช้งานของคอมไพเลอร์ ไลบรารี และเครื่องมือการพัฒนาสำหรับแพลตฟอร์มทั่วไปเกือบทั้งหมด ทำให้คุณสามารถคอมไพล์ซอร์สโค้ด C++ เดียวกันลงในแอปพลิเคชันสำหรับแพลตฟอร์มเหล่านี้ได้

ต่างจากภาษา C ตรงที่ภาษา C++ อนุญาตให้คุณเขียนแอปพลิเคชันในรูปแบบเชิงวัตถุ โดยเป็นตัวแทนของโปรแกรมในรูปของชุดของคลาสและอ็อบเจ็กต์ที่มีปฏิสัมพันธ์ระหว่างกัน ซึ่งช่วยลดความยุ่งยากในการสร้างแอพพลิเคชั่นขนาดใหญ่

ขั้นตอนหลักของการพัฒนา

ในปี 1979-80 Bjarne Stroustrup ได้พัฒนาส่วนขยายของภาษา C - "C with Classes" ในปี 1983 ภาษาถูกเปลี่ยนชื่อเป็น C++

ในปี พ.ศ. 2528 ภาษา C++ เวอร์ชันเชิงพาณิชย์รุ่นแรกได้รับการเผยแพร่ เช่นเดียวกับหนังสือ "The C++ Programming Language" ฉบับพิมพ์ครั้งแรก ซึ่งแสดงถึงคำอธิบายแรกของภาษานี้ในกรณีที่ไม่มีมาตรฐานอย่างเป็นทางการ

ในปี 1989 เวอร์ชันใหม่ของภาษา C++ 2.0 ได้รับการเผยแพร่ ซึ่งรวมถึงฟีเจอร์ใหม่จำนวนหนึ่งด้วย หลังจากนั้นภาษาก็พัฒนาค่อนข้างช้าจนถึงปี 2554 แต่ในเวลาเดียวกันในปี 1998 มีความพยายามครั้งแรกในการสร้างมาตรฐานภาษาโดย ISO (องค์การระหว่างประเทศเพื่อการมาตรฐาน) มาตรฐานแรกเรียกว่า ISO/IEC 14882:1998 หรือเรียกสั้น ๆ ว่า C++98 ต่อมาในปี พ.ศ. 2546 ได้มีการเผยแพร่มาตรฐาน C++03 เวอร์ชันใหม่

ในปี 2011 มาตรฐาน C++11 ใหม่ได้รับการเผยแพร่ ซึ่งมีการเพิ่มเติมมากมายและทำให้ภาษา C++ สมบูรณ์ด้วยฟังก์ชันใหม่จำนวนมาก ต่อจากนี้ มีการเผยแพร่ส่วนเพิ่มเติมเล็กน้อยจากมาตรฐานหรือที่เรียกว่า C++14 ในปี 2014 และภาษาหลักอีกฉบับหนึ่งมีกำหนดเปิดตัวในปี 2560

คอมไพเลอร์และสภาพแวดล้อมการพัฒนา

ในการพัฒนาโปรแกรมในภาษา C++ คุณต้องมีคอมไพเลอร์ โดยจะแปลซอร์สโค้ดในภาษา C++ ให้เป็นไฟล์ปฏิบัติการ ซึ่งคุณสามารถเรียกใช้ได้ แต่ในขณะนี้มีคอมไพเลอร์ที่แตกต่างกันมากมาย อาจแตกต่างกันในแง่มุมต่าง ๆ โดยเฉพาะในการดำเนินการตามมาตรฐาน รายการคอมไพเลอร์พื้นฐานสำหรับ C++ มีอยู่ใน Wikipedia ขอแนะนำให้พัฒนาเลือกคอมไพเลอร์ที่กำลังพัฒนาและใช้มาตรฐานล่าสุดทั้งหมด ดังนั้น ตลอดบทช่วยสอนนี้ เราจะใช้คอมไพเลอร์ g++ ที่เปิดให้ใช้งานได้ฟรีซึ่งพัฒนาโดยโครงการ GNU เป็นหลัก

คุณยังสามารถใช้ IDE เช่น Visual Studio, Netbeans, Eclipse, Qt ฯลฯ เพื่อสร้างโปรแกรมได้

แท็ก: ประวัติความเป็นมาของมาตรฐาน C, ANSI C, ISO C, C99, C11, ISO/IEC C, C

ต้นกำเนิด

C และเป็น "ผลิตภัณฑ์ที่แยกออกมา" ที่ได้มาจากการสร้างระบบปฏิบัติการ UNIX ซึ่งได้รับการพัฒนาที่ Bell Laboratories โดย Ken Thompson, Denis Ritchie และผู้ร่วมก่อตั้ง Thompson เขียน UNIX เวอร์ชันดั้งเดิมโดยลำพัง ซึ่งทำงานบน DEC PDP-7 ซึ่งเป็นหนึ่งในมินิคอมพิวเตอร์เครื่องแรกๆ ที่มีหน่วยความจำหลักเพียง 8K word (หลังจากนั้นคือปี 1969)

เช่นเดียวกับระบบปฏิบัติการอื่นๆ ในยุคนั้น UNIX ถูกเขียนด้วยภาษาแอสเซมบลี การดีบักโปรแกรมภาษาแอสเซมบลีเป็นเรื่องที่ยุ่งยากและยากต่อการปรับปรุง และ UNIX ก็ไม่มีข้อยกเว้น Thompson ตัดสินใจว่าภาษาระดับสูงเป็นสิ่งจำเป็นสำหรับการพัฒนา OS ต่อไป และเกิดภาษาเล็กๆ B. Thompson ใช้ภาษา BCPL ซึ่งเป็นภาษาการเขียนโปรแกรมระบบที่พัฒนาขึ้นในช่วงกลางทศวรรษที่ 60 เป็นพื้นฐาน ในทางกลับกัน BCPL มีต้นกำเนิดมาจาก ALGOL 60 ซึ่งเป็นหนึ่งในภาษาแรกสุด (และมีอิทธิพลมากที่สุด)

ในไม่ช้า Ritchie ก็เข้าร่วมโครงการ UNIX และเริ่มเขียนด้วยภาษา B ในปี 1970 Bell Labs ได้ซื้อ PDP-11 สำหรับโครงการนี้ เนื่องจาก B พร้อมที่จะรันบน PDP-11 แล้ว Thompson จึงเขียนส่วนหนึ่งของ UNIX ใหม่เป็น B ในปี 1971 เห็นได้ชัดว่า B ไม่ค่อยเหมาะสมกับ PDP-11 ดังนั้น Ritchie จึงเริ่มสร้าง B เวอร์ชันขยาย ในตอนแรกเขา เรียกมันว่า NB (New B ) แต่เมื่อภาษาแตกต่างจาก B อย่างมาก จึงเปลี่ยนชื่อเป็น C ภายในปี 1973 ภาษามีความเสถียรเพียงพอสำหรับ UNIX ที่จะเขียนใหม่ในภาษานั้น การเปลี่ยนมาใช้ C ให้ข้อได้เปรียบที่สำคัญ: ความสะดวกในการพกพา ด้วยการเขียนคอมไพเลอร์ภาษา C ให้กับเครื่องแต่ละเครื่องที่ Bell Labs ทีมพัฒนาจึงสามารถพอร์ต UNIX ให้กับเครื่องเหล่านั้นได้

การทำให้เป็นมาตรฐาน

ภาษาซีมีการพัฒนาอย่างต่อเนื่องในช่วงทศวรรษที่ 70 โดยเฉพาะระหว่างปี 1977 ถึง 1979 เมื่อมีการตีพิมพ์หนังสือเล่มแรกเกี่ยวกับภาษาซี ซึ่งเขียนโดย Brian Kernighan และ Denis Ritchie และตีพิมพ์ในปี 1978 ได้กลายเป็นคัมภีร์ของโปรแกรมเมอร์ภาษา C ในกรณีที่ไม่มีมาตรฐานอย่างเป็นทางการ หนังสือเล่มนี้ - หรือที่รู้จักกันในชื่อ K&R หรือ "White Book" ตามที่แฟน ๆ C ชอบเรียก - ได้กลายเป็นมาตรฐานโดยพฤตินัย ในยุค 70 มีโปรแกรมเมอร์ภาษา C เพียงไม่กี่คน และส่วนใหญ่เป็นผู้ใช้ UNIX อย่างไรก็ตาม ในช่วงทศวรรษ 1980 C ได้ขยายขอบเขตออกไปนอกขอบเขตแคบๆ ของโลก UNIX คอมไพเลอร์ภาษา C มีวางจำหน่ายแล้วบนเครื่องหลากหลายที่ใช้ระบบปฏิบัติการที่แตกต่างกัน โดยเฉพาะอย่างยิ่ง C เริ่มแพร่กระจายบนแพลตฟอร์ม IBM PC ที่พัฒนาอย่างรวดเร็ว

ควบคู่ไปกับความนิยมที่เพิ่มขึ้นก็เกิดปัญหาตามมา โปรแกรมเมอร์ที่เขียนคอมไพเลอร์ใหม่ใช้ภาษาที่อธิบายไว้ใน K&R เป็นพื้นฐาน น่าเสียดายที่ใน K&R คุณลักษณะบางอย่างของภาษามีการอธิบายไว้อย่างคลุมเครือ ดังนั้นผู้คอมไพล์จึงมักตีความคุณลักษณะเหล่านั้นตามดุลยพินิจของตนเอง นอกจากนี้ หนังสือเล่มนี้ไม่ได้ให้ความแตกต่างที่ชัดเจนระหว่างคุณลักษณะของภาษาและคุณลักษณะของระบบปฏิบัติการ UNIX คืออะไร สิ่งที่ทำให้สถานการณ์แย่ลงคือหลังจากการตีพิมพ์ K&R C ยังคงพัฒนาต่อไป: มีการเพิ่มคุณสมบัติใหม่เข้าไปและคุณสมบัติเก่าก็ถูกตัดออกไป ในไม่ช้าก็มีความต้องการคำอธิบายภาษาที่ครอบคลุม ถูกต้อง และทันสมัย หากไม่มีมาตรฐานดังกล่าว ภาษาถิ่นของภาษาก็เริ่มปรากฏขึ้น ซึ่งรบกวนความสามารถในการพกพา ซึ่งเป็นจุดแข็งที่สุดของภาษา

การพัฒนามาตรฐาน American C เริ่มขึ้นในปี 1983 ภายใต้การอุปถัมภ์ของ American National Standards Institute (ANSI) หลังจากการแก้ไขหลายครั้ง มาตรฐานดังกล่าวได้รับการสรุปในปี 1988 และนำมาใช้อย่างเป็นทางการในเดือนธันวาคม 1989 ในชื่อ ANSI X3.159-1989 ในปี พ.ศ. 2533 ได้รับการรับรองจากองค์การระหว่างประเทศเพื่อการมาตรฐาน (ISO) ให้เป็นมาตรฐานสากล ISO/IEC 9899:1990 ภาษาเวอร์ชันนี้มักเรียกว่า C89 หรือ C90 เพื่อหลีกเลี่ยงความสับสนกับเวอร์ชันดั้งเดิมของ C ซึ่งมักเรียกว่า K&R C

ภาษามีการเปลี่ยนแปลงเล็กน้อยในปี 1995 (การเปลี่ยนแปลงดังกล่าวอธิบายไว้ในเอกสารที่เรียกกันทั่วไปว่าการแก้ไข 1) การเปลี่ยนแปลงที่สำคัญมากขึ้นเกิดขึ้นในปี 1999 เมื่อมีการเผยแพร่มาตรฐาน ISO/IEC 9899:1999 ภาษาที่อธิบายไว้ในมาตรฐานนี้มักเรียกว่า C99 คำว่า "ANSI C", "ANSI/ISO C" และ "ISO C" ซึ่งครั้งหนึ่งเคยใช้เพื่ออธิบาย C99 มีความหมายสองประการเนื่องจากการมีอยู่ของสองมาตรฐาน

ในปี 2011 มาตรฐาน C11 ได้รับการเผยแพร่พร้อมกับการแก้ไขภาษา C++ แม้จะมีมาตรฐาน '11 อยู่ แต่คอมไพเลอร์จำนวนมากยังคงไม่สนับสนุนอย่างสมบูรณ์แม้แต่เวอร์ชัน C99 ดังนั้นการใช้มาตรฐาน C11 จึงมีการระบุอย่างชัดเจน