แรงบันดาลใจจากฉันไม่ใช่ภาษาที่คุณกำลังมองหา!
ท้าทาย
เลือกภาษาการเขียนโปรแกรมสองภาษาที่แตกต่างกันและเขียนโปรแกรมที่พิมพ์บรรทัดต่อไปนี้ไปยัง stdout (หรือเทียบเท่า):
This program errors out in <the current language> :P
จากนั้นสร้างข้อผิดพลาดประเภทต่าง ๆ ในแต่ละภาษา
กฎระเบียบ
กฎบางอย่างมาจากความท้าทายเดิม
- ในผลลัพธ์ชื่อภาษาควรเป็นดังนี้:
- ชื่อที่แสดงอยู่ในTIOซึ่งเป็นตัวเลือกยกเว้นหมายเลขรุ่นและ / หรือชื่อการนำไปใช้ (เช่นหากคุณใช้
JavaScript (Node.js)
เป็นภาษาใดภาษาหนึ่งของคุณคุณสามารถใช้JavaScript
สำหรับชื่อภาษาของคุณ แต่ไม่ใช่JS
หรือJavascript
) - ชื่อเต็มในเว็บไซต์ทางการ (หรือ GitHub repo) หากภาษาที่คุณเลือกไม่สามารถใช้งานได้ใน TIO
- ชื่อที่แสดงอยู่ในTIOซึ่งเป็นตัวเลือกยกเว้นหมายเลขรุ่นและ / หรือชื่อการนำไปใช้ (เช่นหากคุณใช้
- โปรแกรมไม่ควรรับข้อมูลใด ๆ จากผู้ใช้
- คุณสามารถใช้ความคิดเห็นในภาษาใดภาษาหนึ่ง
- ภาษาเดียวกันสองเวอร์ชันที่แตกต่างกันจะนับเป็นภาษาที่แตกต่างกัน
- หากทำเสร็จแล้วโปรแกรมควรส่งออกหมายเลขรุ่นหลักและหากใช้กับรุ่นรองสองรุ่นที่แตกต่างกันควรรายงานรุ่นรองด้วย
- คุณไม่ควรใช้ฟังก์ชั่นเวอร์ชั่นที่สร้างไว้ล่วงหน้า (ซึ่งรวมถึงตัวแปรที่ได้รับการประเมินแล้วตอนรันไทม์)
- แฟล็กบรรทัดคำสั่งที่แตกต่างกันสองรายการในภาษาเดียวกันจะนับเป็นภาษาที่แตกต่างกันตามฉันทามติเมตานี้ตราบใดที่แฟล็กไม่ได้มีการแตกแฟรกเมนต์โค้ด (เช่น
-Dblahblah...
ใน C)- หากทำเสร็จแล้วโปรแกรมควรแสดงสถานะแฟล็กที่ใช้
- ข้อผิดพลาดสองข้อถือว่าแตกต่างกันเว้นแต่ว่าข้อผิดพลาดทั้งสองจะถูกสร้างขึ้นโดยซีแมนทิกส์เดียวกัน (เช่น "การหารด้วยศูนย์", "การแบ่งเซกเมนต์ผิด" หรือ "ดัชนีอยู่นอกช่วง")
- หากรันไทม์ของภาษาไม่ออกหลังจากเกิดข้อผิดพลาด แต่รายงานข้อผิดพลาดในทางใดทางหนึ่งแก่ผู้ใช้นั่นเป็นข้อผิดพลาดที่ถูกต้อง
- หากภาษาไม่แยกแยะข้อความแสดงข้อผิดพลาด แต่มีรายการสาเหตุที่ทำให้เกิดข้อผิดพลาดที่รู้จักคุณต้องระบุเหตุผลไม่ใช่ข้อความแสดงข้อผิดพลาด
ตัวอย่างคือ><>
ซึ่งมีข้อความแสดงข้อผิดพลาดเดียวsomething smells fishy...
แต่หน้า esolangs wikiมีรายการข้อผิดพลาด
- ไม่อนุญาตให้เกิดข้อผิดพลาดทางไวยากรณ์เว้นแต่ว่าจะเกิดจากการโทร
eval()
หรือที่คล้ายกัน - อนุญาตให้โยนบางสิ่งได้ด้วยตนเอง (ผ่าน
throw
(JS),raise
(Python),die
(Perl) หรือคล้ายกัน) แต่สิ่งเหล่านั้นทั้งหมดถือเป็นข้อผิดพลาดชนิดหนึ่ง - ข้อผิดพลาดโดยคำสั่งที่ไม่ถูกต้องใน 2D หรือ golflangs ก็อนุญาตเช่นกัน
ตัวอย่าง
Python และ Ruby
- Python:
This program errors out in Python :P
ไปยัง stdout จากนั้นระบุไม่ได้กำหนด - Ruby:
This program errors out in Ruby :P
ไปที่ stdout จากนั้นสร้างดัชนีใหม่นอกขอบเขต
C89 และ C99
- C89:
This program errors out in C 89 :P
ไปที่ stdout จากนั้นหารด้วยศูนย์ - C99:
This program errors out in C 99 :P
ไปที่ stdout จากนั้นทำการแบ่งส่วนความผิดพลาด
โปรดทราบว่าหมายเลขรุ่นควรเสมอจะแยกออกจากชื่อภาษาด้วยช่องว่าง
Python 2.7.9 และ Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
ไปที่ stdout จากนั้นข้อผิดพลาดทางไวยากรณ์ของ eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
ไปยัง stdout แล้วกดคีย์ error บน dict
Perl และ Perl -n
- Perl:
This program errors out in Perl :P
เป็น stdout, จากนั้นรูปแบบเวลาที่ไม่ถูกต้อง - Perl
-n
:This program errors out in Perl -n :P
ไปที่ stdout จากนั้นลองเปิดไฟล์ที่ไม่มีอยู่
สภาพการชนะ
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ แต่คุณควรโพสต์คำตอบที่สนุกหรือน่าสนใจเสมอแม้ว่าจะไม่สั้นมาก
This program errors out in ...
มีแท็บ / ช่องว่างแบบผสมแทนที่จะเป็นช่องว่างหรือไม่