Tavuk ve yumurta ve önyükleme duydum. Bir kaç sorum var.
Bir şeyi ikili talimatlara dönüştüren ilk derleyici ne yazdı?
Montaj derlenmiş veya ikili talimatlara çevrilmiş mi?
... ikili bir derleyici yazdıklarına inanmakta zorlanıyordum.
Tavuk ve yumurta ve önyükleme duydum. Bir kaç sorum var.
Bir şeyi ikili talimatlara dönüştüren ilk derleyici ne yazdı?
Montaj derlenmiş veya ikili talimatlara çevrilmiş mi?
... ikili bir derleyici yazdıklarına inanmakta zorlanıyordum.
Yanıtlar:
Montaj talimatları (genellikle), doğrudan kodlayıcı tarafından doğrudan yorumlanabilen (çok) bayt makine kod değerleri olan opcodes ile doğrudan eşleştirmedir. Onları eşleşen montaj talimatları ile listeleyen ve bir şeyler için bellek adreslerini / ofsetlerini listeleyen bir tablodan (örneğin , 6039 mikroişlemci için bu gibi) bakarak doğrudan opcode bir program yazmak mümkündür. atlar gibi.
İlk programlar tam olarak bu şekilde yapıldı - elle yazılmış opcodes.
Bununla birlikte, çoğu zaman, bu opcode aramalarını otomatik olarak yapan montaj kodunu "derlemek" için bir montajcı kullanmak ve aynı zamanda adlandırılmış atlama etiketleri, vb.
İlk toplayıcılar elle yazıldı. Bu montajcılar daha sonra, daha üst düzey diller için yazılmış derleyicileri birleştirmek için kullanılabilecek daha karmaşık montajcıları birleştirmek için kullanılabilir. Bir sonraki araç kümesinin oluşturulmasını basitleştirmek için araçları tekrarlı olarak yazma sürecine (cevabında David Rabinowitz tarafından belirtildiği gibi) önyükleme denir .
Derleyici önyükleme ve derleyici yazmanın geçmişi hakkında bilgi edinin
Fikir, doğrudan makine kodunda çok basit bir derleyici yazmak, daha sofistike bir derleyici yazmak için kullanın, üçüncü bir tane oluşturmak için ikincisini kullanın ve tam özellikli bir derleyiciye sahip olana kadar devam edin.
Yumurtalar uzun zaman önce tavuklar. "Tavuk ve yumurta" sorunlarının çoğunun cevabı aynıdır: evrim. Bazı insanlar biyolojik evrime inanmakta zorlanırlar, ancak inançsızlık bir argüman değildir (google argumentum ad cehadanam).
Sorunuzu doğrudan cevaplamak için: ilk derleyici (bir insan tarafından) bir montaj dilinde yazılmıştır - montajcı adı verilen bir program, montaj dilini ikiliye çevirir; Bu, derleme işleminden çok daha basit bir işlemdir çünkü montaj dili, sayılar yerine opcode adlarını kullanan, sembollü adresleri temsil eden makine dilinin sembolik bir şeklidir. Sonraki derleyiciler derleme dilinde de yazılmıştır. Ama ilk önce C Derleyici yazılmış modifiye B derleyici olduğu B . İlk B derleyicisi TMG'de yazılmıştır . B derleyicisinin derlenmesi için kullanılan TMG derleyicisi PDP-7 montaj dilinde yazılmıştır.
Woz, kamuoyunda yaptığı görüşmelerden birinde, başladığında bir derleyiciyi karşılayamayacağını, böylece kağıt üzerine elle ikili derleme yaptığını söyledi. Daha vahşi bir şey görmek istiyorsanız, Bill Gates ve Paul Allen'ın Altair 8800 için TEMEL'i yazdığı koşulları okuyun .
"Bir bilgisayarda ikili yazma" ile ilgili olarak - bir programcı olmaktan geri adım atın ve ilk bilgisayarların ne olduğunu düşünün. Üst düzey şeyler henüz yoktu - düşük seviyedeki her şeyi düşündünüz, çünkü hepsi bu. Makine kodu ile manipüle ettiğiniz temel mantık ve aritmetik yapabilen bir donanımınız vardı (bu sadece derlenmiş montaj - Amber, bu parçanın neden elle yapılmasının zor olmadığını açıklar) ve bu donanımın belirli matematiksel özellikleri gerçekleştirmesini istediniz. Var olmayan işletim sistemi hakkında endişelenmediniz, donanıma (montajda) onu beslediğiniz sayıları nasıl değiştireceğinizi söylediniz. Sadece büyük bir hesap makinesiydi. Bugünün bilgisayarı her seferinde bir soyutlama yapıldı.
Bilgisayarları sihir gibi hissettiren bariyeri yıkmak istiyorsanız, Charles Petzold ve / veya The Computing Systems Elements tarafından CODE okunmasını şiddetle tavsiye ederim . Sadece temel bir programlama bilgisiyle, bu harika erişilebilir kitaplar, bilgisayarları yukarıdan aşağıya anlamanıza yardımcı olacaktır. Açıkçası, bir comp elde edemezsiniz. sci. ya da EE derecesi sadece 2 kitaptan sonra, ama resmi eğitimi kaçırmış, kendi kendini yetiştirmiş bir programcı olarak söyleyebilirim: bu kitaplar dünyamı sarstı!
Bir şeyi ikili talimatlara dönüştüren ilk derleyici ne yazdı?
Bir insan yaptı. A-0 sistemi hakkında bilgi edinin :
1952'de Grace Hopper, A-0 olarak bilinen Sperry için ilk derleyicisini tamamladı. A-0 Sistemi, sembolik matematiksel kodu makine diline çevirebilecek bir talimatlar dizisidir. A-0'ı üretirken, yıllar boyunca topladığı tüm altyordamları aldı ve kasete koydu. Her rutine bir çağrı numarası verildi, böylece makine onu bantta bulabildi. Grace tarafından anlatıldığı gibi, "Tek yapmam gereken bir dizi telefon numarası yazmak, bilgisayarın onları bantta bulmasına, getirmek ve eklemeleri yapmaktı. Bu ilk derleyiciydi."
İlk programlar makine kodunda yazılmıştır (montaj dili değil) - anahtarlar kullanılarak bilgisayar belleğine bağlanan gerçek sayılar. Uzun bir yol kat ettik ...
Bazen bu hala küçük bir miktar olur - küçük kod parçalarını yamalamak veya thunks oluşturmak. Daha sonra ilk mikrolarda küçük, hızlı altyordamlar olarak yürütülen Basic dizelerine sayıları delmeyi hatırlıyorum. Ayrıca, bir üniversite kursu için önyükleme programına girmek üzere PDP-11'in ön panelindeki anahtarları değiştirmeyi de hatırlıyorum.
Bu programlar bazen başka programlar oluşturmak için metin dosyalarını işlemek için kullanılır ve voila programlama dilleri oluşturulur.