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

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

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

1
ประเภทเป็นพลเมืองชั้นหนึ่ง
มาจากพื้นหลัง C ++ ฉันไม่เข้าใจว่าทำไมคนเราต้องการนิพจน์ประเภท / ประเภทในฐานะพลเมืองชั้นหนึ่ง? ภาษาเดียวที่ฉันรู้ว่ารองรับคุณสมบัตินี้คือ Aldor มีใครบ้างที่มีวรรณกรรมเกี่ยวกับประเภทเป็นพลเมืองชั้นหนึ่งหรือรู้เหตุผลว่าทำไมจึงมีประโยชน์

8
คำนามที่สอดคล้องกันสำหรับ“ ผลข้างเคียงฟรี” หรือไม่
สำหรับฟังก์ชั่นหรือการคำนวณเรามีเงื่อนไขดังนี้: กำหนดขึ้น - กำหนด บริสุทธิ์ - ความบริสุทธิ์ ตอนนี้คำนามที่เกี่ยวข้องที่ถูกต้องสำหรับผลข้างเคียงฟรีคืออะไร? "ผลข้างเคียง freeness"? "เสรีภาพผลข้างเคียง"? "Non-ด้านที่มีประสิทธิภาพ"?

2
แคลคูลัสแลมบ์ดาเกี่ยวข้องอะไรกับการศึกษา?
ฉันเริ่มหลักสูตรวิทยาศาสตร์คอมพิวเตอร์ระดับปริญญาตรีในฤดูใบไม้ร่วงปีหน้า แต่ฉันไม่เข้าใจจริง ๆ λ-แคลคูลัสในบริบทของการเขียนโปรแกรมเชิงฟังก์ชัน ฉันอาจตีความผิดทั้งหมดนี้ แต่จากคำนิยามของปรัชญาสารานุกรมสแตนฟอร์ดมันเป็นเพียงสัญลักษณ์อีกประการหนึ่งของการทำงาน หากเป็นเช่นนั้นเหตุใดจึงเป็นประโยชน์ที่จะใช้ calcul-แคลคูลัสเหนือสัญลักษณ์ฟังก์ชันทั่วไปเพื่อคำนวณเวลารันอัลกอริทึม?

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

1
ภาษาการเขียนโปรแกรมที่สามารถใช้ฟังก์ชั่น bijective ที่คำนวณได้เท่านั้น?
มีภาษาโปรแกรม (หรือตรรกะ) ที่สามารถนำไปใช้ (หรือแสดง) ฟังก์ชันถ้าหากเป็นฟังก์ชัน bijective ที่คำนวณได้?f:N→Nf:N→Nf:\mathbb{N}\to \mathbb{N}fff

3
ความหลากหลายและประเภทข้อมูลอุปนัย
ฉันอยากรู้. ฉันได้ทำงานกับประเภทข้อมูลนี้ในOCaml : type 'a exptree = | Epsilon | Delta of 'a exptree * 'a exptree | Omicron of 'a | Iota of 'a exptree exptree ซึ่งสามารถจัดการได้โดยใช้ฟังก์ชั่นวนซ้ำอย่างชัดเจน (คุณลักษณะที่ถูกเพิ่มเข้ามาเมื่อไม่นานมานี้) ตัวอย่าง: let rec map : 'a 'b. ('a -> 'b) -> 'a exptree -> 'b exptree = fun f -> begin …

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

2
รวบรวมภาษาการเขียนโปรแกรมด้วยตัวเอง
ฉันเป็นนักเรียนวิทยาศาสตร์คอมพิวเตอร์ ฉันต้องการสร้างภาษาการเขียนโปรแกรมของตัวเอง (ภาษาพื้นฐานพร้อมคำแนะนำเล็กน้อย) ฉันรู้วิธีการวิเคราะห์วากยสัมพันธ์ฉันทำมันแล้วใน Perl ในบทความฉันอ่านบางอย่างเกี่ยวกับคอมไพเลอร์คอมไพเลอร์เสร็จแล้วในตัวเอง เช่นคอมไพเลอร์ C เขียนใน C. เป็นไปได้อย่างไร? ฉันสามารถสร้างภาษาของตัวเอง แต่ฉันไม่รู้ว่าฉันจะใช้มันได้อย่างไร ความคิดใด ๆ เป็นคำถามที่ดีจริงๆและฉันสามารถเขียนบล็อกโครงการได้

3
เหตุใดรัฐจึงไม่เปลี่ยนแปลงในซีแมนทิกส์การปฏิบัติการขั้นตอนเล็ก ๆ ของการวนรอบสักครู่?
ฉันมักจะเห็นว่าในการเป็นตัวแทนความหมายการดำเนินงานโครงสร้างสำหรับห่วงขณะที่สถานะของโปรแกรมจะไม่เปลี่ยนแปลง: ( w h i l eBdโอS, σ) → ( ฉันfBt h e nS; ( w h i l eBdโอS)e l s eSKผมP, σ)(whileBdoS,σ)→(ifBthenS;(whileBdoS)elseSKIP,σ)(while \> B \> do \>S, \sigma) \rightarrow (if \>B \> then \>S; (while \> B \> do \>S) \> else \> SKIP, \sigma) สำหรับฉันแล้วสิ่งนี้ไม่ง่ายหากสถานะไม่เปลี่ยนแปลง (เช่นสถานะของหน่วยความจำยังคงเหมือนเดิม) จากนั้น …

1
เมื่อใช้เป็นสแต็กการโทรสปาเก็ตตี้ที่ไม่มีขยะจะกลายเป็น DAG หรือไม่?
ฉันกำลังมองหาเทคนิคการใช้งานสำหรับภาษาการเขียนโปรแกรมและเมื่อเร็ว ๆ นี้ได้พบกับสปาเก็ตตี้สแต็คซึ่งน่าจะเหมาะสำหรับรูปแบบการส่งต่อที่ต่อเนื่อง (ให้ใช้ใน Scheme และ SML / NJ ) เพื่อให้ง่ายขึ้นลองพิจารณากระบวนการแบบเธรดเดี่ยวสำหรับคำถามนี้เท่านั้น อย่างไรก็ตามฉันรู้สึกสับสนเล็กน้อยกับ แผนภาพบน Wikipedia (และที่อื่น ๆ ) โดยเฉพาะฉันไม่เข้าใจว่าสถานการณ์ดังกล่าวสามารถเกิดขึ้นได้อย่างไร ฉันสามารถจินตนาการได้ว่ากิ่งที่เป็นสีเทานั้นไม่สามารถเข้าถึงได้และควรเก็บขยะ ในอีกทางหนึ่งด้วยความเข้าใจที่คลุมเครือของฉันเกี่ยวกับวิธีการใช้ CPS โดยใช้กองสปาเก็ตตี้ฉันไม่สามารถจินตนาการได้ว่าคุณจะได้รับการวนซ้ำในโครงสร้างนั้นได้อย่างไร ฉันต้องสรุปว่าแทนที่จะเป็น "แผนผังต้นกำเนิดของพ่อแม่" มันเป็นกราฟวงจรที่กำกับโดยมีแหล่งที่ไม่ใช่ขยะมากมายเช่นเดียวกับที่มีเธรดและมีจำนวนมากเท่าที่จะมี "จุดออก" แต่ความเข้าใจของฉันเกี่ยวกับการใช้งานนี้ค่อนข้างคลุมเครือดังนั้นฉันคิดว่าฉันอาจจะพลาดอะไรบางอย่างไป ฉันหวังว่าใครบางคนสามารถสอนฉันที่นี่ใน "spaghetti call stacks" ซึ่งฉันหมายถึงโครงสร้างข้อมูลที่ใช้ใน Scheme และ / หรือ SML / NJ เพื่อนำกระบวนการ CPS ไปใช้ รับสายสปาเก็ตตี้ดังต่อไปนี้: [exit point] <-- ... <-- [frame A] …

1
อะไรคือตัวอย่างที่ไม่ได้วางแผนไว้สำหรับการตรวจสอบประเภทคงที่ที่อนุรักษ์เกินไป?
ในแนวคิดในการเขียนโปรแกรมภาษาจอห์นมิทเชลเขียนว่าการตรวจสอบชนิดสแตติกจำเป็นต้องระมัดระวัง (เข้มงวดมากเกินไป) เนื่องจากปัญหาการหยุดทำงาน เขาให้เป็นตัวอย่าง: if (complicated-expression-that-could-run-forever) then (expression-with-type-error) else (expression-with-type-error) ใครสามารถให้คำตอบที่ไม่ได้วางแผนไว้ซึ่งจะเป็นข้อกังวลในทางปฏิบัติได้จริงหรือไม่? ฉันเข้าใจว่า Java อนุญาตการปลดเปลื้องที่ตรวจสอบแบบไดนามิกสำหรับกรณีเช่นนี้: if (foo instanceof Person) { Person p = (Person) foo; : } แต่ฉันพิจารณาถึงความจำเป็นของการขาดภาษา / คอมไพเลอร์ Java มากกว่าปัญหาข้ามภาษา

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

2
อัลกอริทึมการแยกซึ่งกันและกันของ 2 กระบวนการของ Peterson นั้นเป็นสาเหตุของกระบวนการที่กำลังจะตายหรือไม่?
ฉันคิดว่าในอัลกอริทึมของ Petersonสำหรับการยกเว้นซึ่งกันและกันหากกระบวนการก่อนเข้าสู่ส่วนที่สำคัญคือการตายหรือถูกยกเลิกกระบวนการอื่นจะวนซ้ำตลอดไปโดยรอที่จะเข้าสู่ส่วนที่สำคัญ ในรูปภาพหากกระบวนการ 1 หยุดทำงานส่วนที่เหลือของกระบวนการหลังกระบวนการ 1 จะดำเนินการจนถึงตำแหน่งที่กระบวนการ 1 เป็น แต่วนรอบ จะเกิดอะไรขึ้นถ้ากระบวนการที่มาถึงส่วนที่สำคัญเสียชีวิตก่อนที่จะออกไป
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.