ทำไมต้องเขียนคำศัพท์ใหม่


12

ฉันทำ googleing นิดหน่อยและสั้นลงมาหน่อย

ฉันสงสัยว่าอะไรคือสาเหตุหลักของนักวิทยาศาสตร์คอมพิวเตอร์โปรแกรมเมอร์เพื่อศึกษาการเขียนคำใหม่และ / หรือการเขียนกราฟคำใหม่

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

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมากที่สุด!

คำตอบ:


11

ฉันไม่แน่ใจว่าสิ่งนี้จะนำคุณมากกว่าที่คุณรู้ แต่ฉันอาจไม่เข้าใจเหตุผลที่ทำให้คุณสงสัยเกี่ยวกับการเขียนคำซ้ำ มันช่วยได้

อย่างที่คุณอาจรู้ไวยากรณ์เป็นระบบการเขียนสตริง ที่ด้านบนสุดของลำดับชั้น Chomsky คุณมีประเภท 0 grammars ซึ่งกำหนด anguages ​​enumerable (RE) ซ้ำและมีอำนาจการคำนวณของเครื่องจักรทัวริง

ดังนั้นจะบอกคุณว่าระบบการเขียนใหม่โดยทั่วไปมีส่วนเกี่ยวข้องกับการแสดงอัลกอริธึมเป็นอย่างมาก

ปัญหาเกี่ยวกับสตริงโดยทั่วไปคือไม่มีวิธีที่ชัดเจนในการแนบซีแมนทิกส์กับพวกเขา มันเป็นประเภทของการเขียนใหม่อสัณฐาน

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

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

แทนที่จะมองวิกิพีเดียอย่างเป็นทางการและข้อความมากมายในหัวข้อนี้เพียงแค่พิจารณาโปรแกรม เป็นที่ทราบกันดีอยู่แล้วว่าการให้บริการทางวากยสัมพันธ์ของโปรแกรมนั้นเรียกว่า Abstract Syntax Tree (AST) แต่ AST เป็นเพียงคำศัพท์ที่ใช้แทนวัตถุโปรแกรม ความหมายเชิง Denotational เป็นวิธีการกำหนดโดเมนนามธรรมและเชื่อมโยงค่าจากโดเมนเหล่านี้ไปยัง AST (หรือ AST subtrees) โดยค่าเฉลี่ยของโฮโมมอร์ฟิซึม โปรแกรมในรูปแบบ AST สามารถแปลงหรือปรับให้เหมาะสมโดยใช้กฎการเขียนใหม่ (ฉันไม่ได้ยืนยันว่าการเพิ่มประสิทธิภาพทั้งหมดสามารถทำได้หรือควรทำเช่นนั้น)

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

ฉันขอแนะนำให้คุณดูบทความวิกิพีเดียในหัวข้อนี้


6

ความคิดของฉันเป็นเพราะการเขียนคำศัพท์ใหม่เป็นสิ่งพื้นฐานที่สุดและช่วยให้คุณอธิบายสิ่งต่าง ๆ ในระดับต่ำมากโดยไม่ขึ้นกับฮาร์ดแวร์ใด ๆ

Term-rewriting สามารถอธิบายไวยากรณ์ได้ แต่มันยังให้กลไกแก่คุณในการอธิบายระบบลอจิกเช่นตรรกะลำดับแรกเป็นต้นการพิสูจน์และการหักสามารถเขียนเป็นคำศัพท์ จากนั้นการแทนที่คำศัพท์นั้นเป็นการดำเนินการเดียวที่คุณมี ความเรียบง่ายที่นี่มีค่าเพราะคุณกำลังอธิบายตรรกะดังนั้นคุณจึงไม่สามารถใช้ความซับซ้อนทั้งหมดของตรรกะเพื่ออธิบายระบบของคุณ (เนื่องจากเป็นระบบที่คุณพยายามอธิบาย)

สิ่งนี้จะให้กลไกที่คุณต้องพูดถึงแคลคูลัสแลมบ์ดาเป็นระบบเชิงตรรกะ / สัจพจน์ซึ่งให้การคำนวณพื้นฐานที่เป็นทางการอย่างมาก

ทัวริงแมชชีนมีประโยชน์ แต่คำจำกัดความพื้นฐานของมันต้องการให้คุณมีแนวคิดของชุดฟังก์ชั่น ฯลฯ มีคณิตศาสตร์อีกมากที่สันนิษฐานว่าสร้างขึ้น

ในอีกด้านหนึ่งแลมบ์ดาแคลคูลัสนั้นถูกนิยามในแง่ของตรรกะดังนั้นคุณสามารถใช้มันได้โดยไม่ต้องนิยามคำนิยามสำหรับทฤษฎีเซตฟังก์ชั่น ฯลฯ

การเขียนคำซ้ำตามตรรกะไม่เพียงใช้กับการเขียนโปรแกรมฟังก์ชั่นเท่านั้น เมื่อคุณทำการตรวจสอบอย่างเป็นทางการของฮาร์ดแวร์หรือซอฟต์แวร์คุณมักจะให้เหตุผลในการเรียงลำดับบางอย่างและเหตุผลนี้สามารถเป็นแบบจำลองโดยการเขียนคำใหม่


2

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

ตัวอย่างหนึ่งของระบบนี้คือDMS Software Reengineering Toolkitซึ่งใช้สำหรับการวิเคราะห์โปรแกรมที่หลากหลายและงานการเปลี่ยนแปลงครั้งใหญ่ คุณสามารถดูว่า DMS แสดงการเขียนซ้ำได้อย่างไร การเขียนซ้ำเหล่านี้ถูกนำไปใช้โดยระบบการเขียนคำศัพท์ที่เชื่อมโยงแบบสลับกันซึ่งทำงานอยู่เบื้องหลัง

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