Neden Dönem Yeniden Yazımı?


12

Ben biraz googleing yaptım ve biraz kısa geldi.

Bilim adamları, programcılar, dönem yeniden yazma ve / veya terim grafik yeniden yazma çalışmalarının temel nedenlerinin neler olduğunu merak ediyorum.

Anlayabildiğim kadarıyla, sadece fonksiyonel programlar ve (zorunlu) program kontrolü hakkında temel akıl yürütmeye yardımcı olur. Görünüşe göre, mantıkçılara ve yapıcı soyut cebirleri inceleyenlere büyük ilgi duyulan bir konu.

Herhangi bir yardım en çok takdir edilecektir!

Yanıtlar:


11

Bunun size zaten bildiğinizden daha fazlasını getireceğinden emin değilim. Ama sonra, terim yeniden yazmayı merak eden nedenleri anlayamayabilirim. Yardım eder.

Bildiğiniz gibi, gramerler dize yeniden yazma sistemleridir. Chomsky hiyerarşisinin en üstünde, yinelenen numaralandırılabilir (RE) dilleri tanımlayan ve Turing makinelerinin hesaplama gücüne sahip olan 0 dilbilgisine sahipsiniz.

Böylece bu, yeniden yazma sistemlerinin genel olarak ifade algoritmalarıyla çok ilgisi olduğunu söyler.

Genel olarak dizelerle ilgili sorun, onlara anlambilim eklemek için açık bir yol olmamasıdır. Bir çeşit şekilsiz yeniden yazmadır.

İnsanların genellikle ilgilendiği şey, yapı ve özelliklere sahip belirli alanlarda algoritmalar ifade etmektir. Bu tür alanlar genellikle temel (atomik) varlıklardan tanımlanır ve muhtemelen denklik ilişkileriyle belirlenen çeşitli işlemlerle kapatılır ve bu böyle devam eder. Bunlara genellikle cebir denir.

Bu alanlar genellikle soyuttur. Ancak unsurları üzerindeki hesaplamalar sadece somut temsiller üzerinde ifade edilebilir. Terimler bu elementlerin doğal temsilidir, çünkü elementlerin diğer elementler için operasyonlar uygulanarak özyinelemeli olarak atomik elementlere nasıl elde edilebileceğini ifade ederler (ancak genel özelliklerin her zaman sonuna kadar gitmesi gerekmez). Terimler, algoritmaları (dize için olduğu gibi) ifade etmek üzere değiştirilebilen bir tür ağaç yapısı sözdizimidir. Ancak terimlerin operatör işlenen yapısı, aynı zamanda, bir soyut alanda semantiklerin homomorfizmlerle ilişkilendirilmesine de izin verir.

Vikipedi ve bu konuyla ilgili birçok metni çok resmi bir şekilde ele almak yerine, programları düşünün. Genellikle programların uygun bir sözdizimsel sunumunun Soyut Sözdizimi Ağacı (AST) olarak adlandırıldığı kabul edilir. Ancak AST, bir program nesnesini temsil eden bir terimdir. Anlamsal anlambilim, soyut alanları tanımlamak ve bu alanlardan değerleri homomorfizmler ile AST (veya AST alt ağacı) ile ilişkilendirmek için bir yoldur. AST biçimindeki programlar yeniden yazma kuralları uygulanarak dönüştürülebilir veya optimize edilebilir (tüm optimizasyonların bu şekilde yapılabileceğini veya yapılması gerektiğini iddia etmiyorum).

Cebirsel ifadelerin çeşitli amaçlarla dönüşümü terim yeniden yazma ile ifade edilebilir. Örneğin, bazı ifadelerin basitleştirilmesi. Çeşitli hesaplama türleri, doğal olarak, türevlerin hesaplanması gibi terim yeniden yazma olarak da ifade edilebilir. Terim yeniden yazma, bazen aynı semantik varlığın birkaç sözdizimsel temsili olabileceği zaman, cebirlerde kanonik formları tanımlamak için de kullanılır.

Bu konuyla ilgili wikipedia makalesine bakmanızı öneririm .


6

Benim düşüncem, çünkü Terim Yeniden Yazma son derece temel bir şeydir ve herhangi bir donanımdan bağımsız olarak işleri son derece düşük bir şekilde tarif etmenizi sağlar.

Terim-yeniden yazma gramerleri tanımlayabilir, fakat aynı zamanda size birinci dereceden mantık gibi tanımlanmış mantıksal sistemlerin mekaniğini verir. O zaman, terim-yeniden yazmanın ikamesi gerçekten sahip olduğunuz tek işlemdir. Buradaki basitlik değerlidir çünkü mantığı tanımladığınız için, sisteminizi tanımlamak için mantığın tam karmaşıklığını kullanamazsınız (çünkü açıklamaya çalıştığınız sistem budur).

Bu size mantıksal / aksiyomatik bir sistem olarak lambda hesabı hakkında konuşmanız gereken mekaniği verir, bu da size son derece resmi, temel bir hesaplama versiyonu sağlar.

Turing Makineleri faydalıdır, ancak altta yatan tanımları, setler, fonksiyonlar, vb. Kavramına sahip olmanızı gerektirir. İnşa edildiği varsayılan çok daha fazla matematik var.

Öte yandan Lambda hesabı mantık olarak tanımlanır, bu yüzden küme teorisi, fonksiyonlar vb. İçin tanımları çok fazla kullanmadan kullanabilirsiniz.

Mantıkla modellenen terim yeniden yazma, yalnızca işlevsel programlama için geçerli değildir. Donanım veya yazılımın resmi doğrulamasını yaparken, her zaman bir tür mantık yürüteceksiniz ve bu mantık terimi yeniden yazma ile modellenebilir.


2

Bunun çok pratik bir nedeni, programın dönüşüm sistemlerinin , yüzey kodunun yeniden yazılmasıyla programların kodunu terimler (soyut sözdizimi ağaçları) olarak değiştirmesine izin veren araçların .

Bunun bir örneği sistemim, çok çeşitli program analizi ve devasa dönüşüm görevleri için kullanılan DMS Yazılım Yeniden Yapılandırma Araç Seti . DMS'nin yeniden yazımları nasıl ifade ettiğini görebilirsiniz . Bu yeniden yazma işlemleri, perde arkasında çalışan ilişkisel-değişmeli terim yeniden yazma sistemi tarafından uygulanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.