- Halaman yang mengumpulkan pesan error dari kompiler MPW C Apple, dan disebut sebagai kutipan nyata yang diperoleh dengan mendekompilasi resource String milik kompiler
- Alih-alih diagnosis kompiler yang biasa, pesan-pesannya menyampaikan spesifikasi ANSI C, batasan tipe, dan kesalahan sintaks dengan kalimat yang bercampur lelucon dan sindiran
- Contohnya mencakup error bahasa C seperti panjang string literal, label di dalam
switch, posisitypedef, kombinasivolatile/register, dan modifikasi konstanta - Juga secara langsung menyasar situasi kompilasi tertentu seperti manipulasi
void *, castvoid, redefinisi struct, dan error yang melibatkangotoserta inisialisasi variabel otomatis - Ukuran kompiler adalah 324KB, dan ditambahkan bahwa daftar yang dipublikasikan kemungkinan hanya kutipan, bukan keseluruhan, serta persoalan hak cipta juga tidak sepenuhnya jelas
Kumpulan pesan error kompiler MPW C
- Sebuah halaman yang mencantumkan sebagian pesan error yang dihasilkan oleh kompiler MPW C Apple
- Pesan-pesan ini diperkenalkan sebagai keluaran nyata, dan disebut diperoleh dengan mendekompilasi resource String milik kompiler
- Karena ukuran kompiler hanya 324KB, daftar ini kemungkinan bukan keseluruhan, melainkan sebagian kutipan
- Disebutkan juga bahwa persoalan hak cipta tidak sepenuhnya pasti
Contoh diagnosis nyata yang terdengar seperti lelucon
-
Pesan yang memelintir sintaks C dan spesifikasi ANSI
- Batas panjang string literal:
"String literal too long (I let you have 512 characters, that's 3 more than ANSI said I should)"
- Error bahwa di dalam pernyataan
switchhanya boleh ada labelcaseataudefault:"...And the lord said, 'lo, there shall only be case or default labels inside a switch statement'"
- Situasi saat menemukan nama
typedefyang tidak terduga:"a typedef name was a complete surprise to me at this point in your program"
- Pesan yang mengutip klausul ANSI C sambil menunjukkan bahwa target cast harus berupa scalar:
"type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don't care, I'm just trying to annoy you)"
- Batas panjang string literal:
-
Error terkait tipe dan deklarasi
- Pesan bahwa
volatiledanregistertidak bisa dipakai bersamaan:"'Volatile' and 'Register' are not miscible"
- Error yang menyampaikan secara satir bahwa konstanta tidak bisa dimodifikasi:
"You can't modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler"
- Situasi ketika mencoba mendefinisikan ulang struct yang sudah ada:
"This struct already has a perfectly good definition"
- Batasan cast terkait
void:"Can't cast a void type to type void (because the ANSI spec. says so, that's why)"
- Pesan bahwa
void *tidak bisa diperlakukan sembarangan:"can't go mucking with a 'void *'"
- Pesan bahwa
-
Ungkapan error yang singkat atau berlebihan
- Error yang pendek dan langsung:
"Huh ?"
- Situasi ketika fungsi yang sudah diproses muncul lagi:
"we already did this function"
- Error panjang yang sekaligus menangani
gotodari luar block, variabel otomatis dengan initializer, dan jendela yang terlalu sempit:"This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn't wide enough to read this whole error message"
- Situasi ketika menemukan
/*di dalam komentar:"Call me paranoid but finding '/*' inside this comment makes me suspicious"
- Situasi ketika ada terlalu banyak error dalam satu baris:
"Too many errors on one line (make fewer)"
- Fatal heap error karena tabel simbol penuh:
"Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer"
- Error yang pendek dan langsung:
1 komentar
Komentar Hacker News
Saya rindu masa ketika komputasi punya sisi iseng seperti ini
Saat saya di Amazon, manajer saya bilang dulu ketika memperbarui halaman 404, ia memindai gambar kucing buatan putrinya dan memasukkannya ke isi halaman. Saat saya bergabung pada 2009, gambar itu masih ada, tetapi pada suatu waktu sepertinya ada yang menyadarinya lalu menggantinya dengan foto stok anjing. Meski begitu, nama asetnya masih tetap
kayli-kitty.jpg, lalu kemudian diganti lagi menjadi foto-foto yang berotasi sehingga jejak aslinya hilangSaya juga menemukan komentar blog terkait: https://www.davebellous.com/2006/09/25/what-the/#comment-290...
Sepertinya Amazon memperkenalkan halaman error saat ini yang memakai gambar anjing besar sekitar Juni 2016: https://web.archive.org/web/20160612232820/http://www.amazon...
www.amazon.comlalu langsung cek source-nya :)Serius, saya penasaran: apakah hal seperti ini memungkinkan meski wali dulu sudah memberi persetujuan?
“Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer” membuat saya teringat masa lalu ketika setelah membeli komputer pun kita masih bisa membeli upgrade RAM
Kalau sekarang mungkin bunyinya, “Symbol table full - fatal heap error; please go buy a new Mac with more RAM”
Sistem operasi modern semuanya mendukung swapping, sehingga kompilasi tetap berlanjut, hanya saja menjadi jauh lebih lambat. Di komputer modern, agar benar-benar “kehabisan memori”, RAM dan disk harus sama-sama penuh
node_modules“a typedef name was a complete surprise to me at this point in your program”
Saya suka masa ketika ada pesan error compiler yang lucu. Dulu saya pernah melihat pesan seperti ini di compiler dari salah satu vendor: “No! But they'll only let me warn you. Danger Will Robinson! Danger!”
Ada juga “Really! If you are fussing around with void *, just go home or at least back to your editor!” Sepertinya manajer IT terus memakai vendor itu karena pesan tersebut. SDK-nya biasa saja, tapi menyenangkan
void*jadi masalah besar seperti itu?Saya memprogram di MacOS asli sejak hal itu memungkinkan. Saya ingat banyak pesan error seperti ini. Terutama “Too many errors on one line (make fewer)”
Saya juga teringat build yang butuh 45 menit kalau satu file header berubah
XCMD terbesar saya berisi ketiga bahasa itu, dan MPW menautkannya tanpa masalah. Proyek yang berisi blok-blok kode kecil untuk ditempel ke dalam satu file pun mudah diotomatisasi. Saya ingat selalu tertawa keras setiap kali pesan error langka muncul. Pembuatnya, kerja bagus
Setelah memakai compiler ini selama bertahun-tahun, selama fungsinya tidak terlalu besar, saya jadi bisa “mendekompilasi” kode objek 68k yang dihasilkan menjadi kode C langsung di kepala
Dengan MacNosy, biasanya saya bisa membuat ulang source C sebuah aplikasi dalam beberapa jam. Saya punya skrip yang mengubah file MacNosy aplikasi menjadi file assembler dan file
rsrc, lalu saya bisa memindahkan fungsi satu per satu ke C sambil mempertahankan aplikasi yang bisa dibangun setara dengan aslinya. Awalnya saya memakainya untuk hacking game, tetapi kadang juga untuk memperbaiki bugPrediktabilitas code generation compiler MPW C sebagian berkat simetri instruction set 68k. Mereka membuat compiler sederhana, dan itu bekerja dengan baik. Sebagian besar upaya dicurahkan ke hal lain. Karena saya bisa memprediksi dengan cukup akurat kode seperti apa yang akan keluar, kalau tidak suka hasil code generation-nya, saya tinggal memperbaiki source-nya. Saya juga suka bahwa compiler
javacpunya filosofi serupa. Setelah tahu polanya, kita bisa membuat bytecode yang hampir optimalKompiler Glockenspiel C++ yang dipakai di sebuah perusahaan pendidikan pada awal 90-an adalah turunan dari cfront, dan pesan kesalahan sintaks favorit saya cuma “core dumped”
Cukup canggung menjelaskannya dalam kursus berbayar kepada para peserta yang sudah kewalahan dengan C++ itu sendiri
“Call me paranoid but finding '/*' inside this comment makes me suspicious” — itu bukan urusan Anda, Pak
/*lagi di dalam/*, maka untuk mengakhirinya perlu*/dua kaliDalam praktiknya mungkin itu ide yang buruk sekali, tetapi ada cukup banyak situasi ketika hal seperti itu akan menghemat waktu
Sedikit melenceng dari isi halaman, tetapi saya benar-benar menyukai cara banyak utilitas MPW menghasilkan keluaran, termasuk pesan kesalahan, dalam bentuk perintah
Karena terminalnya adalah buffer editor, kita bisa memindahkan kursor ke baris terkait atau mengekliknya lalu menekan sesuatu seperti
cmd-enteruntuk membuka file yang relevan“a typedef name was a complete surprise to me at this point in your program”
Saya sudah melihat daftar ini berkali-kali, tetapi pesan ini tetap membuat saya tertawa keras setiap kali melihatnya
Diskusi sebelumnya: https://news.ycombinator.com/item?id=30238928
Sebagai konteks tambahan, kompiler MPW C yang membuat pesan-pesan itu sebenarnya bukan dikembangkan secara internal oleh Apple, melainkan dibuat berdasarkan kontrak oleh Green Hills Software[1]. Itu juga disebutkan di halaman Wikipedia[2] dan sumbernya[3], dan menariknya, sumber itu sendiri adalah topik ini
[1] https://en.m.wikipedia.org/wiki/Green_Hills_Software
[2] https://en.m.wikipedia.org/wiki/Macintosh_Programmer%27s_Wor...
[3] https://web.archive.org/web/20140528005901/http://lists.appl...