วันนี้คุณจะใช้ C สำหรับโครงการซอฟต์แวร์หรือไม่? [ปิด]


18

ถ้าใช่คุณจะใช้ที่ไหนและทำไม

หากไม่มีโปรดอธิบายเหตุผลที่ C ไม่เป็นที่ยอมรับของคุณ


10
แน่นอนว่ามีแอปพลิเคชันที่ C เป็นตัวเลือกที่ถูกต้องและชัดเจน แต่โดยส่วนตัวถ้าฉันไม่เคยบล็อกหน่วยความจำอีกต่อไปฉันจะตายอย่างมีความสุข
Adam Crossland

ใช่ - ม้าสำหรับหลักสูตร
Martijn Verburg

นั่นหมายความว่าอย่างไร?
Luca Matteis

มันเป็นคำพูดที่เก่าแก่สำหรับผู้ที่ติดตามการแข่งม้า โดยทั่วไปหมายความว่าม้าทุกตัวสามารถชนะได้ในวันนั้นตราบเท่าที่หลักสูตร (แห้ง, โคลน, ยาว, สั้น, สั้น) อะไรก็ตามที่เหมาะสม กันสำหรับภาษาการเขียนโปรแกรม - มันขึ้นอยู่กับบริบทและโดเมนปัญหาเสมอ
Martijn Verburg

2
ไม่เพียงเพราะวันนี้ฉันไม่ได้ทำงานในโครงการที่ C จะเป็นตัวเลือกภาษาที่ดี ถามฉันอีกครั้งในวันพรุ่งนี้
James McNellis

คำตอบ:


38

C เป็นภาษาที่ยอดเยี่ยมสำหรับการเขียนโปรแกรมระบบ

ฉันจะใช้ C หากฉันติดตั้งไดรเวอร์ฮาร์แวร์บางตัว และฉันจะใช้ C ถ้าฉันใช้เคอร์เนลระบบปฏิบัติการของฉันเองหรือ Virtual Machine ของตัวเอง

มันเป็นภาษาที่ดีมากในการทำสิ่งต่าง ๆ ในระดับต่ำหากคุณต้องจัดการกับฮาร์ดแวร์หรือ OS API ระดับต่ำสำหรับ Windows API, Linux, Mac OS X, Solaris และอื่น ๆ ... ระบบสมองกลฝังตัวมักจะสนับสนุน C ด้วยชุดคอมไพเลอร์ + การพัฒนา


4
คุณช่วยชี้ให้เห็นว่า "Mac OS เป็น linux" ได้ไหม? ฉันคิดว่า Mac OS เป็นดาร์วิน: en.wikipedia.org/wiki/Darwin_%28operating_system%29
LennyProgrammers

1
@ สตีเฟ่น Furlani: ฮ่า ๆ - ใช่ว่าเป็นชนิดของการพูด :-) มี Unices ที่ตายแล้วจำนวนมากเช่น Xenix, DYNIX, และ A / UX, และเวอร์ชั่นปัจจุบันพวกเราส่วนใหญ่ไม่ชอบ HP-UX แผนภูมิต้นไม้มีความซับซ้อนและพันกันเหมือนของราชวงศ์ยุโรป
Bob Murphy

4
C เป็นภาษาที่น่ากลัวสำหรับการเขียนโปรแกรมระบบ เรารู้จักกันมานานกว่า 20 ปีแล้วตั้งแต่มอร์ริสเวิร์มและทุกคนยังคงใช้มันสำหรับโครงการใด ๆ ที่มีข้อกำหนดด้านความปลอดภัยใด ๆ โดยเฉพาะระบบปฏิบัติการหรือแอปพลิเคชั่นที่ต้องเผชิญกับเครือข่าย
Mason Wheeler

2
@Mason Wheeler: เราควรใช้อะไรแทน
Steve S

1
@Mason Wheeler: อืม ... ฉันเคยเลิก Pascal มาก่อน แต่บางทีอาจถึงเวลาที่จะมองอีกที คุณมีคำแนะนำอื่น ๆ หรือไม่?
Steve S

17

ใช่แน่นอน ฉันจะใช้ C เพื่อเขียนชิ้นส่วนที่สำคัญของระบบหรือส่วนการสื่อสารระดับต่ำ ตัวอย่างเช่นฉันจะใช้ C เพื่อเขียนNIFsในโครงการ Erlang เพียงเพราะมันเป็นเครื่องมือที่เหมาะสม (tm) สำหรับงานประเภทนี้ หรือฉันจะใช้ C เพื่อเขียนส่วนที่คล้ายกัน (XS) ในโครงการ Perl


16

ฉันใช้ C อย่างมืออาชีพเกือบทุกวัน ในความเป็นจริง C เป็นภาษาระดับสูงสุดที่ฉันเขียนโปรแกรมเป็นประจำ

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

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

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


6
ดูเหมือนคุณจะมีงานที่สนุกจริงๆ!
พอลนาธาน

นี่คืองานในฝันของฉัน
rsmahanti

5

ใช่ฉันจะใช้ C ในระบบฝังตัวที่ จำกัด ทรัพยากรอย่างรุนแรง ฉันอาจใช้ C ++ แทนเพราะทำให้ง่ายต่อการส่งเสริมการเชื่อมต่อที่แข็งแกร่งระหว่างส่วนประกอบซอฟต์แวร์ แต่เฉพาะในกรณีที่วิศวกรทุกคนที่ทำงานในโครงการเข้าใจว่า C ++ นั้นง่ายต่อการใช้งานในทางที่ผิดที่นำไปสู่การขยายขนาดโค้ด )

ฉันเห็นโปรแกรมเมอร์ C ++ ที่พยายามสร้างวัตถุ 10K บนสแต็ก 1K ไม่ใช่ความคิดที่ดี


2
จริง ๆ แล้วvirtualฟังก์ชั่นก็โอเคเพราะพวกเขาทำตามหลักการ "คุณไม่จ่ายเงินสำหรับสิ่งที่คุณไม่ได้ใช้" แต่ในสภาพแวดล้อมที่มีข้อ จำกัด ของหน่วยความจำคุณอาจต้องการปิดการใช้งานข้อยกเว้นและ RTTI
Matthieu M.

ฉันรู้สึกว่าฉันมักจะสร้างวัตถุเดี่ยวใน C ++ เพื่อให้ส่วนต่อประสานอุปกรณ์ต่อพ่วง ฉันคิดว่าคนเลือก C ++ มากกว่า C ในระบบฝังตัวเพราะพวกเขาคิดว่า C ++ นั้น "ดีกว่า"
Erik

5

ฉันทำงานส่วนใหญ่กับ Xen hypervisor, ไลบรารีต่าง ๆ ที่มีคุณสมบัติและเคอร์เนล Linux ในบางครั้งฉันต้องเขียนโปรแกรมควบคุมอุปกรณ์ (หรือเขียนใหม่เพื่อให้เครื่องเสมือน nxx สามารถแบ่งปันอุปกรณ์เดียวเช่น HRNG) C เป็นภาษาหลักของฉันและฉันก็มีความสุขมาก

ฉันจะพยายามเขียนโปรแกรมสเปรดชีตโดยใช้มันได้หรือไม่ ไม่มีทาง. เครื่องมือแต่ละอันมีแอพพลิเคชั่นและฉันดีใจที่มีเครื่องมือมากมาย

ฉันรักซี แต่ฉันไม่ได้ลองใช้สกรูด้วยค้อน

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


4

ฉันต้องการบางโครงการ ถ้าฉันจะต้องติดตั้งระบบสมองกลฝังตัวเอาไว้พูดสำหรับผู้ควบคุมเครื่องบินของตนเอง อาจถึงระดับต่ำกว่าในบางส่วนที่มีการชุมนุม

ถ้ามันเหมาะกับโครงการฉันไม่มีปัญหากับมัน

หากคุณต้องการพัฒนาแอปพลิเคชันบนเว็บ hmm อาจไม่ใช่ (หรือฉันต้องการเห็นเหตุผลที่ดีและสนับสนุนข้อเท็จจริง)

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


คุณต้องการเหตุผลที่จะใช้สำหรับเว็บ appliaction หรือไม่? Memcached เขียนด้วยภาษา C และเป็นส่วนสำคัญของเว็บแอปพลิเคชั่นมากมาย นอกจากนี้เพื่อนร่วมงานของฉันได้เขียนโค้ดที่เกี่ยวข้องกับเว็บไซต์เครือข่ายสังคมใน C - เมื่อมันซับซ้อนตามอัลกอริธึมโดยชุดข้อมูลที่มีขนาดเท่ากับ RAM ที่ประหยัดและการจัดการคิวรีที่ทำงานเฉลี่ย 23 ครั้งต่อการแสดงผลหน้า . เราประหยัดค่าโปรแกรมเมอร์ 4 เดือนสำหรับเซิร์ฟเวอร์ด้วยแอปพลิเคชั่น C 4 วัน
qdot

@qdot: มันเป็นเหตุผลที่ถูกต้อง นอกจากนี้ยังมีเหตุผลว่าทำไมมีเฟรมเวิร์กที่ดีสำหรับ C และ C ++ web dev จะไม่เป็นทางเลือกที่ 1 ของฉันหากต้องการพัฒนาเว็บแอพหรือเว็บไซต์ทั่วไป ในกรณีของกรอบเช่น memcached มันทำให้รู้สึกที่สมบูรณ์แบบ ในทำนองเดียวกันการมีเซิร์ฟเวอร์ใน C สามารถทำให้รู้สึก ดังนั้นอาจจะไม่ Memcached (และการใช้งาน C เฉพาะของคุณในส่วนที่ต้องใช้การคำนวณสูงของเว็บแอพ) คือการใช้ C สำหรับ web dev ที่ถูกต้องสมบูรณ์ แต่คุณต้องการโปรแกรมเมอร์ C ที่ดีในการทำเช่นนั้น ไม่ใช่คนที่จะไปรับหรือคิดว่ามีปัญหา
haylem

และถ้าคนอื่นมีเหตุผลที่ถูกต้องเช่นนี้โปรดโพสต์ไว้ที่นี่! มันมีประโยชน์สำหรับผู้อ่าน
เฮย์เล็ม

ถ้าคุณใช้ C คุณจะเรียนรู้ที่จะคาดหวังถึงประสิทธิภาพที่ยอดเยี่ยมประสบการณ์การเรียนรู้ที่ดีและปัญหาที่ไม่สามารถอธิบายได้ในตอนแรก ฉันแค่พยายามกระตุ้นให้คนใช้ C เนื่องจากมันกลายเป็นสิ่งสำคัญอย่างรวดเร็วเมื่อคุณเปลี่ยนจากการเป็นนักพัฒนา PHP / Ruby / Python "หนึ่งในล้าน" และเริ่มเกาหัวของคุณจากปัญหาการคำนวณขนาดใหญ่
qdot

@qdot: แน่นอน ผู้คนจำนวนมากอับอายไม่รู้จริง ๆ C อีกต่อไปจริงๆ
haylem

4

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

สิ่งที่ฉันมักจะบอกคนที่มีความสนใจในการเรียนรู้การเขียนโปรแกรมวันนี้คือเพื่อให้แน่ใจว่าในบางครั้งพวกเขาเรียนรู้ C และคุ้นเคยกับมัน คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่คุณต้องการ มากกว่าหนึ่งครั้งฉันต้องรวบรวมโปรแกรม "รีบูตเร็ว" แบบลิงก์เล็ก ๆ และใช้ scp เพื่อวางลงบนดิสก์ RAM บนเซิร์ฟเวอร์ที่ระบบย่อยของดิสก์หายไปโดยสิ้นเชิง (เซิร์ฟเวอร์ราคาถูก, ราคาถูก, ไม่มีการสำรองข้อมูลออนไลน์และมีความสามารถในการโหลดโปรแกรมขนาดเล็กเท่านั้น? C เป็นวิธีการที่จะไป)

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

แม้ว่าฉันจะไม่ใช้มันสำหรับทุกสิ่งหรือแม้กระทั่งสิ่งส่วนใหญ่ แต่ก็มีสถานที่และเป็นสากลมาก: ใช่ฉันเคยใช้ในอดีตและจะใช้ในอนาคต (แม้ว่าฉันจะไม่ รู้ว่าในขณะนี้)


4

ใช่ฉันทำมันตลอดเวลา

หากคุณไม่เรียกไลบรารีใด ๆ รหัสที่สร้างจาก C ไม่ต้องการการสนับสนุนระบบปฏิบัติการ นอกจากนี้ยังช่วยให้คุณสามารถควบคุมภาษาเครื่องที่สร้างขึ้น ดังนั้นจึงเหมาะอย่างยิ่งสำหรับการเขียนไดรเวอร์หรือรหัสอื่น ๆ ที่อาศัยอยู่ในพื้นที่เคอร์เนลและสถานการณ์ที่ จำกัด อื่น ๆ เช่นระบบฝังตัวหลายชนิดทำงานได้ นอกจากนี้ยังเป็นภาษาหลักสำหรับโครงการโอเพนซอร์ซที่ฉันทำงานด้วยเช่น X Windows, GTK + และ Clutter

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

น่าเสียดายด้วยเหตุผลที่ฉันไม่เข้าใจระบบรันไทม์บน Linux ต้องใช้ไลบรารีวัตถุที่ใช้ร่วมกันแบบพิเศษ (เทียบเท่ากับ DLL บน Windows, dylib บน Mac) เพื่อเรียกใช้ C ++ และไม่พบเมื่อคุณเรียกใช้โปรแกรม C ดังนั้นฉันจึงไม่สามารถทำหนึ่งในเทคนิค Mac และ Windows ที่ชื่นชอบได้ซึ่งก็คือการเขียนวัตถุที่ใช้ร่วมกับ C ++ ด้วย API แบบ C และเรียกมันจากโปรแกรม C

ดังนั้นนี่คือกระบวนการตัดสินใจของฉัน:

  1. ฉันทำงานในสถานการณ์ที่มีข้อ จำกัด เช่นไดรเวอร์อุปกรณ์หรือไม่? ใช้ C
  2. ฉันกำลังเขียนไลบรารี่ลินุกซ์ที่ใคร ๆ ก็ต้องใช้? ใช้ C
  3. ฉันทำงานในรหัสที่เขียนไว้ใน C หรือไม่ ใช้ C
  4. ฉันกำลังเขียนไลบรารี Mac หรือ Windows หรือไลบรารี Linux เท่านั้นที่ฉันจะใช้ เขียน internals ใน C ++ แต่จะเปิดเผยเฉพาะอินเตอร์เฟส C เพื่อหลีกเลี่ยงปัญหาของอินเตอร์เฟสไบนารีที่เปราะบาง
  5. ใช้ C ++

สิ่งหนึ่งที่ดีคือเนื่องจาก C ++ สามารถคอมไพล์ C ได้หากคุณต้องการการควบคุมโค้ดที่สร้างขึ้นสำหรับสถานการณ์เฉพาะคุณสามารถเขียน C สำหรับสิ่งนั้นและ C ++ สำหรับส่วนที่เหลือและรวบรวมทั้งหมดด้วยคอมไพเลอร์ C ++ .


คุณไม่สามารถ "คอมไพล์มันด้วยคอมไพเลอร์ C" เพราะปัญหา malloc กับ C ++ - คุณต้องส่งใน C ++ แต่ไม่ใช่ใน C แน่นอนว่ามันโอเคถ้าคุณใช้รหัส C ซึ่งถูกกฎหมาย แต่น่ารำคาญอย่างสมบูรณ์ .
ทางเลือก

1
@ คณิตศาสตร์: ใช่ C ++ มีความเข้มงวดกว่า C อย่างแน่นอนเกี่ยวกับหลายสิ่งรวมถึงการกำหนดโมฆะพอยน์เตอร์ให้กับพอยน์เตอร์ที่พิมพ์ อย่างไรก็ตามฉันกำลังแก้ไขข้อผิดพลาดในโครงการเดิมบางส่วนโดยการรวบรวมไฟล์ C กับ C ++ ฉันกำลังค้นหาผลลัพธ์การพิมพ์ของ malloc ในราคาเล็ก ๆ เพื่อจ่ายให้กับคอมไพเลอร์ C ++ ค้นพบข้อผิดพลาดที่ละเอียดอ่อนเนื่องจากโค้ดที่ถูกกฎหมายใน C.
Bob Murphy

3

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

เช่น. สำหรับ bussines logic ตกลง แต่ไม่ใช่สำหรับส่วนต่อประสานผู้ใช้


2

ถ้ามันจะต้องมีทั้ง

  • รวดเร็วและ
  • แบบพกพา

จากนั้นฉันใช้ C. อาจ C ++


รวดเร็วและพกพาได้ซึ่งอาจเป็น Java หรือ C # ด้วย
Jonas

11
@ Jonas: ไม่ อุปกรณ์พกพาไม่ได้หมายถึงเพียงแค่ 'windows หรือ linux' ;-)
Steven A. Lowe

1
@Jonas: รวดเร็วและพกพาได้นั่นจะไม่ใช่ Java หรือ C # C ++ เป็นแบบพกพาข้ามแพลตฟอร์มและอุปกรณ์ฝังตัวเช่นไมโครคอนโทรลเลอร์และ C เป็นแบบพกพา (เป็นฟังก์ชั่นต่างประเทศ) กับภาษาอื่น ๆ ทั้งสองภาษานั้นเร็วกว่าภาษาที่รวบรวมได้ แต่ไม่ได้ใช้งาน คุณไม่จำเป็นต้องใช้ทั้ง: กองซ้อนและตัวรวบรวมขยะ
comonad

2
@ Jonas: อ่านมัน; สังเกต caveats และอีกครั้ง "พกพา" ไม่ได้หมายถึงเฉพาะ windows / linux คำถามจะถามเมื่อคุณจะใช้ C; คำตอบคือ: เมื่อมันมีการทำงานได้อย่างรวดเร็วทุกที่ ฉันรัก Java และ C # แต่เป็น sledgehammers และระบบเก่า / ระบบฝังตัวไม่มี runtimes หลายคนไม่มีพื้นที่สำหรับเก็บรันไทม์!
Steven A. Lowe

2
@ Jonas: ฉันซาบซึ้งในความหลงใหลของคุณ แต่ "แพลตฟอร์มใหม่" ไม่ใช่หัวข้อ ฉันขอยกตัวอย่างที่เฉพาะเจาะจงมากขึ้นเพื่อดูว่ามีประโยชน์หรือไม่: ไมโครโปรเซสเซอร์ที่ให้การสนับสนุนการควบคุมการยิงสำหรับรถถังในสนามรบมีคอมไพเลอร์ C พวกเขาไม่มีและจะไม่มี JVM
Steven A. Lowe

2

ใช่อันที่จริงฉันเพิ่งมี!

ฉันชอบการเขียนโปรแกรมใน C. ฉันทำการเขียนโปรแกรมส่วนใหญ่ในหลาม แต่มีบางครั้งที่ฉันต้องการรหัสที่รวดเร็วและฉันสนุกกับความงดงามที่มาจากความเรียบง่ายของภาษา

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


2

ใช่

C เป็นภาษาระดับต่ำและมีสถานการณ์ที่ C เกือบจะเป็นตัวเลือกเดียวเช่นฉันใช้ C สำหรับการเขียนโปรแกรมไมโครคอนโทรลเลอร์หรือวางโค้ดไว้ด้วยกันเพื่อโต้ตอบกับอุปกรณ์จากพอร์ตคลาสสิกเช่น Parallel, Serial หรือแม้แต่โมเด็ม!


2

ใช่. ฉันใช้เวลาส่วนใหญ่ในการเขียนโปรแกรม C ++ ของฉัน แต่ตอนนี้ฉันเขียนโค้ดส่วนใหญ่ใน Ruby และถ้าฉันต้องการประสิทธิภาพหรือการเข้าถึงสิ่งระดับต่ำฉันเขียนส่วนขยาย C มันเป็นผู้ชายในอนาคต!


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

1

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


0

C ++เป็นแบบพกพาข้ามแพลตฟอร์มและอุปกรณ์ฝังตัวเช่นไมโครคอนโทรลเลอร์ (C ++ สามารถคอมไพล์ไปที่ C ได้ดังนั้นไมโครคอนโทรลเลอร์)

Cเป็นแบบพกพา (เป็นฟังก์ชั่นต่างประเทศ) กับภาษาอื่น ๆ ดังนั้นถ้าฉันเขียนโปรแกรมไลบรารีระดับต่ำแล้วฉันต้องการความเข้ากันได้มากกว่า C ++

Haskellเป็นอุปกรณ์พกพาข้ามแพลตฟอร์ม (ARM กำลังจะเปิดตัวเร็ว ๆ นี้) แต่ไม่มีอุปกรณ์ฝังตัวเช่นไมโครคอนโทรลเลอร์ ความเร็วของมันเทียบได้กับ C และ C ++; แต่เนื่องจากมันใช้งานได้มันใช้ garbage-collector แทน runtime-stack ดังนั้นจึงสามารถเร็วและช้ากว่า C ในเวลาที่ต่างกัน (การรวบรวมขยะ) และในสถานการณ์ที่แตกต่างกัน (การดำเนินการต่อ


ฉันเลือกภาษาที่เป็นนามธรรมที่สุดเท่าที่จะเป็นไปได้เนื่องจากความเร็วของโปรแกรมไม่แตกต่างกัน แต่เวลาในการพัฒนาและอัตราบั๊ก C และ C ++ แตกต่างกันมาก แต่ไม่ใช่จากมุมมองของ Haskell

ฉันไม่ชอบภาษาอื่นแม้ว่าฉันจะรู้ว่ามือเดียวหรือสองมือเต็ม ... ยกเว้นในบางกรณีดีทุบตี


0

ระบบสมองกลฝังตัวมักมี RAM ไม่เกินสองสามกิโลไบต์และอาจมีแฟลชสักสองสามสิบกิโลไบต์โดยมีอัตรานาฬิกาโปรเซสเซอร์ของ MHz ไม่กี่ตัว C เป็นตัวเลือกเดียวที่เหมาะสมในสภาพแวดล้อมที่เป็นโลหะเปลือย

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