RPL (programlama dili) - RPL (programming language)

RPL
Paradigmayığın, yapılandırılmış, nesne odaklı
Tarafından tasarlandıHewlett Packard
İlk ortaya çıktı1984 (1986)
işletim sistemiHP hesap makineleri
Lehçeler
Sistem RPL, Kullanıcı RPL
Tarafından etkilenmiş
RPN, İleri, Lisp[1]

RPL[1] bir el tipi hesap makinesi işletim sistemi ve uygulama Programlama dili kullanılan Hewlett Packard bilimsel grafik RPN (Reverse Polish Notation) hesaplayıcıları HP 28, 48, 49 ve 50 serisi, ancak aynı zamanda RPN olmayan hesap makinelerinde de kullanılabilir, örneğin 38, 39 ve 40 dizi.

RPL bir yapısal programlama RPN tabanlı, ancak aynı derecede işleme yeteneğine sahip dil cebirsel olarak uygulanan ifadeler ve formüller iş parçacıklı yorumlayıcı.[2] RPL'nin birçok benzerliği vardır İleri her iki dil de yığın -tabanlı ve aynı zamanda liste-tabanlı LISP. Önceki HP RPN hesap makinelerinin aksine, sabit bir dört seviyeli yığın, RPL tarafından kullanılan yığın yalnızca mevcut hesap makinesi ile sınırlıdır Veri deposu.

RPL, HP'nin Corvallis, Oregon geliştirme tesisi, önceki uygulama uygulamasının yerine 1984 yılında işletim sistemleri hesap makinesi sayısı montaj dili.[3] RPL'yi destekleyen son cep hesap makinesi olan HP 50g, 2015'te kullanımdan kaldırıldı.[4][5][6] Bununla birlikte, HP'nin RPL hesap makinelerini taklit edebilen, iOS ve Android akıllı telefonlar dahil olmak üzere çeşitli işletim sistemleri ve cihazlarda çalışan birden çok emülatör mevcuttur.

Varyantlar

RPL'nin dahili düşük ila orta düzey varyantı olarak adlandırılan Sistem RPL (veya SysRPL), daha önceki HP hesap makinelerinin yanı sıra, yukarıda belirtilen hesap makinelerinin bir parçası olarak kullanılır. işletim sistemi uygulama dili. HP 48 serisinde, bu RPL varyantına hesap makinesi kullanıcısı harici araçlar kullanmadan erişemez, ancak HP 49/50 serisinde SysRPL'yi kullanmak için ROM'da yerleşik bir derleyici vardır. SysRPL'de kodlama sırasında ciddi bir çökmeye neden olabilir, bu nedenle onu kullanırken dikkatli olunmalıdır. Yüksek seviye Kullanıcı RPL (veya KullanıcıRPL) dilin versiyonu, metinsel ve aynı zamanda grafiksel uygulama programları geliştirmek için bahsedilen grafik hesaplayıcılarda mevcuttur. Tüm UserRPL programları dahili olarak SysRPL programları olarak temsil edilir, ancak yalnızca mevcut SysRPL komutlarının güvenli bir alt kümesini kullanır. Bununla birlikte, UserRPL komutlarının bir parçası olan hata denetimi, UserRPL programlarını eşdeğer SysRPL programlarından önemli ölçüde daha yavaş hale getirir. UserRPL komutu SYSEVAL, hesap makinesine bir UserRPL programının belirlenmiş kısımlarını SysRPL kodu olarak işlemesini söyler.

Kontrol blokları

RPL kontrol blokları kesinlikle son ek değildir. Bazı önemli istisnalar olmasına rağmen, kontrol bloğu yapıları standart bir infix dilinde olduğu gibi görünür. Hesap makinesi bunu, bu blokların uygulanmasının program akışında gerektiği gibi ilerlemesine izin vererek yönetir.

Koşullu ifadeler

IF / THEN / ELSE / END

RPL, IF / THEN / ELSE yapısı aracılığıyla temel koşullu testi destekler. Bu bloğun temel sözdizimi şöyledir:

 EĞER koşulu SONRA eğer doğruysa [DEĞİL, yanlışsa] SON

Aşağıdaki örnek, yığının altındaki sayının "1" olup olmadığını test eder ve öyleyse, onu "Bire eşit" ile değiştirir:

 «EĞER 1 == SONRA" Bire eşit "SON"

IF yapısı koşulu değerlendirir ve ardından sonuç için yığının altını test eder. Sonuç olarak RPL, isteğe bağlı olarak FORTH tarzı IF bloklarını destekleyerek koşulun bloktan önce belirlenmesine izin verir. Koşulu boş bırakarak, IF deyimi koşul yürütme sırasında yığında herhangi bir değişiklik yapmayacak ve test için yığının altındaki mevcut sonucu kullanacaktır:

 «1 == İSE" BİR "END" e eşittir

IFT / IFTE

Sonek koşullu testi, IFT ("eğer-ise") ve IFTE ("eğer-ise-değilse") işlevleri kullanılarak gerçekleştirilebilir.

IFT ve IFTE sırasıyla iki veya üç komutu yığından çıkarır. En üstteki değer bir boole olarak değerlendirilir ve doğruysa, ikinci en üstteki değer yığında geri itilir. IFTE, boolean yanlışsa yığın üzerinde geri itilecek üçüncü bir "else" değerine izin verir.

Aşağıdaki örnek, yığının altından bir nesneyi açmak için IFT işlevini kullanır ve 1'e eşitse, onu "Bir" ile değiştirir:

 «1 ==" Bir "IFT»

Aşağıdaki örnek, yığının altından bir nesneyi açmak için IFTE işlevini kullanır ve 1'e eşitse, onu "Bir" ile değiştirir. 1'e eşit değilse, "Bir değil" dizesiyle değiştirir:

 «1 ==" Bir "" Bir değil "IFTE»

IFT ve IFTE, verilen bir program bloğunu bağımsız değişkenlerinden biri olarak değerlendirecek ve bir IF / THEN / ELSE / END yapısından daha kompakt bir koşullu mantık formuna izin verecektir. Aşağıdaki örnek, yığının altından bir nesneyi çıkarır ve 1'e eşit, küçük veya 1'den büyük olmasına bağlı olarak onu "Bir", "Daha Az" veya "Daha Fazla" ile değiştirir.

 «DUP 1 ==« DROP "Bir" »« 1 <"Daha Az" "Daha Fazla" IFTE »IFTE»

DURUM / SONRA / SON

Daha karmaşık koşullu mantığı desteklemek için RPL, birden çok özel testin işlenmesi için CASE / THEN / END yapısını sağlar. CASE ifadesindeki dallardan yalnızca biri yürütülecektir. Bu bloğun temel sözdizimi şöyledir:

 CASE koşul_1 SONRA if-koşul_1 END ... koşul_n SONRA if-koşul_n END if-none END

Aşağıdaki kod, bir CASE / THEN / END bloğunun kullanımını göstermektedir. Yığının en altında bir harf verildiğinde, onu dize eşdeğeri veya "Bilinmeyen harf" ile değiştirir:

 «DURUM DÜŞTÜ" A "== SONRA" Alfa "SON DUP" B "== SONRA" Beta "SON DUP" G "== SONRA" Gama "END" Bilinmeyen harf "SON DEĞİŞTİR DROP @ Orijinal harften kurtulun»

Bu kod, aşağıdaki iç içe geçmiş IF / THEN / ELSE / END bloğu eşdeğeriyle aynıdır:

 «DUP" A "== SONRA" Alfa "DEĞİLSE" B "== SONRA" Beta "DEĞİLSE" DUP "G" == SONRA "Gama" BAŞKA "Bilinmeyen harf" END END END SWAP DROP @ Kurtulun orijinal mektup »

Döngü ifadeleri

İÇİN / SONRAKİ

RPL, bir dizinden diğerine döngü yapmak için bir FOR / NEXT ifadesi sağlar. Döngünün indeksi, döngüde erişilebilen geçici bir yerel değişkende saklanır. FOR / NEXT bloğunun sözdizimi şöyledir:

index_from index_to FOR variable_name loop_statement NEXT

Aşağıdaki örnek, 1'den 10'a kadar sayıları toplamak için FOR döngüsünü kullanır. FOR döngüsünün dizin değişkeni "I" dir:

 «0 @ Yığın üzerinde sıfırla başlayın 1 10 @ 1'den 10'a döngü FOR I @" I "yerel değişkendir I + @ Devam eden toplam NEXT @ Repeat'e" I "ekleyin ...»

BAŞLAT / İLERİ

START / NEXT bloğu, bir başlangıç ​​indeksinden bir bitiş indeksine çalışan basit bir blok için kullanılır. FOR / NEXT döngüsünün aksine, döngü değişkeni mevcut değildir. START / NEXT bloğunun sözdizimi şöyledir:

 index_from index_to START loop_statement NEXT

İÇİN / ADIM ve BAŞLANGIÇ / ADIM

Hem FOR / NEXT hem de START / NEXT, kullanıcı tanımlı bir adım artışını destekler. Sonlandırıcı NEXT anahtar sözcüğünü bir artış ve STEP anahtar sözcüğü ile değiştirerek, döngü değişkeni varsayılan +1 değerinden farklı bir değerle artırılacak veya azaltılacaktır. Örneğin, aşağıdaki döngü, döngü indeksini 2 azaltarak 10'dan 2'ye geri adım atar:

 «10 2 BAŞLANGIÇ -2 ADIM»

SIRADA / TEKRARLA / SON

RPL'deki WHILE / REPEAT / END bloğu, döngünün başlangıcında koşul testi ile belirsiz bir döngüyü destekler. WHILE / REPEAT / END bloğunun sözdizimi şöyledir:

 WHILE koşulu REPEAT loop_statement END

DO / KADAR / SONA ERDİ

RPL'deki DO / UNTIL / END bloğu, döngünün sonunda koşul testiyle birlikte belirsiz bir döngüyü destekler. DO / UNTIL / END bloğunun sözdizimi şöyledir:

 DO loop_statement KOŞUL SONA KADAR

Notlar

1.^ "RPL" türetilmiştir Ters Lehçe Lisp orijinal geliştiricilerine göre,[7][8][9][10][11][12] 1987'de kısa bir süre için HP pazarlaması, backronym ROM tabanlı Prosedür Dili onun için[1][12][13]. Ek olarak, RPL baş harfleri bazen Ters Lehçe Mantığı veya Ters Lehçe Dili olarak yorumlanır, ancak bu adlar resmi değildir.[14]

Ayrıca bakınız

Referanslar

  1. ^ a b Patton, Charles M. (Ağustos 1987). "El Tipi Hesap Makineleri için Hesaplama" (PDF). Hewlett-Packard Dergisi. Palo Alto, Kaliforniya, ABD: Hewlett-Packard Şirketi. 38 (8): 21–25. Alındı 2015-09-12.
  2. ^ Boynuz, Joseph K. "RPL nedir?". Arşivlendi 2017-09-17 tarihinde orjinalinden. Alındı 2017-09-17.
  3. ^ Hewlett Packard. "Goodies Disk 4'ten RPLMan" (RPLMAN.ZIP). Alındı 2015-09-12.
  4. ^ Kuperus Klaas (2015-03-04). "HP 50g: Bir devrin sonu". Moravia. Arşivlenen orijinal 2015-04-02 tarihinde.
  5. ^ Kuperus Klaas (2015-03-06). "HP 50g o kadar iyi haber değil mi?". Moravia. Alındı 2016-01-01.
  6. ^ Wessman, Timothy James (2015-12-26). "Windows 10, HP 50g USB sürücülerinin yüklenmesine izin vermiyor". HP Müzesi. Alındı 2016-01-01.
  7. ^ Wickes, William C. (1988). RPL: Matematiksel Kontrol Dili. Proceedings Rochester Dördüncü Programlama Ortamları Konferansı. Rochester, New York, ABD: Institute for Applied Forth Research, Inc. s. 27–32. Mevcut birkaç işletim sistemi ve dil dikkate alındı, ancak hiçbiri tüm tasarım hedeflerini karşılayamadı. Bu nedenle yeni bir sistem geliştirildi ve bu sistem, İleri fonksiyonel yaklaşımı ile Lisp. Resmi olmayan bir şekilde RPL (Reverse-Polish Lisp için) olarak bilinen sonuçta ortaya çıkan işletim sistemi, ilk kez 1986 yılının Haziran ayında HP-18C İş Danışmanı hesap makinesi.
  8. ^ Wickes, William C. (1991-03-11). "RPL, Ters Lehçe Lisp'in kısaltmasıdır". www.hpcalc.org. Alındı 2015-09-12. RPL, Ters Lehçe Lisp anlamına gelir. RPL geliştirmenin ilk günlerinde, isimsiz sistemi "yeni sistem" olarak adlandırmaktan yorulduk ve geliştirme ekibinden biri, hem sevilen hem de nefret edilen "RPN" üzerinde bir oyun olarak "RPL" ile geldi. sonsuza kadar HP hesaplamalarının ayırt edici özelliği ve dilin İleri ve Lisp.
    RPL hiçbir zaman özellikle kamuya açık bir terim olmayı amaçlamadı; zamanında HP Journal makale (Ağustos 1987) HP 28C daha az tuhaf bir isim yaratma girişimi vardı - bu nedenle baş harfleri koruyan ancak daha ağırbaşlı bir sese sahip olan "ROM tabanlı prosedür dili". Geliştirme ekibi buna asla RPL dışında bir şey demez. Tercih ettiğiniz iki tam sözcük versiyonundan birini seçebilirsiniz. Ya da "Zengin İnsanların Dili" ne dersiniz? Bill Wickes, HP Corvallis.
  9. ^ Schoorl, André (2000-04-04) [1997]. "HP48 Sık Sorulan Sorular Listesi". HP Hesap Makinesi Arşivi. s. 69. Alındı 2015-09-12.
  10. ^ "RPL, Saturn, STAR, GL vb. İsimlerini duydum ... Nedir bunlar? - RPL". SSS: 2/4 - Donanım, Programlar ve Programlama. 4.62. comp.sys.hp48. 2000-04-14. 8.1. Alındı 2015-09-12.
  11. ^ Nelson, Richard J. (2012-04-04). "HP RPN Gelişiyor" (PDF). HP Çözme. Hewlett Packard (27): 30–32. Alındı 2015-09-12.
  12. ^ a b Mier-Jedrzejowicz, Włodek A. C. (Temmuz 1991). HP El Tipi Hesap Makineleri ve Bilgisayarları Kılavuzu (5 ed.). HHC 2011. ISBN  978-1888840308. 1888840307. RPL, Ters Lehçe Lisp anlamına gelir - önceki modellerin RPN hesap makinesi dilini, Lisp ve İleri Programlama dilleri. Bir süre HP, RPL harflerini "ROM tabanlı Prosedür Dili" nin kısaltması olarak açıkladı.
  13. ^ "HP, 35 Yıllık Elde Taşınabilir Hesap Makinesi Yenilikçiliğini Kutluyor". Hewlett-Packard Development Company, L.P. 2007. Arşivlenen orijinal 2007-03-17 tarihinde. Alındı 2015-09-13. 1987: HP-28C: İlk tam RPL hesap makinesi: 1980'lerin sonlarında, HP, son derece güçlü yeni hesap makineleri serisi için yeni bir programlama dili geliştirdi. RPN unsurlarını birleştirerek, Lisp ve İleri, HP, RPL (veya ROM tabanlı Prosedür Dili) adlı bir dil buldu.
  14. ^ Rechlin, Eric; Marangon Carlos. "HPedia: HP Hesap Makinesi Ansiklopedisi". www.hpcalc.org. Alındı 2020-04-20.

daha fazla okuma

Dış bağlantılar