Yüksek seviyeden düşük seviyeye karşı siyah beyaz bir şey değil, sürekli bir ölçektir. Terimler, bir programlama dilinin donanıma ne kadar yakın olduğunu tanımlamak için kullanılır; seviye ne kadar yüksek olursa, donanımı o kadar fazla soyutlar.
En düşük seviye, açık bir şekilde, ikili makine kodudur - işletim sisteminin yüklediği ve CPU'ya beslendiği durumdur. Montaj, üstüne inşa edilen ilk soyutlama seviyesidir: ikili kod yerine, ikili makine talimatlarını temsil eden insan tarafından okunabilen sembolik kodlar yazılır. İnsanların UNIX'ten önce sistem programlaması için kullandığı şey buydu.
C soyutlama zincirinde bir sonraki adımdır, ortak desenleri akış kontrol yapılarına birleştirir ve makineye özgü talimatları platform agnostik sözdizimine soyutlar ve bu son soyutlamalar UNIX'i hem devrimci hem de son derece başarılı kılan ana faktörlerden biriydi, çünkü bu, aynı kodun büyük değişiklikler olmaksızın herhangi bir platform için derlenebileceği anlamına geliyordu.
C ++ başka bir soyutlama katmanı ekler: sınıflar ekler (oop sözdizimine geçen bağlamları ve bağlamları soyutlama) new
ve delete
(bellek tahsisi ve değişken başlatmayı tek bir yapıda bir araya getirme), derleme zamanı türü denetimi, şablonlar (tür güvenli derleme zamanı) metaprogramming) ve ad alanları, işlev ve operatör aşırı yüklenmesi gibi birçok derleme zamanı sözdizimi kolaylığı sağlar.
Python donanımdan bir adım daha atar. C ++, programlayıcıya bellek ayırma üzerinde tam denetim sağlar ve RAM'in doğrudan değiştirilmesine izin verir; Python sizin için bellek yönetimiyle ilgilenir. Ayrıca, kodunuzu tüm yerel makine yönergelerine derlemek yerine, sanal bir makinede çalıştırır; bu bir performans cezası taşır (bazen ağır olabilir, ancak genellikle endişelenecek bir şey değildir), ancak aynı zamanda C ++ 'da zor olacak ve C'de koşucu işlevler ve sınıfları manipüle etmek gibi dayanılmaz derecede zor olan düzgün şeylere izin verir. zaman, keyfi nesnelerin isimlerini çalışma zamanında alma, sınıfları çalışma zamanında isimlendirme, maymun yaması, vb.
İnsanlar dilleri "yüksek seviyeli" ve "düşük seviyeli" dillere böldüklerinde, bir yerlerde keyfi bir çizgi çizerler ve bu çizgi her zaman aynı değildir. 1970 yılında, montaj ve C arasındaki çizgi vardı (platforma özgü makine talimatlarını belirleyici faktör olarak soyutlamak); 1987'de, C ve C ++ arasında bir yerde olabilir; bugün, C ++ ve Java arasında olabilir (belirleyici faktör olarak otomatik bellek yönetimi ile).
Uzun lafın kısası: üst düzey kayma bir ölçektir ve bahsettiğiniz üç dil için C <C ++ <Python.