Referans istek: Tip sistemleri için geçerli olduğu gibi kategori teorisi


13

Programlama dili teorisini gerçekten anlamak için kategori teorisini nasıl öğrenmesi gerektiğini duymaya devam ediyorum. Şimdiye kadar, kategoriler alanına adım atmadan iyi bir PL öğrendim. Ancak, neyi kaçırdığımı görmek için büyük bir adım atmanın zamanının geldiğini düşündüm.

Ne yazık ki, bulabildiğim kaynakların hiçbiri tip sistemlerine veya programlamaya herhangi bir bağlantı kurmuş gibi görünmüyor. Onlar ki bilgisayar bilim adamları için kategori teorisine giriş, ama sonra genel soyut saçma içine saptırmak herhangi bir pratik örnekler veya uygulamaları vermeden (ı sevgiyle bu demek).

Sanırım sorum aslında iki misli:

  1. Kategori teorisi PL'deki "derin kavramları" anlamak için gerekli midir?
  2. Kategori teorisini pratik uygulamalar açısından tip sistemlerine ve programlamaya açıklayan bir kaynak nedir?

Şimdiye kadar, elde ettiğim en uzak, belirsiz bir functor kavramına (ML'deki functorlarla ilişkili görünmüyorsa, anlayabildiğim kadarıyla). Monadları kategori-teorik bakış açısından anlamak için kafamda tutmam gereken soyutlamayı hayal ediyorum.


2
@ Raphael Sadece birbiriyle belirsiz bir şekilde ilişkili iki farklı sorudan oluşan bir soru sormak kötü bir fikirdir. Ancak soru 1. öznel değildir. Bu daha çok açıklama ve açıklama talebidir. Sanırım 2. soru, gerçek bir açıklama yerine açıklandığı bir yere referansla mutlu olması anlamındaydı.
Thomas Klimpel

2
Gelecekte, gönderi başına sadece bir soru sormak daha iyidir. Soru 1'i sorabilir, daha sonra aldığınız cevaplara bağlı olarak, soru 2'yi ayrı ayrı sorup sormayacağınıza karar verebilirsiniz. Bu çoğu zaman işleri daha sorunsuz hale getirir.
DW

1
@Raphael Birinci soru nasıl özneldir? Yargılamak zor olabilir - demek istediğin bu mu? Ve bir cevap olarak “Ne tür bir insan olduğunuza bağlı” olabilir. - Demek istediğin bu mu? Yine de kesinlikle gerekli ya da kesinlikle gerekli olmadığı ortaya çıkabilir , değil mi? (Ve insanlar bunun gerekli olmadığını kabul ediyor gibi görünüyor.)
k.stm

1
@ k.stm Sorunun genel şekli beni endişelendiriyor. Birisi, "Cebir, biçimsel dillerin derin kavramlarını anlamak için gerekli mi?" Diye soracak olsaydı, farklı insanların tercihlerine ve zevklerine göre farklı cevaplar vereceğini biliyorum. Burada farklı olmasını beklemiyorum.
Raphael

1
@ Raphael Tamam, anladım. Ama bence bu insanlar nesnel bir soruya öznel cevaplar veriyor. (Kahvenin sağlıklı olup olmadığı sorulduğunda “Oh, günde beş bardak içiyorum ve kendimi harika hissediyorum!”
Diyen

Yanıtlar:


15

Kategori teoridir değil o programlama dilleri gelişmiş araştırma yapmak için bile gerekli değil, programlama dilleri anlamak için gerekli. Çoğu programlama dili, insanların (çok) kategori teorisini bilmez.

Kategori teorik yöntemleri çoğunlukla programlama dili araştırmalarının küçük bir kısmında, yani fonksiyonel programlamanın analizinde, özellikle de Moggi'nin bazı hesaplama etkilerinin monadik yapıya sahip olduğu konusundaki büyük keşfinde yararlı olmuştur. 1990'larda, Moggi'nin atılımını takiben, kategorik yöntemleri diğer programlama dillerine genişletmek için birçok araştırma yapıldı. Ancak, bildiğim kadarıyla, kategorik yöntemler OO, eşzamanlı, paralel ve dağıtılmış hesaplama, zamanlı hesaplama veya derleyiciler için yararlı olan her şeyi bulamamıştır. Bu nedenle, insanlar çoğunlukla kategorik yöntemleri genişletmeyi bıraktılar.

Tipik programlamaya kategorik yaklaşımlar saf fonksiyonlarda iyi çalışır. Gerçekten de bazı basit yazım sistemleri kategorilerdir. Bu, örn.

Eşzamanlı süreçler (örneğin oturum türleri) için türler üzerinde çok fazla çalışma var ve bunların hiçbiri Eylül 2016 itibariyle kategorik değil.

Bununla birlikte, asla çok fazla matematik bilemez ve kategori teorisini bilmek yararlıdır. Yani bu bir maliyet / fayda sorunudur. Eğer matematiği seviyorsanız, belki de cebirde biraz arka planınız varsa (örneğin, bir set üzerinde serbest grup nedir, serbest halka vb.), O zaman kategori teorisini öğrenmek kolay olacaktır ve eğer (esinlenerek) iş yapmayı planlıyorsanız fonksiyonel programlama, kategorileri bilmek faydalı olacaktır.

Son olarak, kategori teorisi güzel bir matematiktir ve sadece çok temiz olduğu için çalışmaya değer.


Farklı bir görüş için Uday Reddy'ün bu tartışmadaki katkısına bakınız .


"Ancak, bilgim dahilinde kategorik yöntemler bunun için yararlı olamadı ..." Bu tam olarak benim sorunum. Operasyonel semantik tüm bu kavramları doğru bir şekilde tanımlayabilir, bu yüzden kaçırmış gibi hissetmedim. Matematiği seviyorum, ama soyut cebirde arka planım ne yazık ki eksik. Sadece ortak cebirsel yapıların temel temellerini anlıyorum. Bu, kavrama kategorisi teorisini özellikle hantal hale getirdi.
gardenhead

2
@gardenhead O zaman belki CT sizin için yararlı olmayabilir. "İşlevsel Programlama" alanında türler üzerinde çalışmalar da dahil olmak üzere çok sayıda makale okumak istiyorsanız, çoğu BT dilini kullanacaktır.
Martin Berger

bu yinelenen?
Raphael

2
Ayrıca cs.unibo.it/~asperti/PAPERS/book.pdf "Kategoriler, Türler ve Yapılar" adlı kitabını da öneriyorum . yazarların ana sayfalarında, bu yüzden yasal olduğunu düşünüyorum.
John Forkosh

6

Kategori teorisini öğrenmek büyük bir zaman yatırımıdır ve buna değip değmediği sorusu çok geçerlidir. Ben hala bununla mücadele ediyorum ve neden öğrenmem gerektiğini zaten biliyorum. Yazdım:

Programlamaya başladığımda derleme dilini beğendim ve kuramın derleme diline benzer olduğunu düşündüm. Kategori teorisi, genel ZFC set teorisine gömülü mantık ve model teorisi hakkındaki tüm önyargılardan kurtulmak için bir alternatiftir.

Buradaki fikir, belirli bir tür teorisi veya programlama dili için olası bir anlam olarak setler veya "belirtilmemiş bitler" yerine kategorileri kullanmaktır. Neden bunu yapmak istesin ki? Bir eylem ve gözlem arasındaki ikiliği düşünün. Farklı gözlemler (veya en azından zamandaki sıraları) birbirini etkilemez (kuantum mekaniğinin dışında), ancak bu farklı eylemler için doğru değildir. Küme teorisine gömülü mantık hakkındaki önyargılar, modelleme gözlemlerine kıyasla eylemleri modellemeyi zorlaştırır.


Kategori teorisi ve burada iddia edilen tür teorisi arasında mükemmel bir yazışma olduğuna ikna olmadım :

Bir sözdizim-semantik ikililiği ile, tip teorisini kategori teorisi için biçimsel bir sözdizimsel dil veya matematik olarak görebilir ve tersine kategori teorisini tip teorisi için anlambilim olarak düşünebilir.

Kategori teorisinin tip teorisi için anlambilim sağlayabileceği doğrudur (ancak gerçekten yararlı olabilir), ancak tip teorisinin kategori teorisinde yapılan tüm hesaplamaları ifade etmek için gerçekten yeterince güçlü bir resmi sözdizimsel dil sağladığından şüpheliyim.


Uygulamada, kategori teorisinin yararlılığı, yararlı sorular ve analojiler önerilerek ortaya çıkabilir. Ancak kategori teorisi, sonunda gerçekten önemli konulardan sadece dikkat dağıtan (zaman kaybı) ortaya çıkan faaliyetler ve sorular da önerebilir. Ve kesinlikle kategori teorisini önemsemeden mantık ve tür teorisini öğrenebilirsiniz.


Düşünceleriniz için teşekkürler. Kategori teorisi öğrenme nedenleriniz benimkinden farklı görünmektedir; ilgi alanlarınız saf matematiksel bir perspektiften kaynaklanırken ben de türler hakkındaki anlayışımı genişletmek istiyorum. Yine de, diğer insanların kendimi beslemenin yaklaşması ve uygulanması zor bir kategori bulduklarını bilmek güzel
gardenhead
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.