มีเว็บไซต์ Stack แลกเปลี่ยนเรียกว่าเป็นโปรแกรมปริศนาและรหัสกอล์ฟ ปริศนาการเขียนโปรแกรมบนเว็บไซต์ที่เหมาะสมกับความหมายของการนี้ปริศนา :
ของเล่นปัญหาหรือสิ่งประดิษฐ์อื่น ๆ ที่ออกแบบมาเพื่อให้เป็นที่ชอบใจโดยนำเสนอปัญหาที่จะแก้ไขได้ด้วยความเฉลียวฉลาดหรือความพยายามของผู้ป่วย
พวกเขาได้รับการออกแบบมาเพื่อให้เป็นที่ชอบใจและไม่ใช่ในลักษณะที่โปรแกรมเมอร์ที่ทำงานอาจถูกขบขันด้วยปัญหาจริงที่พบในการทำงานประจำวัน
Code Golfคือ "ประเภทของการแข่งขันการเขียนโปรแกรมคอมพิวเตอร์เพื่อการพักผ่อนหย่อนใจที่ผู้เข้าร่วมแข่งขันพยายามที่จะบรรลุซอร์สโค้ดที่สั้นที่สุดซึ่งใช้อัลกอริทึมบางตัว" ในคำตอบของไซต์ PP&CG คุณจะเห็นคนระบุจำนวนไบต์ในคำตอบของพวกเขา เมื่อพวกเขาพบวิธีที่จะโกนหนวดออกไปสองสามไบต์พวกเขาจะใช้หมายเลขเดิมและบันทึกหมายเลขใหม่
ตามที่คุณคาดไว้การตีกอล์ฟเป็นการตอบแทนการเขียนโปรแกรมภาษาอย่างไม่เหมาะสม ชื่อตัวแปรหนึ่งตัวอักษร ไม่มีช่องว่าง การใช้งานฟังก์ชั่นห้องสมุดอย่างสร้างสรรค์ คุณสมบัติที่ไม่มีเอกสาร วิธีปฏิบัติในการเขียนโปรแกรมที่ไม่เป็นมาตรฐาน แฮ็กที่น่ากลัว
หากโปรแกรมเมอร์ส่งคำขอดึงที่ทำงานซึ่งมีรหัสสไตล์กอล์ฟมันจะถูกปฏิเสธ เพื่อนร่วมงานของพวกเขาจะหัวเราะเยาะพวกเขา ผู้จัดการของพวกเขาจะแวะที่โต๊ะเพื่อแชท ถึงกระนั้นโปรแกรมเมอร์ก็สร้างความสนุกสนานด้วยการส่งคำตอบให้ PP&CG
สิ่งนี้เกี่ยวข้องกับstdc++.h
อะไร? อย่างที่คนอื่น ๆ ชี้ไปการใช้มันช่างขี้เกียจ มันไม่ใช่พกพาดังนั้นคุณจึงไม่รู้ว่ามันจะทำงานกับคอมไพเลอร์ของคุณหรือคอมไพเลอร์เวอร์ชั่นถัดไปของคุณหรือไม่ มันส่งเสริมนิสัยที่ไม่ดี มันไม่ได้มาตรฐานดังนั้นพฤติกรรมของโปรแกรมของคุณอาจแตกต่างจากที่คุณคาดหวัง มันอาจเพิ่มเวลารวบรวมและขนาดที่ปฏิบัติการได้
สิ่งเหล่านี้ล้วนเป็นข้อคัดค้านที่ถูกต้องและถูกต้อง ดังนั้นทำไมทุกคนจะใช้ความประหลาดใจนี้?
แต่กลับกลายเป็นว่าบางคนชอบปริศนาการเขียนโปรแกรมโดยไม่ต้องกอล์ฟรหัส พวกเขารวมตัวกันและแข่งขันในกิจกรรมต่างๆเช่น ACM-ICPC, Google Code Jam และ Facebook Hacker Cup หรือบนเว็บไซต์เช่น Topcoder และ Codeforces อันดับของพวกเขาขึ้นอยู่กับความถูกต้องของโปรแกรมความเร็วในการดำเนินการและความเร็วในการส่งคำตอบ เพื่อเพิ่มความเร็วในการดำเนินการสูงสุดผู้เข้าร่วมหลายคนใช้ C ++ stdc++.h
เพื่อเพิ่มความเร็วในการเข้ารหัสบางส่วนของพวกเขาใช้
นี่เป็นความคิดที่ดีหรือไม่? ตรวจสอบรายการข้อเสีย พกพา? ไม่สำคัญเนื่องจากเหตุการณ์การเข้ารหัสเหล่านี้ใช้คอมไพเลอร์เวอร์ชันเฉพาะที่ผู้เข้าแข่งขันทราบล่วงหน้า ปฏิบัติตามมาตรฐาน? ไม่เกี่ยวข้องกับกลุ่มรหัสที่มีอายุการใช้งานน้อยกว่าหนึ่งชั่วโมง รวบรวมเวลาและขนาดที่ปฏิบัติการได้? สิ่งเหล่านี้ไม่ได้เป็นส่วนหนึ่งของเกณฑ์การให้คะแนนการประกวด
ดังนั้นเราจึงเหลือนิสัยไม่ดี นี่คือการคัดค้านที่ถูกต้อง โดยการใช้ไฟล์ส่วนหัวนี้ผู้เข้าแข่งขันจะหลีกเลี่ยงโอกาสที่จะเรียนรู้ไฟล์ส่วนหัวมาตรฐานที่กำหนดฟังก์ชั่นที่พวกเขาใช้ในโปรแกรมของพวกเขา เมื่อพวกเขากำลังเขียนรหัสโลกแห่งความจริง (และไม่ได้ใช้stdc++.h
) พวกเขาจะต้องใช้เวลาในการค้นหาข้อมูลนี้ซึ่งหมายความว่าพวกเขาจะมีประสิทธิผลน้อยลง stdc++.h
นั่นคือข้อเสียของการฝึกด้วย
นี่ทำให้เกิดคำถามว่าทำไมจึงมีค่าในการมีส่วนร่วมในการเขียนโปรแกรมแข่งขันถ้ามันส่งเสริมนิสัยที่ไม่ดีเช่นการใช้stdc++.h
และการละเมิดมาตรฐานการเข้ารหัสอื่น ๆ คำตอบหนึ่งก็คือผู้คนทำด้วยเหตุผลเดียวกันกับที่พวกเขาโพสต์โปรแกรมบน PP&CG: โปรแกรมเมอร์บางคนพบว่ามันสนุกที่จะใช้ทักษะการเขียนโปรแกรมในบริบทที่เหมือนเกม
ดังนั้นคำถามที่ว่าจะใช้stdc++.h
ลงมาได้หรือไม่นั้นจะเป็นประโยชน์ต่อความเร็วในการเขียนโปรแกรมในการแข่งขันการเขียนโปรแกรมมากกว่านิสัยที่ไม่ดีที่อาจเกิดขึ้นจากการใช้งานหรือไม่
คำถามนี้ถามว่า: "ทำไมฉันไม่ #include <bits/stdc++.h>
" ฉันรู้ว่ามันถูกถามและตอบเพื่อให้จุดและคำตอบที่ยอมรับมีวัตถุประสงค์เพื่อเป็นคำตอบที่แท้จริงหนึ่งสำหรับคำถามนี้ แต่คำถามไม่ใช่ "ทำไมฉันไม่ #include <bits/stdc++.h>
ในรหัสการผลิต" ดังนั้นฉันคิดว่ามันสมเหตุสมผลที่จะพิจารณาสถานการณ์อื่น ๆ ที่คำตอบอาจแตกต่างกัน
using namespace std;
นั่นรวมอยู่ที่ไหนสักแห่ง