ในความคิดของฉันสิ่งที่ผู้คนเรียกขานว่า "ภาษาโปรแกรม" นั้นเป็นสามสิ่งที่แยกกัน
- ประเภทภาษาและไวยากรณ์
- ภาษา IDE
- ไลบรารีที่ใช้ได้สำหรับภาษา
ตัวอย่างเช่นเมื่อมีคนนำเสนอ C # ในการสนทนาคุณอาจคิดว่าเขา / เธอกำลังพูดถึงไวยากรณ์ภาษา (1) แต่มีความมั่นใจ 95% ที่การสนทนาจะเกี่ยวข้องกับ. Net framework (3) หากคุณไม่ได้ออกแบบภาษาใหม่มันยากและมักไม่มีจุดหมายที่จะแยก (1) และไม่สนใจ (2) และ (3) นั่นเป็นเพราะ IDE และไลบรารีมาตรฐานเป็น "ปัจจัยด้านความสบาย" สิ่งที่ส่งผลโดยตรงต่อประสบการณ์การใช้เครื่องมือบางอย่าง
ไม่กี่ปีที่ผ่านมาฉันก็มีส่วนร่วมใน Google Code Jam ครั้งแรกที่ฉันเลือกใช้ C ++ เพราะมีการสนับสนุนที่ดีสำหรับการอ่านอินพุต ตัวอย่างเช่นการอ่านจำนวนเต็มสามจำนวนจากอินพุตมาตรฐานใน C ++ มีลักษณะดังนี้:
int n, h, w;
cin >> n >> h >> w;
ในขณะที่อยู่ใน C # จะมีลักษณะเช่นนี้:
int n, h, w;
string[] tokens = Console.ReadLine().Split(' ');
n = int.Parse(tokens[0]);
h = int.Parse(tokens[1]);
w = int.Parse(tokens[2]);
นั่นเป็นค่าใช้จ่ายทางจิตที่มากกว่าสำหรับการใช้งานที่เรียบง่าย สิ่งต่าง ๆ มีความซับซ้อนมากขึ้นใน C # ด้วยอินพุตแบบหลายบรรทัด บางทีฉันก็ไม่ได้คิดวิธีที่ดีกว่ากลับมาแล้ว อย่างไรก็ตามฉันไม่ผ่านรอบแรกเพราะฉันมีข้อผิดพลาดที่ฉันไม่สามารถแก้ไขได้ก่อนจบรอบ แดกดันวิธีการอ่านอินพุตทำให้งงบั๊ก ปัญหานั้นง่ายอินพุตมีตัวเลขที่ใหญ่เกินไปสำหรับจำนวนเต็ม 32 บิต ใน C # int.Parse(string)
จะทำให้เกิดข้อยกเว้น แต่ใน C ++ สตรีมไฟล์อินพุตจะตั้งค่าสถานะข้อผิดพลาดบางอย่างและล้มเหลวอย่างเงียบ ๆ ทำให้ผู้พัฒนาที่ไม่สงสัยไม่ได้ตระหนักถึงปัญหา
ตัวอย่างทั้งสองแสดงให้เห็นถึงวิธีการใช้ห้องสมุดมากกว่าไวยากรณ์ภาษา คนแรกแสดงให้เห็นถึงการใช้คำฟุ่มเฟือยและอื่น ๆ แสดงให้เห็นถึงความน่าเชื่อถือ ไลบรารีจำนวนมากถูกย้ายไปยังหลายภาษาและบางภาษาสามารถใช้ไลบรารีที่ไม่ได้สร้างขึ้นโดยเฉพาะสำหรับพวกเขา (ดูคำตอบของ @ vartec เกี่ยวกับ Python กับไลบรารี C)
ในการสรุปให้ดีขึ้นการรู้ว่าอัลกอริทึมที่ถูกต้องช่วยได้อย่างไร ในการเขียนโปรแกรมการแข่งขันเป็นสิ่งสำคัญโดยเฉพาะอย่างยิ่งเมื่อทรัพยากรเช่นเวลาดำเนินการและหน่วยความจำมี จำกัด ในการพัฒนาแอปพลิเคชันก็ยินดีต้อนรับ แต่โดยทั่วไปไม่สำคัญ การบำรุงรักษามีความสำคัญมากกว่า มันสามารถทำได้โดยการใช้รูปแบบการออกแบบที่ถูกต้องมีสถาปัตยกรรมที่ดีรหัสที่อ่านได้และเอกสารที่เกี่ยวข้องและวิธีการเหล่านั้นทั้งหมดขึ้นอยู่กับห้องสมุดของ บริษัท และบุคคลที่สาม ดังนั้นฉันพบว่ามันสำคัญกว่าที่จะรู้ว่าล้อชนิดใดที่ถูกประดิษฐ์ขึ้นแล้วและพวกเขาจะทำอย่างไรให้เหมาะกับตัวเอง