Ada เป็นภาษาการเขียนโปรแกรมระดับสูงที่มีโครงสร้าง ซึ่งออกแบบมาเป็นหลักสำหรับการเขียนโปรแกรมระบบและแอปพลิเคชันแบบเรียลไทม์ มันได้รับการตั้งชื่อตาม Ada Lovelace ซึ่งมักถูกยกย่องว่าเป็นหนึ่งในโปรแกรมเมอร์คอมพิวเตอร์คนแรก ๆ Ada เป็นที่รู้จักในด้านการมีประเภทข้อมูลที่เข้มงวด ความเป็นโมดูล และการสนับสนุนการเขียนโปรแกรมแบบขนาน ทำให้มันเหมาะสมสำหรับระบบที่สำคัญในอุตสาหกรรมต่าง ๆ เช่น อวกาศ ยานยนต์ และการป้องกันประเทศ
Ada ถูกสร้างขึ้นในปลายทศวรรษ 1970 ภายใต้โครงการที่ได้รับการสนับสนุนจากกระทรวงกลาโหมของสหรัฐอเมริกา (DoD) เพื่อแก้ไขความต้องการภาษาการเขียนโปรแกรมที่มีมาตรฐานสำหรับระบบฝังตัวและระบบเรียลไทม์ ภาษาได้รับการออกแบบโดยทีมงานที่นำโดย Jean Ichbiah และได้รับการเผยแพร่ในปี 1983 หนึ่งในวัตถุประสงค์หลักคือการลดความหลากหลายของภาษาการเขียนโปรแกรมที่ใช้ในระบบการป้องกันประเทศ ซึ่งจะช่วยเพิ่มความสะดวกในการบำรุงรักษาและความเชื่อถือได้
Ada ได้รับแรงบันดาลใจจากหลายภาษาการเขียนโปรแกรม รวมถึง Pascal, C และ ALGOL การออกแบบของมันรวมฟีเจอร์จากภาษาต่าง ๆ เหล่านี้ เช่น การมีประเภทข้อมูลที่เข้มงวดและการเขียนโปรแกรมแบบมีโครงสร้าง การพัฒนา Ada ยังตอบสนองต่อความท้าทายที่เกิดจาก C โดยเฉพาะในด้านความปลอดภัยของประเภทข้อมูลและการสนับสนุนการเขียนโปรแกรมระดับระบบ
ตั้งแต่เริ่มต้น Ada ได้ผ่านการปรับปรุงหลายครั้ง โดย Ada 83 ตามมาด้วย Ada 95, Ada 2005 และมาตรฐานล่าสุดคือ Ada 2012 การปรับปรุงเหล่านี้ได้นำเสนอฟีเจอร์ใหม่ ๆ เช่น การเขียนโปรแกรมเชิงวัตถุและการสนับสนุนที่ดีขึ้นสำหรับระบบเรียลไทม์ ปัจจุบัน Ada ได้รับการดูแลโดย Ada Resource Association และยังคงถูกใช้งาน โดยเฉพาะในระบบที่สำคัญซึ่งความปลอดภัยและความเชื่อถือได้มีความสำคัญสูงสุด
Ada บังคับการตรวจสอบประเภทข้อมูลอย่างเข้มงวด ซึ่งช่วยจับข้อผิดพลาดในระหว่างการคอมไพล์แทนที่จะเป็นระหว่างการทำงาน
type Integer_Type is range 0 .. 100;
variable Count : Integer_Type;
Count := 50; -- นี่ถูกต้อง
Count := 150; -- นี่จะทำให้เกิดข้อผิดพลาดในระหว่างการคอมไพล์
ภาษานี้สนับสนุนการเขียนโปรแกรมแบบโมดูลผ่านการใช้แพ็คเกจ ซึ่งรวมประเภทข้อมูล ข้อมูล และกระบวนการที่เกี่ยวข้อง
package Geometry is
type Point is record
X : Float;
Y : Float;
end record;
procedure Move(Point : in out Point; DeltaX, DeltaY : Float);
end Geometry;
Ada มีการสนับสนุนการเขียนโปรแกรมแบบขนานในตัวผ่านงาน (tasks) ซึ่งอนุญาตให้มีการดำเนินการหลายกระบวนการในเวลาเดียวกัน
task My_Task is
begin
-- โค้ดของงาน
end My_Task;
Ada มีกลไกการจัดการข้อยกเว้นที่แข็งแกร่ง ช่วยให้นักพัฒนาสามารถจัดการข้อผิดพลาดในระหว่างการทำงานได้อย่างราบรื่น
begin
-- โค้ดที่อาจทำให้เกิดข้อยกเว้น
exception
when Constraint_Error =>
-- จัดการข้อผิดพลาด
end;
Ada สนับสนุนการเขียนโปรแกรมเชิงวัตถุด้วยฟีเจอร์เช่น การสืบทอดและพหุนิยม
type Vehicle is tagged null record;
type Car is new Vehicle with record
Doors : Integer;
end record;
procedure Display(V : Vehicle) is
begin
-- โค้ดเพื่อแสดงข้อมูลของยานพาหนะ
end Display;
เจนเนอริกช่วยให้นักพัฒนาสามารถเขียนโค้ดที่ยืดหยุ่นและนำกลับมาใช้ใหม่ได้โดยการกำหนดประเภทและซับโปรแกรมที่มีพารามิเตอร์
generic
type Item_Type is private;
package Container is
procedure Add(Item : Item_Type);
end Container;
Ada สนับสนุนประเภทการนับ ซึ่งกำหนดประเภทที่มีชุดค่าที่ตั้งชื่อ
type Color is (Red, Green, Blue);
ประเภทที่ควบคุมช่วยให้สามารถควบคุมการสร้างและการทำลายวัตถุได้อย่างละเอียด
type My_Controlled_Type is new Ada.Finalization.Controlled with record
Value : Integer;
end record;
Ada มีแอตทริบิวต์ที่สามารถใช้เพื่อรับข้อมูลเกี่ยวกับประเภทหรือวัตถุ
X : Integer := 10;
Size : Natural := X'Size; -- รับขนาดของจำนวนเต็ม
Ada เน้นแนวคิดการจัดการหน่วยความจำผ่านการควบคุมข้อมูลและการจัดสรรอย่างชัดเจน
declare
type Record_Type is record
A : Integer;
B : Float;
end record;
My_Record : Record_Type;
end;
Ada สามารถคอมไพล์ได้โดยใช้คอมไพเลอร์หลายตัว โดย GNAT เป็นหนึ่งในคอมไพเลอร์ที่ใช้กันอย่างแพร่หลาย GNAT เป็นส่วนหนึ่งของ GNU Compiler Collection (GCC) และให้วิธีการคอมไพล์โค้ด Ada แบบฟรีและโอเพนซอร์ส
มีสภาพแวดล้อมการพัฒนาที่รวม (IDEs) หลายตัวที่มีให้สำหรับ Ada เช่น GNAT Studio, AdaGIDE และ GPS (GNAT Programming Studio) เครื่องมือเหล่านี้มีฟีเจอร์เช่น การเน้นไวยากรณ์ การเติมโค้ดอัตโนมัติ และความสามารถในการดีบัก
ในการสร้างโปรเจกต์ Ada โดยใช้ GNAT นักพัฒนามักจะเขียนโค้ดต้นฉบับ Ada และจากนั้นใช้คำสั่งต่อไปนี้ในเทอร์มินัล:
gnatmake my_program.adb
คำสั่งนี้จะคอมไพล์ไฟล์ต้นฉบับ Ada และสร้างไฟล์ที่สามารถทำงานได้
Ada ถูกใช้เป็นหลักในระบบที่มีความสำคัญด้านความปลอดภัย ซึ่งรวมถึงแต่ไม่จำกัดเพียง:
ความเชื่อถือได้และความสะดวกในการบำรุงรักษาทำให้มันเป็นตัวเลือกที่ชื่นชอบในภาคส่วนเหล่านี้
ในขณะที่ Ada มีความคล้ายคลึงกับภาษาการเขียนโปรแกรมอื่น ๆ แต่ก็โดดเด่นในด้านความปลอดภัยและความเชื่อถือได้
เมื่อจัดการกับการแปลจากแหล่งข้อมูลสู่แหล่งข้อมูล มีเครื่องมือเฉพาะที่สามารถช่วยแปลงโค้ด Ada ไปยังภาษาการเขียนโปรแกรมอื่น ๆ ตัวอย่างเช่น เครื่องมืออย่าง Gnat2Go สามารถใช้เพื่อแปลโค้ด Ada เป็น Go อย่างไรก็ตาม ควรระมัดระวังเพื่อให้แน่ใจว่าฟังก์ชันและฟีเจอร์ด้านความปลอดภัยของโค้ด Ada ดั้งเดิมได้รับการรักษาไว้ในระหว่างกระบวนการแปล
เครื่องมือทั่วไปสำหรับการแปลจากแหล่งข้อมูลสู่แหล่งข้อมูล ได้แก่: