Apa sejarah kompiler C?


23

Ketika kita mengatakan bahwa "Dennis Ritchie mengembangkan bahasa C", apakah maksud kami bahwa ia telah membuat kompiler (menggunakan bahasa lain yang sudah 'dikembangkan') yang dapat mengkompilasi kode sumber yang ditulis dalam bahasa C? jika ya, bahasa apa yang digunakannya untuk menulis kompiler C pertama? Saya mengerti kompiler adalah sebuah program dan kita dapat membuat kompiler lain untuk bahasa C menggunakan kompiler C yang tersedia saat ini. Apakah itu benar?

Jawaban:


23

Dari wiki :

Ritchie dikenal sebagai pencipta bahasa pemrograman C dan pengembang kunci sistem operasi Unix, dan sebagai penulis bersama buku definitif tentang C.

Juga dari wiki :

Kompiler C pertama yang ditulis oleh Dennis Ritchie menggunakan parser keturunan rekursif, memasukkan pengetahuan khusus tentang PDP-11, dan mengandalkan pengoptimal khusus mesin opsional untuk meningkatkan kode bahasa perakitan yang dihasilkannya.

Kompiler C pertama juga ditulis olehnya, dalam pertemuan.

Halaman ini dari bell-labs menjawab sebagian besar pertanyaan Anda.


Tautan pertama terputus.
Mahmoud Hossam

IIRC, C didasarkan pada bahasa sebelumnya yang disebut B, dan Unix didasarkan pada sistem operasi sebelumnya yang disebut Multics. Ini akan menjadi tebakan yang jelas bahwa ini digunakan untuk pengembangan bootstrap - tetapi dari apa yang saya baca, itu dugaan yang salah . Pengembangan awal Unix adalah assembler, sampai C mengambil alih, misalnya.
Steve314

2
IIRC, B adalah versi sederhana dari BCPL, yang merupakan bahasa pemrograman sistem awal. Saya pikir banyak pekerjaan Unix awal digambarkan menggunakan B, tapi saya tidak yakin pernah ada kompiler Unix yang sebenarnya untuk itu (mungkin kompilator silang yang berlari pada sesuatu yang lain).
TMN

Aduh . . menulis kompiler dalam bahasa assembly.
compman

6
@ compompman Pada titik tertentu, seseorang harus menulis kompiler dalam perakitan - bagaimana lagi Anda bootstrap jalan Anda ke kompiler di HLL?
Richard Gadsden

9

Lihat ini untuk pelajaran sejarah: http://www.livinginternet.com/i/iw_unix_c.htm

Ketika komputer PDP-11 tiba di Bell Labs, Dennis Ritchie membangun B untuk menciptakan bahasa baru yang disebut C yang mewarisi selera Thompson untuk sintaksis ringkas, dan memiliki perpaduan yang kuat antara fungsi tingkat tinggi dan fitur terperinci yang diperlukan untuk memprogram operasi. sistem. Sebagian besar komponen Unix akhirnya ditulis ulang dalam C, yang berpuncak dengan kernel itu sendiri pada tahun 1973

Juga ini mungkin menarik: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "dibangun di atas" seperti dalam "desain berdasarkan pada desain" , bukan sebagai "dikompilasi menggunakan" .
vartec

8

Dennis Ritchie menggunakan bootstrapping . Bootstrapping adalah ide sederhana, di mana Anda mengembangkan awal, kompiler sederhana dalam perakitan, kemudian Anda menggunakan kompiler sederhana ini untuk mengkompilasi kompiler lengkap Anda yang ditulis dalam (bagian dari) bahasa target Anda. Beginilah cara Ritchie membuat compiler last1120c awal .



2

C dirancang untuk memungkinkan untuk port Unix ke platform lain tanpa harus menulis ulang semua kode perakitan untuk platform baru.

Oleh karena itu pepatah umum bahwa "C adalah assembler portabel". Ini mencerminkan bahwa C secara sengaja sangat dekat dengan CPU (dari sekitar tahun 1970) di tingkat abstraksi dan juga alasan mengapa sebagian besar perangkat lunak yang tertanam ditulis dalam beberapa jenis C.

Jadi, C terhubung erat dengan Unix, dan orang-orang Unix menulis kompiler C pertama berdasarkan pada pekerjaan sebelumnya untuk melakukan apa yang mereka butuhkan.

Harap dicatat bahwa Kernigan dan Richie menulis buku yang bagus tentang C yang mungkin merupakan salah satu referensi paling berpengaruh yang bekerja pada bahasa komputer, karena sangat jelas dan ringkas sehingga sebagian besar pembaca dapat mempelajari mata pelajaran yang maju seperti petunjuk dan rekursi dari itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.