Homotopi türü teorinin programlamadaki pratik etkileri nelerdir?


11

JavaScript / Ruby dünyalarından geldikten sonra Haskell'i öğrenmeye başladım. Https://github.com/HoTT ve okumaya çok hevesli olduğum Homotopy Type Theory kitabına rastladım .

Bununla birlikte, matematik ve tür teorisi kavramlarını öğrenirken öğreneceğim, bu yüzden homotopi tür teorisinin pratik bir programcı için ne anlama geldiğini anlamadan önce uzun zaman alacak gibi görünüyor.

Homotopy tip teorisinin uygulamada programlama üzerinde nasıl bir etkisi olacağını açıklayabilir misiniz? Örneğin, bazı şeylerin yazılmasını kolaylaştırır mı? Varsa, hangi şeyler? Yoksa programlamada daha önce mümkün olmayan yeni şeyler yapmanıza izin verecek mi? Varsa, hangi şeyler?

Teşekkürler, kafamı daha temel bir seviyeye sarmayı dört gözle bekliyorum.


Programcıların pratik olmasını her zaman tahakkuk ettirmeyeceğini ve her zaman anlaşılmaz kalacağını umuyorum. En iyi ihtimalle, daha hızlı derleyiciler veya matematiksel futan yararlanan büyülü kara kutular alabiliriz.
Telastyn

Haha ben de öyle düşünüyorum. Yine de merak ediyorum, cevap bu mu yoksa söylediklerinin ötesinde bir şey var mı? Örneğin, veritabanları bundan yararlanabilir mi? Ya da bunun gibi bir şey.
Lance Pollard

1
Hiç bir fikrim yok. Özeti okudum ve hemen akıl almaz akademik mumbo-jumbo için kovaya bıraktım.
Telastyn


4
@Telastyn: Portekizce bir kitap indirirseniz, dili öğrenmeye çalışmadığınız sürece kitap da anlaşılmaz olacaktır. Portekiz kitaplarını neden mumbo-jumbo aşağılayıcı terimiyle açık bir şekilde kınıyor ? Gödels'in ilkel özyinelemeli işlevler getirme motivasyonu son derece akademikti, özellikle dünya 30'lu yıllarda herhangi bir program bile çalıştırmadı. Sadece pratik bir programcı olduğu için akademik konular sizin yeteneklerinize "her zaman anlaşılmaz kalacaktır" diye düşünmüyorum.
Nikolaj-K

Yanıtlar:


15

Derleyicilerin optimizasyon aşamalarında yapabilecekleri güçlü şeylerden biri, eşdeğer olanlar için verimsiz sunumları değiştirmektir. Örneğin, Haskell'de toplam sayıları hesaplamak için tembel bir liste kullanabilirsiniz, ancak GHC Haskell derleyicisi bunun geçici bir değişkenle yinelemeyi kullanmaya eşdeğer olduğunu anlayacaktır. Bu şekilde, çalıştırılması kolay donanım platformuna daha uygun bir sunumdan yararlanırken (ve bu da ölçülü olarak akla gelmek çok daha zor olur) basit bir soyutlamaya karşı programlayabilirsiniz.

Bununla birlikte, derleyici tarafından bilinen eşdeğerlikler çoğunlukla listeler için akış füzyonu gibi iyi bilinen ve araştırılan veri yapıları ile sınırlıdır. Kaynak kodda kendi denkliklerinizi tanımlayabilirsiniz (her iki yönde de kimliğe sahip bir çift dönüştürme işlevi kullanarak), ancak bunları manuel olarak uygulamanız gerekir ve tüm yerlerde kullanılacak doğru türü seçmek zor olabilir Aşırı dönüşümleri önlemek için.

Şimdi, bir kanonik arama haritası olan "daha yüksek endüktif türleri" tanımladığınız bir dünya hayal edelim. Bu tür, çeşitli harita türleri için birkaç kurucuya sahiptir: ikili arama, AVL, kırmızı-siyah, Trie, Patricia, vb. Tipik veri yapıcılarıyla birlikte, bu temsiller arasında muhtemelen birden fazla dönüşümü yakalayan bir eşdeğerlik türü de tanımlayabilirsiniz. dönüşümler farklı verimlilik boyutları sunar (örneğin, zamana ve belleğe).

Derleyici, bugünkü liste füzyonuyla aynı şekilde, harita gösterimlerini şeffaf bir şekilde yeniden yazmak için bu kavramı kullanabilseydi? Bu arada, kodunuzda, akıl yürütmek için en basit olan yapı ile çalışmaya başlarsınız (ve böyle bir ortamdaysanız kanıt çalışmasını kolaylaştırır). Bu, birden çok uygulamaya sahip soyut bir arayüz gibi görünebilir, ancak herhangi bir uygulamayı seçme özgürlüğünü içerir ve derleyicinin, programın anlamını etkilemeden, gerektiğinde şeffaf bir şekilde diğerini değiştirmesini sağlar.

HoTT bize bu süslü yeniden yazma mekanizmasını ve bu zengin tanımlanmış türleri haklı çıkarmak için bir tür teorik temel verir, çünkü eşitlik kavramını eşitliğe eşit olmaya teşvik eder. Bunun pratikte gerçekte nasıl oynayacağı hala görülüyor, ancak bize gelecekteki çalışmaları dayandıracak teorik çerçeveyi veriyor.

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.