ทำไมภาษาที่เร็วกว่าและดีกว่า C ออกมา [ปิด]


147

ด้วยภาษาใหม่ "สมัยใหม่" ทุกวันนี้แล้วทำไม C ถึงได้รับการประกาศว่าเป็นเร็วที่สุดและ "ใกล้เคียงกับเครื่อง" มากที่สุด? ฉันไม่เชื่อจริง ๆ ว่ามีวิธีที่ถูกต้องเพียงอย่างเดียวในการทำสิ่งต่าง ๆ และ C ได้อยู่มาเป็นเวลานาน (ตั้งแต่ยุค 60!) เราไม่ได้คิดอะไรดีไปกว่าเขียนเมื่อเกือบ 50 ปีที่แล้วใช่ไหม

ฉันทราบว่าภาษาสมัยใหม่มีระดับที่สูงขึ้นและดูแลงานบางอย่างเช่นการรวบรวมขยะและการจัดสรรหน่วยความจำและใช้ประโยชน์จากห้องสมุดและเช่นนั้น ฉันแค่ถามว่าทำไมไม่เคยมีตัวเลือกที่สองที่แท้จริงสำหรับซี

เป็นไปได้ไหมที่ C นั้นสมบูรณ์แบบจนไม่มีวิธีอื่นใดในการใช้งานคอมพิวเตอร์

แก้ไขดูฉันไม่ได้พยายามเคาะ C หรือภาษาที่คุณโปรดปราน ฉันสงสัยว่าทำไม C กลายเป็นมาตรฐานและเหตุใดทางเลือกอื่น ๆ จึงไม่เกิดขึ้นและ C ก็แค่ "ยอมรับ"


44
C ++ นั้นเร็วและมีประสิทธิผลมากกว่าที่จะเขียน <3
GManNickG

6
อืมคุณไม่ลืมเกี่ยวกับ c ++ หรือ

23
ฉันจะยืนยันการชุมนุมเป็นเร็วที่สุดและ "ใกล้" กับเครื่อง

27
ทำไมการเคลื่อนไหวทั้งหมดจึงปิด? ฉันอยากรู้จริงๆ ... ฉันไม่ได้พยายามที่จะเริ่มต้นสงครามเปลวไฟหรืออะไร
เจสัน

15
ปิดอีกครั้งหรือ หลังจากถูกเจฟฟ์ atwood เปิดตัวอีกครั้ง? ทำไมคุณอาจต้องการปิดนี้
เจสัน

คำตอบ:


164

C เป็นภาษาที่ง่ายมากและด้วยเหตุนี้ควบคู่ไปกับอายุการใช้งานที่รวดเร็วและปรับให้เหมาะสม นอกจากนี้ยังรองรับอย่างกว้างขวางเป็นพิเศษในเรื่องที่เกี่ยวกับสภาพแวดล้อมแบบฝังตัวไมโครโปรเซสเซอร์ ฯลฯ

มันยากที่จะเอาชนะภาษาที่ง่ายและรวดเร็วจริงๆ สิ่งเดียวที่ต้องปรับปรุงเมื่อใช้ภาษาเช่นนั้นคือการใช้งาน: ลดเวลาที่ใช้ในการสร้างรหัสทั่วไปที่คล้ายคลึงกันและทำให้ง่ายขึ้นในการสร้างแบบจำลองที่มี abstractions

นี่คือสิ่งที่ C ++ เข้ามา C ++ สามารถทำได้เร็วเท่ากับ C สิ่งนี้คือ C ++ เป็นภาษาที่ซับซ้อนมากขึ้น ตราบใดที่ผู้คนรู้วิธีใช้งาน C ++ และ C ไม่ใช่ภาษาเดียวกันอีกต่อไป

ตอนนี้ D เป็นอีกก้าวหนึ่ง ความสามารถแบบเดียวกันสำหรับรหัสที่รวดเร็วการรวบรวมขยะที่เป็นตัวเลือก ฯลฯ แต่ไม่เคยติดอยู่ หวังว่าการเปลี่ยนแปลงนั้นจะลดลงเพราะสิ่งที่ทำให้เกิดภัยพิบัติ C ++: เข้ากันได้กับ C

ดังนั้นเพื่อตอบคำถามของคุณ "ดีกว่า" จึงเป็นเรื่องยากที่จะตัดสิน ในแง่ของความเรียบง่ายและความเร็ว C อาจใกล้เคียงกับสิ่งที่ดีที่สุดที่เราทำได้ ในแง่ของประสิทธิภาพการทำงานกับความเรียบง่าย C ++ น่าจะดีที่สุดที่เราสามารถทำได้แม้ว่าความคิดเห็นนั้นจะแตกต่างกันมาก สุดท้ายในแง่ของการใช้ภาษาออกและทำให้สะอาดขึ้นด้วยความเร็วและความเรียบง่ายของ C ทำให้ D ชนะบริบทนี้


31
โดย "Simple" คุณหมายถึง "simple จากคอมไพเลอร์ POV ไม่ใช่โปรแกรมเมอร์ POV" C นั้นง่ายเพราะมันประกอบไปด้วยข้อความและสำนวน มันไม่ง่ายอย่างที่ Python นั้นเรียบง่าย
Marius

15
แต่การที่จะชี้แจงง่ายสำหรับคอมไพเลอร์ไม่ได้หมายความว่าง่ายที่จะรับ อาจจะไม่ง่ายที่จะใช้ความคิดที่ซับซ้อนใน.
GManNickG

16
สำหรับสิ่งที่คุ้มค่า OCaml ผลิตโค้ดเนทีฟที่ได้รับการปรับปรุงให้ดีที่สุดเร็วเท่า C และ C ++ และโค้ดเองก็สั้นเหมือน Python ด้วยความขัดเล็กน้อยฉันคิดว่า OCaml สามารถจับคู่หรือเอาชนะ C เป็นภาษาที่คุณต้องการเมื่อคุณต้องการเขียนโค้ดเพื่อความเร็วสูงสุดและการปล่อยหน่วยความจำขั้นต่ำ Object--C ยังทำงานได้ค่อนข้างดีแม้ว่ามันจะไม่เร็วเท่า C แต่มันก็ได้รับ "C กับวัตถุ" ทั้งหมดในวิธีที่ C ++ ไม่สามารถทำได้และจะไม่ทำ
Juliet

2
เห็นด้วยกับ @ Thorbjørnความเข้ากันได้ย้อนหลังกับ C คือสาเหตุที่ C ++ ติดและ D ไม่ได้ หากเราเต็มใจที่จะสละสิ่งนั้นไม่มีเหตุผลที่จะจัดการกับการปรับปรุงที่เพิ่มขึ้นนั่นคือ D เราสามารถไปได้สำหรับภาษาที่ดีกว่าซึ่งอยู่นอกตระกูล C ทั้งหมด ดังที่ @Juliet กล่าวว่า OCaml อาจเป็นนักแสดงที่มีประสิทธิภาพ แต่ภาษาอื่นอาจมีได้หลายภาษาถ้าผู้เขียนคอมไพเลอร์ใช้เวลากับพวกเขามากเท่าที่พวกเขามีใน C หรือ C ++ อย่างไรก็ตามคำตอบที่ดีและ +1 จากฉัน
jalf

5
@Ferruccio: ใช่ แต่ทุกภาษาสามารถเชื่อมโยงไปยังไลบรารี C ดังนั้นหากเรายินดีที่จะชำระแทนการใช้งานร่วมกับซอร์สโค้ดจริงตามข้อเสนอ C ++ (มากหรือน้อย) เราก็อาจเลือกภาษาที่แตกต่างอย่างสิ้นเชิงเช่น Haskell หรือ Python เหตุผลที่ C ++ ติดไม่ได้เพราะมันสามารถเชื่อมโยงไปยังไลบรารี C มันเป็นสิ่งที่มันสามารถรวบรวมรหัส C
jalf

64

มีเร็วกว่าภาษา C

มีภาษาที่เร็วกว่า C. ตัวอย่างเช่น Fortran ดังที่กล่าวมาแล้วนั้นทำได้ดีมากเพราะมันมีกฎภาษา aliasing ที่ จำกัด มากขึ้น

นอกจากนี้ยังมีการชุมนุมทดลองเช่นภาษาที่โจมตี C ที่ด้านหน้าซึ่งใช้เป็นภาษาระดับสูงเช่นสร้างคอมไพเลอร์ เคยได้ยินเกี่ยวกับ C - หรือ Janus หรือไม่? แต่สองคนนั้นถูกสังหารโดยโครงการ LLVM

ฉันจะเดิมพันว่า APL หรือภาษาคณิตศาสตร์อื่น ๆ จะระเบิด C ออกจากน้ำในโดเมนแอปพลิเคชันพิเศษเนื่องจากพวกเขามีส่วนสนับสนุนหน่วยประมวลผล Vector นี่เป็นสิ่งที่เป็นไปไม่ได้สำหรับ C (และพวก: ไม่มี! ห้องสมุดที่ได้รับการปรับปรุงให้ดีขึ้นเป็นพิเศษด้วยการเชื่อมโยง C ไม่มีส่วนเกี่ยวข้องกับภาษา C)

ผู้ผลิตซีพียูได้ลบทุกสิ่งที่ช่วยให้นักเขียนคอมไพเลอร์ในภาษาอื่น ๆ - จำรหัสแอสเซมเบลอร์ทางคณิตศาสตร์ที่ติดแท็กสำหรับการทำให้ LISP ติดตั้งบน SPARC รวดเร็วหรือไม่ หายไปกับสายลม

และหากคุณไม่ได้อยู่ในเกณฑ์มาตรฐานขนาดเล็กไปจนถึงการพัฒนาแอพพลิเคชั่นจะมีภาษาที่รวดเร็วกว่าสำหรับการพัฒนาแอพพลิเคชั่น ตัวอย่างส่วนตัวของฉันที่นี่คือ SmartEiffel เสมอ เป็นเป้าหมาย C แต่ใช้การเพิ่มประสิทธิภาพของระบบทั่วโลกซึ่งทำให้เร็วขึ้นแล้ว C ในการพัฒนาแอปพลิเคชันในโลกแห่งความเป็นจริง

ในโดเมนนี้แม้แต่ abstractions ระดับผิดปกติหรือระดับต่ำก็สามารถทำลายประสิทธิภาพของภาษาทั้งหมดได้ เพราะ C ไม่ได้ให้ abstractions สูงคนส่วนใหญ่บอกว่ามันเป็นปัญหาการเขียนโปรแกรม แต่ไม่ใช่ ตัวอย่างเช่นดูที่การขาดยาชื่อสามัญ ใน C คุณจะจบลงด้วยการใช้งานช้าเช่นฟังก์ชั่นห้องสมุด "qsort" ซึ่งสามารถเขียนขนาดได้เร็วขึ้นด้วย generics (ที่ฟังก์ชั่นการโทรสำหรับการเปรียบเทียบที่สำคัญจะถูกตัดออก)

เพียงเปรียบเทียบการโทร qsort กับอาร์เรย์ของเมกะไบต์ด้วยการเขียนด้วยมือที่ดีซึ่งใช้การเข้าถึงอาร์เรย์และตัวดำเนินการ builtin '<'


9
ความคิดเห็นที่ดีมาก สิ่งสำคัญคือต้องตระหนักว่าบางแง่มุมของข้อมูลจำเพาะภาษา C (เช่นกฎนามแฝงตัวชี้) ทำให้ไม่สามารถสร้างรหัสเครื่องที่ดีที่สุดได้อย่างแท้จริง การเป็นแอสเซมเบลอร์ระดับสูง C ไม่ใช่ "เร็วที่สุด" แต่เพียง "สวยเร็ว"

1
ขอบคุณฉันลืมพูดถึงความเป็นไปไม่ได้ที่จะคืนค่าผลลัพธ์หลายค่า อีกมุมมองระดับต่ำที่ฉันหายไปยากเมื่อใช้มันเป็นแอสเซมเบลอร์ระดับสูง

5
โมเดิร์นซีเขียนอย่างถูกต้องสามารถเข้ารหัสสมมติฐานนามแฝงเช่นเดียวกับภาษาอื่น ๆ ที่ช่วยให้คอมไพเลอร์เพื่อเพิ่มประสิทธิภาพเดียวกัน มันเป็นคุณสมบัติที่สำคัญของภาษาที่อนุญาตให้โปรแกรมเมอร์ไม่ยอมรับข้อกำหนดเหล่านั้นเมื่อไม่สามารถใช้งานได้ ประเด็นอื่น ๆ ของคุณคือจุดดังนั้น +1
สตีเฟ่น Canon

1
@Rascher: ถูกต้องแล้วคุณจะเห็นอิทธิพลของ C ต่อผู้ออกแบบ CPU ซึ่งระบุ CPU ABI เสมอ และค่าที่ส่งคืนหลายเป็นสิ่งที่เพียงแค่ไม่ได้มามีใจแม้ว่าจำนวนของการลงทะเบียนจะไม่เป็นปัญหา (SPARC, PowerPC, Itanium)

13
นามแฝงของตัวชี้ใน C ได้รับการจัดการโดยrestrictใน C99 (10 ปีที่แล้ว!)

35

คำถามที่ดี. ฉันคิดว่าภาษาประสบความสำเร็จโดยการหาช่อง สิ่งสำคัญคือให้สังเกตว่ามีภาษาใหม่ ๆ มากมายที่ดีกว่าภาษาซีในภาษาซอกของพวกเขา

  • C ครั้งหนึ่งเคยถูกใช้อย่างกว้างขวางเป็นภาษาแอปพลิเคชันและในโดเมนนั้นได้สูญเสียพื้นดินไปเป็นภาษา C ++, Java และเมื่อเร็ว ๆ นี้ทุกภาษาอื่น ๆ (โดยเฉพาะภาษาไดนามิก)

  • C เคยเป็นภาษาสำหรับการเขียนรหัสเซิร์ฟเวอร์ เว็บได้ผลักดันภาษาที่หลากหลายอย่างน่าทึ่งเข้าไปในพื้นที่นั้น - Perl, Java, Python, VBScript, VB.NET, Ruby, C # - และกรณีที่ C ทำให้รู้สึกใด ๆ สำหรับรหัสเซิร์ฟเวอร์ขณะนี้น้อย

  • C ถูกนำมาใช้สำหรับการคำนวณทางวิทยาศาสตร์ แต่ก็เผชิญกับการแข่งขันจากภาษาโดเมนที่เฉพาะเจาะจงเช่น Matlab และ Mathematica เช่นเดียวกับห้องสมุดเช่นSciPy ผู้คนจำนวนมากที่เขียนโค้ดในช่องนี้ไม่ใช่ผู้เขียนโค๊ดโดยการค้าและ C นั้นไม่เหมาะสำหรับพวกเขา

แต่โพรงของ C คือรหัสระบบ เมล็ดของระบบปฏิบัติการ ไดร์เวอร์ ไลบรารีรันไทม์ มันถูกสร้างขึ้นในพื้นที่นั้นซึ่งแม้แต่ C ++ ก็จะทำการแทนที่มันอย่างช้าๆ

C ได้รับรางวัลย้อนกลับไปในปี 1970 เนื่องจาก UNIX เพราะภาษาที่แข่งขันกันนั้นมีข้อ จำกัด หรือช้าเกินไปและเพราะรหัส C นั้นถือได้ว่าพกพาได้อย่างสมเหตุสมผล แต่ข้อได้เปรียบที่ใหญ่ที่สุดในวันนี้นั้นไม่เกี่ยวข้องกันและส่วนใหญ่มาจากทศวรรษของการครอบงำช่องของ มีเครื่องมือที่ดีสำหรับ C: การเพิ่มประสิทธิภาพคอมไพเลอร์, เคอร์เนลดีบั๊ก, การวิเคราะห์แบบคงที่เพื่อหาข้อบกพร่องในรหัสไดรเวอร์ ฯลฯ เกือบทุกแพลตฟอร์มหลักกำหนด C ABI และบ่อยครั้งที่มันเป็นภาษาสำหรับห้องสมุด มีโปรแกรมเมอร์หลายคนที่รู้วิธีเขียนโค้ด C และรู้ว่าปัญหาและข้อผิดพลาดของ C คืออะไร

ในระยะยาวช่องนี้จะไม่หายไป และ C มีปัญหาบางอย่าง แต่มันยังคงเป็นเรื่องยากมากสำหรับผู้มาใหม่ที่จะแข่งขัน


9
C ยังคงใช้กันอย่างแพร่หลายสำหรับรหัสเซิร์ฟเวอร์ มีไม่เพียง แต่เว็บ DNS ส่วนใหญ่อีเมลเซิร์ฟเวอร์ ฯลฯ จะเขียนเป็นภาษาซีแม้สำหรับเว็บ Apache ก็อยู่ใน C.

@bortzmeyer: Apache ค่อนข้างเก่า แต่ ฉันไม่ได้บอกว่ามันไม่มีประโยชน์หรือถูกแทนที่มันเพิ่งสร้างเมื่อ C เป็นมันและไม่มีทางเลือกที่ดีอีกมากมาย
Macke

1
ฉันอยากรู้ว่าทำไมคุณถึงคิดว่า C "ไม่เหมาะอย่างยิ่ง" สำหรับการคำนวณทางวิทยาศาสตร์ Python พอใจกับการทำงานเป็นอย่างมาก แต่ฉันพบว่า C เป็นทางเลือกที่ดีเมื่อต้องการรหัสที่เร็วขึ้นและตัวเลือกอื่น ๆ ที่เป็นไปได้ (C ++) ไม่นำจำนวนมากมาสู่ตารางซึ่งแตกต่างจากการเขียนโปรแกรมด้านอื่น ๆ .
Fomite

1
นอกจากนั้นปริมาณของสิ่งต่างๆใน SciPy / NumPy ฯลฯ ที่เขียนด้วย C ทำให้มีประโยชน์ที่จะรู้
Fomite

1
@EpiGrad อาจ C เป็นทางเลือกที่ดีสำหรับคุณ แต่ C มีเส้นโค้งการเรียนรู้ที่สูงชันมากโดยเฉพาะอย่างยิ่งสำหรับผู้ที่ไม่มีพื้นฐานในการเขียนโปรแกรม โดยเฉพาะอย่างยิ่งบางครั้งมันล้มเหลวและหากคุณไม่ใช่ผู้ทำรหัสคุณมีความหวังเล็กน้อยในการหาคำตอบ Mathematica ทำให้การเขียนเป็นจำนวนมากง่ายขึ้นและคุณจบด้วยรหัสน้อยกว่าโดยมีปัจจัยหลายร้อย และมันก็ไม่ผิดพลาด
Jason Orendorff

25

การถอดความความคิดเห็นที่ดีมาก: ไม่มีวิธีที่แตกต่างกันมากมายในการสร้างภาษาที่รวดเร็วและ "ใกล้กับเครื่อง" - C ทำได้ดีและแทบไม่มีที่ว่างในการปรับปรุง

คำตอบเดิม:

รวดเร็วในการดำเนินการหรือรวดเร็วในการเขียนเนื้อหาใน?

ภาษาไม่เร็วหรือช้าในการดำเนินการการใช้งานเฉพาะคือ languge เท่านั้นถือว่าเร็วกว่าคนอื่นเมื่อมันอย่างใดทำให้มันง่ายที่จะมีการใช้งานได้อย่างรวดเร็ว อย่างสม่ำเสมอนั่นหมายความว่า "ใกล้กับเครื่อง" แต่ด้วยเครื่องจักรที่มีความเร็วเพิ่มขึ้นแบบทวีคูณทำให้มันน่าสนใจน้อยลงเรื่อย ๆ แต่ความสะดวกและความเร็วของการพัฒนาและพกพาได้กลายเป็นสิ่งสำคัญมากเพื่อให้"ดี" ได้กลายเป็นที่หมายถึง "ออกไปจากเครื่อง" ความพยายามทั้งหมดในการออกแบบภาษานั้นได้ดำเนินไปในทิศทางนั้นตลอด 5 ทศวรรษที่ผ่านมา

ดังนั้นคุณอยู่ที่: ใกล้กับเครื่องและภาษาที่เร็วกว่า C อยู่; พวกเขาเป็นคนที่มาก่อน C : Assembler, Fortran อาจมีบางคนที่ถูกลืม


@michael - แต่ยังคงมีตลาดสำหรับการเขียนโปรแกรมแบบ super-lean และ super-fast โดยเฉพาะเมื่อมีการโจมตีของอุปกรณ์พกพาเหล่านี้ ... ทำไม C ยังคงเป็นตัวเลือกที่ดีที่สุดสำหรับอุปกรณ์เหล่านี้บางอย่างเช่นทำไมถึงไม่มีอีก ภาษาในระดับเดียวกันเช่น. NET-vs-Python-esque?
เจสัน

5
เสียงกระเพื่อม หลับใหล แต่ไม่ลืม! :)

2
@ Jason: คำถามคือคุณต้องการตัวประกอบแบบพกพากี่ตัว C เป็นที่รู้จักกันดีและยากมากที่จะเขียนภาษาที่มีการติดตั้งใช้งานที่รวดเร็วกว่า ในชุดสูทพูดไม่มีความต้องการไม่มีตลาดไม่มีแรงจูงใจ

4
@ Michael ขอโทษสำหรับความคิดเห็นที่หลอกลวงคำตอบของคุณ เหตุผลที่มีมากขึ้นในภูมิประเทศของหลาม / ทับทิม / จาวา ฯลฯ คือเมื่อคุณหยุดการลองภาษาที่มีประสิทธิภาพมากที่สุดคุณจะได้รับตัวเลือกเพิ่มเติมมากมายซึ่งคุณสมบัติที่จะจัดลำดับความสำคัญและทุกวิธีสามารถสร้างภาษาใหม่ มีวิธีการเขียนภาษาที่เร็วที่สุดที่เป็นไปได้น้อยลง

1
-1 สำหรับ "และแทบไม่มีห้องใด ๆ ที่จะปรับปรุงตามนั้น" - มีห้องมากมายสำหรับการปรับปรุงบน C / C ++ โดยไม่มีผลต่อประสิทธิภาพ
BlueRaja - Danny Pflughoeft

21

Fortran เร็วกว่า C สำหรับงานที่เป็นตัวเลขเนื่องจากวิธีการจัดการการอ้างอิงหน่วยความจำ (ตัวชี้ C นั้นยากต่อการปรับให้เหมาะสม) ห้องสมุดตัวเลขที่มีน้ำหนักมากที่ฐานของสิ่งต่าง ๆ เช่น Matlab และ Numpy ยังคงเขียนใน Fortran

ในทางตรงกันข้าม C ++ สามารถเร็วเท่ากับ C แต่มีคุณสมบัติการเขียนโปรแกรมขั้นสูงมากมาย มันเป็นภาษาที่ใหม่กว่ามากจากช่วงกลางยุค 80


1
และ C ++ ยังคงได้รับการปรับปรุง
GManNickG

5
@GMan: เป็น C


3
แก้ไขให้ถูกต้องหากฉันผิด แต่restrictตัวชี้C99 จะไม่มีความหมายนามแฝงเดียวกันคือ Fortran หรือไม่ และมีอะไรอีกที่สร้างความแตกต่าง?

9
ฉันคิดว่าความคิดที่ว่า Fortran นั้นเร็วกว่า C ค่อนข้างเป็นตำนานขึ้นอยู่กับว่ามีรหัสอะไรบ้างและใครเป็นคนทำ เหตุผลที่ห้องสมุดตัวเลขเฮฟวี่เวทอยู่ในฟอร์แทรนไม่ใช่เพราะฟอร์แทรนเร็วกว่า แต่เพราะรูทีนนั้นถูกเขียนขึ้นในฟอร์แทรนและคนไม่กี่คนที่มีเส้นประสาทหรือต้องการเขียนใหม่ ผู้เชี่ยวชาญด้านคณิตศาสตร์จำนวนน้อยที่เขียนและตรวจสอบอัลกอริทึมเหล่านี้มีความสุขใน Fortran และไม่จำเป็นต้องเปลี่ยนโดยเฉพาะอย่างยิ่งเนื่องจากพวกเขาคิดว่า Fortran นั้นเร็วกว่า
Mike Dunlavey

16

อะไรนะฉันจะพูดกับ $ 0.02 ของฉัน

ในหลายกรณีมีความแตกต่างที่แท้จริงหรือที่รับรู้ระหว่างภาษา "ระบบ" และภาษาระดับสูงกว่า ฉันจะไม่สนใจภาษา "ระดับสูงกว่า" ส่วนใหญ่เนื่องจากไม่มีใคร (อย่างน้อยก็ไม่มาก) จะยืนยันว่าสำหรับหลาย ๆ งานภาษาเช่น Python, Ruby และอื่น ๆ นั้นง่ายต่อการทำงาน

C ถูกออกแบบมาให้เป็นภาษาของระบบซึ่งหมายความว่ามันถูกออกแบบมาเป็นภาษาที่ระบบปฏิบัติการ Unix ถูกเขียนขึ้นมาเช่นนี้มันถูกออกแบบมาให้เรียบง่ายมีประสิทธิภาพและรวดเร็ว ภาษาที่เรียบง่ายได้รับอำนาจโดยที่ผู้ที่ไม่ใช่ระบบ - โปรแกรมเมอร์มักคิดว่าเป็นอันตราย: พอยน์เตอร์, การจัดการหน่วยความจำแบบแมนนวล ฯลฯ ดังที่ได้กล่าวไปแล้ว C ค่อนข้างง่าย K&R เป็นหนังสือที่เล็กที่สุดในชั้นวางโปรแกรมของฉัน (ไม่นับการอ้างอิงกระเป๋า O'Reilly) และเป็นเพียง "ใหญ่" เล็กน้อยกว่าการอ้างอิง Ruby Pocket ของฉัน C ค่อนข้างทรงพลัง หากคุณต้องการพูดคุยกับฮาร์ดแวร์ให้ตรวจสอบด้วยตนเองและเล่นกับหน่วยความจำเป็นต้น C มีความสามารถ

อย่างไรก็ตามจากมุมมองของโปรแกรมเมอร์ C นั้นไม่ง่ายนัก ความเร็วและพลังงานมาในราคาของการจัดการหน่วยความจำด้วยตนเองและมีการสนับสนุน OOP ในภาษาไม่มากนัก C ++ (ไม่ใช่ภาษาที่ฉันชอบ) ง่ายกว่ามากจากมุมมองของโปรแกรมเมอร์ แต่ง่ายกว่าน้อยกว่าจากมุมมองของคอมไพเลอร์ Objective-C (อาจเป็นภาษาโปรดของฉัน) มีการแลกเปลี่ยนกันแบบเดียวกันโดยมีความเอนเอียงเล็กน้อยในการทำให้ภาษาง่าย (ตัวอย่างเช่นการเก็บขยะเป็นผู้ใช้ใหม่กับ Objective-C เป็นต้น) แต่เนื่องจากโลกคอมพิวเตอร์ของพวกเราหลายคนรู้ว่ามันถูกเขียนด้วยภาษา C จึงเป็นเรื่องยากสำหรับภาษาใหม่ที่มีความซับซ้อนมากขึ้น แต่ "ง่ายกว่า" เพื่อให้ได้รับการยอมรับอย่างกว้างขวาง

ในบางกรณีโดยเฉพาะอย่างยิ่งเมื่อ "มาตรฐาน" ปัจจุบันเป็น "ดีพอ" ดังที่ C นั้นไม่มีแรงจูงใจมากสำหรับบางสิ่งที่ "ดีกว่า" (C ++, Objective-C, D ฯลฯ ) เพื่อรับแรงฉุดเมื่อมี มีแรงจูงใจเพียงพอที่จะสร้างบางสิ่งที่ "ดีกว่า"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.