1 yorum

 
GN⁺ 2024-01-06
Hacker News yorumları
  • Metni TeX ile yeniden dizdim ve ilgilenenler için daha okunaklı bir PDF hazırladım: https://github.com/guidoism/tex-oberon

    • Harika. Kağıt formatını zorlanmadan değiştirmenin bir yolu olmalı; A5'e çevirip kendim güzel bir kitap olarak ciltlemeyi denemek isterim
    • Kitabın bu sürümünü izleyerek tamamını yapmanın mümkün olup olmadığını merak ediyorum. Wirth'in kullandığı orijinal FPGA kartını bulmam gerekip gerekmediğini bilmek isterim
  • Sonrasında Oberon System 3'e de bakmak iyi olur. Gadgets bileşen modeli ile JIT/AOT derleyicilerinin bir karışımı var
    "The Oberon companion - a guide to using and programming Oberon System 3"
    https://www.semanticscholar.org/paper/The-Oberon-companion-a...
    Kaynak kodu Rochus fork'unda görülebilir
    https://github.com/rochus-keller/OberonSystem3
    Ya da doğrudan Niklaus Wirth'in yaptığı bir şey olmasa da Active Oberon'a uzanan bir çizgi de var
    https://gitlab.inf.ethz.ch/felixf/oberon
    Ekran görüntüsü ve işletim sistemi kılavuzu
    https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/ocp/Doc...
    ETHZ'den çıkan bir startup'ın yaptığı Component Pascal ve Blackbox IDE de var
    https://blackboxframework.org/index.php

  • Bu, kitabın yalnızca ilk yarısı. Tüm bölümler ve yazılımlar burada bulunabilir: https://people.inf.ethz.ch/wirth/ProjectOberon/

  • 1992 baskısındaki en büyük bölüm, Oberon programlarını NS32032 işlemci koduna çeviren derleyiciyi ele alıyordu; ancak artık o işlemciyi bulmak da mümkün değil, mimarisini önermek de zor deniyor. Bu yüzden ticari bir mimari için yeni bir derleyici yazmak yerine, sadelik ve düzenliliği donanıma kadar genişletmek için işlemciyi bizzat tasarlamış olması ilginç
    Bu karar sayesinde Oberon System’in yalnızca yazılımı değil, donanımı da eksiksiz ve titiz biçimde açıklanabilir hâle gelmiş; işlemci RISC olarak adlandırılıyor ve donanım modüllerinin tamamı Verilog ile tanımlanıyormuş
    Nand to Tetris ile karşılaştırınca nasıl olur merak ediyorum. Onun dışında gerçekten ilginç görünüyor; okuyan biri var mı merak ediyorum

    • Başka birinin de söylediği gibi, yeni başlayanlara yönelik değil. Önce NAND 2 Tetris’in arka plan bilgilerinin bir kısmına, belki de çoğuna ihtiyaç olacaktır
      Örneğin 16. bölümdeki işlemci kısmı, sizi doğrudan Verilog kodunun ortasına atıyor. Sistem veri yolu ile CPU arayüzü, kayıtlar ve çarpma biriminin nasıl çalıştığı hemen karşınıza çıkıyor
      İyi tarafı, tasarım kararları ve ödünleşimler hakkındaki açıklamalar. Kariyerinin son dönemindeki Niklaus Wirth’ün, ömür boyu edindiği deneyime dayanarak bıraktığı bilgelik olduğu için değerli. Devreleri de daha soyut bilgisayar bilimini de geniş ve derinlemesine anlayan ender bilginlerden biriydi; her zaman genelleme yapmaya, ilkeleri anlamaya çalışır ve gelişim sürecini tarihsel bağlam içinde açıklardı
      Wirth olduğu için tarih dersi çoğu zaman kişisel deneyime dayanıyor; bence bu da iyi bir sentez ortaya çıkarıyor. Örneğin şöyle:

      The second [interface] (MouseX) is included here for historical reasons. It was used by the computer Lilith in 1979, and used the same Mouse as its ancestor Alto (at PARC, 1975). It is distinguished by a very simple hardware without its own microprocessor, which is currently contained in most mice. This goes at a cost of a 9-wire cable. But today, microprocessors are cheaper than cables. We include this interface here, because it allows for a simple explanation of the principle of pointing devices.

    • Nand2Tetris, donanım, işletim sistemi ve derleyici tasarımını kapsayan bu alan için mükemmel bir başlangıç projesi
      Yine de baştan sona bizzat yaptıktan sonra, her konuda derinlik ve kapsamlı inceleme eksikliği olduğunu hissettim. Ama onu mükemmel bir giriş projesi yapan da tam olarak bu
      Tokyo Üniversitesi’nde de benzer bir proje var ve bir basamak olarak kullanılabileceğini düşünüyorum. CPU deneylerine bakabilirsiniz: https://ytsmiling.tech/2017/04/02/cpuex.html
      Hoşunuza gitmezse, bunun nedeni muhtemelen dokümantasyon eksikliğidir; bu aşamada kendi projenizi tasarlamanız da mümkün. Temelde Verilog ya da herhangi bir donanım tanımlama dili kullanan bir CPU alt projesinden başlayıp işletim sistemi ve derleyici projelerine ilerleyebilirsiniz
    • Project Oberon, nihai sistemin nasıl göründüğünü açıklar. Sizi temelden tamamlanmış sisteme kadar adım adım götüren bir öğretici değildir
    • Wirth’ün RISC işlemcisi, TECS/Nand2Tetris işlemcisinden açıklaması ve programlaması çok daha basit. Bence Nand2Tetris işlemcisi neredeyse kullanılamayacak kadar kötüye yakın
      nandgame’de Nand2Tetris işlemcisini “tasarlama” sürecinden geçtim ve kapılarla kablolamak için Nand2Tetris işlemcisinin daha basit olacağını düşünüyorum
      Ama Wirth’ün RISC işlemcisini FPGA’da çalıştırmak ya da Verilator ile simüle etmek çok daha kolay olacaktır. Çünkü donanım tasarlamamış birinin hayal ettiği donanım tanımlama diline benzer bir şey değil, gerçek bir donanım tanımlama dili kullanıyor
      Muhtemelen Verilog ile yazılsa Nand2Tetris işlemcisinin kod miktarı daha az olabilir. Chuck Thacker’ın "a tiny computer for teaching" https://www.cl.cam.ac.uk/teaching/1112/ECAD+Arch/files/Thack... çalışmasına epey benzer olurdu; o da Nand2Tetris işlemcisi gibi Data General Nova mimarisini temel alıyor
      Nand2Tetris sizi NAND kapılarından Tetris’e ve bayt kodu yorumlayıcısına kadar götürür. Oberon ise sentezlenebilir Verilog’dan başlayıp, kendi kaynak kodunu yeniden derleyebilen tamamen kullanılabilir bir GUI işletim sistemine kadar götürür
      Ne yazık ki Vivado’yu onun üzerinde çalıştıramadığınız için kendi FPGA bitstream’ini yeniden sentezleyemez. Ancak aşağıda birinin söylediği gibi, kendi donanımını simüle edebiliyor gibi görünüyor
      İkisinin ortak noktası, işlemci mimarisi için kullanışlı bir adlarının olmaması
    • Eğitsel yapı açısından Nand to Tetris’ten çok daha zayıf. Arka plan bilgisine ihtiyaç varsa, önce onu okuyup sonra bu kitabı okumak daha iyi olur
      Daha sonra Wirth, donanım tanımını kendi yaptığı HDL olan Lola’ya taşıdı
  • Son beş yıldır eğitim amaçlı bilgisayar fikri aklımdan çıkmıyor
    Modern donanım ve işletim sistemleri düşünüldüğünde, genç nesle öğretilebilecek kadar basit bir makineye sahip olmak fiilen imkânsız. pico-8 gibi fantezi konsollar programlama için iyi bir seçenek, ama altındaki donanımı anlamak için uygun değil
    Bu yüzden okullarda hâlâ eski mimarilerin eğitimde kullanıldığını düşünüyorum

    • Asgari bir RISC-V uygulaması oldukça basit. xv6’nın RISC-V uygulaması da var. Ancak mutlak en küçük RISC-V uygulamasından biraz daha fazlasına ihtiyaç var; özellikle CSR, M/S/U modları ve sayfalama gerekiyor
      Sayfalı belleğe ihtiyaç yoksa yalnızca M modu ve U moduyla da mümkün. Bu yapılandırmayla bazı WCH mikrodenetleyicilerini hedefleyen küçük bir gerçek zamanlı işletim sistemim var. PMP kullanıyor, ama o bile kesinlikle şart değil
    • Vintage 8 bit donanım anlaması çok kolaydır ve bugün de geçerli olan temelleri öğretir
      Ben Eater’ın YouTube videoları bu konuda harika. Hem 6502 projesi hem de breadboard üzerinde “sıfırdan” yapılan el yapımı bilgisayar çok iyi
    • Bir şekilde başka bilgisayarlarla konuşmayı öğrenebilen bir bilgisayar, en üst düzey çözüm gibi görünüyor
      Artık LLM sayesinde erişilebilir hâle geldi; geriye kalan sorun da bilgisayarları bir şekilde bağlamak, yani donanım uyumluluğu meselesi gibi. Yazılım tarafının da karşıdaki yazılımı bir şekilde çözebilmesi gerekir
  • 59–75. sayfalar hızlı bir piece list uygulamasını ele alıyor. Yakın zamanda HN’de de gündeme gelen bir konuydu
    Hızlı düzenleme için metin tamponu temsil yöntemleri hakkında HN’de birkaç başlık olduğu için ekliyorum:
    https://news.ycombinator.com/item?id=15381886
    https://news.ycombinator.com/item?id=11244103
    https://news.ycombinator.com/item?id=14129543
    https://news.ycombinator.com/item?id=15387672
    https://news.ycombinator.com/item?id=14046446

  • Prof. Wirth’e rahmet diliyorum
    Bir kenar notu olarak, bu bağlantının bir PDF dosyası olduğunu gösterecek daha iyi bir etiket eklenebilir mi? Kaynak güvenilir görünüyor, ama URL bir PDF’ye gidince her zaman geriliyorum

    • Onun lean software çağrısı her zaman okunmaya değer
      [1] https://cr.yp.to/bib/1995/wirth.pdf
    • Genellikle PDF’ye giden bağlantıların sonuna [pdf] eklenir
    • PDF dosyalarında özellikle neyin sizi endişelendirdiğini merak ediyorum
    • URL zaten .pdf ile bitiyor
  • Üniversitede derleyiciler dersi alırken bir Oberon derleyicisi yazmıştım
    Orijinal ders sitesini bulamıyorum, ama benim aldığım dönemden birkaç yıl öncesine ait şu site kabaca doğru görünüyor: https://cseweb.ucsd.edu/~wgg/CSE131B/
    Eğitim dili olarak harikaydı

  • Bu tam bir mücevher. Oberon’u mobil bir “bilgisayar” olarak yeniden değerlendirmeye yönelik girişimler olup olmadığını merak ediyorum

  • Kitabı daha yeni FPGA kartlarıyla çalışılabilecek şekilde güncelleyen biri var mı merak ediyorum