คำถามติดแท็ก language-design

คำถามที่เกี่ยวข้องกับการออกแบบและโครงสร้างของภาษาโปรแกรม

3
ฉันจะระบุไวยากรณ์สำหรับ parser ได้อย่างไร
ฉันได้เขียนโปรแกรมมาหลายปีแล้ว แต่สิ่งหนึ่งที่ฉันต้องใช้เวลานานมากคือการระบุไวยกรณ์สำหรับโปรแกรมแยกวิเคราะห์และแม้จะใช้ความพยายามมากเกินไปฉันก็ไม่แน่ใจว่าไวยากรณ์ที่ฉันใช้มานั้นดีมาก ( โดยการวัดที่เหมาะสมของ "ดี") ฉันไม่คาดหวังว่าจะมีอัลกอริทึมสำหรับกระบวนการระบุไวยากรณ์โดยอัตโนมัติ แต่ฉันหวังว่าจะมีวิธีการจัดโครงสร้างปัญหาที่กำจัดการคาดเดาและการลองผิดลองถูกของวิธีการปัจจุบันของฉัน ความคิดแรกของฉันคืออ่าน parsers และฉันทำสิ่งนี้ไปแล้ว แต่ทุกอย่างที่ฉันอ่านในเรื่องนี้ต้องใช้ไวยากรณ์ตามที่กำหนด ปัญหาของการแปลไวยากรณ์นี้เป็น parser ฉันสนใจปัญหานี้มาก่อน: วิธีการระบุไวยากรณ์ตั้งแต่แรก ฉันสนใจหลักในปัญหาของการระบุไวยากรณ์ที่เป็นตัวแทนของตัวอย่างที่เป็นรูปธรรม (บวกและลบ) อย่างเป็นทางการ ซึ่งแตกต่างจากปัญหาของการออกแบบใหม่ไวยากรณ์ ขอบคุณ Macneil ที่ชี้ให้เห็นความแตกต่างนี้ ฉันไม่เคยซาบซึ้งถึงความแตกต่างระหว่างไวยากรณ์และไวยากรณ์ แต่ตอนนี้ฉันเริ่มเห็นแล้วฉันสามารถเพิ่มความชัดเจนในการชี้แจงครั้งแรกโดยบอกว่าฉันสนใจในปัญหาการระบุไวยากรณ์ที่จะบังคับใช้ ไวยากรณ์ที่กำหนดไว้ล่วงหน้า: มันเกิดขึ้นอย่างนั้นในกรณีของฉันพื้นฐานสำหรับไวยากรณ์นี้มักจะเป็นชุดของตัวอย่างบวกและลบ มีการระบุไวยกรณ์สำหรับ parser อย่างไร มีหนังสือหรือเอกสารอ้างอิงนั่นคือมาตรฐาน de-facto สำหรับอธิบายวิธีปฏิบัติที่ดีที่สุดวิธีการออกแบบและข้อมูลที่เป็นประโยชน์อื่น ๆ เกี่ยวกับการระบุไวยากรณ์สำหรับโปรแกรมวิเคราะห์คำหรือไม่? เมื่ออ่านเกี่ยวกับไวยากรณ์ parser ฉันควรเน้นเรื่องใด

5
คำถามเกี่ยวกับการสร้างภาษาสคริปต์
ตัวอย่างเช่นฉันต้องการจ่ายคนเพื่อสร้างภาษาโปรแกรมหรือภาษาสคริปต์สำหรับฉัน พวกเขาต้องการเอกสารประเภทใดเพื่อให้เข้าใจอย่างถ่องแท้ว่าฉันต้องการอะไร ฉันหมายถึงมีเอกสารมาตรฐานที่อธิบายภาษาการเขียนโปรแกรม / สคริปต์ใหม่หรือไม่?

8
การรวมโปรแกรมมิงและเคียวรีฐานข้อมูล [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา พิจารณาบทช่วยสอนทั่วไปสำหรับภาษาการเขียนโปรแกรมเชิงวัตถุเช่น C ++ หรือ Java: สร้างระบบการประมวลผลคำสั่งง่ายๆด้วยวัตถุที่แสดงถึงบัญชีคำสั่งซื้อรายการอื่น ๆ (หรือสิ่งที่เทียบเท่าหรือมากกว่านั้น) ทำให้ความรู้สึกเป็นธรรมชาติสมบูรณ์แบบ แต่ช้างที่โต๊ะอาหารคือมันไม่จริงเพราะสิ่งเหล่านี้เป็นวัตถุในหน่วยความจำ ในระบบจริงบัญชีคำสั่งซื้อและอื่น ๆไม่ได้อยู่ในหน่วยความจำจริง ๆพวกเขาอาศัยอยู่ในฐานข้อมูลด้วยการเป็นตัวแทนของหน่วยความจำเพียงกระจกที่มีอายุสั้น คุณสามารถเขียนโค้ดจำนวนมากด้วยตัวคุณเองเพื่ออ่านและเขียนจากฐานข้อมูล แต่นั่นเป็นเรื่องที่น่าเบื่อและมีข้อผิดพลาดที่ไม่มีใครทำจริง ทุกคนลงเอยด้วยการใช้ ORM แต่สิ่งเหล่านี้มีปัญหาในสิทธิของตนเองที่มีชื่อเสียงเรียกว่า 'เวียดนามของอุตสาหกรรมของเรา' ฉันไม่คิดว่าที่ไม่ตรงกันระหว่างวัตถุและความสัมพันธ์ให้มากที่สุดเท่าที่ไม่ตรงกันระหว่างการเขียนโปรแกรมภาษาและฐานข้อมูลเป็นสิ่งที่แยกต่างหากที่ไม่ทราบเกี่ยวกับแต่ละอื่น ๆ การคาดเดา: การแก้ปัญหาคือการมีภาษาเดียวที่เป็นทั้งภาษาโปรแกรมและฐานข้อมูลแบบสอบถามซึ่งจะต้องใช้ภาษารันไทม์ยังเป็นฐานข้อมูลและคอมไพเลอร์ JIT ยังเป็นเครื่องมือเพิ่มประสิทธิภาพแบบสอบถาม นั่นคือบทสรุปของปัญหาที่ฉันเห็น คำถามของฉันคือมีใครเลย สร้างขึ้นจริงเช่นระบบแบบครบวงจร พยายาม แต่ล้มเหลวในการสร้างระบบแบบครบวงจร เขียนสิ่งสำคัญในหัวข้อว่าคุณจะสร้างสิ่งนั้นได้อย่างไรหรือเพราะเหตุใด หาทางเลือกอื่นในการแก้ปัญหาหรือไม่

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

3
ทำไมภาษาควรเยื้องมากกว่าเครื่องหมายที่ชัดเจนสำหรับบล็อก?
ฉันกำลังเรียนรู้ Haskell และฉันกำลังมองหาเครื่องมือการเยื้องอัตโนมัติ ฉันไม่ได้ดูมากนักและเรียนรู้ว่าใน Haskell (เช่นเดียวกับใน Python) การเยื้องนั้นหมายถึงบล็อก ด้วยเหตุนี้ฉันเดาว่าเป็นไปไม่ได้ที่จะสร้างเครื่องมือการจัดรูปแบบอัตโนมัติที่แข็งแกร่งเช่นเดียวกับในภาษาอื่น ๆ ในตระกูล C ที่ใช้ตัวระบุที่ชัดเจนเช่น {} (เครื่องหมายปีกกา) หรือbegin endคำหลัก ฉันไม่สนใจภาษาที่บังคับให้ย่อหน้าเพื่อให้อ่านได้ แต่ฉันไม่สามารถเข้าใจถึงประโยชน์ของทั้งการบังคับใช้การเยื้องและมีเครื่องหมายระบุชัดเจนเพื่อให้เครื่องมืออัตโนมัติสามารถเข้าใจสิ่งที่อยู่ในบล็อกนั้น หากการตั้งค่าการเยื้องเป็นตัวทำเครื่องหมายบล็อกเป็นเพื่อให้รหัสดูดีขึ้นแล้วฉันยังไม่เข้าใจความได้เปรียบ เนื่องจากแท็บและช่องว่างมีการแสดงแตกต่างกันในเครื่องมือแก้ไขและแบบอักษรที่แตกต่างกัน (แบบอักษรช่องว่างเดียวเช่น look tidier) จึงไม่สามารถคาดหวังว่าโปรแกรมเมอร์จะแสดงรหัสอย่างเหมาะสม เครื่องมือที่สามารถพิจารณาโปรแกรมแก้ไขข้อความปัจจุบันจะเหมาะสมกว่าในการจัดรูปแบบรหัสอย่างถูกต้อง เหตุใดนักออกแบบภาษาจึงเลือกการเยื้องผ่านตัวทำเครื่องหมายบล็อกอย่างชัดเจน

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

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

1
เหตุใดจึงไม่สามารถโอเวอร์โหลดตัวดำเนินการผสมใน C # ได้
ชื่อจะทำให้เข้าใจผิดดังนั้นโปรดอ่านคำถามทั้งหมด :-) โดย "ผู้ประกอบการที่ได้รับมอบหมายสารประกอบ" ผมมีในใจสร้างเช่นนี้ยกตัวอย่างเช่นop= +=ตัวดำเนินการกำหนดค่าบริสุทธิ์ ( =) ไม่ได้อยู่ในคำถามของฉัน โดย "ทำไม" ฉันไม่ได้หมายถึงความเห็น แต่เป็นแหล่งข้อมูล (หนังสือบทความ ฯลฯ ) เมื่อนักออกแบบบางคนหรือเพื่อนร่วมงาน ฯลฯ แสดงเหตุผลของพวกเขา(เช่นแหล่งที่มาของตัวเลือกการออกแบบ) ฉันงงงวยด้วยความไม่สมดุลที่พบใน C ++ และ C # ( ใช่ฉันรู้ว่า C # ไม่ใช่ C ++ 2.0 ) - ใน C ++ คุณต้องโอเวอร์โหลดโอเปอเรเตอร์+=แล้วเขียน+ตัวดำเนินการที่เหมาะสมโดยอัตโนมัติอาศัยโอเปอเรเตอร์ที่กำหนดไว้ก่อนหน้านี้ ใน C # เป็นแบบย้อนกลับ - คุณโอเวอร์โหลด+และ+=สังเคราะห์สำหรับคุณ หากฉันไม่เข้าใจผิดวิธีการในภายหลังจะฆ่าโอกาสในการปรับให้เหมาะสมในกรณีของจริง+=เนื่องจากต้องสร้างวัตถุใหม่ ดังนั้นจะต้องมีข้อได้เปรียบที่ยิ่งใหญ่ของวิธีการดังกล่าว แต่ MSDN อายเกินกว่าจะบอกได้ …

2
เพราะเหตุใดคำหลัก 'out' จึงถูกใช้ในบริบทที่แตกต่างกันสองดูเหมือน
ใน C # outคำหลักสามารถใช้ได้สองวิธีที่ต่างกัน เป็นโมดิฟายเออร์พารามิเตอร์ที่อาร์กิวเมนต์ถูกส่งผ่านโดยการอ้างอิง class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } } ในฐานะที่เป็นตัวปรับแต่งพารามิเตอร์ชนิดเพื่อระบุความแปรปรวน // Covariant interface. interface ICovariant<out R> { } // Extending covariant interface. interface IExtCovariant<out R> : …

4
ภาษาโปรแกรมการออกเสียง? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา พวกเราหลายคนเขียนโปรแกรมโปรแกรมเมอร์และนักพัฒนาต่อสู้กับการบาดเจ็บความเครียดซ้ำอุโมงค์ carpal ฯลฯ ฉันอยากรู้อยากเห็นเกี่ยวกับการแนะนำการควบคุมเสียงในเวิร์กโฟลว์ของฉันเพื่อช่วยตัวเองให้เครียดบ้าง สิ่งนี้นำฉันไปสู่คำถามปัจจุบันของฉัน: เป็นไปได้หรือเป็นไปได้จริงที่จะใช้ภาษาการเขียนโปรแกรม (หรือภาษาที่มีอยู่เดิม) ซึ่งออกเสียงเป็นหลักและเหมาะกับการเขียนโปรแกรมด้วยเสียงหรือไม่

8
เหตุใดจึงไม่เพิ่มรูปแบบการออกแบบในการสร้างภาษา
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานที่กล่าวว่า บริษัท ของเขากำลังทำงานเพื่อเพิ่มรูปแบบการออกแบบ MVC เป็นส่วนขยาย PHP เขาอธิบายว่าพวกเขาเขียนรหัส C เพื่อเพิ่มControllers, Models and Viewsโครงสร้างภาษาเพื่อเพิ่มประสิทธิภาพ ตอนนี้ฉันรู้แล้วว่า MVC เป็นรูปแบบการออกแบบสถาปัตยกรรมที่ใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชัน แต่ฉันยังต้องเจอภาษาที่มีโครงสร้างภาษาสำหรับตัวควบคุม IMHO การรวมรูปแบบการออกแบบเป็นภาษาสามารถเน้นความสำคัญของการออกแบบ OO ที่ดี ดังนั้นทำไมรูปแบบการออกแบบที่ไม่ได้ใช้มากที่สุด (MVC, Factory, Strategy, ... ฯลฯ ) เพิ่มลงในโครงสร้างภาษา หากคำถามฟังดูกว้างเกินไปคุณอาจ จำกัด คำถามไว้ที่ PHP เท่านั้น แก้ไข: ฉันไม่ได้หมายความว่าต้องใช้รูปแบบการออกแบบเมื่อพัฒนาโครงการ จริงๆแล้วฉันส่งเสริมวิธีการในการทำให้มันง่ายตราบเท่าที่มันใช้งานได้

3
ภาษาโปรแกรมที่เหมาะสมในการออกแบบซอฟต์แวร์ดนตรี [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันต้องการออกแบบซอฟต์แวร์สำหรับเครื่องดนตรีของฉันซึ่งเป็นจังหวะหนึ่ง (ไม่มีทำนอง) สิ่งที่ฉันต้องการให้ซอฟต์แวร์เหล่านี้ทำคือ: ทำให้ผู้ใช้สามารถแต่งเพลง เล่นสิ่งที่ผู้ใช้ประกอบด้วย เพื่อจุดประสงค์นั้นฉันต้องบันทึกเสียงที่แตกต่างของเครื่องดนตรีนั้นและจับคู่เครื่องหมายแต่ละอันด้วยเสียงที่เหมาะสม ภาษาการเขียนโปรแกรมใดที่เพียงพอสำหรับจุดประสงค์นี้

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

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

3
เหตุใด scanf จึงเรียกว่า scanf (เหมือนกันสำหรับ printf.)
ฉันแค่อยากรู้ว่าทำไมในภาษาการเขียนโปรแกรม C ฟังก์ชั่นในการอ่านอินพุตที่จัดรูปแบบถูกเรียกว่า "scanf" ซึ่งตรงข้ามกับ "readf" ฉันคิดว่ามันมาจากภาษาก่อนหน้าดังนั้นในกรณีนี้เหตุใดจึงตั้งชื่อแบบนั้นในภาษาก่อนหน้า (recurse.) ทำไม "printf" มากกว่า "writef" ในภาษาอื่นที่ไม่ใช่ C ทำไม "พิมพ์" หรือ "เขียน" แทนที่จะเป็น "ดิสเพลย์"

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