วันจันทร์ที่ 10 ธันวาคม พ.ศ. 2555

ประวัติภาษาซี

ภาษาซี
ภาษา ซี (C) เป็นภาษาโปรแกรมคอมพิวเตอร์ พัฒนาขึ้นเมื่อ พ.ศ. 2515 (ค.ศ. 1972) โดย เดนนิส ริตชี ที่เบลล์เทเลโฟนแลบอลาทอรีส์ (Bell Telephone Laboratories) เพื่อใช้สร้างระบบปฏิบัติการยูนิกซ์
ถึงแม้ว่าภาษาซีออกแบบขึ้นมาเพื่อสร้างซอฟต์แวร์ระบบ  แต่มันก็สามารถใช้พัฒนาซอฟต์แวร์ประยุกต์ที่เคลื่อนย้ายได้อย่างแพร่หลาย  ภาษาซีเป็นภาษาโปรแกรมที่ได้รับความนิยมมากที่สุดภาษาหนึ่ง มีสถาปัตยกรรมคอมพิวเตอร์เพียงส่วนน้อยเท่านั้นที่ไม่มีตัวแปลโปรแกรมของ ภาษาซี ภาษาซีมีอิทธิพลอย่างมากต่อภาษาโปรแกรมที่นิยมอื่น ๆ ที่เด่นชัดที่สุดก็คือภาษาซีพลัสพลัส ซึ่งเดิมเป็นส่วนขยายของภาษาซี
เดนนิส ริตชี
ผู้คิดค้นภาษาซี

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

ภาษาซียังมีลักษณะเฉพาะต่อไปนี้เพิ่มเติม

ตัวแปรอาจถูกซ่อนในบล็อกซ้อนใน
ชนิดตัวแปรไม่เคร่งครัด เช่นข้อมูลตัวอักษรสามารถใช้เป็นจำนวนเต็ม
เข้าถึงหน่วยความจำคอมพิวเตอร์ในระดับต่ำโดยแปลงที่อยู่ในเครื่องด้วยชนิดตัวแปรพอยเตอร์
ฟังก์ชันและพอยเตอร์ข้อมูลรองรับการทำงานในภาวะหลายรูปแบบ (polymorphism)
การกำหนดดัชนีแถวลำดับสามารถทำได้ด้วยวิธีรอง คือนิยามในพจน์ของเลขคณิตพอยเตอร์
ตัวประมวลผลก่อนสำหรับการนิยามแมโคร การรวมไฟล์รหัสต้นฉบับ และการแปลโปรแกรมแบบมีเงื่อนไข
ความสามารถที่ซับซ้อนเช่น ไอ/โอ การจัดการสายอักขระ และฟังก์ชันทางคณิตศาสตร์ รวมอยู่ในไลบรารี
คำหลักที่สงวนไว้มีจำนวนค่อนข้างน้อย
โครงสร้างการเขียน คล้ายภาษาบีมากกว่าภาษาอัลกอล เช่น
ใช้วงเล็บปีกกา { ... } แทนที่จะเป็น begin ... end ในภาษาอัลกอล 60 หรือวงเล็บโค้ง ( ... ) ในภาษาอัลกอล 68
เท่ากับ = ใช้สำหรับกำหนดค่า (คัดลอกข้อมูล) เหมือนภาษาฟอร์แทรน แทนที่จะเป็น := ในภาษาอัลกอล
เท่ากับสองตัว == ใช้สำหรับทดสอบความเท่ากัน แทนที่จะเป็น .EQ. ในภาษาฟอร์แทรนหรือ = ในภาษาเบสิกและภาษาอัลกอล
ตรรกะ "และ" กับ "หรือ" แทนด้วย && กับ || ตามลำดับ แทนที่จะเป็นตัวดำเนินการ ? กับ ? ในภาษาอัลกอล แต่ตัวดำเนินการดังกล่าวจะไม่ประเมินค่าตัวถูกดำเนินการทางขวา ถ้าหากผลลัพธ์จากทางซ้ายสามารถพิจารณาได้แล้ว เหตุการณ์เช่นนี้เรียกว่าการประเมินค่าแบบลัดวงจร (short-circuit evaluation) และตัวดำเนินการดังกล่าวก็มีความหมายต่างจากตัวดำเนินการระดับบิต & กับ |
อย่างไรก็ดี ภาษาซีบนยูนิกซ์รุ่น 6 และ 7 มีการใช้ตัวดำเนินการแบบภาษาอัลกอลคือ /\ กับ \/ (ในแอสกี) แต่ใช้สำหรับหาขอบเขตล่างมากสุด (infimum) กับขอบเขตบนน้อยสุด (supremum) ตามลำดับ
ตัวดำเนินการแบบประสมจำนวนมาก อาทิ +=, -=, *=, ++ ฯลฯ (เทียบเท่ากับตัวดำเนินการในภาษาอัลกอล 68 +:=, -:=, *:=, +:=1)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น