การเรียนรู้วิธีการใช้ C (หรือ C ++) เป็นสิ่งจำเป็นเพื่อให้เป็นโปรแกรมเมอร์ที่ดีหรือไม่? [ปิด]


25

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

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

เป็นไปได้อย่างชัดเจนที่จะทำให้อาชีพมีผลงานที่ดีโดยไม่ต้องอ่านหรือเขียนรหัส C หรือ C ++ บรรทัดเดียว

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


8
C แพร่หลายในโครงสร้างพื้นฐานซอฟต์แวร์ในปัจจุบัน การเรียนรู้มันจะทำให้คุณเข้าใจอย่างลึกซึ้งยิ่งขึ้นถึงสิ่งที่เกิดขึ้นจริงในซอฟต์แวร์ที่คุณเขียน (ดูprogrammers.stackexchange.com/questions/14744/ … )
Charles Salvia

ฉันยังพบคำตอบที่เกี่ยวข้องที่นี่: programmers.stackexchange.com/questions/29109/ …
blueberryfields

Tangential: โปรแกรมเมอร์ที่ดีจะคุ้นเคยกับกระบวนทัศน์การเขียนโปรแกรมที่หลากหลายซึ่งหมายความว่าต้องเรียนรู้ (และใช้) หลายภาษา
Matthieu M.

การเรียนรู้ภาษาต่าง ๆ ไม่สามารถทำร้ายได้
Maxpm

4
ไม่มี C / C ++ มีเฉพาะ C และ C ++ เป็นภาษาที่แตกต่างกันมากและคำตอบน่าจะแตกต่างกันมากขึ้นอยู่กับว่าคุณกำลังพูดถึงเรื่องอะไร
Caleb

คำตอบ:


63

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

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

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


34

ใช่จำเป็นต้องรู้ C (หรือ C ++) เพื่อให้เป็นโปรแกรมเมอร์ที่ยอดเยี่ยม (ในเวลาปัจจุบันของเรา)

มันไม่ใช่ภาษาของตัวเองมันเป็นสิ่งแวดล้อม

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

โปรแกรมเมอร์ที่ยอดเยี่ยมเขียนโปรแกรมที่มีประสิทธิภาพและ debugs พวกเขาในสถานการณ์ชีวิตจริง เขาต้องรู้จักสิ่งแวดล้อม - และทุกวันนี้มันต้องรู้จัก C / C ++

แก้ไข:ไม่สามารถต้านทานการเพิ่มการอ้างอิง Matrix Morpheus อาจถามว่า: คุณต้องการใช้ยาเม็ด Java และอยู่ในโลกที่สะดวกสบายโดยเครื่องเสมือนจริงหรือไม่? หรือคุณใช้ยาเม็ด C และดูว่ารูกระต่ายลึกแค่ไหน?


9
+1 สำหรับการอ้างอิงเมทริกซ์ฉันจะเก็บไว้ใช้ในอนาคตที่เป็นไปได้ :-)
Konamiman

20

ฉันต้องอ้างถึงบทความ Joel อื่น ในกฏของ Leaky Abstractionsการเรียนรู้ภาษาเช่น C, Lisp, C ++ และภาษาที่เกี่ยวข้องกับการจัดการหน่วยความจำยังเกี่ยวข้องกับการเรียนรู้วิธีคิดที่กำหนดเราสำหรับอาชีพที่เหลือของเรา

อาจารย์ของฉันในชั้นโครงสร้างข้อมูลและอัลกอริทึมของฉันวิลเลียมสเปียร์บอกนักเรียนวิทยาศาสตร์คอมพิวเตอร์จำนวนมากที่สงสัยว่าทำไมเราจึงไม่ได้เรียนรู้เครื่องมือล่าสุด นักเรียนบ่นว่าพวกเขารู้สึกว่าพวกเขาไม่ได้เตรียมพร้อมสำหรับ "โลกแห่งความจริง" เพราะเราไม่ได้เรียนรู้ Java เราไม่ได้เรียนรู้ JavaScript ไม่มีคลาสบน HTML เราไม่ได้เรียนรู้ [[INSERT TECHNOLOGY ที่นี่]]

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

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

เมื่อ abstractions เหล่านั้นในโลกแห่งความเป็นจริงรั่วไหลและพวกเขาจะเข้าใจพื้นฐานคือสิ่งที่แยกค่าเฉลี่ยจากที่ดีที่สุด


3
ฉันต้องคิดถึงบางสิ่ง Lisp เกี่ยวข้องกับการเรียนรู้พื้นฐานอย่างไร มันเป็นสิ่งที่ตรงกันข้ามที่ยิ่งใหญ่ที่สุดที่เคยประดิษฐ์คิดค้น หนึ่งในเป้าหมายการออกแบบขั้นพื้นฐานดั้งเดิมคือ "ลองทำเป็นว่าเราไม่ได้อยู่บนเครื่องจักรทัวริงและดูว่าเราสามารถลดความซับซ้อนของสิ่งต่าง ๆ ด้วยการทำเช่นนั้น"
Mason Wheeler

6
@ Mason: Lisp การเรียนรู้จะไม่สอนคุณเกี่ยวกับคอมพิวเตอร์ในโลกแห่งความจริง มันจะสอนคุณมากมายเกี่ยวกับทฤษฎีการคำนวณ วิทยาการคอมพิวเตอร์ดิบเป็นอะไรที่มากกว่าคอมพิวเตอร์ดิบ
David Thornley

2
@Mason Wheeler การเรียนรู้เสียงกระเพื่อมแนะนำแนวคิดขั้นสูงหลายอย่างรวมถึง: ข้อมูล / รหัสสามารถใช้แทนกันได้, การสะท้อน / การปรับเปลี่ยนรหัสและความสำคัญของการพิจารณาคอมไพเลอร์ / vm ของคุณเป็นส่วนหนึ่งของผลิตภัณฑ์สุดท้ายของคุณ
blueberryfields

@blueberryfields: ... ทั้งหมดนี้ได้รับการพิจารณาว่าเป็นอันตรายและหรือมีช่องโหว่ด้านความปลอดภัยในระดับหนึ่งหรืออีกระดับหนึ่งโดยผู้เขียนโค้ดที่มีประสบการณ์มากกว่า สิ่งที่เลวร้ายมากที่จะสอนให้มือใหม่
Mason Wheeler

2
@ ช่างก่ออิฐฉันไม่เข้าใจบริบทของความคิดเห็นของคุณ - เรากำลังพูดถึงโปรแกรมเมอร์ที่ยอดเยี่ยมที่นี่ไม่ใช่มือใหม่ ฉันจะไม่พิจารณาโปรแกรมเมอร์ที่ไม่เข้าใจแนวคิดเหล่านี้อย่างถี่ถ้วนและนำมาใช้อย่างเหมาะสม (และสม่ำเสมอ) ในงานของเขาเพื่อเป็นผู้เชี่ยวชาญ
blueberryfields

18

ขอผมใช้วิธีนี้นะ สมมติว่าคุณต้องการจ้างคนทำงาน C ++ บางคนและบางคนสมัครที่ทำโครงการ C ++ ในวิทยาลัย แต่มีโปรแกรมเฉพาะใน Java ตั้งแต่สำเร็จการศึกษา ในทางตรงกันข้ามสมมติว่าคุณต้องการจ้างคนทำงาน Java บางคนและมีคนสมัครที่ทำโครงการ Java ในวิทยาลัย แต่มีโปรแกรมใน C ++ เท่านั้นหลังจากสำเร็จการศึกษา

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

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


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

13

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


7

การเรียนรู้ทั้งสองภาษานั้นคุ้มค่ากับความพยายามหรือไม่

เป็นไปได้อย่างชัดเจนที่จะทำให้อาชีพมีผลงานที่ดีโดยไม่ต้องอ่านหรือเขียนรหัส C หรือ C ++ บรรทัดเดียว


6

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

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


5

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


ใกล้กับโลหะ! รักที่แสดงความคิดเห็น
Wajih

3

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


3

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

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

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

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


1

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

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

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


0

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

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

พร้อมกับ Visual Studio, C # ได้เกือบจะกลายเป็นการพัฒนาซอฟแวร์การใช้ภาษาที่ฉันเท่านั้น (อภัยภาษาเช่น PHP SQL และ ฯลฯ ) เป็นมันสำหรับ intents และวัตถุประสงค์ในเลือดที่ยอดเยี่ยมในความคิดของฉัน

หากคุณพัฒนาบน Windows ฉันขอแนะนำให้เรียนรู้ C # .NET ควบคู่ไปกับสิ่งอื่น

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


1
@ Nick: โลกของคอมพิวเตอร์อยู่เหนือหน้าต่างและ C #
แรนเจอร์

2
ดังนั้นเหตุผลที่ผมกล่าวว่า"ถ้าคุณพัฒนาบน Windows"
Nick Bedford

0

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


3
หากคุณไม่คิดว่า C ++ เป็นภาษาที่แตกต่างจาก C คุณจะไม่รู้ภาษา C ++ เป็นอย่างดี การทำงานในการทับซ้อนเป็นไปได้ แต่ไม่แนะนำให้เลือก
David Thornley

บางทีฉันคุยเกินความคล้ายคลึงกัน แต่พวกมันก็เหมือนกันตัวอย่างเช่น C และ Perl
Brian Carlton

0

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

การเรียนรู้ C / C ++ จำเป็นสำหรับอาชีพหรือไม่? ไม่ แต่ฉันเคยเห็นผู้พัฒนา Java จำนวนมากที่ไม่รู้พื้นฐานการเขียนโปรแกรมจำนวนมากเพราะพวกเขาเรียนรู้ Java เท่านั้น เช่นเดียวกันกับโปรแกรมเมอร์ Perl การเรียนรู้มากกว่าหนึ่งภาษาควรเป็นข้อกำหนดสำหรับอาชีพไม่ว่า C / C ++ เป็นหนึ่งในภาษาเหล่านั้นหรือไม่


+1 - การเห็นแนวคิดที่คล้ายกันที่นำเสนอในวิธีที่แตกต่างกันในภาษาต่างๆช่วยให้ฉันเข้าใจแนวคิดเหล่านั้นได้ดีขึ้นและเห็นพวกเขาในมุมมองใหม่ทั้งหมด
jmort253

0

ในตอนแรกฉันเคยคิดว่ามหาวิทยาลัยของฉันอยู่ในยุคของ Dennis M. Ritchie สำหรับการรวม C สำหรับ2 ภาคการศึกษาเมื่อมีภาษาที่ค่อนข้างใหม่เช่น Java, Visual Basic และอื่น ๆ แต่ความจริงก็คือหรืออย่างน้อยตอนนี้ฉันเชื่อว่า C เป็นหนึ่งในภาษาที่ดีที่สุดที่ช่วยให้คุณเข้าใจแนวคิดพื้นฐานของการเขียนโปรแกรม

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


0

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

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


0

โปรแกรมเมอร์ที่มีความโค้งมนอย่างดีมีลูกเล่นมากมายหลายแขนซึ่งรวมถึง:

1) การเขียนโปรแกรมระดับต่ำ ... C อย่างน้อย การชุมนุมบางอย่างจะไม่เจ็บ

2) การเขียนโปรแกรมเชิงหน้าที่ ... ภาษาที่ใช้งานได้จริงไม่ใช่แบบผสม - Scheme ทำงานที่นี่

3) OOP ... โดยปกติฉันจะพูด smalltalk แต่ฉันคิดว่าเราสามารถไปกับ Java ตอนนี้


0

C เป็นแม่ของภาษาการเขียนโปรแกรมทั้งหมด .... ผู้เชี่ยวชาญ knowlesdge ใน C ทำให้คุณไปไกลในการรู้ภาษาอื่น ๆ เช่น Java ในระยะเวลาอันสั้น

C ++ เป็นเกมบอลที่แตกต่างกันโดยสิ้นเชิงและซับซ้อนที่สุดในบรรดาเกมทั้งหมด


0

ไม่จำเป็นต้องเรียนรู้ C หรือ C ++ ให้เป็นโปรแกรมเมอร์ที่ดี (ดีมาก) แต่ก็จำเป็นที่จะต้องเรียนรู้ Assembly เพื่อให้เป็นโปรแกรมเมอร์ที่ดี การเขียนโปรแกรมที่ยอดเยี่ยมหมายถึงการปรับให้เหมาะสมสำหรับหน่วยความจำ Mhz แบนด์วิดท์ข้อ จำกัด ด้านพลังงานจากนั้นเลือกการออกแบบและ / หรือการนำไปใช้ที่ดีที่สุดเพื่อให้งานสำเร็จลุล่วง ในบรรดานักวิทยาศาสตร์คอมพิวเตอร์จุดอ่อนหลักยังคงเกิดขึ้นหลังจากทศวรรษของการพัฒนาเทคโนโลยีด้วยการจัดการข้อมูลอย่างเหมาะสม นี่เป็นชุดของทักษะที่สอนโดยการเขียนชุดประกอบ (ชุดใดก็ได้มันอาจเป็น ARM หรือ MIPS หรือ x86 หรือไมโครคอนโทรลเลอร์หรือ DSP หรือแม้แต่ต่ำกว่านั้นผ่าน verilog / VHDL)


0

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


-1

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


ไม่สำคัญว่าภาษาใดที่ใช้ในการเรียนรู้โครงสร้างข้อมูล
kirk.burleson

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

-1

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

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