Ters lehçe gösteriminin önemi nedir?


21

18 yaşındakilere bilgisayar öğretiyorum. Onlara ters cila gösterimi açıklandıktan sonra, kamu sınavında olmanın neden önemli olduğu sorulmuştur. 70'li yılların hesap makinelerinin tarihsel önemini açıkladım, ancak bu gerçekten sorunu çözemedi. RPN'in eşzamanlı pratik veya teorik uygulamaları da var.


3
Neredeyse on yıldır program yapıyorum ve CS'de yüksek lisans yaptım, ancak ciddi bir bağlamda hiç ters lehçe gördüğümü veya kullandığımı sanmıyorum. Özellikle öğrencilere öğretmenin bununla ilgili olduğundan emin misiniz ?
Raphael

İşte postfix gösterimini kullanan normal ifadeler motorunun bir uygulaması: swtch.com/~rsc/regexp/regexp1.html#thompson . Ken Thompson ilk uygulamasında da kullandı. Ayrıca, çalışma zamanında ifadeleri değerlendirmek için popüler bir tekniktir (bir derleyici oluşturuyorsanız).
saadtaame

RPN'de herhangi bir ifadeyi parantez kullanmadan yazabilirsiniz.
Seg Hatası

3
RPN'deki wikipedia makalesi çok zemini kapsıyor. Mantık metinleri bazen ispatlardan saf "sözdizimsel şeker" olarak nelerin atlanabileceğini açıkladıklarında cila gösterimi anlamına gelir (parantez içermez). Bununla birlikte, RPN, istiflerle yakın ilişkisi nedeniyle önemlidir. Yığınları anlamak etkileşimli hata ayıklama için önemlidir, çünkü ünlü "geri izleme" normalde sadece bir yığın dökümüdür. Saf işlevsel diller hala hata ayıklama için yığın dökümü ile karşılaştırılabilir bir şey sunmak için uğraşıyorlar, ancak sunacakları çok daha ayrıntılı bilgiye sahip olacaklardı (eğer temsil edebileceklerse).
Thomas Klimpel

Eski yorumumu kısmen geri çekmek zorundayım. Ben var dize dökümü ağaçlarına birileri kullanım sonrası düzeltme notasyonu görüldü. Okumak korkunçtu, ama kodlaması kolaydı. Bu nedenle, çok spesifik kullanım durumlarında RP yararlı olabilir, ancak bunun eğitime yayılıp uzanmadığından emin değilim (genel olarak). Sözdiziminin sabit olmadığını göstermek için kullanabilirsiniz, sanırım.
Raphael

Yanıtlar:


9

Hızlı prototipleme için, örneğin kullanıcı tarafından sağlanan bir matematiksel ifadeyi okumak ve yorumlamak zorunda olan programlar gibi RPN'i birkaç kez kullandım.

Düzenli matematiksel gösterim en az bir özyinelemeli ayrıştırıcı gerektirdiğinden (düşünme parantezleri, operatör sırası vb.), RPN ayrıştırıcısı temelde benzer bir switchifadeye sahip bir yığıntır. Sanırım HP'yi başlangıçta kullanmaya iten bu basitlik ve etkileyici güç kombinasyonu.

Ancak bu genellikle hızlı prototipleme ve kolaylık sağlamak içindir. Bir kullanıcının RPN'yi anlayabildiğini veya anlamak istediğini asla varsaymam.


8

Sadece önceki cevapları / yorumları genişletmek için: RPN'in canlı ve harika bir formda olduğunu unutmayın ... aslında şu anda Java sanal makinesi gibi yığın makinelerinde kullanılmaktadır .

Vikipedi: "... bir yığın makinesi kayıtlarla bir yığın uygular. Aritmetik mantık biriminin (ALU) işlenenleri her zaman yığının en iyi iki kaydıdır ve ALU'nun sonucu yığının en iyi kaydında saklanır . 'yığın makinesi' sık kullandığınız bilgisayarlarda başvuran bir, Son-Birinci çıkış bireysel bir program ifadeler çalıştırılırken yığın kısa ömürlü geçici değerleri tutmak için. komut kümesi sonekli en ALU işlemleri gerçekleştirdiği ( Ters Polonya notasyonu ) operasyonları o veri kayıtlarında veya ana bellek hücrelerinde değil, yalnızca ifade yığınında çalışır ... "

Bu yaklaşımın avantajları / dezavantajları Wikipedia makalesinde de açıklanmaktadır .


Hm, bayt koduna baktığınızda RPN'yi görmüyorsunuz; Tabii ki talimatlar "post-fix" düzeninde ortaya çıkıyor ancak aritmetikte RPN'e benzemiyor ve nedeni oldukça açık. Kayıt makineleri aynı şekilde ilerlemek zorundadır: değerleri yükleyin, ardından birleştirin.
Raphael

5

Forth ve PostScript (ve dolayısıyla IIRC'nin PostScript'in bir alt kümesinin ikili kodlaması olarak başladığı PDF), HP cep hesap makinesinin bir tane olduğu daha iyi bilinen postfix dilleridir.

O zaman basit derleyicilerde ara temsil olarak nispeten yaygın bir seçimdir.

Daha basit VM ayrıca bir postfix "makine" diline sahip olma eğilimindedir.


Bu arada, "daha basit VM" ifadesi JVM'yi içerir. RPN ile ilgili ilginç olan şey, en basit kullanışlı yığın makinesidir. Yığın makineleri gerçekten ilginç ve kullanışlı ve alakalı olanlardır.
Takma isim

4

Hesap makineleri ile ilgili olarak: Bkz. RPN nedir?

  • Faydaları: RPN zamandan ve tuş vuruşlarından tasarruf sağlar. Hesaplamalar yaparken parantez kullanmaktan ve takip etmekten kaçınırsınız. Süreç, matematiği kağıt üzerinde öğrenme şeklinize benzer.

  • Sadece sonuçtaki cevabı değil, hesaplamalarınızı yaparken ara sonuçları görebilirsiniz. Bu, mantığı öğrenmek için son derece yararlıdır. Matematik öğretmenleri bu özelliği öğrencilerin matematik anlayışını geliştirmek için kullanmaktadır.

  • Ara sonuç, kullanıcının yanıtı kontrol etmesine ve hataları daha kolay düzeltmesine olanak tanır. Hesap akışını takip etmek daha kolaydır. Kullanıcı operatörlerin önceliğini tanımlar.

  • RPN mantıklıdır çünkü kullanıcı önce numarayı verir ve sonra onunla ne yapacağını söyler.


3

Adından da anlaşılacağı gibi, Ters Lehçe Notasyonu veya Doğrudan Lehçe notasyonu notasyonlardır. Bir şeyi temsil etmek için sözdizimidir ve bellek gereksinimlerini göz önünde bulundurursanız aslında etkili sözdizimidir. Temsil ettikleri, herkesin kesinlikle yararsız olduğunu düşünmek için anayasal bir hakkı olan formüller, soyut sözdizimi ağaçları (AST) ve diğer varlık türleri olabilecek köklü ağaçlar.

Bazen bu tür varlıkları dosyada saklamak gerekir. Örneğin, programları AST olarak düzenleyebilen veya dönüştürebilen ve bu tür sunumları saklaması gereken sistemler vardır. Polonyalı Form uygundur. İnsanlar, özellikle büyük ağaçlar için okunabilirliği sınırlıdır, ancak makineler için çok uygun bir temsildir.

Bunun bir başka yönü de, ağaçların ve bunların temel kullanımlarının ve temsillerinin yanı sıra ilişkili cihazların (yığınlar) çalışmasının, daha gelişmiş kavramların (sözdizimi, ayrıştırma, mantık, dilbilim) gelecekteki çalışmalarına giriş olarak pedagojik olarak yararlı olduğuna inanıyorum. , ...).

Aynı zamanda kavramsal olarak oldukça basit ve kağıt üzerinde denemesi kolay olma avantajına sahiptir. Ayrıca sözdizimini ve sözdiziminin temsil olduğu ve temsilleri aynı şeyi temsil ederken değişebileceği ve karşılanması gereken ihtiyaca bağlı olarak farklı temsillerin kullanılabileceği (alan optimizasyonu, kolay modifikasyon, insan tarafından okunabilirlik, bilgisayar tarafından okunabilirlik, ...).

Ancak bu sorunun ve yanıtlarının sadece RPN'yi düşündüğüne şaşırdım ve hiçbiri doğrudan lehçe gösterimini dikkate almıyor.

Öğrencilerin sorması kesinlikle mükemmel. Ancak böyle bir soruyu cevaplamanın her zaman farklı yönleri vardır. Bilginin kendisi için faydalı mı? Sanırım öyle. Pedagojik egzersiz olarak faydalı mı? Bence öyle, ama bu amaçlanan kitleye çok bağlı ve sadece öğretmen neyi anlayabildiğini değerlendirebilir. Bazı kavramsal konuları anlamak faydalı mıdır? Sanırım öyle, ama yine de öğretmenin öğrencilerine hangi kavramların açıklanabileceğine ilişkin değerlendirmesine bağlı.


2

Öğrenciniz kesinlikle haklıydı. Ters Lehçe Notasyonu, bilgisayar biliminde çok sınırlı sınıf zamanı geçirmeye değecek kadar önemli değildir. Bunun yerine, derin entelektüel fikirlerle öğretebileceğiniz daha birçok harika kavramsal fikir vardır: istikrarlı evlilik, pasta kesme, çaprazlama ve durma probleminin kararsızlığı, etkileşimli kanıtlar ve sıfır bilgi kanıtları, vb. bunların hepsi 18 yaşındakilerin erişimine açılabilir.

Ve umarım öğrencinizi soruyu soracak kadar cesur olduğu için övmüşsünüzdür! Sorunu gündeme getirmek için kendilerini bir çıkıntıya sokmak zorunda kaldılar. Öğretme tarzınız için size bu soruyu sormaktan kendilerini rahat hissettiklerini ifade eder.


1
Polonya notalarının öğretilmesi neredeyse hiç zaman almaz. Kütle depolamanın rasgele erişim yerine genellikle ardışık olduğu göz önüne alındığında, ağaçlar gibi standart yapıların doğrusallaştırılması da önemlidir. Ayrıca verimli bir şekilde saklamak veya tamamen veya kısmen nasıl geri alabileceğinizi anlamak isteyebilirsiniz. Ağaçları, ağaç yürüyüşünü, gömülü yapıları ve aşağı itmeyi birleştirir. Özetle, veri için Gödel kodlamalarının nasıl yapılacağını anlatır. LR ve LL ayrıştırma ve diğer önemsiz teknolojiler tarafından temsil edilen muazzam zaman ve enerji kaybı ile karşılaştırıldığında, lehçe gösterimine harcanan zamanın iyi harcanan zaman olduğunu bile söyleyebilirim.
babou

"bilgisayar biliminde yeterince önemli değil" - inanılmaz kanaat
Dmitri Zaitsev

1

Ters Lehçe Notasyonu, genel olarak ayrıştırma ağaçlarını ve ağaç veri yapılarını anlamak için eğitimimde iyi bir araçtır. Lisp dil ​​ailesinin herhangi birinde (Clojure, emacs-lisp, şema vb.) Programlamaya herhangi bir ilgisi varsa da yararlıdır.


Neden Lisp ve Şeması? Parantez doludur.
babou
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.