Terinspirasi oleh saya bukan bahasa yang Anda cari!
Tantangan
Pilih dua bahasa pemrograman yang berbeda, dan tulis sebuah program yang mencetak baris berikut ke stdout (atau setara):
This program errors out in <the current language> :P
dan kemudian menghasilkan berbagai jenis kesalahan di masing-masing dua bahasa.
Aturan
Beberapa aturan diambil dari tantangan aslinya.
- Dalam output, nama bahasa harus mengikuti:
- Nama yang terdaftar di TIO , secara opsional mengecualikan nomor versi dan / atau nama implementasi (mis. Jika Anda menggunakan
JavaScript (Node.js)
sebagai salah satu bahasa Anda, Anda dapat menggunakanJavaScript
nama bahasa Anda, tetapi tidakJS
atauJavascript
.) - Nama lengkap di situs web resmi (atau GitHub repo) jika bahasa pilihan Anda tidak tersedia di TIO.
- Nama yang terdaftar di TIO , secara opsional mengecualikan nomor versi dan / atau nama implementasi (mis. Jika Anda menggunakan
- Tidak ada program yang harus mengambil input dari pengguna.
- Anda dapat menggunakan komentar dalam bahasa apa pun.
- Dua versi berbeda dari bahasa yang sama dihitung sebagai bahasa yang berbeda.
- Jika ini dilakukan, program harus menampilkan nomor versi utama, dan jika berjalan pada dua versi minor yang berbeda, harus melaporkan versi minornya juga.
- Anda tidak boleh menggunakan fungsi versi prebuilt (ini termasuk variabel yang telah dievaluasi saat runtime).
- Dua flag baris perintah yang berbeda dalam bahasa yang sama juga dihitung sebagai bahasa yang berbeda sesuai konsensus meta ini , selama flag tersebut tidak menyertakan fragmen kode (seperti
-Dblahblah...
dalam C).- Jika ini dilakukan, program juga harus menampilkan flag yang digunakan.
- Dua kesalahan dianggap berbeda kecuali kedua kesalahan dihasilkan oleh semantik yang sama (seperti "pembagian dengan nol", "kesalahan segmentasi", atau "indeks di luar jangkauan").
- Jika runtime suatu bahasa tidak keluar setelah kesalahan, tetapi melaporkan kesalahan dalam beberapa cara kepada pengguna, itu adalah kesalahan yang valid.
- Jika suatu bahasa tidak membedakan pesan kesalahan tetapi memiliki daftar alasan yang diketahui menyebabkan kesalahan, Anda harus menentukan alasannya, bukan pesan kesalahan tersebut.
Contohnya adalah><>
, yang hanya memiliki satu pesan kesalahansomething smells fishy...
, tetapi halaman wiki esolangs memiliki daftar alasan kesalahan.
- Kesalahan sintaksis tidak diizinkan kecuali dihasilkan oleh panggilan
eval()
atau sejenisnya. - Melempar sesuatu secara manual (via
throw
(JS),raise
(Python),die
(Perl) atau yang serupa) diperbolehkan, tetapi semuanya dianggap sebagai satu jenis kesalahan. - Kesalahan dengan perintah yang tidak valid dalam 2D atau pijakan golf juga diizinkan (dan diperlakukan sebagai salah satu jenis kesalahan).
Contohnya
Python dan Ruby
- Python:
This program errors out in Python :P
ke stdout, lalu pengidentifikasi yang tidak terdefinisi - Ruby:
This program errors out in Ruby :P
ke stdout, lalu indeks di luar batas
C89 dan C99
- C89:
This program errors out in C 89 :P
ke stdout, lalu pembagian dengan nol - C99:
This program errors out in C 99 :P
ke stdout, lalu segmentasi kesalahan
Perhatikan bahwa nomor versi harus selalu dipisahkan dari nama bahasa dengan spasi.
Python 2.7.9 dan Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
ke stdout, lalu sintaks kesalahan pada eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
ke stdout, lalu kunci kesalahan pada dict
Perl dan Perl -n
- Perl:
This program errors out in Perl :P
ke stdout, lalu format waktu tidak valid - Perl
-n
:This program errors out in Perl -n :P
ke stdout, lalu coba buka file yang tidak ada
Kondisi menang
Ini adalah kode-golf , jadi kode terpendek dalam byte menang. Tetapi Anda selalu didorong untuk mengirim jawaban yang menyenangkan atau menarik meskipun itu tidak terlalu pendek.
This program errors out in ...
mengandung tab / spasi campuran, bukan spasi saja?