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
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
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
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
1 yorum
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
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
Kaynak kodu incelemek için şu aracı kullanabilirsiniz: https://github.com/Rochus-Keller/ActiveOberon
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
Ö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:
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
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ı
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
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
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
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
[1] https://cr.yp.to/bib/1995/wirth.pdf
Ü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