Lấy cảm hứng từ tôi không phải là ngôn ngữ bạn đang tìm kiếm!
Thử thách
Chọn hai ngôn ngữ lập trình khác nhau và viết chương trình in dòng sau thành thiết bị xuất chuẩn (hoặc tương đương):
This program errors out in <the current language> :P
và sau đó tạo ra loại lỗi khác nhau trong mỗi hai ngôn ngữ.
Quy tắc
Một số quy tắc được lấy từ các thách thức ban đầu.
- Trong đầu ra, tên ngôn ngữ phải chính xác theo sau:
- Tên được liệt kê trên TIO , tùy chọn loại trừ số phiên bản và / hoặc tên triển khai (ví dụ: nếu bạn sử dụng
JavaScript (Node.js)
làm một trong các ngôn ngữ của mình, bạn có thể sử dụngJavaScript
cho tên ngôn ngữ của mình, nhưng khôngJS
hoặcJavascript
.) - Tên đầy đủ trên trang web chính thức (hoặc repo GitHub) nếu ngôn ngữ bạn chọn không có sẵn trên TIO.
- Tên được liệt kê trên TIO , tùy chọn loại trừ số phiên bản và / hoặc tên triển khai (ví dụ: nếu bạn sử dụng
- Không chương trình nào nên lấy bất kỳ đầu vào nào từ người dùng.
- Bạn có thể sử dụng ý kiến trong một trong hai ngôn ngữ.
- Hai phiên bản khác nhau của cùng một ngôn ngữ được tính là các ngôn ngữ khác nhau.
- Nếu điều này được thực hiện, chương trình sẽ xuất ra số phiên bản chính và nếu chạy trên hai phiên bản nhỏ khác nhau, cũng nên báo cáo phiên bản nhỏ.
- Bạn không nên sử dụng các chức năng phiên bản dựng sẵn (điều này bao gồm các biến đã được đánh giá trong thời gian chạy).
- Hai cờ dòng lệnh khác nhau trong cùng một ngôn ngữ cũng được tính là các ngôn ngữ khác nhau theo sự đồng thuận meta này , miễn là các cờ không bao gồm các đoạn mã (chẳng hạn như
-Dblahblah...
trong C).- Nếu điều này được thực hiện, chương trình cũng sẽ xuất cờ được sử dụng.
- Hai lỗi được coi là khác nhau trừ khi cả hai lỗi được tạo bởi cùng một ngữ nghĩa (chẳng hạn như "chia cho 0", "lỗi phân đoạn" hoặc "chỉ số nằm ngoài phạm vi").
- Nếu thời gian chạy của ngôn ngữ không thoát sau một lỗi, nhưng báo cáo lỗi theo một cách nào đó cho người dùng, đó là một lỗi hợp lệ.
- Nếu một ngôn ngữ không phân biệt các thông báo lỗi nhưng có một danh sách các lý do đã biết gây ra lỗi, bạn phải chỉ định lý do, không phải thông báo lỗi.
Một ví dụ là><>
, chỉ có một thông báo lỗisomething smells fishy...
, nhưng trang wiki esolang có một danh sách các lý do lỗi.
- Lỗi cú pháp không được phép trừ khi nó được tạo bằng cách gọi
eval()
hoặc tương tự. - Ném một cái gì đó bằng tay (thông qua
throw
(JS),raise
(Python),die
(Perl) hoặc tương tự) được cho phép, nhưng tất cả chúng đều được coi là một loại lỗi. - Lỗi do lệnh không hợp lệ trong 2D hoặc golflang cũng được cho phép (và được coi là một loại lỗi).
Ví dụ
Python và Ruby
- Python:
This program errors out in Python :P
to stout, sau đó không xác định định danh - Ruby:
This program errors out in Ruby :P
stdout, sau đó lập chỉ mục ngoài giới hạn
C89 và C99
- C89:
This program errors out in C 89 :P
để xuất chuẩn, sau đó chia cho số không - C99:
This program errors out in C 99 :P
để stdout, sau đó lỗi phân đoạn
Lưu ý rằng số phiên bản phải luôn được phân tách khỏi tên ngôn ngữ theo khoảng trắng.
Python 2.7.9 và Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
to stout , sau đó lỗi cú pháp trên eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
đến thiết bị xuất chuẩn, sau đó xảy ra lỗi trên dict
Perl và Perl -n
- Perl:
This program errors out in Perl :P
to stout, sau đó định dạng thời gian không hợp lệ - Perl
-n
:This program errors out in Perl -n :P
để stdout, sau đó thử mở một tệp không tồn tại
Điều kiện chiến thắng
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng. Nhưng bạn luôn được khuyến khích đăng một câu trả lời thú vị hoặc thú vị ngay cả khi nó không quá ngắn.
This program errors out in ...
có thể chứa các tab / khoảng trắng hỗn hợp thay vì chỉ khoảng trắng không?