Programlama Dili Teorisinde Araştırma ve Açık Zorluklar


32

Gibi bazı genel tartışmalar ruhuyla bu one, ben görüşler toplamak niyetiyle Konuyu açıyorum programlama dillerde araştırmalarda açık zorluklar ve sıcak konular nelerdir . Umarim bu tartisma programlama dillerinde arastirma gelecegine iliskin fikirleri bile getirebilir.

Bu tür bir tartışmanın, kendim gibi PL ile ilgilenen yeni öğrenci araştırmacılara ve zaten biraz da dahil olanlara yardımcı olacağına inanıyorum.


7
topluluk wiki?
Suresh Venkat

2
Bence bu soruyu ve "TCS Sınırları" sorusunun metnini alıntıladıysanız veya özetlediyseniz, cevaplayanları gerçekten geliştirecektir. Bu soruya verilen cevapların beklenen kapsamı belirsizken, diğer soru ne beklendiği konusunda daha kesin.
Vijay D

stackoverflow ile ilgili bu soruyu bir süre önce sorduğumda ... Oyum çok düşüktü ve sorum kapanmıştı!
Rorschach

Yanıtlar:


23

PL teorisinin genel amacı, programlama dillerini ve dillerin kullanıldığı teknik ekosistemi geliştirmek yoluyla büyük ölçekli programlama maliyetini düşürmek olduğunu düşünüyorum.

Aşağıda, sürekli dikkat çeken ve muhtemelen bir süre daha bunu yapmaya devam edecek olan PL araştırma alanlarının bazı yüksek düzeyli, biraz belirsiz açıklamaları bulunmaktadır.

  • Çoğu programlama dili araştırması, sıralı hesaplama bağlamında yapılmıştır ve şimdiye kadar, çoğu modern programlama dilinde (örneğin daha yüksek dereceli fonksiyonlar, (kısmi) tür çıkarımı, örüntü eşleme) kullanılabilen bir dizi özellik üzerinde tartışılabilir bir şekilde bir araya geldik. , ADT'ler, parametrik polimorfizm) ve iyi anlaşılmıştır. Eşzamanlı ve paralel hesaplama için programlama dili özellikleri hakkında henüz böyle bir fikir birliği yoktur.

  • Bir önceki noktaya göre, yazma sistemlerinin araştırma alanı, faaliyetlerinin çoğunun sıralı hesaplama ile ilgili olduğunu görmüştür. Eş zamanlı ve paralel hesaplamayı kısıtlayan izlenebilir ve kullanışlı yazım disiplinleri bulmak için bu çalışmayı genelleştirebilir miyiz?

  • Önceki noktanın özel bir örneği olarak, Curry-Howard yazışmaları yapısal kanıt teorisi ve işlevsel programlama ile ilgilidir ve bilgisayar bilimi ile (temelleri) matematiğin arasında sürekli teknoloji transferine yol açar, örneğin homotopi tipi teorisi etkileyici bir örnek olur. Eşzamanlı ve paralel hesaplamaya (bazı şekillerde) genişletilebilecek birçok önemli ipucu vardır.

  • Programların belirlenmesi ve doğrulanması, son yıllarda, örneğin Isabelle ve Coq gibi etkileşimli kanıt yardımcıları ile çok olgunlaştı, ancak teknoloji, günlük programlamada hala büyük ölçekte kullanılabilir olmaktan çok uzak. Bu durumu iyileştirmek için hala yapılacak çok iş var.

  • Yeni hesaplama şekilleri için programlama dilleri ve doğrulama teknolojisi. Ben değilim
    kuantum hesaplama özellikle burada düşünme ve biyolojik ilham hesaplama mekanizmaları, örneğin bkz burada .

  • Birleştirme. Programlama dilleri, türleri, doğrulaması için pek çok yaklaşım vardır ve bunlardan bazıları aralarında çok fazla örtüşme olduğu ve keşfedilmeyi bekleyen daha soyut bir yaklaşım olduğu kanısındadır. Özellikle, biyolojik olarak esinlenmiş hesaplama mekanizmalarının bizi ezmeye devam etmesi muhtemeldir.

PL araştırmasının bir sorunu, önerilen bir çözümün işe yarayıp yaramadığını derhal söyleyebileceğimiz P / NP sorusu gibi açık açık sorunların olmamasıdır.


1
Kuantum hesaplama ve kuantum programlama dilleri ekleyebilirsem, kuantum hesaplama olmasa bile, bu programlama modelinde bazı programlama kavramlarının nasıl aktarılabileceği üzerine yapılan çalışma, eğer başka bir şey yapılmadıysa, doğal dilde programlama, bulanık programlama ve hatta fiziksel hesaplama ve fiziksel programlama (moleküler seviyenin ötesinde doğrudan maddeye programlama)
Nikos M.

1
@NikosM. Katılıyorum, QC büyük bir anlaşma ve yoğun bir şekilde soruşturuluyor. Bu makale , sadece soyutlama ile ortaya çıkarılan kuantum mekaniğinin temelleri ile programlama dili teorisi arasındaki şaşırtıcı bağlantıyı göstermektedir.
Martin Berger

Güzel, belki bir soru bu tür resmi (ya da resmi olmayan) ilişkileri ele alabilir
Nikos M.

11

Programlama dili araştırmasını sınırlayan bazı varsayımları listeleyim. Bunları kırmak zordur, çünkü programlama dillerinin ne anlama geldiğinin önemli bir parçası olduklarını veya alternatifleri araştırmanın “artık programlama dilini programlama değil” olacağını düşünüyorlar. Her varsayımda sınırlandırıcı etkilerini listeliyorum.

  1. Programlar sözdizimsel yapılardır.

    • Gerçek programcılar kaynak kod oluşturmak için asla iPad kullanmazlar. Yapsalar bile, Emacs, Eclipse, NetBeans, XCode, vb. Kadar verimli olamazlar.
    • Program oluşturmanın alternatif yollarını araştırmak, programlama dil tasarımını değil, grafiksel kullanıcı arayüz tasarımını veya eğitimdir (bkz. Scratch).
  2. Kısmen yazılı bir program yürütülemez.

    • En azından, yürütme eksik bir parçaya ulaştığında çalışma zamanı hatası meydana gelir.
    • Bitmemiş programları çalıştırmanın ne yararı olabilir?
  3. Programlar, bilgisayarlara talimat vermekle ilgilidir.

    • Programlama dili tasarımı, yasaların nasıl yazılacağı ve düzenleneceği hakkında bir şey söylemez. apliances.
    • Bakteriler program yazmazlar.
  4. Programlama enginnering gibidir ve sıradan insanlar tarafından yapılamaz.

    • Sıradan insanlar sözdizimini, kavramları, araçları bilmediğinden programları yazamazlar.
    • Sıradan insanların program yazmasını mümkün kılsak bile, sadece önemsiz şeyler yazabilecekler.

Sanırım devam edebilirim.


2
James: mükemmel, teyzemi bilgilendiririm. Martin: bu tam da benim bahsettiğim türden bir şey değil - metinsel olmayan programlama inandırıcı bir şekilde kurulmamıştır çünkü PL topluluğu bunu ciddiye almamaktadır, çünkü inandırıcı bir şekilde kurulmamıştır. Ancak, insanların ekranlara kelimeler yazmak için yapılmadığı bana çok açık görünüyor. Birşeyler atmakta ve yaban mersini toplamakta iyiyiz.
Andrej Bauer

1
@AndrejBauer Bilimsel bir argüman olarak, "Benim için oldukça açık" düzelme ötesinde değil. Programlama dilleri olan ancak son zamanlardaki bir örnek olan yazma sistemlerinin tarihine bakarsanız, tarihi yörüngeleri logoik yazıdan uzak olmuştur. Belki de dizeleri ayrıştırma yeteneğimiz yaban mersininden daha önemlidir. Alfabetik yazı binyıllar boyunca gelişti, bu nedenle büyük, kolayca düzeltilebilir hatalar içermesi muhtemel değil. Bu, ASCII tabanlı lineer karakterlerden daha iyisini yapabileceğimize inandığım için mutluyum. Sanırım bizden bir süre önce olacak.
Martin Berger

1
Cevabımın amacı "kutunun dışında düşünmek". PL araştırmalarındaki gizli varsayımları incelemek ve PL araştırmalarının potansiyelini nasıl sınırlandırdıklarını görmek.
Andrej Bauer

4
@AndrejBauer, kapsamı POPL ile sınırlandırmanın bir hata olduğunu düşünüyorum - bu tür çalışmaların çoğu OOPSLA'da veya ICSE'de, hatta CHI'da yapılır. Yeni bir resmi yaklaşım olmadığı sürece POPL ilgilenmiyor, ancak POPL bütün PL topluluğu değil.
Sam Tobin-Hochstadt 11:13

2
@DominicMulligan: Elbette, bunların hepsi çok hoş fikirlerdir. Yorumlarımla, programlamanın ne olduğu algısını değiştirmeye çalışıyorum. Eğer teorik fikirler pratikte iyi bir şekilde kullanılabilirse ("sıradan" programcıların onları günlük yaşamda kullanacaklarını kastediyorum), o zaman kazandık.
Andrej Bauer

0

Merak ettiğim bir sorun var. Açık bir meydan okuma olarak nitelendirilip getirilmediği hakkında hiçbir fikrim yok.

Matematiksel bilgi zamanla istikrarlı bir şekilde büyümektedir. Teorik temeller, kavramlar, gösterimler ve ispatlar yüzyıllar boyunca gelişmiştir. Matematikçiler, küresel tutarlılığını zorunlu olarak herhangi bir zamanda sistematik ve resmi bir şekilde kontrol etmeden bir araya getirmeyi başardılar (ancak bunu yapma girişimleri vardı).

Programlama dillerinin ve program kütüphanelerinin zaman içinde benzer şekilde toplanmasını ve gelişmesini beklemeliyiz. Bilgisayarlar tutarlılık konusunda daha resmi ve talepkar olabileceğinden, ne tür araçlar programlama sonuçlarının ve kitaplıkların bütünlüğünü tutarlı ve etkin bir şekilde kullanılabilir kılmak için yönetmeye yardımcı olabilir. Her yeni programlama dili için kütüphaneleri tekrar yapmak zorunda mıyız? Neden bir dil seçmeliyiz çünkü bir programlama ortamı olarak kendine özgü nitelikleri yerine amaçlanan uygulama için doğru kütüphaneleri var?

Farklı bir konuda, şu soruda fikir edinebilirsiniz: Programlama dilleri daha doğal dillere benziyor mu? Bu fikrin pek çok teorik bilgisayar bilimcisine hitap etmeyebileceğinin farkındayım, ancak yine de farklı konulara veya farklı bir bakış açısına bakarak faydalı olabilir. Yayınlanan birçok fikre katılıyorum, ancak bunun için tartışma bu.


Tutarlılık fazla okunuyor.
Andrej Bauer

1
Mütevazı bir öneri, ancak bu konuda çok fazla anlaşma olmadığını görebiliyorum. Yine de, en azından benim için, neden ile ilgili birkaç açıklayıcı kelime söylemek daha yararlı olabilir. Belirsiz olduğumda, matematiğin tutarsız olabileceğini, yalnızca tutarlı araçlarla (zorunlu olarak) toplanmasının zorunlu olmadığını (tarihçiler daha iyi söyleyeceğini) söylememi istemedim. CS açısından, toplanmanın zorluğu konusunda yanılmış olabilirim (bu konuda hiçbir teknik çalışma yapmadım), ancak yalnızca kullanıcı deneyimini ve TCS tarafından üretilen dillere dolaylı olarak zarar veren, genel olarak duyulan bakış açısını ilişkilendiriyorum.
babou

1
Benim düşüncem çoğunlukla tutarlılığın tamamen ya da hiç olmayan bir fikir olduğu gerçeği ile ilgilidir, oysa gerçekte çoğu yazılım "çoğunlukla tutarlıdır". Ve yine de onu kullanıyor ve yararlı buluyoruz. O zaman niçin teorisyenler pratik olarak ulaşılamaz ve çok idealist bir kavram olarak görünen şeye takıntılılar? Tutarlılığı daha az önemsiz bir şekilde ölçebilmek daha iyi görünüyor.
Andrej Bauer

@AndrejBauer - Yanıtladığınız için teşekkür ederiz. Yazdıklarına uygulandığı gibi ifadenizden biraz şaşırdım. Buradaki hiçbir şey bir tür mutlak tutarlılık biçimini desteklememektedir, ancak yalnızca toplanmayı gelişen ve değişen bir bağlamda anlamlı kılacak uygulanabilir bir yaklaşımın dileğidir. Söylediğin gibi, çoğunlukla tutarlı. Tutarlı olanın amaç için ne anlama geldiğini bulmak fikrin bir parçasıydı ve önemsiz ya da başka türlü bir cevap önermedim. Hiç takıntılı bir teorisyen olmamıştım ve cevabınızı nerelerde tutabileceğimizi göremiyorum.
babou

1
Sanırım sadece "saf kuramcılar" hakkında bağırıyordum, hepsi bu. Lütfen beni görmezden gel.
Andrej Bauer

0

Geçtiğimiz yüzyıl boyunca uygulamalı ve teorik açıdan programlama dillerinde muazzam bir yenilik ve patlama yaşandı, ancak bunun bilgisayar tarihinde "evrimsel bir patlamaya" benzeyen tek ve tek seferlik bir olay olduğu söylenebilir. (ayrıca bkz. "neden bu kadar çok programlama dili var?" cs.se) ve bu nedenle gelecek bu açıdan geçmişte olmayacak. Bununla birlikte, oyundaki / geliştirilmekte olan bazı uzun vadeli mevcut eğilimler vardır.

  • Programlama / yazılım karmaşıklığı ve yönetme / minimize etme / azaltma / azaltma yolları, dil tasarımını her zaman etkilemiş bir konudur ve oldukça yaygın olan çok büyük / karmaşık yazılım sistemleriyle mevcut çağda muhtemelen daha da önemlidir. OOP tasarım mantığının en önemli yönlerinden biriydi, ancak şimdi oldukça karmaşık OOP sistemlerimiz var! Odaklanmaya odaklanmak , Brooks'un efsanevi adam-ay gibi birçok alanda hala çok geçerli bir bakış açısı olan, muhtemelen yazıldığından daha alakalı bir bakış açısı olan klasiklere yol açtı .

  • paralellik. donanımda daha fazla paralelliğe (örneğin, çok çekirdekli vb.) doğru bir kayma var ve saat hızı artışları artık performansı artırmak için yeterli değil. Bu kayma 2000'li yılların ortalarında meydana geldi ve dil araştırması / tasarımı üzerinde büyük bir etkiye sahip. Paralellik her zaman bir konuydu, ancak yeni bir öncül / aciliyet var. Ve paralellik programlamanın aşırı karmaşık ve zor olduğu konusunda bazı yaygın düşünce / fikir birliği var ve belki de farklı teorik yaklaşımların bazılarını hafifletebileceğini düşünüyoruz. Bu konuda güzel bir referans: Paralel Hesaplama Araştırmasının Peyzajı: Berkeley'den Bir Bakış

  • veri madenciliği / büyük veri . bunlar programlama dili tasarımını etkiliyor. Ayrıca veritabanı mimarisindeki yeni yönelimler programlama dillerini dalgalandırıyor / etkiliyor.

  • supercomputing , dil tasarımı üzerinde önemli bir etkiye sahiptir ve ayrıca örneğin MapReduce gibi yeni dillerle paralellik ve veri madenciliği / büyük verilerle örtüşüyor .

  • görsel / veri akışı programlama . bu tür "dillerde" bir artış olmuştur (bir anlamda görsel programlama aslında bir çok anlamda "dillerden" ayrıştırılmaktadır). Ayrıca paralellik ile güçlü çapraz tozlaşma.

  • AI . bu daha çok yalnız bir joker karakterdir ve şu anda bilgisayar dillerini ve programlamayı nasıl etkileyeceği çok net değil, ancak muhtemelen çok önemli olacaktır. Geçmişte [farklı bir biçimde] prolog gibi tüm dillere yol açtı . Çarpıcı sonuçlarla nasıl uygulanabileceğinin erken bir göstergesi, Genetik Algoritmalar / Genetik Programlama'dır. .

Tate tarafından Java'nın Ötesinde "programlama dillerinin geleceği" satırları boyunca bazı yararlı fikirlere sahip olabilecek bir referans . (tartışmalı olsa da) belki Java'nın (tartışmasız varolan en karmaşık / kapsamlı programlama dillerinden biri) belki de yaşını göstermeye başladığını ve uzun vadede yerini doldurmak için ortaya çıkan yeni dillerin / yaklaşımların erken belirtileri olduğunu düşünmektedir.

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.