Python'dan bahsettiğinizden bu soru tamamen tip-teorik değildir. Bu yüzden tipler hakkında daha geniş bir perspektif vermeye çalışıyorum. Türler farklı insanlar için farklı şeylerdir. En az 5 farklı (ancak ilgili) tür kavramı topladım:
Tip sistemleri mantıksal sistemler ve küme teorileridir.
Bir tür sistemi, bir türü hesaplanan her bir değerle ilişkilendirir. Bu değerlerin akışını inceleyerek, bir tür sistemi herhangi bir tür hatasının oluşmayacağını kanıtlamaya veya sağlamaya çalışır.
Tür, o değer için olası değerleri belirleyen gerçek değerli, tamsayı veya Boole gibi çeşitli veri türlerinden birini tanımlayan bir sınıflandırmadır; bu tür değerler üzerinde yapılabilecek işlemler; verinin anlamı; ve bu türdeki değerlerin depolanma şekli
Soyut veri türleri, üst düzey dillerde veri soyutlamaya olanak tanır. ADT'ler genellikle modül olarak uygulanır: modülün arayüzü ADT işlemlerine karşılık gelen prosedürleri bildirir. Bu bilgi gizleme stratejisi, modülün uygulanmasının istemci programlarını bozmadan değiştirilmesine izin verir.
Programlama dili uygulamaları, değerlerin ihtiyaç duyduğu depolamayı seçmek için değer türlerini ve değerler üzerindeki işlemler için algoritmaları kullanır.
Alıntılar Wikipedia'dan geliyor, ancak bir ihtiyaç ortaya çıktığında daha iyi referanslar sağlayabilirim.
Tip-1, Russel'in çalışmasından doğdu, ancak bugün sadece paradokslardan korunmuyorlar: homotopi tip teorisinin yazılan dili, matematiği resmi, makine tarafından anlaşılabilir bir dilde kodlamanın yeni bir yoludur ve insanların temelleri anlaması için yeni bir yoldur Matematik ("Eski" yol aksiyomatik bir set teorisi kullanarak kodlama).
Tip 2-5, çeşitli ihtiyaçlardan programlamada ortaya çıktı: hatalardan kaçınmak, veri yazılımı tasarımcıları ve programcılarının birlikte çalıştığı sınıflandırmak, büyük sistemler tasarlamak ve programlama dillerini verimli bir şekilde uygulamak.
C / C ++, Ada, Java, Python'daki tip sistemleri Russel'in çalışmasından ya da hatalardan kaçınma arzusundan ortaya çıkmadı. Orada farklı veri türlerini tanımlama (örneğin, "soyadı bir sayı değil bir karakter dizgisidir"), yazılım tasarımını modüler hale getirme ve veriler için en düşük düzeyli sunumları en iyi şekilde seçme ihtiyaçları ortaya çıktı. Bu dillerde tip-1 veya tip-2 yoktur. Java, tür sistemi kullanarak program doğruluğunu kanıtlamakla değil, dikkatli bir dil tasarımı (işaretçi aritmetiği yok) ve çalışma zamanı sistemi (sanal makine, bayt kodu doğrulaması) ile hatalardan göreceli güvenlik sağlar. Java'daki yazım sistemi ne mantıksal bir sistem ne de küme kuramıdır.
Bununla birlikte, Agda programlama dilinde tip sistemi Russel'in tip sisteminin modern bir çeşididir (daha sonraki çalışmalara veya Per Martin-Lof ve diğer matematikçilere dayanmaktadır). Agda'daki tip sistemi, programın matematiksel özelliklerini ve bu özelliklerin ispatlarını ifade etmek için tasarlanmıştır, mantıklı bir sistem ve bir küme teorisidir.
Burada siyah-beyaz bir ayrım yoktur: birçok dil arasında uyum sağlar. Örneğin, Haskell dilinin tip sisteminin Russel'in çalışmasında kökleri vardır, basitleştirilmiş bir Agda'nın sistemi olarak görülebilir, ancak matematiksel açıdan, mantıksal bir sistem veya küme teorisi olarak bakıldığında tutarsızdır (kendi kendine çelişkilidir).
Bununla birlikte, Haskell programlarını hatalardan korumak için teorik bir araç olarak oldukça iyi çalışıyor. Belirli özellikleri ve bunların kanıtlarını kodlamak için türleri bile kullanabilirsiniz, ancak tüm özellikler kodlanamaz ve programcı cesareti kırılmış hack'ler kullanıyorsa kanıtlanmış özellikleri yine de ihlal edebilir.
Scala'nın tip sistemi Russel'in çalışmasından ve Agda'nın mükemmel kanıt dilinden daha da uzaktır, ancak Russel'in çalışmasında hala kökleri vardır.
Tip sistemleri bunun için tasarlanmamış sanayi dillerinin özelliklerinin kanıtlanmasına gelince, birçok yaklaşım ve sistem vardır.
İlginç ama farklı yaklaşımlar için bkz. Coq ve Microsoft Boogie araştırma projesi. Coq, Coq programlarından zorunlu programlar oluşturmak için tip teorisine dayanır. Boogie, zorunlu programların özelliklerle açıklanmasına ve bu özelliklerin Coq.