İstisnaları kim tasarladı?


22

İstisnalar ve istisnaların işlenmesi nereden geldi?

.NET'in nasıl kullandığını seviyorum, C ++ 'ı nasıl desteklediğini seviyorum (ancak kütüphaneler maalesef dönüş kodunu kullanıyor veya bunun yerine C ile yazılmıştır). Tüm yeni dillerde standart olduğunu biliyorum, ama önce kim tasarladı ya da nereden geldi?

C ++ onu kullanan ilk dil midir? Daha yaşlı olan başka hiçbir şey bilmiyorum.


7
Görünüşe göre, Plankalkül 1940'larda istisnai durumdaydı, ancak ilk derleyici yaklaşık 50 yıl sonraya kadar yoktu. ( en.wikipedia.org/wiki/Plankalk%C3%BCl )
Sinir

C ++ 'ın kitlelere istisnalar getiren ilk fildişi kule dili olmadığını söyleyebilirsiniz. Fakat konsept, başından beri var (ya da uzun zamandır, istediğini al).
Martin York

11
Boğulacak birini mi arıyorsunuz? Şaka yapıyorum ...
Mark Canlas

1
Donanım istisnalarından etkilerini dikkate almalı mıyız?
rwong

1
@FrustratedWithFormsDesigner: Çenem yere çarptı. Konrad Zuse’u biliyordum ama bunu bilmiyordum. O hepimizin babası.
Bob Murphy

Yanıtlar:


20

İstisnaları kaldırmak ve hapsetmek uzun zamandan beri var. Bu site, PL / I'de istisnalar getirildiğini söylüyor: http://www.math.grin.edu/~rebelsky/Courses/CS302/98S/Outlines/outline.02.html

Bu, 1967’de olan, bu sayfaya göre (bilgisayar dilleri ve özellikleri hakkında kapsamlı fakat ayrıntılı bir tablo içermemektedir): http://community.borland.com/article/0,1410,22741,00.html

Birçok dil bu tekniği yakaladı - ADA, ALGOL, FORTRAN, ML [...]

Buradan alıntı yaptım .

Wikipedia, PL / 1’de istisna yönetimi hakkında daha fazla ayrıntıya sahip . Bu sayfa aynı zamanda ilk önce PL / 1 anlamına gelir. Tabii ki, bu bilimsel bir kanıt değil :-)

Kimler PL / 1'i tasarlayanlara gelince, makale isminden bahsetmiyor, sadece IBM'deki çeşitli komiteler isim vermiyor.


PL / I'deki yürütmeler gerçekten belirli olay türleriydi. Kendi etkinliklerinizi tanımlayabilir ve yükseltebilir ve onları yakalamak için etkinlik işleyicileri yazabilirsiniz. ISTR, bazı sistem tesislerinde (VTAM?) Bunun için bir miktar destek vardı, bu yüzden aslında olay odaklı programlar yazabiliyordunuz.
TMN

C ++ 'dan önce istif açma işleminde düzenli temizlik için bir tesis sağlayan herhangi bir dil düşünebiliyor musunuz?
supercat,

FORTRAN'da istisnalar? Hadi ama ...
Michał Kosmulski

6

Hof Mössenböck ve Pirkelbauer (kendi 1997'dekilere metaprogramming kullanılarak işleme sıfır Asma özel durum John B. Goodenough 1975 atıfta istisnalar kavramı yetmişli önerildi teyit) durum kullanım: Sorunlar ve önerilen bir gösterim kağıt İletişim ACM . İçinde, geri aramaları kaydetme genel fikri ile modern istisnalarla başa çıkmakta ve önerilen notasyonu modern Attribute meta veri spesifikasyonlarına göre daha fazla gözükmektedir try/catch, ancak (ya da en azından 2 numaralı bölümü) istisnai durumun ele alınmasına genel bir bakış niteliğindedir. orta yetmişli.

Belki de dikkat edilmesi gereken, Alef'teki ilkel bir blok şekli olarak görebilecekleri raise/rescuemekanizmadır , ancak Stroustroup'un Zeus'un Athena'sı gibi gözüktüğünden tamamen kurulduğunu düşünürler.catch


3
önceki cevabı okudun mu İstisnalar 1967 istisnaları: atıfta bulunduğunuz tarihten sekiz yıl önce
gnat

4
Yaptım, ancak C ++ 'da istisnaların ortaya çıkışı ile PL / I'deki ON CONDITION ifadeleri arasındaki tarihin bir kısmını izlemeye çalışıyordum. Sanırım eklemem istenmeyen biriydi?
Wtrmute

1
Aslında, istisnaların ele alınmasıyla ilgili birçok makale, genel bakış, tartışma ve modern istisna mekanizması üzerindeki etkisi için yeterince iyi olduğuna işaret eder - bunun önemsiz olması düşünülmelidir. Öte yandan, "istisnaların ele alınması" birçok dilde farklı anlamlara sahiptir ve bunun Goodenough'un yayınlanmasından önce özel olarak doğru olmasını bekliyorum. Bunu akılda tutarak, bu sorunun muhafazakar bir cevabı, koşullu bir atlayışa kadar onu da izleyebilir.
Thiago Silva 2

@gnat: Fikri 1940'lara izleyen yorumu okudunuz mu? Bu yorum olmasa bile, soru, "istisnalar kullanıldığında en erken tarihi adlandırma" değil, "istisnalar nereden geldi?"
Michael Shaw,

@MichaelShaw, bahsettiğim cevabı, bahsettiğiniz yorumla aynı anda gönderildi ve ayrıca sorulan soruyu ele almaya çalıştı ("ilk"). Buna karşın, bu yayın görünüşte daha önceki kanıtları açıkça
görememiştir
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.