C neden hala Yüksek Seviye Dil kategorisinde? [kapalı]


12

C programlama dilindeki ders kitaplarının çoğu, C'nin üst düzey bir programlama dili olduğunu söyler, ancak çevrimiçi öğretmenlerin çoğu, C'nin de orta düzey bir programlama dili olduğunu söyler. Bu neden böyle?


3
önerilen okuma: Bu $ {blog} tartışın
gnat

6
Karışıklıklarına empati kuruyorum. Bu, bir sınavda görmemi arttıracak bir tür sınıflandırmadır çünkü "yanlış" bir cevap bile doğrudur. Dua asla bu doğru / yanlış veya çoktan seçmeli sınav soru olarak var. Bunu yaparsanız, ders kitabının söylediklerine dayanarak cevap verin, doğru hissettiğiniz şeyin değil (bağırsağınıza gitmeyi tavsiye etmenin kötü olduğunu hissediyorum).
Brandon

1
Tarihsel olarak 'yüksek [er] düzeyli diller', montaj dilinden farklı olarak, programcının belirli makineden soyutlama yapmasına ve kodu daha sorun-etki alanı olarak yazmasına izin veren dillerdi. Fortran ve Cobol, ilk günlerde bu yüzden 'yüksek seviyedeydi'. C, makineye özgü şeylerin üzerinde ince bir örtüdür, ancak amacı taşınabilir, makineye özgü değildir. 1960'larda C standartları yüksek seviyedeydi. C ++ 14 veya Haskell veya OCaml veya Rust ile karşılaştırıldığında, C elbette çok yüksek değildir.
9000

Bu "modern üst düzey" diller "" in çoğu gerçekten sadece betik dilleridir. Aradaki fark derlenmiş veya yorumlanmış olmasıdır.
MarcusJ

Asm yüksek seviyededir. Donanım üzerinden asm tarafından sağlanan soyutlama muazzamdır.
curiousguy

Yanıtlar:


34

Tarihsel olarak, montaj kodu üzerinden özetlenen her şeye üst düzey denirdi. C kesinlikle bunu yapar. Bu tanım, aşağıdakilerin aksine, nispeten açıktır.

Zamanla, daha fazla programlama dili oluşturduk ve daha fazla soyutlama ve araç icat ettik. Örneğin, Python ile karşılaştırıldığında, C dili anlamsal zenginlik ve donanım üzerindeki soyutlama düzeyinde olumlu bir şekilde ilkeldir. Bunu göz önünde bulundurarak, birçok kişi, donanımın çok daha üstünde olan çok sayıda dil olduğunda, C yüksek seviyeli demeyi yanıltıcı buluyor.

Yani şimdi "yüksek seviye" genellikle "donanımdan çok fazla özetler" ve "düşük seviye" "az özler" anlamına gelir. Bu, öğretmenlerinizin kullandığı tanımdır. Yine de herkes aynı fikirde değil ve eski metinler yeni terminolojiyi sihirli bir şekilde benimsemediğinden, eski "yüksek düzey" (altında C'nin yüksek olduğu) kullanımını hala görüyorsunuz. Birçok iyi C kitabının, temel olarak yirmi yıl önce yayınlanan kitapların daha yeni sürümleri olduğunu unutmayın.


Bir şeyin uygun bir düşük seviyeli programlama dili olarak kabul edilebilmesi için, bir programcının temel donanım ile aynı soyutlama düzeyinde kolayca çalışmasına izin verilmelidir. C Standardı, uygulamaların bu şekilde davranmasına izin verirken, bu soyutlama düzeyinde çalışan uygulamalar ile yapmayanlar arasında resmi olarak tanınan bir ayrım yoktur.
supercat

12

C programlama kitaplarının ve öğreticilerinin geldiği bakış açısı olan makine kodundan (derleme) daha yüksek bir dildir.

Bu açıdan, üst düzey bir programlama dilidir.

Ancak, yine de donanıma çok yakın - diğer, daha modern dillerden (Java, C # ve diğerleri) çok daha fazla - bu bakış açısından bakıldığında, orta düzey bir programlama dilidir.


1
Öyleyse neden C'nin orta seviye bir programlama dili olduğunu açıkça söyleyemeyiz. Ders kitaplarında bunu bulamıyoruz.
CodeIt

5
@manutd - bu kitap yazarları için bir soru;) - ama şey bu. Onların bakış açısından, C üst düzey bir dildir. Bununla başa çıkıyorlar. "Üst düzey dil" kavramı belirsizdir - herkes tarafından kabul edilen tek bir tanım yoktur.
Oded

Ne yazık ki, bir topluluktaki fikirleri kabul etmek, tanımlamanın nasıl işlediği konusunda değildir. Yaratıcıları ve kavramları işlemcinin montaj dilinden daha üst seviyededir - bu tanımlayıcı çizgidir. Yüksek seviye olarak tanımlayan da budur. Bilgisayar bilimlerinden aldığınız her kitap, onu her zaman bu şekilde tanımlayacaktır. Öğretmenler düşünmeyebilir ve insanların fikirleri olmayabilir, ancak bilgisayarların nasıl çalıştığına ve bilgisayar ve işlemci biliminde nasıl tanımlandığına dair gerçek bilim çok açıktır.
Ryan Rentfro

C #, programcıların 64 bit, 32 bit, 16 bit veya 8 bit değerlerden oluşan bir dizi olarak uygun bir bellek aralığına erişmesini sağlar; örneğin bellek 16 bit piksel içeriyorsa, kod algoritma için en iyisine bağlı olarak pikselleri ayrı ayrı veya 2 veya 4 kişilik gruplar halinde işleyebilir. Standart tarafından tanımlanan C, programcıların benzer anlambilim talep edebilecekleri pratik bir yöntem tanımlamaz. Birçok C lehçesi elbette C # 'dan daha düşük seviyededir, ancak Standart tarafından tanımlanan dil değildir.
supercat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.