Mengapa C masih dalam kategori Bahasa Level Tinggi? [Tutup]

12

Banyak buku teks pada bahasa pemrograman C mengatakan bahwa C adalah bahasa pemrograman tingkat tinggi, tetapi banyak tutor online mengatakan bahwa C juga merupakan bahasa pemrograman tingkat menengah. Mengapa seperti itu?

CodeIt
sumber
3
direkomendasikan membaca: Diskusikan ini $ {blog}
agas
6
Saya berempati dengan kebingungan Anda. Ini adalah semacam klasifikasi yang akan memperburuk saya untuk melihat pada ujian karena jawaban yang "salah" pun benar. Berdoalah agar Anda tidak memiliki pertanyaan ujian yang benar / salah atau pilihan ganda ini. Jika Anda melakukannya, jawablah berdasarkan apa yang dikatakan buku teks, bukan apa yang Anda rasa benar (saya merasa jahat merekomendasikan melawan Anda).
Brandon
1
Secara historis 'bahasa tingkat tinggi' adalah bahasa yang, tidak seperti bahasa rakitan, memungkinkan pemrogram untuk abstrak dari mesin tertentu dan menulis kode dengan cara yang lebih problem-domain. Fortran dan Cobol 'tingkat tinggi' karena itu pada hari-hari awal. C hanyalah selubung tipis di atas hal-hal khusus mesin, tetapi tujuannya adalah untuk menjadi portabel, tidak spesifik mesin. Jadi pada 1960-an standar C adalah tingkat tinggi. Dibandingkan dengan C ++ 14 atau Haskell atau OCaml atau Rust, C tidak terlalu tinggi, tentu saja.
9000
Sebagian besar "bahasa tingkat tinggi modern" ini "benar-benar hanya bahasa scripting. Perbedaannya adalah apakah itu dikompilasi atau ditafsirkan.
MarcusJ
ASM adalah tingkat tinggi. Abstraksi yang disediakan oleh asm over hardware sangat besar.
curiousguy

Jawaban:

34

Secara historis, segala sesuatu yang abstrak di atas kode perakitan disebut tingkat tinggi. C tentu saja melakukan itu. Definisi ini juga relatif jelas, berbeda dengan yang berikut.

Seiring waktu, kami menciptakan semakin banyak bahasa pemrograman dan menemukan lebih banyak abstraksi dan alat. Dibandingkan dengan, katakanlah, Python, bahasa C positif primitif dalam kekayaan semantik dan tingkat abstraksi atas perangkat keras. Dengan pemikiran itu, banyak orang merasa menyesatkan untuk menyebut C tingkat tinggi, ketika ada banyak bahasa yang jauh lebih tinggi di atas perangkat keras.

Jadi sekarang "tingkat tinggi" biasanya berarti "banyak abstrak atas perangkat keras" dan "tingkat rendah" berarti "sedikit abstrak". Ini adalah definisi yang digunakan oleh tutor Anda. Namun, tidak semua orang setuju, dan teks lama tidak secara ajaib mengadopsi terminologi baru, jadi Anda masih melihat penggunaan lama "tingkat tinggi" (di mana C adalah tingkat tinggi) melayang-layang. Ingatlah bahwa banyak buku C yang bagus pada dasarnya adalah edisi buku yang lebih baru yang dirilis dua puluh tahun yang lalu.


sumber
Untuk sesuatu yang dianggap sebagai bahasa pemrograman tingkat rendah yang tepat, harus memungkinkan seorang programmer untuk dengan mudah beroperasi pada tingkat abstraksi yang sama dengan perangkat keras yang mendasarinya. Sementara Standar C akan memungkinkan implementasi berperilaku dengan cara seperti itu, tidak ada perbedaan yang diakui secara formal antara implementasi yang beroperasi pada tingkat abstraksi versus yang tidak.
supercat
12

Ini adalah bahasa tingkat yang lebih tinggi daripada kode mesin (perakitan), yang merupakan sudut pandang bahwa buku pemrograman C dan tutorial berasal.

Dalam hal itu adalah bahasa pemrograman tingkat tinggi.

Namun, masih sangat dekat dengan perangkat keras - jauh lebih banyak daripada bahasa lain yang lebih modern (Java, C # dan semacamnya) - jika dilihat dari sudut pandang ini, ini adalah bahasa pemrograman tingkat menengah.

Oded
sumber
1
Lalu mengapa kita tidak dapat dengan jelas mengatakan bahwa C adalah bahasa pemrograman tingkat menengah. Dalam buku pelajaran, kita tidak menemukannya.
CodeIt
5
@manutd - itu pertanyaan untuk penulis buku;) - tapi itu masalahnya. Dari sudut pandang mereka, C adalah bahasa tingkat tinggi. Itulah yang mereka hadapi. Konsep "bahasa tingkat tinggi" tidak jelas - tidak ada definisi tunggal yang disetujui oleh semua.
Oded
Sayangnya, menyetujui pendapat di komunitas bukanlah bagaimana mendefinisikannya. Ini pencipta dan konsep-konsepnya lebih tinggi daripada bahasa assembly prosesor - ini adalah garis yang menentukan. Inilah yang mendefinisikannya sebagai level tinggi. Buku apa pun yang Anda ambil tentang ilmu komputer akan selalu mendefinisikannya dengan cara ini. Tutor mungkin tidak dan pendapat orang-orang mungkin tidak, tetapi ilmu yang sebenarnya tentang bagaimana komputer bekerja dan bagaimana hal itu telah didefinisikan dalam ilmu komputer dan prosesor sangat jelas.
Ryan Rentfro
C # memungkinkan programmer untuk mengakses rentang memori sebagai urutan nilai 64-bit, 32-bit, 16-bit, atau 8-bit sesuai kenyamanan; jika memori memiliki piksel 16-bit, misalnya, kode dapat memproses piksel secara individu atau dalam kelompok 2 atau 4, tergantung pada apa yang terbaik untuk algoritme. C seperti yang didefinisikan oleh Standar tidak mendefinisikan sarana praktis yang dengannya programmer dapat meminta semantik yang serupa. Tentu saja, banyak dialek C lebih rendah daripada C #, tetapi bahasa yang didefinisikan oleh Standar tidak.
supercat