C derleyicisinin geçmişi nedir?


23

"Dennis Ritchie'nin C dilini geliştirdiğini" söylediğimizde, C dilinde yazılmış kaynak kodunu derleyebilecek bir derleyici ("zaten gelişmiş" bir dil kullanarak) oluşturduğunu mu kastediyoruz? eğer öyleyse ilk C derleyicisini yazmak için kullandığı dil neydi? Bir derleyicinin bir program olduğunu ve şu anda mevcut olan C derleyicisini kullanarak C dili için başka bir derleyici oluşturabileceğimizi biliyorum. Bu doğru mu?

Yanıtlar:


23

Gönderen wiki :

Ritchie, en iyi C programlama dilinin yaratıcısı ve Unix işletim sisteminin önemli bir geliştiricisi ve C'deki kesin kitabın yazarlarından biri olarak bilinir.

Ayrıca gelen wiki :

Dennis Ritchie tarafından yazılan ilk C derleyicisi özyinelemeli bir iniş ayrıştırıcı kullandı, PDP-11 hakkında özel bilgiler içeriyordu ve oluşturduğu montaj dili kodunu geliştirmek için isteğe bağlı bir makineye özgü iyileştirici kullanıyordu.

İlk C derleyicisi aynı zamanda mecliste yazdı.

Bell-labs'ın bu sayfası , sorularınızın çoğuna cevap veriyor.


İlk bağlantı koptu.
Mahmoud Hossam

IIRC, C, B denilen eski bir dile dayanıyordu ve Unix, Multics adlı daha önceki bir işletim sistemine dayanıyordu. Bunların gelişimi önyüklemek için kullanıldığı açık bir tahmin olurdu - ama okuduklarımdan bu yanlış bir tahmin. Unix'in erken gelişimi, örneğin C devralıncaya kadar bir araya geldi.
Steve314

2
IIRC, B, erken sistem programlama dili olan BCPL'nin soyulmuş bir versiyonuydu. İlk Unix çalışmasının çoğunun B kullanarak tanımlandığını düşünüyorum , ancak bunun için gerçek bir Unix derleyicisi olduğundan emin değilim (muhtemelen başka bir şey üzerinde çalışan bir çapraz derleyici).
TMN

Ouch. . . derleyici dilinde derleyici yazmak.
compman

6
@ compman Bir noktada birisinin montajda bir derleyici yazması gerekir - başka bir HLL'deki bir derleyiciye nasıl gidersiniz?
Richard Gadsden

9

Bunu tarih dersi için inceleyin: http://www.livinginternet.com/i/iw_unix_c.htm

PDP-11 bilgisayarı Bell Labs'e ulaştığında, Dennis Ritchie, B'nin, özlü sözdizimi için Thompson'un zevkini miras alan ve yüksek düzeyde işlevsellik ve bir çalışmayı programlamak için gereken ayrıntılı özelliklerin güçlü bir karışımını içeren, C adı verilen yeni bir dil oluşturmak üzere inşa etti. sistemi. Unix bileşenlerinin çoğu nihayetinde C ile yeniden yazıldı ve 1973'te çekirdekle sonuçlandı.

Ayrıca bu ilginç olabilir: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "üzerine inşa" gibi "tasarımın tasarım dayanan" olarak değil "seçeneğini kullanarak derlenmiş" .
vartec

8

Dennis Ritchie bootstrapping kullandı . Bootstrapping, montajda ilk, basit bir derleyici geliştirdiğiniz basit bir fikirdir, daha sonra bu basit derleyiciyi tam teşekküllü derleyicinizi hedef dilinizde (bir altkümesinde) derlemek için kullanırsınız. Bu Ritchie'nin last1120c derleyicisini çok erken yaratma şekli .



2

C, yeni platform için tüm montaj kodunu yeniden yazmak zorunda kalmadan Unix'i diğer platformlara taşımak için tasarlanmıştır.

Bu nedenle ortak "C taşınabilir montajcıdır" diyerek. Bu, C'nin soyutlama düzeyinde kasıtlı olarak bir CPU'ya (yaklaşık 1970'den itibaren) çok yakın olduğunu ve aynı zamanda çoğu gömülü yazılımın bir tür C ile yazılmasının nedeni olduğunu göstermektedir.

Böylece, C, Unix ile yakından bağlantılı ve Unix milleti, ilk C derleyicisini ihtiyaç duyduklarını yapmak için önceki çalışmalara dayanarak yazdı.

Lütfen Kernigan ve Richie'nin bilgisayar dili üzerinde muhtemelen en etkili referanslardan biri olan C hakkında mükemmel bir kitap yazdığını, çünkü çoğu okuyucunun işaretçiler ve özyinelemeler gibi ileri düzey dersleri öğrenebileceği kadar açık ve özlü olduğunu unutmayın.

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.