คำถามติดแท็ก semantics

7
ความหมายเชิง denotational คืออะไร?
ในเธรดอื่น Andrej Bauer กำหนดซีแมนติก denotational semantics เป็น: ความหมายของโปรแกรมคือฟังก์ชั่นของความหมายของส่วนต่างๆ สิ่งที่รบกวนจิตใจผมเกี่ยวกับความหมายนี้ก็คือว่ามันไม่ได้ดูเหมือนจะออกเดียวสิ่งที่ร่วมกันคิดว่าเป็นความหมาย denotationalจากสิ่งที่ร่วมกันคิดว่าเป็นความหมายที่ไม่ denotational คือโครงสร้างความหมายในการดำเนินงาน อย่างแม่นยำยิ่งขึ้นส่วนผสมที่สำคัญที่นี่คือแบบแยกส่วนหรือองค์ประกอบของความหมายหรือใส่แตกต่างกันความจริงที่ว่าพวกเขาจะถูกกำหนดตามโครงสร้างนามธรรมของโปรแกรม ความหมายที่เป็นทางการ (ทั้งหมด?) ส่วนใหญ่ในปัจจุบันมีแนวโน้มที่จะมีโครงสร้างนี่เป็นคำจำกัดความที่จำเป็นหรือไม่ ดังนั้นคำถามของฉันคือ: ความหมายเชิง Denotational คืออะไร?

7
หนังสือเกี่ยวกับความหมายของภาษาโปรแกรม
ฉันอ่าน " ความหมายกับแอปพลิเคชัน " ของ Nielson & Nielson แล้วและฉันก็ชอบวิชานี้มาก ฉันต้องการมีหนังสืออีกหนึ่งเล่มเกี่ยวกับความหมายของภาษาการเขียนโปรแกรม - แต่ฉันสามารถรับหนังสือเล่มเดียวได้จริงๆ ฉันดูหนังสือTurbak / Giffordแต่มันยืดยาวเกินไป ฉันคิดว่าวินสเคลจะใช้ได้ แต่ฉันไม่สามารถเข้าถึงได้ (มันไม่ได้อยู่ในห้องสมุดมหาวิทยาลัยของเราและฉันขาดเงิน) และฉันก็ไม่แน่ใจด้วยซ้ำว่ามันไม่ได้ลงวันที่แล้ว Slonnegerดูโอเค แต่ส่วนที่ใช้ได้จริงทำให้มันค่อนข้างยาวเกินไปและฉันไม่ค่อยสบายใจกับสไตล์ของเขา ดังนั้นคำถามของฉันคือ - หนังสือวินสเคลเป็นหนังสือที่ดีหรือไม่ และมันเป็นวันที่? นอกจากนี้ยังมีหนังสือเล่มอื่น ๆ ที่กระชับเกี่ยวกับเรื่องนี้หรือไม่

4
ทำไมเราต้องมีความหมายอย่างเป็นทางการสำหรับตรรกะภาคแสดง?
พิจารณาคำถามนี้แก้ไข ฉันจะไม่เลือกคำตอบที่ดีที่สุดเพราะทุกคนมีส่วนทำให้ฉันเข้าใจหัวข้อ ฉันไม่แน่ใจว่าสิ่งที่เป็นประโยชน์เรามีอย่างเป็นทางการโดยการกำหนดความหมายของตรรกะภาคแสดง แต่ฉันเห็นคุณค่าในการมีแคลคูลัสพิสูจน์อย่างเป็นทางการ ประเด็นของฉันคือเราไม่ต้องการซีแมนทิกส์แบบทางการเพื่อพิสูจน์กฎการอนุมานของแคลคูลัสเชิงพิสูจน์ เราสามารถกำหนดแคลคูลัสที่เลียนแบบ "กฎแห่งความคิด" เช่นกฎการอนุมานที่นักคณิตศาสตร์ใช้มานับร้อยปีเพื่อพิสูจน์ทฤษฎีบทของพวกเขา แคลคูลัสดังกล่าวมีอยู่แล้ว: การหักตามธรรมชาติ จากนั้นเราจะกำหนดแคลคูลัสนี้ให้เป็นเสียงที่สมบูรณ์ สิ่งนี้สามารถพิสูจน์ได้ด้วยการตระหนักว่าซีแมนทิกส์เชิงตรรกะของเพรดิเคตเชิงตรรกะเป็นเพียงตัวอย่างเท่านั้น ความเหมาะสมของแบบจำลองสามารถพิสูจน์ได้อย่างสมเหตุสมผลเท่านั้น ดังนั้นการแสดงให้เห็นว่าการหักตามธรรมชาตินั้นสมบูรณ์และสมบูรณ์โดยการอ้างอิงถึงความหมายที่เป็นทางการไม่ได้ทำให้การลดลงตามธรรมชาติมากขึ้น "จริง" มันจะดีเหมือนกันถ้าเราจะพิสูจน์ให้เห็นถึงกฎของการลดธรรมชาติโดยตรงอย่างสังหรณ์ใจ ทางอ้อมโดยใช้ความหมายอย่างเป็นทางการทำให้เราไม่มีอะไร จากนั้นเมื่อมีการนิยามการหักตามธรรมชาติให้เป็นเสียงและสมบูรณ์เราสามารถแสดงความสมบูรณ์และความสมบูรณ์ของแคลคูลัสอื่น ๆ โดยแสดงให้เห็นว่าหลักฐานที่พวกเขาสร้างขึ้นสามารถแปลเป็นการหักตามธรรมชาติและในทางกลับกัน ภาพสะท้อนของฉันด้านบนถูกต้องหรือไม่ ทำไมจึงเป็นสิ่งสำคัญที่จะพิสูจน์ความสมบูรณ์และความสมบูรณ์ของแคลคูลัสพิสูจน์โดยอ้างอิงถึงความหมายที่เป็นทางการ?

2
ความหมายของ TeX (เป็นภาษาการเขียนโปรแกรม) เคยเป็นทางการหรือไม่?
สำหรับฉันแล้วดูเหมือนว่าภาษามาโครที่ใช้โดยอาจถูกมองว่าเป็นระบบการเขียนคำซ้ำบางชนิดหรือภาษาโปรแกรมบางประเภทที่มีการกำหนดขอบเขตการโทรตามชื่อTEXTEX\TeX แม้การใช้งานที่ทันสมัยของ engine (เช่น X e TTEXTEX\TeX ) ตีความรหัสในวิธีที่ค่อนข้างตรงและฉันไม่ได้ตระหนักถึงความพยายามใด ๆ ในการเพิ่มประสิทธิภาพการดำเนินการ (เช่นล่ามการเพิ่มประสิทธิภาพที่ทันสมัยสามารถทำได้) อย่างไรก็ตามการสร้างการเพิ่มประสิทธิภาพที่ถูกต้องจะผ่านสำหรับภาษาเช่น TX e TEXXeTEX\mathit{Xe}\TeXจะเป็นเรื่องยากมากเพราะ "การกระทำในระยะไกล" ที่การกำหนดแมโครซ้ำสามารถมีได้และความสามารถในการกำหนดแมโครใหม่ด้วยการเรียกพวกเขาด้วยชื่อTEXTEX\TeX ดังนั้นการใช้ล่ามการปรับให้เหมาะสมตามสมมุติฐานสำหรับดูเหมือนจะเป็นปัญหาที่ยากมากในทางปฏิบัติ แต่ก็เป็นประโยชน์อย่างมากเนื่องจาก TTEXTEX\TeXถูกใช้ทั่วทั้งคณิตศาสตร์และวิทยาศาสตร์และเวลาในการรวบรวมที่ช้านั้นเป็นข้อเสียเปรียบของระบบ โปรดทราบว่าส่วนใหญ่ใช้เวลาในการแปลรหัสไม่ใช่ประมวลผลการเรียงพิมพ์จริงโดยเฉพาะอย่างยิ่งเมื่อมีการใช้แพคเกจที่ใช้งานหนักเช่น ()TEXTEX\TeXtikz บางทีความหมายอย่างเป็นทางการสำหรับภาษาอาจเป็นจุดเริ่มต้นในการแก้ไขปัญหา ดังนั้นความหมายของภาษาการเขียนโปรแกรม Xเคยเป็นทางการหรือไม่?TEXTEX\TeX

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

4
มีการจัดการผลข้างเคียงในความหมายอย่างไร
ในส่วน"รู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรมภาษา"ของ Anthony Aaby ในอรรถศาสตร์เขาทำการสังเกตต่อไปนี้: งานส่วนใหญ่ในความหมายของภาษาการเขียนโปรแกรมได้รับแรงบันดาลใจจากปัญหาที่พบในการพยายามสร้างและทำความเข้าใจกับโปรแกรมที่จำเป็น - โปรแกรมที่มีคำสั่งมอบหมาย เนื่องจากคำสั่งการมอบหมายใหม่กำหนดค่าให้กับตัวแปรการกำหนดอาจมีผลกระทบที่ไม่คาดคิดในส่วนที่อยู่ไกลของโปรแกรม สิ่งนี้ทำให้ฉันได้รับการยอมรับอย่างน่าทึ่งว่าการได้รับผลข้างเคียงจะเป็นแรงกระตุ้นให้มีงานสำคัญในความหมาย การมีอยู่ของผลข้างเคียงในภาษาการเขียนโปรแกรมส่งผลกระทบต่อความสามารถในการแมปโปรแกรมกับโมเดลการคำนวณอย่างไร มีวิธีการจัดการสถานะที่สามารถปรับปรุงกระบวนการนี้ในขณะที่ยังคงให้ผลข้างเคียงหรือไม่?

4
ภาษาคำสั่งแตกต่างจากภาษาที่ใช้งานได้อย่างไร
ฉันกำลังอ่าน Simon Peyton Jones เรื่องการใช้งานฟังก์ชั่นการเขียนโปรแกรมภาษาและมีข้อความหนึ่งที่ทำให้ฉันประหลาดใจเล็กน้อย (หน้า 39): ในระดับที่สูงกว่ากรณีของภาษาที่จำเป็นภาษาที่ใช้งานได้ส่วนใหญ่จะเป็นรูปแบบวากยสัมพันธ์ของกันและกันโดยมีความแตกต่างทางความหมายค่อนข้างน้อย ตอนนี้เขียนในปี 1987 และความคิดของฉันในเรื่องนี้อาจได้รับอิทธิพลจากภาษาการเขียนโปรแกรมที่ทันสมัยมากขึ้นซึ่งไม่ได้อยู่ใกล้หรือเป็นที่นิยม อย่างไรก็ตามฉันพบว่ามันยากที่จะเชื่อ ตัวอย่างเช่นฉันคิดว่าภาษามิแรนดาที่ได้อธิบายไว้ (ผู้บุกเบิกยุคแรกของ Haskell) มีความหมายที่แตกต่างกันมากเมื่อเทียบกับภาษาที่เข้มงวดเช่น ML มากกว่าคำว่า C ถึง Pascal หรือบางทีแม้แต่ C C ++ ให้การตรวจสอบจุดของเขาบางอย่าง :-) แต่จากนั้นอีกครั้งฉันกำลังใช้ความเข้าใจอย่างถ่องแท้ Simon Peyton Jones ส่วนใหญ่ถูกต้องในการพูดแบบนี้หรือว่าเป็นประเด็นที่ถกเถียงกันอยู่?

3
ความหมายอย่างเป็นทางการของภาษาโปรแกรม
ฉันยังใหม่กับทฤษฎีภาษาโปรแกรมและฉันกำลังมองหาแหล่งข้อมูลที่ดีสำหรับทรัพยากรสำหรับความหมายอย่างเป็นทางการของภาษาโปรแกรม กำลังมองหาความหมายของการปฏิบัติการเชิงโครงสร้างโดยเฉพาะ ฉันได้รับคำแนะนำหนังสือ แต่ฉันกำลังมองหาแหล่งข้อมูลในระดับเบื้องต้น ยินดีต้อนรับบทเรียนโดยเฉพาะเว็บไซต์และแนะนำหนังสือฟรี

3
มีทฤษฎีภาษาการเขียนโปรแกรมที่อธิบายการทำงานของฟังก์ชั่นต่างประเทศ (FFI) และการผูกหลายภาษา?
มีทฤษฎีภาษาการเขียนโปรแกรมที่อธิบายการทำงานของฟังก์ชั่นต่างประเทศ (FFI) และการผูกหลายภาษา? ฉันได้ถามปัญหาการใช้งานบางอย่างกับ stackoverflowซึ่งไม่เหมาะสมที่นี่ แต่ฉันต้องการถามจากมุมมองของไซต์นี้และดูว่าฉันจะได้อะไรจากที่นี่ ขอบคุณคำตอบของคุณจริงๆ! ขอบคุณ Dave Clarke สำหรับคำตอบของเขาในเมตาดาต้า!

2
ความสมบูรณ์เต็มรูปแบบ vs สิ่งที่เป็นนามธรรมของการแปลโปรแกรม
ความพยายามในการตรวจสอบคอมไพเลอร์มักจะลงมาเพื่อพิสูจน์คอมไพเลอร์อย่างสมบูรณ์แบบ: มันรักษาและสะท้อนความเท่าเทียม (ตามบริบท) แทนที่จะให้หลักฐานที่เป็นนามธรรมอย่างเต็มรูปแบบงานตรวจสอบคอมไพเลอร์ล่าสุด (อิงตามหมวดหมู่) โดย Hasegawa [ 1 , 2 ] และ Egger et อัล [ 3 ] พิสูจน์ความครบถ้วนสมบูรณ์ของการแปล CPS ที่หลากหลาย คำถาม: อะไรคือความแตกต่างระหว่างความครบถ้วนสมบูรณ์และนามธรรมที่สมบูรณ์? สำหรับฉันแล้วความสมบูรณ์ดูเหมือนว่าการสะท้อนความเท่าเทียมกันสำหรับการแปลและความบริบูรณ์ดูเหมือนจะเป็นผลมาจากการรักษาสมดุล หมายเหตุ : ทั้ง Curien [ 7 ] และ Abramsky [ 8 ] สำรวจความสัมพันธ์ระหว่างความแน่นอนความเป็นนามธรรมเต็มและความสมบูรณ์แบบในระดับหนึ่ง ฉันสงสัยว่าแหล่งข้อมูลเหล่านี้อาจมีคำตอบสำหรับคำถามของฉัน แต่หลังจากอ่านพื้นผิวฉันยังไม่ได้ยืนยันว่า พื้นหลังบางส่วน : คำว่า "full ครบถ้วน" ได้รับการประกาศเกียรติคุณจาก Abramsky และ Jagadeesan [ …

3
เมื่อใดที่เราสามารถพูดได้ว่าสองโปรแกรมนั้นแตกต่างกัน
ไตรมาสที่ 1 เมื่อใดที่เราสามารถพูดได้ว่าสองโปรแกรม (เขียนด้วยภาษาโปรแกรมบางอย่างเช่น C ++) แตกต่างกันอย่างไร สุดขีดแรกคือการพูดว่าสองโปรแกรมเทียบเท่า iff พวกเขาเหมือนกัน สุดขีดอีกอันหนึ่งคือการพูดว่าโปรแกรมสองโปรแกรมนั้นมีค่าเทียบเท่าหากพวกเขาคำนวณฟังก์ชันเดียวกัน (หรือแสดงพฤติกรรมที่สังเกตได้เหมือนกันในสภาพแวดล้อมที่คล้ายกัน) แต่สิ่งเหล่านี้ไม่ดี: ไม่ใช่ทุกโปรแกรมที่ตรวจสอบสภาพดั้งเดิมเหมือนกัน เราสามารถเพิ่มบรรทัดของโค้ดโดยไม่มีผลกับผลลัพธ์และเราจะยังคงพิจารณาว่าเป็นโปรแกรมเดียวกัน ไตรมาสที่ 2 โปรแกรมและอัลกอริทึมเป็นวัตถุชนิดเดียวกันหรือไม่ ถ้าไม่คำจำกัดความของอัลกอริทึมคืออะไรและแตกต่างจากคำจำกัดความของโปรแกรมอย่างไร เมื่อใดที่เราสามารถบอกได้ว่าอัลกอริธึมทั้งสองนั้นเท่ากัน?

2
อะไรคือกฎเท่าเทียมกันสำหรับประเภทศูนย์?
ข้อจำกัดความรับผิดชอบ : ในขณะที่ฉันสนใจทฤษฎีประเภทฉันไม่คิดว่าตัวเองเป็นผู้เชี่ยวชาญด้านทฤษฎีประเภท ในแคลคูลัสแลมบ์ดาที่พิมพ์ไว้ชนิด zeroไม่มีตัวสร้างและตัวกำจัดที่ไม่ซ้ำกัน: Γ⊢M:0Γ⊢initial(M):AΓ⊢M:0Γ⊢initial(M):A\frac{\Gamma \vdash M \colon 0}{\Gamma \vdash initial (M) \colon A} จากจุด denotational ในมุมมองของสมการที่ initial(M1)=initial(M2)initial(M1)=initial(M2)initial (M_1) = initial(M_2)จะเห็นได้ชัด (เมื่อชนิดทำให้ความรู้สึก) แต่จากมุมมองที่ฉันยังสามารถอนุมานว่าเมื่อM,M′:0M,M′:0M,M' \colon 0แล้ว: M=M′M=M′M = M' ' การหักนี้ดูแข็งแกร่งขึ้นถึงแม้จะมีรุ่นใดรุ่นหนึ่งที่แสดงว่ามันทำให้ฉันหลง (ฉันมีสัญชาตญาณเชิงทฤษฎีที่พิสูจน์ว่า: มันไม่สำคัญว่าคุณใช้ความขัดแย้งเพื่อให้ได้มาซึ่งพลเมือง แต่อาจมีหลักฐานที่แตกต่างกัน) ดังนั้นคำถามของฉันคือ: อะไรคือกฎหมายสมการมาตรฐานสำหรับประเภทศูนย์? มีใครบ้างที่จำแนกเป็นηη\etaหรือββ\betaกฎหมาย?

1
ผลข้างเคียงของ“ ผลที่สังเกตได้” หมายถึงอะไร?
ฉันมีคำถามเกี่ยวกับฟังก์ชั่นที่บริสุทธิ์ ตามหน้า Wikipedia หนึ่งในสิ่งที่จำเป็นสำหรับฟังก์ชั่น pure คือ: การประเมินผลลัพธ์ไม่ได้ทำให้เกิดผลข้างเคียงหรือเอาท์พุทที่สังเกตเห็นได้ทางความหมายเช่นการกลายพันธุ์ของวัตถุที่ไม่แน่นอนหรือเอาท์พุทไปยังอุปกรณ์ I / O ตอนนี้สิ่งนี้หมายความว่าอะไรจริงๆ หรือค่อนข้างฉันจะสร้างผลข้างเคียงที่ไม่สามารถสังเกตเห็นได้ทางความหมาย?

2
ความแตกต่างระหว่างกลยุทธ์การลดและกลยุทธ์การประเมินคืออะไร?
จากบทความกลยุทธ์การประเมินผลใน Wikipedia: แนวคิดเกี่ยวกับกลยุทธ์การลดแคลคูลัสแลมบ์ดานั้นคล้ายคลึงกัน แต่แตกต่างกัน จากบทความกลยุทธ์การลดลงใน Wikipedia: มันคล้ายกับ แต่แตกต่างอย่างละเอียดจากแนวคิดเรื่องกลยุทธ์การประเมินทางวิทยาศาสตร์คอมพิวเตอร์ อะไรคือความแตกต่างที่ละเอียดอ่อนระหว่างกลยุทธ์การประเมินและกลยุทธ์การลดที่บทความทั้งสองนี้บอกใบ้? พวกเขาเป็นเพียงสองแนวคิดที่คล้ายกันจากโดเมนที่แตกต่างกันหรือไม่

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.