Cevabım gerçekten sadece Gilles'in, benim yazmadan önce okumadığım bir ayrıntı. Belki de yardımcı olur.
Genelde programlama dili teorisi ve özellikle süreç hesabı ile ilgili olarak programlama dilleri çalışmasının iki boyutu arasında bir ayrım ile sorunuzu cevaplamaya çalışmama izin verin.
İkincisi tipik olarak, programlama dillerini bir ürün olarak sunmak amacıyla endüstride gerçekleşir. Oracle'da Java ve Microsoft'ta C # geliştiren takımlar buna örnektir. Aksine, saf araştırma ürünlere bağlı değildir. Amacı, programlama dillerini gerçek ilgi konusu olan nesneler olarak anlamak ve tüm programlama dillerinin altında yatan matematiksel yapıları araştırmaktır.
Farklı hedefler nedeniyle, programlama dili teorisinin farklı yönleri saf araştırma ve ürün odaklı Ar-Ge ile ilgilidir Aşağıdaki resim nerede önemli olduğunu gösterebilir.
Bu noktada iki boyutun neden bu kadar farklı göründüklerini ve yine de birbirleriyle nasıl ilişkili olduklarını sorabilirsiniz.
Kilit öngörü, dil araştırma ve geliştirmenin programlanmasının çeşitli boyutlara sahip olduğudur: teknik, sosyal ve ekonomik. Endüstri neredeyse tanım gereği, programlama dillerinin ekonomik getirisiyle ilgilenmektedir. Microsoft ve arkadaşları yüreklerinin iyiliğinden dil geliştirmezler, çünkü programlama dillerinin onlara ekonomik bir avantaj sağladığına inanırlar. Ve bazı programlama dillerinin neden başarılı olduğunu derinlemesine araştırdılar ve diğerleri, görünüşte benzer veya daha gelişmiş özelliklere sahip değil. Ve tek bir neden olmadığını buldular. Programlama dilleri ve ortamları karmaşıktır ve belirli bir dili benimsemenin veya görmezden gelmenin nedenleri de öyle. Ancak, bir programlama dilinin başarısı için en büyük faktör, programcıların zaten yaygın olarak kullanılan dillere tercihli olarak bağlanmasıdır: ne kadar çok insan bir dili kullanırsa, daha fazla kütüphane, araç, öğretim materyali bulunur ve bir programcı o kadar verimli olur bu dili kullanıyor olabilir. Buna ağ etkisi de denir. Diğer bir neden, bireyler ve kuruluşlar için yüksek maliyetli anahtarlama dillerinin olmasıdır: özellikle deneyimli olmayan bir programcıya dil hakim olmak ve tanıdık dillere semantik mesafe büyük olduğunda, ciddi, zaman alıcı bir çabadır. Bu gerçekler göz önüne alındığında, yeni diller neden hiç çekilmez? Şirketler neden yeni diller geliştiriyor? Neden sadece Java veya Cobol ile kalmıyoruz? Sanırım bir dilin başarılı olmasının birkaç önemli nedeni var,
Yerinden edilecek herhangi bir görevi olmayan yeni bir programlama alanı açılır. Birincil örnek, Javascript'i eşzamanlı yükselişi olan web'dir.
Dil yapışkanlığı. Bununla dil değiştirmenin yüksek bedeli demek istiyorum. Ancak bazen programcılar farklı alanlara geçer, onlarla bir programlama dili alır ve yeni alandaki eski dilde başarılı olurlar.
Bir dil, ciddi finansal ateş gücüne sahip büyük bir şirket tarafından itilir. Bu destek benimseme riskini azaltır, çünkü erken benimseyenler dilin birkaç yıl içinde hala destekleneceğinden makul bir şekilde emin olabilirler. Buna iyi bir örnek C #.
Bir dil, zorlayıcı araçlar ve eko-sistemle gelebilir. Burada da C # ve .Net ve Visual Studio eko-sistemi örnek olarak verilebilir.
Eski diller yeni özellikler kazanır. Java, her bir yinelemede fonksiyonel programlama geleneğinden daha iyi fikirler alan akla geliyor.
Son olarak, yeni bir dilin kendine özgü teknik avantajları olabilir, örneğin daha anlamlı, daha iyi sözdizimi, daha fazla hata yakalayan yazım sistemleri vb.
Bu arka plan göz önüne alındığında, saf programlama dili araştırması ile ticari programlama dili gelişimi arasında bir miktar kopukluk olması şaşırtıcı olmamalıdır. Her ikisi de, özellikle büyük ölçekli yazılımlar için yazılım inşasını ve evrimini daha verimli hale getirmeyi amaçlasa da, endüstriyel programlama dili çalışmaları, kritik bir kitleye ulaşmak ve ağ etkisini elde etmek için hızlı benimsenmeyi kolaylaştırmakla daha fazla ilgilenmelidir. Bu, çalışan programcıların önem verdiği şeylere yönelik bir araştırma odağına yol açar. Bu kütüphane kullanılabilirliği, derleyici hızı, derlenmiş kod kalitesi, taşınabilirlik vb. Bugün uyguladığımız gibi süreç hesabı, ana akım projelerde çalışan programcılar için çok az işe yarar (her ne kadar gelecekte değişeceğine inanıyorum).
λπβ- fonksiyonel programlama için azaltma, mantık programlama için çözünürlük / birleştirme, eşzamanlı hesaplama için ad geçirme). Scala gibi bir dilin tam yazımsal çıkarsamaya sahip olup olmadığını anlamak için JVM hakkında endişelenmemize gerek yoktur. Gerçekten de JVM hakkında düşünmek, türden çıkarımın daha iyi anlaşılmasını engelleyecektir. Bu nedenle, hesaplamanın küçük çekirdek taşlara soyutlanması hayati ve güçlüdür.
Bu nedenle, dil araştırmasını, insanların oyuncaklarla oynadığı büyük bir sanal alan olarak düşünebilirsiniz ve belirli bir oyuncakla oynarken ilginç bir şey bulurlar ve oyuncağı iyice araştırırlarsa, ilginç oyuncak ana akım endüstriyel kabulüne doğru uzun yürüyüşe başlar. . Uzun yürüyüş diyorum çünkü programlama dili araştırmacısı tarafından icat edilen dil özellikleri geniş çapta kabul görmeden on yıllar sürüyor. Örneğin, çöp toplama 1950'lerde tasarlandı ve 1990'larda Java ile yaygın olarak kullanılabilir hale geldi. Desen eşleme 1970'e kadar uzanır ve sadece Scala'dan beri yaygın olarak kullanılmaktadır.
Proses hesabı özellikle ilginç bir oyuncaktır. Ancak ayrıntılı bir şekilde araştırılamayacak kadar yeni. Bu on yıl daha saf araştırma gerektirecek. Şu anda süreç teorisi araştırmalarına devam eden şey, programlama dili araştırması, (sıralı) türler teorisi ve başarı ileten eşzamanlılık için türler teorisini geliştirmektir. Hindley-Milner, sıralı programlama için orta düzeyde anlamlı ifade sistemleri, şimdi iyi anlaşılır, her yerde bulunur ve çalışan programcılar tarafından kabul edilir. Eşzamanlı programlama için orta derecede etkileyici türlere sahip olmak istiyoruz. Bununla ilgili araştırmalar 1980'lerde Milner, Sangiorgi, Turner, Kobayashi, Honda ve diğerleri gibi çoğunlukla öncü veya dolaylı olarak doğrusal mantıktan gelen doğrusallık fikrine dayanan öncüler tarafından başladı. Son birkaç yılda faaliyette büyük bir artış görüldü ve bu yukarı yönlü yörüngenin öngörülebilir gelecek için devam etmesini bekliyorum. Ayrıca, bu çalışmanın, süreç hesabı konusunda eğitim almış genç araştırmacıların endüstriyel Ar-Ge laboratuvarlarında çalışacakları pragmatik bir nedenden ötürü, ürün odaklı Ar-Ge'ye sızmaya başlamasını bekliyorum, aynı zamanda CPU ve bilgisayar mimarisinin evrimi nedeniyle ardışık hesaplama biçimlerinden.
Özetle, süreç hesabı gibi en son programlama dili teorisini kendi dil oluşturma çalışmalarınızda yararlı bulamadığınızdan endişe etmem. Bunun nedeni, en ileri teorinin mevcut programlama dillerinin endişelerini gidermemesi. Gelecekteki dillerle ilgilidir. 'Gerçek dünyanın' yetişmesi biraz zaman alacaktır. Bugün için dil oluşturmak için kullandığınız bilgi, geçmişin programlama dili teorisidir. Proses hesabı hakkında daha fazla bilgi edinmenizi öneririm, çünkü bu teorik bilgisayar biliminin en mevcut alanlarından biridir.