คำถามติดแท็ก imperative-programming

12
พื้นฐานทางทฤษฎีของการเขียนโปรแกรมที่จำเป็นคืออะไร?
โปรแกรมการทำงานมีพื้นฐานทางทฤษฎีในแคลคูลัสแลมบ์ดาและตรรกะ combinatory ในฐานะผู้ที่เกี่ยวข้องกับการคำนวณเชิงสถิติฉันพบว่าแนวคิดเหล่านี้มีประโยชน์มากสำหรับการสร้างแบบจำลอง มีพื้นฐานทางคณิตศาสตร์เทียบเท่าของการเขียนโปรแกรมที่จำเป็นหรือว่ามันเพิ่งเกิดจากการใช้งานฮาร์ดแวร์ที่ใช้งานได้จริงในภาษาเครื่องและการพัฒนาFORTRANในภายหลัง?

2
ตรรกะเชิงเส้นแบบพื้นบ้านคืออะไร?
อาจเป็นแอพพลิเคชั่นที่ใช้กันทั่วไปของประเภทเชิงเส้นใน PL คือการใช้ภาษาเหล่านั้นเพื่อให้นามแฝงควบคุม (กล่าวคือค่าเชิงเส้นมีตัวชี้เดียวให้มากหรือน้อย) แต่มีความไม่ตรงกันเล็กน้อยระหว่างการใช้งานนี้กับโมเดลเชิงเส้นตรงทั่วไปของลอจิกเชิงเส้น IIRC, เบนตันแสดงให้เห็นว่าหากหมวดหมู่ปิดคาร์ทีเซียนมีโมดัลสับเปลี่ยนที่แข็งแกร่งแล้วหมวดหมู่ของพีชคณิตของมันจะถูกปิดแบบสมมาตร (เช่นรูปแบบของตรรกะเชิงเส้น) แต่ทฤษฎีนี้ไม่ได้ใช้กับการใช้นามแฝงในการควบคุมเนื่องจากรัฐ monad ไม่ใช่การสับเปลี่ยน ในช่วงไม่กี่ปีที่ผ่านมาซิมป์สันและเพื่อนร่วมงานของเขาได้ให้แคลคูลัสสำหรับพระที่แข็งแกร่งทั่วไปซึ่งไม่ใช่แคลคูลัสเชิงตรรกะสำหรับเชิงเส้น ดังนั้นคำถามของฉันคืออะไรความหมายเชิง Denotational ของภาษาเชิงเส้นกับรัฐ? มี non-degenerate (เช่นเมตริกซ์ไม่ใช่ผลิตภัณฑ์คาร์ทีเซียน) ประเภท monoidal ปิดสมมาตรซึ่งการจัดสรรการอ่านและการปรับปรุงเชิงเส้นสามารถเป็นแบบจำลอง?

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

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

3
การอนุมานประเภทสำหรับคำสั่งที่จำเป็นนอกเหนือจากที่ได้รับมอบหมาย
ในการค้นหาเอกสารวิจัยเกี่ยวกับระบบการพิมพ์สำหรับภาษาที่จำเป็นฉันจะหาวิธีแก้ปัญหาสำหรับภาษาที่มีการอ้างอิงที่ไม่แน่นอน แต่ไม่มีโครงสร้างการควบคุมที่จำเป็นอย่างแท้จริงเช่นตัวดำเนินการผสมลูปหรือเงื่อนไข ดังนั้นจึงไม่มีความชัดเจนว่าภาษาที่จำเป็นกับการอนุมานบางส่วนเช่นhttp://rust-lang.orgสามารถนำไปใช้ได้อย่างไร เอกสารไม่ได้กล่าวถึงประเภท parametrized เช่นList of aเนื่องจากประเภท parametrized เป็นส่วนขยายเล็กน้อยของระบบประเภท Hindley-Milner - อัลกอริทึมการรวมควรจะขยายและการอนุมานที่เหลือทำงานตามที่เป็นอยู่ อย่างไรก็ตามไม่สามารถเพิ่มงานที่มอบหมายได้เนื่องจากความขัดแย้งเกิดขึ้นดังนั้นต้องใช้เทคนิคพิเศษเช่นข้อ จำกัด ค่า ML คุณสามารถแนะนำเอกสารหรือหนังสือที่อธิบายถึงระบบการพิมพ์สำหรับภาษาที่มีลูปคำสั่งเงื่อนไขเงื่อนไข IO และคำสั่งผสมได้หรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.