ฉันจะไปเทียบกับเมล็ดข้าวที่นี่และพยายามสร้างกรณีความงาม (ตลกเล็กน้อย) สำหรับ C. ในขณะที่บางคนอาจเรียกมันว่า "น่าเกลียด" ด้วยเหตุผลต่าง ๆ เช่นการขาดโครงสร้างระดับสูงเช่นคลาสหรือ ความเชื่อมั่นในตัวชี้ผมพบว่ามันไม่ได้เป็นกรณีสำหรับฉัน
TL; DR : ในความคิดของฉัน C นั้นง่าย C ที่ดีนั้นสามารถอ่านได้และมีความสุขที่พบได้ในการต่อสู้บิต
C นั้นง่าย
มาตรฐาน C กำหนดประเภทและกลไกพื้นฐานเพียงเล็กน้อยเพื่อสร้างฟังก์ชั่นพอยน์เตอร์และอาร์เรย์ ยิ่งไปกว่านั้นมีการสร้างองค์ประกอบจำนวนน้อยเพื่อสร้างประเภทที่ซับซ้อนมากขึ้นจากแบบดั้งเดิม (เช่น structs และสหภาพ) สังเกตว่าฉันอธิบายภาษาส่วนใหญ่ในสองประโยค ซึ่งหมายความว่าคุณไม่จำเป็นต้องมีกฎและรูปแบบประโยคในหัวของคุณมากเกินไปขณะทำการเขียนโค้ด
ที่เรียบง่ายมีความสวยงาม
C ไม่ใช่ความลับ
แตกต่างจากภาษาระดับสูงอื่น ๆ คุณจะกดยากที่จะหาสัญลักษณ์แปลก ๆ ที่ไม่สามารถเข้าใจได้ใน C. ในโลก C สิ่งอำนวยความสะดวกหลักสำหรับทั้งนามธรรมและ "การบีบอัด syntactic" เป็นฟังก์ชั่น - ความหมายง่าย ๆ และ สร้างคำอธิบายด้วยตนเอง สไตล์ C ที่ดีกระตุ้นความงามที่เกือบจะอ่านออก เพื่ออธิบายลองมาอ่านตัวอย่างต่อไปนี้จากเคอร์เนล Linux แม้ว่าจะไม่เข้าใจโครงสร้างข้อมูลพื้นฐานและรายละเอียดการใช้งานเราสามารถทำให้ความรู้สึกต่อไปนี้:
bool kthread_freezable_should_stop(bool *was_frozen)
{
bool frozen = false;
might_sleep();
if (unlikely(freezing(current)))
frozen = __refrigerator(true);
if (was_frozen)
*was_frozen = frozen;
return kthread_should_stop();
}
ตรงกลางของฟังก์ชั่นจะอ่าน "ในเหตุการณ์ที่ไม่น่าเป็นไปได้ว่ากระแสไฟฟ้ากำลังแข็งตัวให้ถามตู้เย็นว่าการแช่แข็งเกิดขึ้นจริงหรือไม่" ดร. Seuss คงไม่สามารถเขียนได้ดีกว่านี้
สามารถอ่านได้มีความสวยงาม
C โปร่งใส
ยกเว้นว่าคำสั่ง C รวมถึงการเรียกใช้ฟังก์ชั่นโดยทั่วไปคุณจะได้รับความคิดที่ดีเกี่ยวกับค่าใช้จ่ายและผลข้างเคียง C ให้การควบคุมโปรแกรมเมอร์และในที่สุดก็เชื่อใจเขาหรือเธอในการทำสิ่งที่ถูกต้อง เราสามารถเห็นภาพว่าเกิดอะไรขึ้นเมื่อข้อมูลโค้ดนี้ (ปรับรูปแบบใหม่สำหรับ SE) ออกจากการนำไปใช้strlen()
ในไลบรารี GNU C ที่รันเนื่องจากตัวดำเนินการทุกตัวมีความหมายที่ชัดเจน ไม่มีการรับน้ำหนักมากเกินไปใน C.
for (char_ptr = str; ((unsigned long int) char_ptr & (sizeof (longword) - 1)) != 0;
++char_ptr)
if (*char_ptr == '\0')
return char_ptr - str;
สำหรับวัตถุประสงค์ของ "การเพิ่มประสิทธิภาพ" คุณสมบัตินี้ยอดเยี่ยม เนื้อหาภาษาระดับสูงบางภาษาทำให้การแสดงออกที่ชัดเจนของอัลกอริทึมระดับสูงง่ายกว่า (เช่น C ++ พร้อมคลาสและการโอเวอร์โหลด) แต่สำหรับวัตถุประสงค์ C ได้รับการออกแบบมาเพื่อทำหน้าที่เป็นแอสเซมเบลอร์แบบพกพา - C บางครั้งเมื่อเรียกใช้งานโค้ดระดับต่ำได้สำเร็จโปรแกรมเมอร์อาจรู้สึกเป็นหนึ่งเดียวกับเครื่องในแง่หนึ่ง (หรือศูนย์ - เป็นรายละเอียดการนำไปใช้งาน) นี่ไม่ได้หมายความว่าภาษาอื่นจะไม่เลวไม่ใช่ "เซน" เพียงพอหรือบางอย่างที่โง่เง่าเช่นนั้นเพียงแค่ IMO C นั้นน่าสนใจในรูปแบบที่ภาษาอื่น ๆ เลือกที่จะไม่เป็นเพราะเหตุผลหลายประการ
ในความคิดของฉันจุดสามข้อที่ได้กล่าวไว้ข้างต้นทำให้สามารถสร้างระบบที่ซับซ้อน แต่มีประสิทธิภาพได้ด้วย Linux ซึ่งเป็นสิ่งที่อยู่ในใจของฉัน ฉันพบว่าโลกนี้ดึงดูดความสนใจด้านสุนทรียศาสตร์ของฉันและฉันขอแนะนำให้ทุกคนที่พิจารณา C เป็นเป้าหมายต่อไปของเขาหรือเธอเพื่อพิจารณาประเด็นเหล่านี้ ฉันรู้สึกว่าข้อโต้แย้งเกี่ยวกับระบบปฏิบัติการและสิ่งที่ไม่ได้รับการสนับสนุนที่ดีกว่าโดยการระบุอย่างชัดเจนเพราะไม่มีความจำเป็นที่จะต้องเข้าใจเมล็ดเพื่อให้โปรแกรมเมอร์ประสบความสำเร็จ