Doğrusal sınırlı otomatların C ++ programlarının olup olmadığını kontrol etmesi mümkün değildir ve LBA için SML programlarının iyi yazılmış olup olmadığını kontrol etmek mümkün değildir. C ++ bir Turing-complete tür sistemine sahiptir, çünkü isteğe bağlı programları şablon metaprogramları olarak kodlayabilirsiniz.
SML daha ilginç. Karar verilebilir tip kontrolü var, ancak sorun EXPTIME tamamlandı. Bu nedenle, karmaşıklık hiyerarşisinde çok şaşırtıcı bir çöküş olmadığı sürece, bir LBA'nın bunu kontrol etmesi muhtemel değildir. Bunun nedeni, SML'nin tür çıkarımı gerektirmesi ve türünün büyüklüğü program büyüklüğünden daha hızlı büyüyen program aileleri var. Örnek olarak, aşağıdaki programı göz önünde bulundurun:
fun delta x = (x, x) (* this has type 'a -> ('a * 'a), so its return value
has a type double the size of its argument *)
fun f1 x = delta (delta x) (* Now we use functions to iterate this process *)
fun f2 x = f1 (f1 x)
fun f3 x = f2 (f2 x) (* This function has a HUGE type *)
C veya Pascal gibi daha basit tip sistemler için, LBA'nın kontrol etmesinin mümkün olduğuna inanıyorum.
Programlama dilleri araştırmasının ilk günlerinde, insanlar bazen programlama dilleri için tip sistemlerini belirtmek üzere van Wingaarden gramerlerini (yani iki seviyeli gramerleri) kullandılar. Algol 68'in bu şekilde belirtildiğine inanıyorum. Ancak, bu tekniğin temelde pragmatik nedenlerden dolayı terk edildiği söylendi: insanların belirttiklerini düşündüklerini belirten gramerler yazması oldukça zor oldu! (Tipik olarak, insanların yazdığı gramerler, amaçladıklarından daha büyük diller üretti.
Bu günlerde insanlar, tipik olarak Horn cümlelerinin bir koleksiyonunun en sabit noktası olarak tahminleri belirtmenin bir yolu olan tip sistemlerini belirtmek için şematik çıkarım kurallarını kullanıyorlar. Birinci dereceden Boynuz teorileri için memnuniyet kabiliyeti genel olarak kararsızdır, bu nedenle, her tür teorisyenin yaptığı her şeyi yakalamak istiyorsanız, seçtiğiniz dilbilgisel formalizm ne olursa olsun gerçekten daha güçlü olacaktır.
Tip sistemlerini uygulamak için özellik gramerlerini kullanma konusunda bazı çalışmalar olduğunu biliyorum . Bu seçim için bazı yazılım mühendisliği faydaları olduğunu iddia ediyorlar: yani, dilbilgisi gramerlerinin bilgi akışını çok sıkı bir şekilde kontrol ettiğini ve bunun programın anlaşılmasını kolaylaştırdığını söyledi.