คำถามของคุณน่าสนใจในหลายวิธีเนื่องจากต้องใช้ความแตกต่างอย่างระมัดระวังสำหรับปัญหาต่างๆ แต่วิสัยทัศน์ของคุณดูเหมือนว่าฉันจะถูกต้องเป็นหลัก ฉันไม่ได้อ่านข้อมูลอ้างอิงของคุณก่อนที่จะเขียนคำตอบส่วนใหญ่เพื่อหลีกเลี่ยงการให้น้ำหนักคำตอบของฉัน
อันดับแรกข้อความของคุณVariables are symbolic names for memory
addresses
เกือบถูกต้อง แต่สร้างความสับสนให้กับแนวคิดและการนำไปปฏิบัติตามปกติ ตัวแปรเป็นเพียงคอนเทนเนอร์ที่สามารถมีค่าที่สามารถเปลี่ยนแปลงได้ โดยปกติแล้วคอนเทนเนอร์นี้จะถูกนำไปใช้งานบนคอมพิวเตอร์ในฐานะที่เป็นพื้นที่หน่วยความจำซึ่งมีลักษณะและที่อยู่และขนาดเนื่องจากตัวแปรอาจมีวัตถุที่ต้องการการนำเสนอด้วยข้อมูลที่มากหรือน้อย
แต่ฉันจะพิจารณาในมุมมองที่เป็นนามธรรมมากขึ้นเกี่ยวกับความหมายของภาษาที่เป็นอิสระจากเทคนิคการใช้งาน
ดังนั้นตัวแปรจึงเป็นแค่คอนเทนเนอร์จากมุมมองเชิงนามธรรม ภาชนะดังกล่าวไม่จำเป็นต้องมีชื่อ อย่างไรก็ตามภาษามักจะมีตัวแปรที่ตั้งชื่อโดยเชื่อมโยงกับตัวระบุเพื่อให้การใช้งานของตัวแปรสามารถแสดงโดยตัวระบุ ตัวแปรสามารถมีตัวระบุหลายตัวผ่านกลไกนามแฝงต่างๆ ตัวแปรสามารถเป็นส่วนย่อยของตัวแปรที่มีขนาดใหญ่กว่าได้ตัวอย่างคือเซลล์ของตัวแปรอาเรย์ซึ่งสามารถตั้งชื่อได้โดยการระบุตัวแปรอาเรย์และดัชนีของเซลล์
ฉันจงใจใช้คำว่าcontainerที่ค่อนข้างเป็นกลางเพื่อหลีกเลี่ยงการกล่าวคำอื่น ๆ ที่อาจมีความหมายทางเทคนิค จริงๆแล้วมันใกล้เคียงกับแนวคิดของการอ้างอิงที่อธิบายไว้ใน wilipediaซึ่งมักจะสับสนกับที่อยู่หน่วยความจำ ตัวชี้คำนั้นมักเข้าใจกันว่าเป็นที่อยู่หน่วยความจำ แต่ฉันไม่คิดว่ามีความหมายเมื่อพิจารณาภาษาระดับสูงส่วนใหญ่และอาจไม่เหมาะสมในเอกสารการสนทนาที่คุณอ้างถึง (แม้ว่าสามารถใช้ที่อยู่ได้) เนื่องจากไม่เหมาะสม หมายถึงการใช้งานเฉพาะ อย่างไรก็ตามมันเหมาะสำหรับภาษาอย่าง C ซึ่งควรจะใกล้เคียงกับแนวคิดการนำไปปฏิบัติและสถาปัตยกรรมเครื่อง
ที่จริงแล้วถ้าคุณดูที่ตัวแปรหรือค่าที่ระดับการนำไปปฏิบัติอาจมีระบบที่ซับซ้อนหลายอย่างเกี่ยวกับการอ้อมของ "ตัวชี้ระดับเครื่อง" แต่ที่ผู้ใช้มองไม่เห็น (และควรจะ) ดังนั้นมุมมองเชิงนามธรรม ฉันพัฒนาได้ถูกต้อง สำหรับภาษาโปรแกรมส่วนใหญ่ผู้ใช้ไม่ควรกังวลหรือรู้เกี่ยวกับการติดตั้งเนื่องจากการใช้งานอาจแตกต่างกันมากสำหรับภาษาที่กำหนด สิ่งนี้อาจไม่เป็นจริงสำหรับบางภาษาเช่น C ซึ่งใกล้เคียงกับสถาปัตยกรรมของเครื่องเป็นตัวแทนขั้นสูงสำหรับภาษาแอสเซมบลีที่เกือบจะสัมพันธ์โดยตรงกับการเข้ารหัสไบนารีแบบชัดแจ้ง แต่ระดับต่ำเกินไปสำหรับการใช้งานที่สะดวกที่สุด สถานการณ์
สิ่งที่ผู้ใช้ภาษาควรรู้และบางครั้งควรมีค่าน้อยกว่านั้นคือค่าและการดำเนินการที่เกี่ยวข้องที่พวกเขาสามารถมีได้อย่างไรพวกเขาสามารถเชื่อมโยงกับชื่อได้อย่างไรระบบการตั้งชื่อทำงานอย่างไร ชนิดของค่าที่กำหนด ฯลฯ
อีกแนวคิดที่สำคัญคือตัวระบุและการตั้งชื่อ การตั้งชื่อเอนทิตี (ค่า) สามารถทำได้โดยเชื่อมโยงตัวระบุกับค่า (มักจะอยู่ในการประกาศ) แต่ยังสามารถรับค่าได้โดยใช้การดำเนินการกับค่าที่ตั้งชื่ออื่น ชื่อสามารถนำกลับมาใช้ใหม่ได้และมีกฎ (กฎการกำหนดขอบเขต) เพื่อกำหนดสิ่งที่เกี่ยวข้องกับตัวระบุที่กำหนดตามบริบทการใช้งาน นอกจากนี้ยังมีชื่อพิเศษที่เรียกว่า litterals เพื่อตั้งชื่อค่าของบางโดเมนเช่นจำนวนเต็ม (เช่น ) หรือบูลีน (เช่นจริง )612
ความสัมพันธ์ของค่าที่ไม่เปลี่ยนแปลงกับตัวระบุมักเรียกว่าค่าคงที่ Litterals เป็นค่าคงที่ในแง่นั้น
"คอนเทนเนอร์ค่า" สามารถพิจารณาเป็นค่าได้และการเชื่อมโยงกับตัวระบุเป็นตัวแปรในความหมาย "ไร้เดียงสา" ตามปกติที่คุณใช้ ดังนั้นคุณอาจบอกว่าตัวแปรเป็น "ค่าคงที่คอนเทนเนอร์"
ตอนนี้คุณอาจสงสัยว่าอะไรคือความแตกต่างระหว่างการเชื่อมโยงตัวระบุกับค่า (การประกาศค่าคงที่) หรือการกำหนดค่าให้กับตัวแปรเช่นการจัดเก็บค่าในคอนเทนเนอร์ที่กำหนดเป็นค่าคงที่ของคอนเทนเนอร์ โดยพื้นฐานแล้วการประกาศอาจถูกมองว่าเป็นการดำเนินการที่กำหนดสัญกรณ์ที่เชื่อมโยงตัวระบุซึ่งเป็นเอนทิตี syntactic กับค่าบางอย่างซึ่งเป็นเอนทิตี้ของความหมาย การมอบหมายคือการดำเนินการซีแมนติกส์ล้วนๆที่ปรับเปลี่ยนสถานะเช่นแก้ไขค่าของคอนเทนเนอร์ ในบางแง่การประกาศเป็นแนวคิดเมตาที่ไม่มีผลความหมายนอกเหนือจากการให้กลไกการตั้งชื่อ (เช่นวากยสัมพันธ์) สำหรับหน่วยความหมาย
ที่จริงแล้วการมอบหมายเป็นการดำเนินการทางความหมายที่เกิดขึ้นแบบไดนามิกในขณะที่โปรแกรมถูกดำเนินการในขณะที่การประกาศมีลักษณะทางวากยสัมพันธ์มากขึ้นและมักจะถูกตีความในข้อความของโปรแกรมซึ่งเป็นอิสระจากการดำเนินการ นี่คือเหตุผลที่การกำหนดขอบเขตแบบคงที่ (เช่นการกำหนดขอบเขตข้อความ) เป็นวิธีปกติในการเข้าใจความหมายของตัวระบุ
หลังจากทั้งหมดนี้ฉันสามารถพูดได้ว่าค่าตัวชี้เป็นเพียงชื่ออื่นสำหรับคอนเทนเนอร์และตัวแปรพอยน์เตอร์เป็นตัวแปรคอนเทนเนอร์เช่นคอนเทนเนอร์ (ค่าคงที่) ที่สามารถมีคอนเทนเนอร์อื่น (มีข้อ จำกัด ที่เป็นไปได้ในเกมที่บรรจุโดยบางคน ระบบประเภท)
เกี่ยวกับรหัสคุณระบุ [pointers] might indicate the entry point
to a section of code and can be used to call that code
. จริงๆแล้วมันไม่จริงเลย ส่วนของรหัสมักไม่มีความหมายเพียงอย่างเดียว (จากระดับสูงหรือมุมมองการนำไปใช้) จากมุมมองระดับสูงรหัสมักจะมีตัวระบุและคุณต้องตีความตัวระบุเหล่านี้ในบริบทแบบคงที่ที่พวกเขาถูกประกาศ แต่ในความเป็นจริงแล้วมีการทำซ้ำของบริบทแบบคงที่เหมือนกันเนื่องจากมีการเรียกซ้ำซึ่งเป็นปรากฏการณ์แบบไดนามิก (เวลาทำงาน) และรหัสสามารถดำเนินการในอินสแตนซ์ไดนามิกที่เหมาะสมของบริบทแบบคงที่เท่านั้น นี่เป็นบิตที่ซับซ้อน แต่ผลที่ตามมาก็คือแนวคิดที่เหมาะสมคือการปิดที่เชื่อมโยงส่วนหนึ่งของรหัสและสภาพแวดล้อมที่ตัวระบุจะถูกตีความ การปิดเป็นแนวคิดทางความหมายที่เหมาะสมกล่าวคือเป็นค่าความหมายที่กำหนดได้อย่างถูกต้อง จากนั้นคุณสามารถมีค่าคงที่การปิดตัวแปรการปิด
ฟังก์ชั่นคือการปิดโดยปกติจะมีพารามิเตอร์บางอย่างเพื่อกำหนดหรือเริ่มต้นบางส่วนของหน่วยงาน (ค่าคงที่และตัวแปร)
ฉันข้ามความหลากหลายในการใช้กลไกเหล่านี้
การปิดสามารถใช้เพื่อกำหนดโครงสร้าง OO ในภาษาที่จำเป็นหรือใช้งานได้ ที่จริงแล้วการทำงานในช่วงต้นของสไตล์ OO (อาจเป็นก่อนชื่อ) ก็เป็นเช่นนั้น
บทความที่คุณอ้างอิงซึ่งฉันอ่านอย่างรวดเร็วดูเหมือนจะเป็นเรื่องที่น่าสนใจเขียนโดยบุคคลที่มีความสามารถ แต่อาจไม่ใช่เรื่องง่ายในการอ่านถ้าคุณไม่มีประสบการณ์ที่สำคัญกับภาษาที่หลากหลายและโมเดลการคำนวณพื้นฐาน
แต่จำไว้ว่า: มีหลายสิ่งในสายตาของคนดูตราบใดที่เขายังคงมุมมองที่สอดคล้องกัน มุมมองอาจแตกต่างกัน
สิ่งนี้ตอบคำถามของคุณหรือไม่
PS: นี่เป็นคำตอบที่ยาวนาน หากคุณพิจารณาบางส่วนของมันไม่เพียงพอโปรดระบุให้ชัดเจนว่ามันคืออะไร ขอบคุณ.