ถ้าฉันไม่รู้จัก C แต่ฉันดีกับ C ++? [ปิด]


23

ฉันมีคำถามที่ฉันคิดว่าสามารถตอบได้ดีที่สุดที่นี่

ฉันเป็นคนที่ค่อนข้างดีC++และฉันก็คุ้นเคยกับภาษาฉันได้อ่านAccelerated C++และทำแบบฝึกหัดเกือบทั้งหมดแล้ว

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

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

และคนที่พูดว่า 'คุณจะไม่รู้ C ได้อย่างไรเมื่อคุณ C ++' โปรดอย่าตอบกลับ :) ไม่ผิด แต่ฉันไม่เข้าใจว่าทำไมการเรียนรู้ C จึงเป็นสิ่งที่จำเป็น



1
บทความที่อ้างถึงโดย DumbCoder เกี่ยวกับความนิยมของ C ในการเขียนโปรแกรมแบบฝังตัว
ChrisW

2
@ChrisW - ใช่ แต่มันก็ยังคงแสดงให้เห็นว่า C ไม่ใช่เรื่องง่ายที่จะเป็นผู้เชี่ยวชาญไม่ใช่ว่า C ++ นั้นง่ายที่จะเป็นผู้เชี่ยวชาญ
DumbCoder

@ DumbCoder: โอ้ noes, การเขียนโปรแกรมฝังตัว มีการฝังงานกี่งานเทียบกับเดสก์ท็อป
DeadMG

@DeadMG - การเรียนรู้ภาษาไม่ได้เกี่ยวกับจำนวนงานที่มีสำหรับภาษานั้น และคุณได้รับแนวคิดว่า C ใช้ในการเขียนโปรแกรมแบบฝังตัวเท่านั้น
DumbCoder

คำตอบ:


36

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

ฉันค่อนข้างจะพบกับคนที่อ้างว่าพวกเขารู้จัก C ++ แต่ไม่ใช่ C มากกว่าคนที่อ้างว่าพวกเขารู้จัก C / C ++


โอ้ใช่. มันเป็นรายการสินค้าเป็นครั้งแรกในคำถาม SO บน C ++ urban myths: stackoverflow.com/questions/2245196/c-urban-myths

4
+1 ถ้าคุณรู้จัก C ++ สำหรับการเริ่มต้นมันเป็นเรื่องที่ต้องเรียนรู้ C และอย่างที่สองก็ไม่สำคัญเลย
DeadMG

6
@DeadMG มันอาจจะง่ายที่จะเรียนรู้ไวยากรณ์เนื่องจากมันเพิ่งรู้ว่าส่วนใดของ C ++ ที่จะออกไป แต่การเรียนรู้สำนวนที่พบบ่อยนั้นยากกว่าและเป็นส่วนที่สำคัญที่สุด แต่ฉันจะไม่เรียนรู้ C เว้นแต่จำเป็น
KeithB

6
@chubsdad คุณหมายความว่าฉันไม่ควรใส่ "ฉันรู้ว่า Java / Javascript" ในประวัติย่อของฉัน?
ไม่ระบุตัวตน

@ user257493: ไม่มีสิ่งเช่น Java / Javascript
John Dibling

23

คำตอบแบบหลายส่วน ความคิดเห็นของฉันเท่านั้น

  1. ประสบการณ์ของฉัน (25 ปีนอกวิทยาลัย) คือ C ++ ในขณะที่เพิ่มมากขึ้นเรื่อย ๆ จะยังคงมีความสำคัญต่อระบบที่น่าสนใจสำหรับอนาคตอันใกล้ ดังนั้นฉันจึงยึดติดกับสิ่งนั้นเป็นความเชี่ยวชาญหลักของฉัน งานนั้นยากน่าสนใจและสำคัญ

  2. โดยทั่วไปโปรแกรมเมอร์ C ++ นั้นมีค่าอย่างแม่นยำเพราะพวกเขาไม่ได้พัฒนาภาษาที่มีการจัดการและมีโอกาสมากขึ้นที่จะเข้าใจสิ่งที่เกิดขึ้นภายใต้ความคุ้มครอง การเปลี่ยนจาก C ++ เป็น C # / Java ง่ายกว่าในทางกลับกันเพราะแถบสำหรับการเข้าเรียนนั้นสูงขึ้น

  3. ดังนั้นในมุมมองของฉันมันไม่จำเป็นที่จะต้องเข้าใจ C เพื่อโปรแกรมอย่างมีประสิทธิภาพใน C ++ การพัฒนาความเข้าใจว่าทำไม C ++ มีอยู่ในบริบทของ C - ข้อ จำกัด และจุดแข็งของมันและวิธีการแก้ไขหรือไม่ใน C ++ - ล้ำค่าสำหรับคุณเมื่อเวลาผ่านไป

ขอให้โชคดี


อะไรทำให้คุณพูดว่า C ++ แปลกขึ้นเรื่อย ๆ จากประสบการณ์ของคุณสิ่งที่แทนที่มันคืออะไร?
Praxeolitic


13

นี่คือสิ่งที่ Bjarne พูดได้:

การรู้จัก C เป็นข้อกำหนดเบื้องต้นสำหรับการเรียนรู้ C ++ ใช่ไหม

ไม่ถูกต้อง. ชุดย่อยทั่วไปของ C และ C ++ ง่ายต่อการเรียนรู้มากกว่า C จะมีข้อผิดพลาดในการพิมพ์ด้วยตนเองน้อยลง (ระบบประเภท C ++ เข้มงวดและแสดงออกมากขึ้น) กลอุบายที่เรียนรู้น้อยลง (C ++ ช่วยให้คุณสามารถแสดงสิ่งต่างๆได้มากขึ้น และมีห้องสมุดที่ดีกว่า เซตย่อยเริ่มต้นที่ดีที่สุดของ C ++ ที่จะเรียนรู้ไม่ใช่ "ทั้งหมดของ C"


4

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


3
@Alex Farber - "ถ้าคุณรู้จัก C ++ คุณสามารถเขียนเป็น C" ได้ ฉันสงสัยอย่างมาก :)
DumbCoder

4
ไม่เห็นด้วย IME โปรแกรมเมอร์ที่เรียนรู้ C ++ ก่อนอื่นมักจะไม่ตระหนักว่าคุณลักษณะ C ++ นั้นไม่มีอะไร โปรแกรมเมอร์ที่เรียนรู้ภาษา C เป็นครั้งแรกสามารถเขียนด้วยภาษา C ++ ได้อย่างง่ายดาย
dan04

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

โดยเฉพาะอย่างยิ่งเนื่องจาก libs คลาสน่ารักทั้งหมดไม่มีใน C. Imo การชนะของภาษาอย่าง C ++ และ Java เป็น libs ไม่ใช่คุณสมบัติทางภาษาที่แท้จริง

8
โปรแกรมเมอร์ C ++ พยายามแฮ็กทางของพวกเขาผ่านทาง C เขียนโค้ดที่ไม่ดีด้วยเหตุผลเดียวกันกับที่โปรแกรมเมอร์ C พยายามแฮ็กผ่าน C ++ เขียนโค้ดที่ไม่ดี พวก C ใช้ C ++ เป็น "C กับคลาส" ในขณะที่พวก C ++ ใช้ C เป็น "C ++ ที่ไม่มีคลาส"
John Dibling

4

ตกลงสิ่งแรกก่อน - ไม่การรู้ C ไม่ใช่ข้อกำหนดเบื้องต้นในการเรียนรู้ C ++ แน่นอนมันอาจเป็นอุปสรรค

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


เหตุใดการรู้ C จึงเป็นอุปสรรคต่อการเรียนรู้ C ++ ฉันไม่ได้บอกว่าฉันไม่เห็นด้วยจำเป็น แต่นี่เป็นคำพูดที่ชัดเจน
Casey Patton

3

เช่นถ้าฉันให้สัมภาษณ์ใน บริษัท ถ้าฉันบอกพวกเขาว่าฉันไม่รู้ C - พวกเขาจะใช้มันเป็นปกติหรือไม่?

ถามว่าพวกเขาต้องการ C หรือไม่และเต็มใจเรียนรู้หรือไม่

ดังนั้นหากพวกเขาขอให้ฉันนำไปใช้และถ้าฉันทำใน C ++ จะยอมรับได้หรือไม่?

ฉันคาดหวังว่าถ้าพวกเขาสัมภาษณ์ / จ้างคุณให้ทำงานใน C ++

หากเป็นคำถาม "โครงสร้างข้อมูล" คุณอาจถามพวกเขาว่าพวกเขาต้องการให้คุณสาธิตการใช้คอนเทนเนอร์ STL หรือไม่ (เพราะเป็นการให้สัมภาษณ์) พวกเขาต้องการให้คุณใช้โครงสร้างข้อมูลตั้งแต่เริ่มต้น


2

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


2

ฉันจำเป็นต้องเรียนรู้ C หรือไม่?

ไม่คุณไม่จำเป็นต้อง ระยะเวลา

แต่การเรียนรู้ภาษาการเขียนโปรแกรมใหม่ ๆ นั้นมีประโยชน์ในระยะยาว การเรียนรู้ภาษาบนพื้นฐานของกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกันมีประโยชน์มากยิ่งขึ้น ไม่ว่าจะเป็นภาษา OOP (Smalltalk หรือ C ++), ภาษาไดนามิก (Lisp, Clojure, Python), การทำงาน (Lisp, Haskell, Erlang), พร้อมกัน (Erlang, Go, Algol 68, Smalltalk) หรืออะไรก็ตาม (Fortran 03, Perl, Forth) กระบวนทัศน์รูปแบบใหม่ที่สร้างความประทับใจให้คุณ การเรียนรู้ภาษาที่แตกต่างกันช่วยให้คุณได้สัมผัสกับความคิดที่หลากหลายโดยแต่ละคนมีจุดแข็งและจุดอ่อนของตนเองในการจัดการกับงานในมือ

Fortran ยังคงเป็นผู้นำในการคำนวณเชิงตัวเลข COBOL ยังคงเป็นแกนนำใน บริษัท ประกันภัยขนาดใหญ่, Unix, BSD, และ Linux ยังคงยึดหลัก C. รหัสเก่าไม่สูญเสียคุณค่ากับอายุเสมอไปเพราะไม่จำเป็นต้องเสื่อมสภาพไป เช่นอุปกรณ์เครื่องจักรกลที่จำเป็นต้องเปลี่ยนเมื่อเวลาผ่านไป ดังนั้นภาษาที่เก่ากว่าจะมีค่าในแง่ของความสามารถในการจ้างงานและปัจจัยที่ยอดเยี่ยมของภาษาใหม่

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

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

ฉันค่อนข้างดีกับภาษา C ++ และในภาษาที่ฉันคุ้นเคยฉันอ่าน Accelerated C ++ และทำแบบฝึกหัดเกือบทั้งหมด

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

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


1

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


1

บางคนอาจรู้สึกไม่สบายใจในการเขียนโปรแกรมใน C ขณะที่รู้ C ++

มีโครงสร้าง "การป้องกัน" รอบ C ++ ที่มีส่วนช่วยในการขับเคลื่อนไม่เพียง แต่โครงสร้าง แต่ยังอัลกอริทึมของโปรแกรม ตัวอย่างเช่นความช่วยเหลือของโครงสร้าง STL และอัลกอริธึม, วิธีการเขียนโปรแกรมเชิงวัตถุที่ชัดเจน, คอนสตรัคเตอร์ / destructor, เลเยอร์ abstractive ที่เพิ่มเข้ามาจากเทมเพลต ...

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

ในฐานะผู้สรรหาฉันดีใจที่ได้สัมภาษณ์คนที่มีทักษะภาษาซีพลัสพลัส แต่จะมีความกระตือรือร้นมากกว่านี้หากเธอมีภาษาอิสระเพียงพอที่จะพัฒนาโครงการซีทั้งหมด

นอกจากนี้โปรแกรม C ที่ดียังแสดงถึงทักษะของระบบผู้พัฒนาที่ดีเนื่องจากภาษาต้องการความเข้าใจที่เป็นธรรมเกี่ยวกับองค์ประกอบของระบบเพื่อสร้าง runnable ที่มีประสิทธิภาพ


ฉันจะไม่พูดว่ามันเพิ่มอิสระให้กับโปรแกรมเมอร์ - คุณสามารถเขียนโครงสร้างและอัลกอริธึมของคุณเองใน C ++
DeadMG

0

หากคุณสะดวกสบายใน C ++ ฉันไม่ต้องกังวลกับการเรียนรู้ C. C ++ มีการปรับปรุงมากกว่า C (ความสามารถในการสนับสนุน RAII ด้วย constructor / destructors, container baseline, stream และ string มีขนาดใหญ่)

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


0

ครั้งเดียวที่คุณต้องรู้ C คือถ้าคุณคาดว่าจะผลิตรหัส C ถ้าไม่เช่นนั้นก็ไม่มีปัญหา

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

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

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


-1

ฉันคิดว่าถ้าคุณพอใจกับ C ++ คุณก็จะอยู่กับ C เช่นกัน

ความแตกต่างที่สำคัญระหว่างทั้งสองคือ C ++ นั้นสะอาด - object-oriented - C ไม่ใช่ :)


1
ฉันเป็นแฟนตัวยงของ C ++ แต่ฉันจะไม่เรียกมันว่าสะอาด และ C ++ เป็นแบบหลายกระบวนทัศน์ซึ่งหมายความว่ารหัส C ++ ที่ดีไม่จำเป็นต้องเป็นวัตถุ
KeithB

-1

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

นอกจากนี้ยังขึ้นอยู่กับว่าคุณต้องการตั้งโปรแกรมใน C หรือไม่ :)


-1

ใช่มันโอเค ...

IMHO เมื่อคุณเก่งC++มันก็เพียงพอแล้ว ...

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

หากคุณอยู่ในช่วงเริ่มต้นของการทำงานผู้สัมภาษณ์ของ IME มักจะพิจารณาทัศนคติและความเข้าใจในภาษาที่คุณพอใจ

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


-1

ฉันคิดว่าสิ่งที่สำคัญที่สุดที่คุณควรรู้เกี่ยวกับ C คือความแตกต่างระหว่าง C และ C ++ คุณอาจจะเห็นรหัสบางอย่างที่มีสไตล์ C บางอย่างในนั้นในบางจุดและคุณไม่ควรจะสับสนเมื่อคุณเห็นสิ่งที่ชอบmalloc, free, printf, fopenหรือfcloseหรือคุณควรทราบด้วยว่าสิ่งเหล่านี้มีความคล้ายคลึงกันอย่างไรและแตกต่างจากคู่ค้า C ++ อย่างไร

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

ตรวจสอบให้แน่ใจว่าคุณเข้าใจคุณสมบัติพื้นฐานทั้งหมดที่ C ++ มีที่ไม่ได้อยู่ใน C หากคุณอ่าน stackoverflow.com คุณจะเห็นคำถามมากมายที่เกี่ยวข้องกับความแตกต่างในภาษาและความเข้าใจผิดของผู้คน

คุณควรทำความคุ้นเคยกับตัวประมวลผลล่วงหน้า C ซึ่งเกือบจะเหมือนกับ (และมักจะเป็นโปรแกรมเดียวกับ) ตัวประมวลผลล่วงหน้า C ++ การรู้วิธีใช้มันจะช่วยคุณใน C ++ แต่มันขึ้นอยู่กับ C มากขึ้น

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

เท่าที่สัมภาษณ์ถ้ามีคนขอให้คุณเขียนรหัสสำหรับอัลกอริทึมทั่วไปใน C และคุณทำสิ่งที่ชอบ:

struct foo {
       int a;
       void * b;
};
foo x;  // in C++ this would work, but in C it would fail because struct names aren't in the
        // type name table unless you put them there with typedef

ฉันไม่คิดว่าพวกเขาจะตัดสินใจว่าคุณไม่รู้ว่าคุณกำลังทำอะไรเพราะคุณไม่ได้ทำ:

struct foo x;

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

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

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

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