คำจำกัดความ ของ ภาษาโปรแกรม

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

  • การทำงานและเป้าหมาย ภาษาโปรแกรมคอมพิวเตอร์ คือภาษาชนิดหนึ่ง [3] ที่ใช้สำหรับเขียนโปรแกรมคอมพิวเตอร์ ซึ่งเกี่ยวข้องกับคอมพิวเตอร์ที่กระทำการคิดคำนวณหรือขั้นตอนวิธีบางอย่าง [4] และควบคุมอุปกรณ์ภายนอกที่เป็นไปได้อาทิ เครื่องพิมพ์ เครื่องขับจานบันทึก หุ่นยนต์ [5] และอื่น ๆ ตัวอย่างเช่น โปรแกรมโพสต์สคริปต์ มักถูกสร้างโดยโปรแกรมอื่นเพื่อควบคุมเครื่องพิมพ์หรือจอภาพ ภาษาโปรแกรมโดยนัยทั่วไปมากขึ้น อาจใช้พรรณนาการคิดคำนวณบนเครื่องจักรบางชนิด ซึ่งอาจเป็นเครื่องจักรนามธรรมก็ได้ เป็นที่ยอมรับกันโดยทั่วไปว่า ข้อกำหนดภาษาโปรแกรมที่สมบูรณ์ จะต้องมีการพรรณนาลักษณะเครื่องจักรหรือหน่วยประมวลผลสำหรับภาษานั้น ซึ่งอาจเป็นการพรรณนาในอุดมคติก็ได้ [6] ในทางปฏิบัติเป็นส่วนใหญ่ ภาษาโปรแกรมเกี่ยวข้องกับคอมพิวเตอร์ จึงทำให้ภาษาโปรแกรมต่าง ๆ โดยปกติถูกกำหนดและศึกษาในแนวทางนี้ [7] ภาษาโปรแกรมต่างจากภาษาธรรมชาติตรงที่ ภาษาธรรมชาติใช้แสดงปฏิสัมพันธ์ระหว่างมนุษย์ด้วยกันเพียงเท่านั้น ในขณะที่ภาษาโปรแกรมทำให้มนุษย์สื่อสารชุดคำสั่งแก่เครื่องจักรได้อีกด้วย
  • แนวคิดนามธรรม ภาษาโปรแกรมโดยปกติจะมีภาวะนามธรรม สำหรับนิยามและจัดดำเนินการโครงสร้างข้อมูล หรือควบคุมกระแสการทำงาน ความจำเป็นในทางปฏิบัติที่ภาษาโปรแกรมสนับสนุนภาวะนามธรรมอย่างเพียงพอ แสดงออกมาด้วยหลักการที่เป็นนามธรรม [8] หลักการนี้บางครั้งก็คิดค้นขึ้นเพื่อเป็นข้อเสนอแนะให้โปรแกรมเมอร์สามารถใช้ภาวะนามธรรมเช่นนั้นได้อย่างถูกต้อง [9]
  • พลังในการแสดงออก ทฤษฎีการคำนวณแบ่งประเภทภาษาต่าง ๆ ตามการคิดคำนวณโดยความสามารถในการแสดงออก ภาษาทัวริงบริบูรณ์ทุกภาษาสามารถทำให้เกิดผลได้ด้วยเซตของขั้นตอนวิธีที่เหมือนกัน ภาษาเอสคิวแอลและภาษาแชริตีเป็นตัวอย่างของภาษาที่ไม่เป็นทัวริงบริบูรณ์ แต่ก็ยังเรียกว่าเป็นภาษาโปรแกรม [10][11]

ภาษามาร์กอัปอย่างเช่น เอกซ์เอ็มแอล เอชทีเอ็มแอล หรือทร็อฟฟ์ เป็นต้น ซึ่งถูกนิยามว่าเป็นข้อมูลเชิงโครงสร้าง โดยทั่วไปไม่ถือว่าเป็นภาษาโปรแกรม [12][13][14] อย่างไรก็ตาม ภาษาโปรแกรมอาจจะใช้วากยสัมพันธ์เหมือนภาษามาร์กอัป ถ้าอรรถศาสตร์เชิงคำนวณมีการนิยามไว้ ตัวอย่างเช่น เอกซ์เอสแอลที ซึ่งเป็นภาษาย่อยของเอกซ์เอ็มแอลที่เป็นทัวริงบริบูรณ์ [15][16][17] ยิ่งไปกว่านั้น ภาษาลาเทกซ์ซึ่งตามปกติใช้สำหรับสร้างโครงสร้างเอกสาร แต่ก็มีเซตย่อยของทัวริงบริบูรณ์อยู่ด้วย [18][19]

วลี ภาษาคอมพิวเตอร์ บางครั้งก็ใช้แทนความหมายของภาษาโปรแกรม [20] อย่างไรก็ตาม ผู้แต่งตำราแต่ละคนก็ใช้วลีทั้งสองรวมถึงขอบเขตที่ชัดเจนในแนวทางที่ต่างกัน แนวคิดหนึ่งอธิบายว่า ภาษาโปรแกรมเป็นเซตย่อยของภาษาคอมพิวเตอร์ [21] ในทำนองนี้ ภาษาที่ใช้ในการคิดคำนวณอันมีเป้าหมายต่างกัน ที่แสดงออกเป็นโปรแกรมคอมพิวเตอร์ โดยนัยทั่วไปคือภาษาคอมพิวเตอร์ที่ถูกเลือกขึ้นมา ยกตัวอย่างเช่น ภาษามาร์กอัปบางครั้งก็ถูกพูดถึงว่าเป็นภาษาคอมพิวเตอร์ เพื่อเน้นย้ำว่ามันไม่ได้ออกแบบมาเพื่อเขียนโปรแกรม [22] แนวคิดอีกอย่างหนึ่งอธิบายว่า ภาษาโปรแกรมคือโครงสร้างเชิงทฤษฎีสำหรับการเขียนโปรแกรมให้แก่เครื่องจักรนามธรรม และภาษาคอมพิวเตอร์คือเซตย่อยของสิ่งดังกล่าวที่ทำงานบนคอมพิวเตอร์ในทางกายภาพ ซึ่งมีทรัพยากรฮาร์ดแวร์จำกัด [23] จอห์น ซี. เรย์โนลด์ เน้นว่า ภาษาข้อกำหนดรูปนัย (formal specification) มีลักษณะของภาษาโปรแกรมมากพอ ๆ กับภาษาที่ตั้งใจให้กระทำการ เขายังให้เหตุผลด้วยว่า รูปแบบรับเข้าเชิงข้อความหรือแม้แต่เชิงกราฟิกที่ส่งผลต่อพฤติกรรมของคอมพิวเตอร์ ก็ถือเป็นภาษาโปรแกรมเช่นกัน ถึงแม้ข้อเท็จจริงคือสิ่งเหล่านั้นไม่ใช่ทัวริงบริบูรณ์ และให้ความเห็นอีกว่า การมองข้ามมโนทัศน์ของภาษาโปรแกรมคือสาเหตุของความบกพร่องมากมายในรูปแบบรับเข้า [24]

แหล่งที่มา

WikiPedia: ภาษาโปรแกรม http://pll.cpsc.ucalgary.ca/charity1/www/home.html http://tobi.oetiker.ch/lshort/lshort.pdf http://www.ibm.com/developerworks/library/x-xslt/ http://msdn.microsoft.com/en-us/library/ms767587(V... http://dblp.uni-trier.de/db/conf/icsoft/icsoft2007... http://www.cs.brown.edu/people/tld/courses/cs148/0... http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1... http://www.loa-cnr.it/ICSOFT2007_final.pdf http://www.acm.org/sigs/sigplan/sigplan_bylaws.htm http://www.w3.org/XML/1999/XML-in-10-points.html