Birçok programlama dili türü vardır. Çoğu programlama dili tek bir türü takip etmez, bu nedenle her dil için bir tür atamak zordur. Her türün örnekleri aşağıdaki her bölümde verilmiştir çünkü bunlar o türün en iyi bilinen örnekleridir.
Yüksek seviyeye karşı düşük seviye
| ![[icon]](https://www.alegsaonline.com/image/20px-Wiki_letter_w_cropped.svg.png) | Bu bölümün daha fazla bilgiye ihtiyacı var. (Ağustos 2018) |
Yüksek seviyeli programlama dilleri, düşük seviyeli programlama dillerine kıyasla donanım hakkında daha az bilgi gerektirir. Yüksek seviyeli programlama dilleri, kaynak kodunu düşük seviyeli programlama dillerine dönüştürmek için bir yorumlayıcı gerektirir.
Bildirimsel ve Zorunlu programlama
Bildirimsel programlama dilleri bir "sorunu" tanımlar ancak genellikle sorunun nasıl çözülmesi gerektiğini söylemezler. Problem tanımı mantık kullanır ve problemi "çözmek" genellikle bir mantıksal aksiyomlar sistemini otomatik olarak kanıtlamak gibi görünür. Bu tür programlama dillerine örnek olarak Prolog, XSLT, LISP ve SQL verilebilir.
Zorunlu programlama dilleri bir durum değişiklikleri sistemini tanımlar. Başlangıçta, program belirli bir durumdadır ve bilgisayara bir eylemi gerçekleştirmesi için izlemesi gereken adımlar verilir. Adımları takip etmek programın "durum değiştirmesine" neden olur.
Genel olarak, bildirimsel programlama dilleri daha güvenli ve daha kısadır. Emredici programlama dilleri daha yaygındır, çünkü kullanımı daha kolaydır.
Fonksiyonel ve Prosedürel
Fonksiyonel programlama, programlamaya matematikteki bir fonksiyon gibi bakar. Program, bazı bilgilerle birlikte girdi alır ve bu bilgileri çıktı oluşturmak için kullanır. Arada bir durum olmayacaktır ve hesaplamayla ilgili olmayan şeyleri de değiştirmeyecektir.
Prosedürel programlar adım kümelerini veya durum değişikliklerini belirtir veya tanımlar.
Yığın tabanlı
Yığın tabanlı diller, programın belleğinin bir kısmına kart yığını gibi bakar. Bir yığın ile yapılabilecek çok az şey vardır. Yığının en üstüne bir veri öğesi konulabilir. Bu işlem genellikle "push" olarak adlandırılır. Bir veri öğesi yığının tepesinden kaldırılabilir. Bu işlem "pop" olarak adlandırılır. Yığının en üstündeki öğeyi kaldırmadan ona bakabilirsiniz. Bu işlem "peek" olarak adlandırılır.
Bir program "push 5; push 3; add; pop;" şeklinde yazılırsa, yığının en üstüne 5 koyacak, 5'in üstüne 3 koyacak, en üstteki iki değeri toplayacak (3 + 5 = 8), 3 ve 5'i 8 ile değiştirecek ve en üstteki (8) değeri yazdıracaktır. Yığın tabanlı programlama dillerine örnek olarak Postscript ve Forth dilleri verilebilir.
Nesne yönelimli
Nesne yönelimli programlama dilleri, verileri ve verileri değiştiren işlevleri tek bir birime yerleştirir. Bu birime "nesne" adı verilir. Nesneler birbirleriyle etkileşime girebilir ve başka bir nesnenin verilerini değiştirebilir. Buna genellikle kapsülleme veya bilgi gizleme denir. Modern programlama dillerinin çoğu nesne yönelimlidir ya da en azından bu tarz programlamaya izin verir. Bunun örnekleri Java, Python, Ruby, C++, C# ve diğer C dilleridir.
Akış odaklı
Akış odaklı programlama, programlamayı farklı bileşenleri birbirine bağlamak olarak görür. Bu bileşenler ileri geri mesajlar gönderir. Tek bir bileşen, dahili olarak değiştirilmesine gerek kalmadan farklı "programların" parçası olabilir.