Bu iyi bir soru! Yazılı bir dilde yazılanlardan ne beklediğimizi sorar.
İlk olarak unitype ile herhangi bir programlama dilini yazabileceğimizi unutmayın : sadece bir harf seçin, söyleyin U
ve her programın türü olduğunu söyleyin U
. Bu çok kullanışlı değil, ama bir noktaya değiniyor.
Türleri anlamanın birçok yolu vardır, ancak bir programcının bakış açısından aşağıdakilerin yararlı olduğunu düşünüyorum. Bir türü spesifikasyon veya garanti olarak düşünün . Söylemek için tipi vardır A o "biz garanti / / talebini bekliyoruz demek ki e göre kodlanmış özelliğini tatmin A ". Genellikle A gibi basit bir şeydir , bu durumda özellik sadece "bir tamsayı" dır.ebirebirbirint
Türlerinizin ne kadar etkileyici olabileceğinin sonu yoktur. Prensipte, her türlü mantıksal ifade olabilirler, kategori teorisini ve neyi kullanamazlar, vb. Şu anda, eşzamanlı programların paylaşılan durumla nasıl çalıştığı hakkında konuşmanıza izin veren "eşzamanlı ayırma mantığı" üzerine bir konuşma dinliyorum. Süslü şeyler.
Programlama dili tasarımında türlerin sanatı, ifade ve basitliği dengelemekten biridir :
- daha etkileyici türler neler olduğunu daha ayrıntılı olarak (kendimize ve derleyiciye) açıklamamıza izin verir
- daha basit tiplerin anlaşılması daha kolaydır ve derleyicide daha kolay otomatikleştirilebilir. (İnsanlar, tip kontrolü yapmak için esasen bir kanıt asistanı ve kullanıcının girişini gerektiren türlerle gelir.)
Her programcı programlama dilleri teorisinde doktora sahibi olmadığından, sadelik göz ardı edilmemelidir.
Şimdi sorunuza geri dönelim: Yazı sisteminizin iyi olduğunu nasıl anlarsınız ? Peki, türlerinizin dengeli olduğunu gösteren teoremleri kanıtlayın. İki tür teorem olacaktır:
Türlerinizin faydalı olduğunu söyleyen teoremler . Bir programın bir türü olduğunu bilmek, örneğin programın takılmayacağına dair bazı garantiler anlamına gelmelidir (bu bir Güvenlik teoremi olacaktır ). Başka bir teorem ailesi türleri semantik modellere bağlayacaktır, böylece programlarımız hakkında bir şeyler kanıtlamak için gerçek matematiği kullanmaya başlayabiliriz (bunlar Yeterlilik teoremleri ve diğerleri). Yukarıdaki bütünlük kötüdür, çünkü böyle yararlı teoremleri yoktur.
Türlerinizin basit olduğunu söyleyen teoremler . Temel olan, verilen bir ifadenin belirli bir türe sahip olup olmadığının kararlaştırılabilir olmasıdır. Başka bir basitlik özelliği, bir türü çıkarmak için bir algoritma vermektir. Basitlikle ilgili diğer teoremler şunlardır: bir ifadenin en fazla bir türü olması veya bir ifadenin temel türü olması (yani, sahip olduğu tüm türler arasında "en iyi" olanı).
Daha spesifik olmak zordur çünkü türler çok genel bir mekanizmadır. Ama umarım neyi vurmanız gerektiğini görürsünüz. Programlama dili tasarımının çoğu yönü gibi, mutlak bir başarı ölçüsü yoktur. Bunun yerine, tasarım olasılıklarının bir alanı vardır ve önemli olan, uzayda nerede olduğunuzu veya olmak istediğinizi anlamaktır.