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

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

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

การแบ่งแยก แก้

ดังที่ได้กล่าวไปว่าคำสงวนใดๆ โดยมากมักเป็นคีย์เวิร์ด และคีย์เวิร์ดใดๆ ก็มักเป็นคำสงวนด้วน ดังนั้นจึงพบการใช้คำว่า "คำสงวน" และ "คีย์เวิร์ด" ในบริบทแทนกันอยู่บ่อยครั้ง แต่ในทางทฤษฎีแล้ว คำสองคำนี้มีความหมายไม่เหมือนกัน

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