5 poin oleh GN⁺ 2024-11-02 | 1 komentar | Bagikan ke WhatsApp
  • NandGame adalah gim puzzle edukatif yang dimulai dari komponen logika sederhana hingga akhirnya merakit komputer yang dapat diprogram
  • Setiap level adalah tugas membuat komponen yang bekerja sesuai spesifikasi, dan komponen yang sudah selesai menjadi blok bangunan untuk tahap berikutnya
  • Tidak diperlukan pengetahuan awal tentang arsitektur komputer atau perangkat lunak, dan matematika setingkat penjumlahan dan pengurangan sudah cukup, meski beberapa tugas bisa memakan waktu
  • Tugas pertama adalah mengimplementasikan komponen nand dengan kabel dan relai, yang output-nya menjadi 0 hanya ketika input a dan b keduanya 1
  • Tempatkan komponen dari toolbox dengan menyeretnya ke area biru; gunakan spasi, tombol panah, dan Escape untuk menyeret serta membatalkan

Dari komponen dasar hingga komputer

  • NandGame berjalan dengan cara menggabungkan komponen dasar untuk membuat komponen yang semakin kuat, hingga pada akhirnya menyusun komputer yang dapat diprogram
  • Gim ini terbagi menjadi beberapa level, dan pada setiap tahap Anda harus membuat komponen yang bekerja sesuai spesifikasi yang diberikan
    • Komponen yang sudah selesai menjadi bagian yang dapat digunakan pada level berikutnya
    • Titik awalnya adalah komponen logika yang paling sederhana

Pengetahuan awal yang diperlukan dan tingkat kesulitan

  • Tidak diperlukan pengetahuan awal tentang arsitektur komputer atau perangkat lunak
  • Matematika yang dibutuhkan tidak lebih dari penjumlahan dan pengurangan
  • Beberapa tugas bisa memerlukan waktu untuk diselesaikan, sehingga dibutuhkan kesabaran

Tugas pertama: membuat nand

  • Tugas pertama adalah mengimplementasikan komponen nand menggunakan kabel dan relai
  • Hubungkan input a dan b ke output, tetapi rangkai sirkuit agar menghasilkan perilaku sesuai spesifikasi
  • 1 berarti keadaan ketika arus mengalir, sedangkan 0 berarti keadaan ketika arus tidak mengalir
  • Input V mengirimkan arus konstan yang selalu bernilai 1

Spesifikasi nand

  • Output nand menjadi 0 hanya ketika kedua input bernilai 1
  • Spesifikasi input-output yang tepat adalah sebagai berikut
a b output
0 0 1
0 1 1
1 0 1
1 1 0

Cara pengoperasian

  • Seret komponen dari toolbox ke area biru untuk menempatkannya
  • Tekan spasi untuk mengambil item yang dapat diseret
  • Saat sedang menyeret, gunakan tombol panah untuk memindahkan item
  • Tekan spasi lagi untuk meletakkannya di posisi baru, dan tekan Escape untuk membatalkan

1 komentar

 
GN⁺ 2024-11-02
Komentar Hacker News
  • Karena suka game ini, saya membeli board pengembangan FPGA kecil dan mencoba sendiri membuat set instruksi serta soft CPU
    Memang tidak praktis, tapi ini latihan yang menyenangkan, dan karena ekosistem open source-nya cukup baik serta harganya murah, saya memilih board iCE40: https://www.digikey.com/en/products/detail/lattice-semicondu...
    Sekarang mungkin ada pilihan yang lebih baik

    • Niklaus Wirth juga pernah melakukan hal serupa, dengan alasan bahwa ia tidak bisa menemukan kotak komersial untuk berkomunikasi dengan mouse suvenir Xerox PARC kesukaannya
      Orang biasa mungkin akan asal membuat konverter USB, tetapi Wirth memilih menanganinya dengan benar: ia mengambil board FPGA, membuat soft CPU, lalu menjalankan OS, sistem window, toolchain bahasa, dan sebagainya di atasnya
      Hasilnya, ia bisa menjalankan aplikasi desain hardware dan editor teks, sambil bereksperimen dengan lebih banyak desain soft CPU menggunakan mouse favoritnya
    • Langkah berikutnya sepertinya adalah Tiny Tapeout: https://www.tinytapeout.com/
  • Saya pernah memainkan game serupa, Turing Complete, dan itu benar-benar menyenangkan: https://store.steampowered.com/app/1444480/Turing_Complete/
    Sangat mirip dengan buku Nand2Tetris

    • Baru setelah menghabiskan 30 jam di Turing Complete saya sadar apa yang telah terjadi
      Saya meng-upgrade mesin itu menjadi instruksi 32-bit, dan bahkan menulis dokumentasi bahasa assembly yang sesuai
      Meski masih early access, ini game yang luar biasa
    • Turing Complete jelas layak direkomendasikan
      Tampilannya bagus, pengerjaannya rapi, dan cukup adiktif
      Menyenangkan juga karena tersedia di GOG: https://www.gog.com/game/turing_complete
  • Tulisan terkait:
    NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=36862274 - Juli 2023
    NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=31055307 - April 2022
    NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=25282507 - Desember 2020
    Show HN: Online challenge: Build a CPU from scratch - https://news.ycombinator.com/item?id=17508151 - Juli 2018

    • Saya tidak tahu bagaimana bisa melewatkan tulisan-tulisan lama itu, tetapi saya sudah membaca bukunya dan juga pernah mengimplementasikan komputernya sendiri
      Ini benar-benar latihan yang menyenangkan
  • Melihat ini membuat saya getir karena teringat betapa banyak hal yang sudah saya lupakan
    Lebih dari 20 tahun lalu saya kuliah teknik elektro dan mengambil spesialisasi arsitektur komputer, tetapi secara profesional sama sekali tidak memakainya dan akhirnya masuk ke ranah software
    Saya sudah tidak ingat lagi bagaimana melakukan apa pun yang ada di sini, dan setelah banyak trial and error saya baru berhasil membuat half adder

    • Reaksi seperti itu bisa dimengerti, tetapi menurut saya apa yang dulu Anda pelajari kemungkinan tetap membantu Anda berulang kali mengambil keputusan ke arah yang benar
      Ini mirip seperti menyalahkan diri sendiri karena tidak ingat siapa yang meloloskan Corn Laws, atau siapa yang memulai transportasi berpendingin di Amerika
      Jika Anda memahami narasi intinya—misalnya bahwa perang menuntut rekayasa, lalu diikuti revolusi pertanian dan revolusi industri, dan bahwa sejarah adalah perjuangan kelas—maka informasi baru akan menempatkan diri pada posisinya seperti potongan-potongan dalam medan magnet
      Jadi jangan terlalu keras pada diri sendiri; Anda boleh sedikit lebih berbaik hati pada diri sendiri
  • Baru setelah mencoba game ini dan kursus Nand2Tetris saya sadar bahwa keduanya mengimplementasikan komputer yang sama
    Game ini adalah versi grafis interaktif, sedangkan Nand2Tetris aslinya menggunakan HDL teks alih-alih klik dan drag koneksi antar gerbang logika
    Keduanya menyenangkan dan edukatif, tetapi NandGame terasa lebih seru
    Meski begitu, ada baiknya mengetahui hubungan antara keduanya. Setelah menyelesaikan NandGame, Anda bisa lanjut ke tugas lanjutan Nand2Tetris, yaitu pekerjaan software komputer di level yang lebih tinggi, dan juga lebih mudah berbagi pengalaman serta isi dengan orang-orang yang mencoba versi kebalikannya

    • Saya pernah mencoba nand2tetris, dan walaupun dulu saya juga cukup bagus di mata kuliah hardware saat kuliah, kelas dan buku ini terasa seperti “gambar sisa burung hantu
      Untuk mengerjakan tugasnya, saya sampai harus mencari lagi buku teks dan lembar ujian zaman kuliah, lalu menyerah kira-kira saat sudah hampir menyelesaikan bagian inti CPU
      Sejujurnya saya merasa kuliah dan teksnya sangat kurang, dan entah ini memang umum di era internet atau tidak, tetapi saya berharap kelas dan materi ajarnya cukup self-contained
    • Setidaknya ada satu simulator drag-and-drop lain yang kompatibel dengan Nand2Tetris
      Yaitu LogicSimX/Logic Simulator 2 berbasis desktop dari Andrew Wilkes: https://logicsimx.com/about/ https://andrew-wilkes.itch.io/logic-simulator-2
      Kelihatannya cukup bagus, tetapi saya belum cukup tahu untuk menilainya dengan baik
  • Sebagai bahan pemikiran, jika pada tahap pertama kita mengecualikan bagian membuat gerbang NAND secara fisik, maka saat proses ini selesai bentuk akhirnya justru akan sangat mirip dengan jaringan saraf
    Untuk merepresentasikan satu gerbang NAND dibutuhkan 2 neuron, dengan lapisan sedalam n, banyak angka 0 di matriks bobot, dan struktur yang tampak seperti memiliki sedikit ruang penyimpanan
    Pertanyaannya adalah ini. Jika hanya diberi semantik input/output pada level assembly, apakah mungkin melatih jaringan saraf kosong hingga menjadi struktur seperti ini? Backpropagation jelas tidak akan bisa dipakai, tetapi mungkinkah ada bentuk pencarian terarah tertentu?

    • Tahun lalu saya sempat mencoba ini bersama seorang teman
      Kami mencoba gerbang 3-mayoritas dan berbagai gerbang lain, tetapi setelah melewati satu lapisan backpropagation tidak bekerja dengan baik, kemungkinan karena presisi bit yang kurang
      Masalah melatih “tanpa backpropagation” ternyata memang cukup sulit dan pada akhirnya kami menyerah
      Adakah metode yang lumayan bagus untuk melatih jaringan saraf tanpa backpropagation? Information bottleneck tampaknya agak memungkinkan, tetapi sulit mengevaluasi mutual information tanpa jaringan saraf
    • Beberapa eksperimen jaringan saraf awal puluhan tahun lalu memang bertujuan menunjukkan bahwa gerbang logika bisa dimodelkan dengan sukses
  • Saya sama sekali tidak punya pengalaman di bidang ini, jadi saya ingin ada penjelasan tentang fungsi tiap komponennya
    Saya tidak tahu relay itu apa, juga tidak tahu c dan in itu apa
    Saya juga bingung kenapa ada catu daya terpisah, sementara jika a atau b dihubungkan ke daya lalu dinyalakan, bukankah itu sendiri sudah memberi daya?

    • Relay adalah sakelar yang dikendalikan listrik
      Saat koil (c) diberi daya, keadaan sakelar berubah dari keadaan default ke kebalikannya
      Sakelar default-on akan meneruskan nilai in ke keluaran saat c = 0, tetapi jika c = 1 koil diberi daya sehingga sakelar terbuka atau mati
      Sakelar default-off bekerja sebaliknya
      c adalah koil, dan saat diberi daya akan men-toggle sakelar
      in adalah nilai yang lewat ketika sakelar tertutup, dalam hal ini 1 atau 0
      Catu daya terpisah dibutuhkan untuk memperoleh nilai 1 terlepas dari dua nilai input
      Misalnya, jika kedua input sama-sama 0 tetapi kita tetap ingin selalu menghasilkan 1, kita memerlukan nilai tinggi yang bisa ditarik naik, dan peran itu dipenuhi oleh catu daya
    • C kemungkinan adalah singkatan dari coil atau control
      Relay adalah sakelar mekanis yang dikendalikan elektromagnet yang dibuat dari koil yang dililitkan pada inti besi
      Saat arus mengalir melalui koil, ia menarik pegas logam, dan hasilnya arus bisa dialirkan dari in ke keluaran atau justru diputus
      Dua jenis komponen relay yang disediakan menggambarkan tepat dua perilaku ini
  • Keren sekali. Saya merekomendasikan semua orang untuk juga melihat atau mencoba MHRD
    https://store.steampowered.com/app/576030/MHRD/

  • Kelihatannya keren. Sayang sekali saya tidak sempat menuntaskan bukunya, dan saya ingin mencoba ini lebih banyak lagi