PL/I Programlama Dili (Programming Language One, pronounced)
PL / I'nin başlıca alanları veri işleme, sayısal hesaplama, bilimsel hesaplama ve sistem programlamadır; Tekrarlanan, yapılandırılmış programlama, bağlı veri yapısı kullanımı, sabit nokta, kayan noktalı, karmaşık, karakter dizesi işleme ve bit dizesi işleme destekler. Dil sözdizimi İngilizce benzeri ve karmaşık veri formatlarını tanımlamak için uygundur ve bunları doğrulamak ve değiştirmek için geniş bir işlev kümesi bulunur.
1950'lerde ve 1960'ların başında, iş dünyası ve bilim kullanıcıları, farklı bilgisayar donanımı için farklı programlama dilleri kullanarak programlandı. Bilimsel kullanıcılar General Interpretive Program (GIP), Fortran, ALGOL, GEORGE ve diğerlerinde programlanmışken iş dünyası kullanıcıları, COMtran'la Autocoders'tan COBOL'a geçiyordu. IBM System / 360 [19] (1964'te duyuruldu ancak 1966 yılına kadar teslim edilmedi), mevcut tüm IBM mimarilerini geçersiz kılarak her iki kullanıcı grubu için ortak bir makine mimarisi olarak tasarlandı. Benzer şekilde IBM, tüm kullanıcılar için tek bir programlama dili istedi. Fortran'ın ticari programcıların ihtiyaç duyduğu özelliklere sahip olmasını umduğunu umuyordu. Ekim 1963'te, New York'tan üç IBM kullanıcısından ve IBM bilimsel kullanıcı gruplarından SHARE'den üç üyeden oluşan ve bu uzantıları Fortran'a önermek üzere kurulan bir komite kuruldu [4]. Fortran'ın kısıtlamaları göz önüne alındığında, bunu başaramadılar ve ALGOL'da "NPL" olarak etiketlenmiş gevşek bir "yeni programlama dili" tasarladılar. Bu kısaltma, Birleşik Krallık Ulusal Fizik Laboratuarı ile çakıştı ve kısaca MPPL (Çok Amaçlı Programlama Dili) ve 1965'te PL / I (bir "Bir" Roma rakamı ile) ile değiştirildi. İlk tanım Nisan 1964'te çıktı.
IBM, NPL'yi bir başlangıç noktası olarak aldı ve tasarımı ilk derleyicinin yazabileceği bir düzeye tamamladı: NPL tanımı kapsam ve ayrıntı olarak eksikti. PL / I dilinin kontrolü [8] başlangıçta New York Programlama Merkezi'nde, daha sonra IBM UK Laboratory, Hursley'de sağlanmıştır. SHARE ve GUIDE kullanıcı grupları, dilin genişletilmesine katıldı ve IBM'in PL / I Projeleri aracılığıyla dili denetleme sürecinde rol aldı. Böyle büyük bir dili tanımlama deneyimi, PL / I'nin resmi bir tanımına ihtiyaç duyulduğunu gösterdi. 1967'de IBM Laboratuvar Viyana'da bir proje belirsiz ve eksiksiz bir tanımlama yapmak için kuruldu. [9] Bu gelişme için ilk büyük ölçekli Resmi Yöntemlerden biri haline geldi, VDM.
Fred Brooks, PL / I'nin CHARACTER veri tipine sahip olmasını sağlamakla alakalı.
Dil ilk olarak 1965 yılından New York'ta yazılmış ve 1967'den Hürriley'de yazılan "PL / I Dil Özellikleri. GY33-6003" ile değiştirilen el kitabı "PL / I Dil Özellikleri. C28-6571" de ayrıntılı olarak belirtilmiştir. IBM, PL / I'i altmışların sonlarında ve yetmişlerin başlarında geliştirerek GY33-6003 el kitabında yayınlayın. Bu kılavuzlar Multics grubu ve diğer erken uygulayıcılar tarafından kullanılmıştır.
İlk derleyici 1966'da teslim edildi. PL / I Standardı 1976'da onaylandı.
PL / I için hedefler, dilin erken gelişimi boyunca gelişti. COBOL'un kayıt tutma ve rapor yazma yetenekleri ile rekabet edebilirlik gerekiyordu. Dilin "yararlanma kapsamı", sistem programlamayı ve olay odaklı programlamayı içeriyordu. PL / I için ek hedefler şunlardı:
Derlenmiş kodun performansı Fortran'ınkiyle rekabet edebilir (ancak bu elde edilemedi).
Genişletilebilir, yeni donanım ve yeni uygulama alanları için
Programlama sürecinin üretkenlik ve zaman ölçeklerini geliştirin, programcıdan derleyiciya çaba sarf edin
Makinadan bağımsız olun ve ana donanım ve işletim sistemi aralıklarında etkin bir şekilde çalışın
Bu hedefleri gerçekleştirmek için, PL / Ben çağdaş dilden fikirler ödünç verirken önemli miktarda yeni yetenekler ekledim ve ayırt edici özlü ve okunabilir sözdizimi ile dağıttım. Birtakım ilke ve yetenekler, dile karakterini vermek için bir araya geldi ve hedefleri gerçekleştirmede anahtar oldu:
Algoritma alt semantiği (özyineleme dahil) olan blok yapısı, Algol 60. Bağımsız değişkenler, çağrı kullanılarak başvuru yoluyla, gerektiğinde değerler için kukla değişkenler (değer çağrısı) kullanılarak geçirilir.
Çok çeşitli hesaplama verileri türleri, program kontrol veri türleri ve veri yapısı formları (güçlü yazım).
Yordam parametreleri tarafından kapsamların devralınan diziler ve dizeler için dinamik kapsamlar.
İfadeler, bildirimler ve izin verilen kısaltmalar içeren ifadeler için özlü sözdizimi. 60 glif karakter seti için uygundur ve 48'e kadar alt ayarlanabilir.
Bazı karmaşıklıkları gizlemek ve tuş vuruşlarını en aza indirirken dilin genişletilmesini kolaylaştırmak için deyimler, seçenekler ve bildirimlerdeki varsayılanların kapsamlı bir yapısı.
Yapısal programlamaya iyi destek veren güçlü iterasyon işlemi.
Ayrılmış sözcükler olmamalıydı (ancak, TARİH ve ZAMAN işlev adı bu hedefe uyması imkansız olduğu kanıtlandı). Var olan programları geçersiz kılmaksızın yeni öznitelikler, bildirimler ve bildirim seçenekleri PL / I'ye eklenebilir. IF, THEN, ELSE ve DO bile saklı değildir.
Ortogonallik: her yetenek, diğer yeteneklerden bağımsız olmalı ve anlamlı olan her yerde diğer yeteneklerle özgürce birleştirilmelidir. Her yeteneğin anlamlı olduğu tüm bağlamlarda bulunması, olabildiğince yaygın olması ve "keyfi kısıtlamalardan" kaçınması. Ortogonallik, dili "büyük" hale getirmeye yardımcı olur [açıklama gerekir]
Çalışma zamanında istisnai koşulları kontrol etmek ve engellemek için özel durum işleme yetenekleri.
Programlar, kaynak kodu bölümlerini tam programlara uyarlamak ve birleştirmek için standartın bir parçası değil, kapsamlı derleme zamanı olanakları (ayrı makrolar) ile ayrı ayrı derlenebilir bölümlere ayrılmıştır. Ayrı derlenmiş prosedürleri tek bir programa bağlamak için harici adlar.
Hata ayıklama olanakları dile entegredir.