วิทยาลัยท้องถิ่นกำลังสอนภาษาซีพลัสพลัสให้กับนักศึกษาชั้นปีที่ 1 (อายุ 16 ปี) ที่ไม่มีประสบการณ์การเขียนโปรแกรมมาก่อน
ในฐานะภาษาโปรแกรมแรก C ++ นั้นเหมาะสมหรือไม่
วิทยาลัยท้องถิ่นกำลังสอนภาษาซีพลัสพลัสให้กับนักศึกษาชั้นปีที่ 1 (อายุ 16 ปี) ที่ไม่มีประสบการณ์การเขียนโปรแกรมมาก่อน
ในฐานะภาษาโปรแกรมแรก C ++ นั้นเหมาะสมหรือไม่
คำตอบ:
กึกก้องไม่มี
สำหรับเป้าหมายใด ๆ ที่คุณมีในใจสำหรับนักเรียนภาษาอื่นหรือลำดับของภาษาจะเร็วขึ้นและดีขึ้น ตัวอย่าง.
"นักเรียนต้องเข้าใจแนวคิดระดับต่ำ"
การเข้ารหัส "ระดับต่ำ" ไม่ได้รวมเอาวัตถุมาnew
ให้อาหารพวกมันกลับไปdelete
และบางครั้งก็มีตัวชี้ที่ชี้ไปที่อื่นไม่ควร ฟังก์ชันคลาสและเทมเพลตไม่ใช่ระดับต่ำ RAII 12 วิธีที่จะใช้const
, std::ostream::operator<<
, protected
และ new
ไม่ได้แนวความคิดในระดับต่ำ สิ่งเหล่านั้นมีผลกระทบในระดับต่ำและคุณกำลังข้ามสิ่งเหล่านั้นเป็นเวลาหลายเดือนหรือจนกว่าจะถึงชั้นเรียนในอนาคตและสอนภูเขาแห่งความหมายของ C ++ แทน
ฉันขอแนะนำแอสเซมเบลอร์ด้วยสภาพแวดล้อมที่ดีและสื่อการสอนเช่น MIPS หรือ MMIX หากคุณกำลังรีบสอน C ด้วยการออกนอกเส้นทางเพื่อดูเอาท์พุทแอสเซมเบลอร์อย่างน้อย สิ่งนี้จะให้ความเข้าใจระดับต่ำทั้งหมดแก่คุณสำหรับ C ++ และจากนั้นบางส่วนก็จะเร็วขึ้น
"นักเรียนต้องเข้าใจการวางแนวของวัตถุ"
การวางแนววัตถุที่สร้างขึ้นใน C ++ เป็นวิธีที่ซับซ้อนสำหรับการสอนแนวคิด OO หรือแนวคิดระดับสูงอื่น ๆ เกือบทั้งหมด ดูคำถามที่พบบ่อยเกี่ยวกับC ++เพื่อดูเหตุผลที่เป็นไปได้ที่ยาวนาน คุณต้องตีสิ่งเหล่านั้นทั้งหมดซึ่งจะใช้เวลานานมากกับโปรแกรมเมอร์ใหม่ มิฉะนั้นคุณจะต้องข้ามมันไปทิ้งโปรแกรมเมอร์คนใหม่ในที่มืด - ได้ผลไม่ต้องรู้ C ++
ฉันขอแนะนำให้เรียนรู้ภาษาระดับสูงที่ง่ายกว่ากับวัตถุก่อน (Python, Ruby, Squeak, Common Lisp, แร็กเก็ต) หากคุณต้องสอน C ++ เลย นอกเหนือจากนั้นเรียนรู้ความหลากหลายเป็นแนวคิดที่แยกจาก OO โดยไปที่ภาษาที่ใช้งานได้
"นักเรียนจำเป็นต้องเข้าใจแม่แบบและแม่แบบการวางผังรายการ"
ไม่มีใครถามคำถามนี้ แต่ฉันหวังว่าพวกเขาจะ C ++ มีเทมเพลตที่ดีและ STL เจ๋ง แต่ก็ไม่ควรให้ความสำคัญกับการสอน C ++ เป็นอันดับแรก การสอนระบบประเภท OCaml หรือ Haskell จากนั้นการปรับเปลี่ยนแนวคิดเหล่านั้นอาจเร็วขึ้นอีก
"นักเรียนจำเป็นต้องเรียนรู้การแก้ปัญหา"
ใช่คุณได้สิ่งนี้ในภาษาใด ๆ และคุณจะได้มากขึ้นถ้ามันเป็นภาษาอื่น ๆ ที่ไม่ใช่ C ++ เพราะมีสัมภาระน้อยกว่า อีกครั้งดูคำถามที่พบบ่อย C ++สำหรับรายการทุกสิ่งที่นักเรียนจะได้เรียนรู้แทนทักษะการแก้ปัญหา
"ทั้งหมดข้างต้นและเราจำเป็นต้องใช้ภาษาเดียวเท่านั้น" หรือ"นายจ้างต้องการมัน" หรือ"เราต้องการภาษา C-style" หรือ...
สอนมากกว่าหนึ่งภาษา
ความคิดที่ว่าคุณประหยัดเวลาหรือพลังงานด้วยการสอนหรือเรียนรู้เพียงภาษาเดียวนั้นไร้สาระอย่างไร้สาระ มันขึ้นอยู่กับความคิดที่ว่าการเรียนรู้ภาษาใด ๆ จะใช้เวลา X เดือนคน ( HINT! HINT! ) โดยที่ X เป็นตัวเลขเดียวหรือหนึ่งหมายเลขต่อภาษา นี่เกือบจะเหมือนกับแนวคิดที่ว่าคุณสามารถประหยัดเวลาและเงินด้วยการข้ามขยะ 'ข้อกำหนด' และ 'การทดสอบ' ทั้งหมด
สำหรับไวยากรณ์ที่หลากหลายคุณอาจทำให้นักเรียนพิการถ้าคุณสอนให้พวกเขาคาดหวังว่าไวยากรณ์ C ในทุกภาษาโดยการทำให้พวกเขามีอคติต่อภาษาอื่นอย่างรุนแรง
เกือบทุกเส้นทางจะเร็วและดีกว่าเริ่มต้นด้วย C ++ เรียนรู้ภาษาระดับสูงอย่างง่ายจากนั้น C ++ จะเร็วขึ้น การเรียนรู้แอสเซมเบลอร์จากนั้น C ++ จะเร็วขึ้น สิ่งอื่นที่ไม่ใช่ C ++ จะช่วยให้นักเรียนเร็วขึ้นและพวกเขาจะรู้วิธีการบูตมากขึ้น อย่าสอน C ++ ก่อน
ไม่ C ++ เป็นภาษาที่ยากแม้สำหรับนักพัฒนา C ++ ที่มีประสบการณ์ แม้แต่อัลกอริทึมที่ง่ายที่สุดคุณต้องอธิบายรายละเอียดปลีกย่อยของภาษาจำนวนมาก ลองพิจารณาตัวอย่าง Hello World:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}
#include
คำสั่งนั้นคืออะไร? std::cout
มีอะไร ทำไม::
? คือ<<
อะไร มันเป็นโอเปอเรเตอร์ที่โอเวอร์โหลด! ตัวดำเนินการที่โอเวอร์โหลดคืออะไร Sooo สำหรับints
มันขยับเล็กน้อย แต่ไม่ว่าอะไรก็ตามstd::cout
มันจะเอาท์พุทไปยังคอนโซล Ohhh std::cout
เป็นสตรีมและสตรีมมีผู้ให้บริการ<<
และ>>
ผู้ดำเนินการมากเกินไป
ลองดูตัวอย่างเดียวกันใน Python:
print("Hello World!")
เพียงเท่านี้เราจะมาเขียนโค้ดอัลกอริทึมกัน
อาจไม่ใช่ภาษาแรกที่ดี: ไวยากรณ์ที่ซับซ้อนกฎจำนวนมากภาษาเก่าการจัดการหน่วยความจำที่ผิดพลาดได้ง่าย ดีกว่าที่จะสอนให้นักเรียนของคุณมีอะไรมากกว่า OO เช่น Smalltalk หรือสิ่งที่ดีกว่าในการเขียนโปรแกรมด้วยเช่น Python หรือสิ่งที่ทำงานเช่น Haskell
พวกเขาสามารถเรียนรู้ C ++ ต่อไปในชีวิต (ถ้าพวกเขาไม่สามารถช่วยได้) หลังจากพวกเขาเรียนรู้ภาษาที่ดีขึ้น
คำตอบสั้น ๆ : ใช่!
ฉันจะบอกว่าภาษาใดเป็นจุดเริ่มต้นที่เหมาะสม แต่โดยเฉพาะอย่างยิ่ง C ++ (หรือเทียบเท่า) ทุกวันนี้ C # และ Java เป็นภาษาหลักที่ใช้และการเขียนโปรแกรมด้วยสิ่งเหล่านี้คุณเรียนรู้อย่างรวดเร็วเกี่ยวกับ API และ IDE แต่ด้วย C ++ คุณจะได้รับโอกาสในการเรียนรู้การเขียนโปรแกรมจากพื้นฐานรวมถึงการเพิ่มประสิทธิภาพประสิทธิภาพเป็นต้น
มันไม่ควรที่จะเรียนรู้พื้นฐานของการเขียนโปรแกรมการวนซ้ำและการเรียงลำดับก่อนที่คุณจะพึ่งพาภาษาที่สร้างขึ้นใน. เรียงลำดับ ();
จริง ๆ แล้วฉันเชื่อว่ามันอาจเป็นทางเลือกที่ดีในฐานะภาษาแรกด้วยเหตุผลที่เป็นประโยชน์มาก: หลังจากเรียนรู้ C ++ ภาษาอื่น ๆ ที่คุณพบจะดูเหมือนเป็นเรื่องง่ายที่จะเรียนรู้
ฉันสอนตัวเอง C ++ เมื่อฉันอายุ 15-16
เป็นการดีกว่าที่จะปล่อยให้เวทมนตร์แก่ผู้อื่นและเพื่อเรียนรู้การทำงานภายในของสิ่งต่าง ๆ ด้วยตัวคุณเอง
ถ้าคุณไม่สามารถเข้าใจไวยากรณ์และความหมายของ C ++ ระดับเริ่มต้นได้แสดงว่าคุณใช้คอมพิวเตอร์ไม่ได้ มันไม่ยากเลย ไม่มีเหตุผลที่ดีที่จะหลีกเลี่ยง "C กับคลาส"
หากคุณคาดหวังว่านักเรียนจะเริ่มทำงานกับเทมเพลต metaprogramming, ลดการเรียก polymorphic และแยกแยะลำดับชั้นของการสืบทอดหลาย ๆ อันซึ่งไร้สาระสำหรับคลาสระดับเริ่มต้นสำหรับภาษาระดับใดก็ได้ที่คุณใช้
มีแนวโน้มที่ไม่ดีมากที่ต้องการซ่อนความซับซ้อนของการเขียนโปรแกรมสำหรับนักเรียน ที่ไม่ได้จบลงด้วยดี (cf Spolsky ของ Java Schools เรียงความ) คนเหล่านั้นต้องจบลงที่ DailyWTF หากพวกเขาไม่ได้มุ่งหน้าตรง Abstractions รั่วไหลและเมื่อ (ไม่ถ้า) สิ่งที่เป็นนามธรรมรั่วไหลที่เลวร้ายยิ่งกว่าต้องจัดการกับมัน ฉันทำงานเป็น TA สำหรับนักเรียนระดับเริ่มต้น C ++ สิ่งใดก็ตามจะต้องซ่อนอยู่ตลอดทางหรือพวกเขาจะต้องนำความสว่างเข้ามาเพื่อตรวจสอบ เวทมนตร์เป็นศัตรูของผู้เรียน
ถ้าฉันต้องแนะนำภาษาเริ่มต้นที่คอมไพล์ไปยังรหัสเครื่องตัวแปร Pascal น่าจะเป็นวิธีที่ดีที่สุด มันมีวิธีการปกติและมีโครงสร้างมากกว่าตระกูล C จากสิ่งที่ฉันจำได้
ฉันจะบอกว่า 'ไม่' - ฉันมีความกระตือรือร้นและความปรารถนาที่จะเรียนรู้การเขียนโปรแกรมและเข้าสู่ช่วงเริ่มต้นปีแรกของฉันที่วิทยาลัยด้วย C ++ ทันทีที่ค้างคาว เมื่อรวมกับครูที่สอนภาษา C ++ ราวกับว่าเป็นภาษาอื่น (แนวคิดที่เหมาะสมกับพวกเขาไม่จำเป็นต้องเป็นแนวคิดเกี่ยวกับภาษาหรือการใช้งานจริง) และโครงการที่ส่งมาถึงเราทุกสัปดาห์ฉันพังและเผาไหม้พร้อมกับ ครึ่งหนึ่งของชั้นเรียน เมื่อถึงเวลาที่ฉันจะย่อยทดลองและใช้สิ่งที่ฉันสอนฉันต้องดิ้นรนกับการทำการบ้านซึ่งเป็นสองเท่าของการทดสอบ ฉันจะยืนยันว่ามันเป็นหลักสูตรระดับ 200 มากกว่า 100
ฉันพยายามอย่างดีที่สุด ฉันไม่ได้ขอความเห็นอกเห็นใจฉันรู้ว่ามันจะเป็นสิ่งที่ท้าทาย แต่ครูจะไม่ช่วยฉันด้วยซ้ำ เพิ่งบอกให้ฉันไปอ่านหนังสือตามที่ฉันทำ
ฉันจะโต้แย้ง (และบางคนก็ไม่เห็นด้วย) ว่า Ruby หรือ Python เป็นภาษาที่ดีกว่ามากในการแบ่งคนออกสู่โลกแห่งการเขียนโปรแกรม ทำความสะอาด, รัดกุม, อ่านง่าย, ชัดเจนกว่าไวยากรณ์
เลขที่
ในฐานะที่เป็นภาษาการสอน C ++ นั้นดีกว่า C เล็กน้อยซึ่งเป็นหนึ่งในภาษาการสอนที่แย่ที่สุด มันนำเสนอความซับซ้อนมากมายล่วงหน้าบางส่วนของภาษานั้นไม่ได้ใช้งานง่ายและส่วนใหญ่คุณจะเรียนรู้เกี่ยวกับ C ++ มากกว่าการเขียนโปรแกรมโดยทั่วไป
ไม่ได้หมายความว่า C ++ (หรือ C) เป็นภาษาที่ไม่ดีหรือไม่คุ้มค่าที่จะเรียนรู้ เพียงว่ามีภาษาสอนที่ดีกว่าเช่น Python
string
ชนิดข้อมูลที่ผู้ประกอบการทับถมชอบ+
, =
และ==
ที่จะทำในสิ่งที่นักเรียนมากขึ้นหรือน้อยคาดหวังว่าเมื่อเทียบกับวิธีการตอบสนองความต้องการการประมวลผลสตริงที่จะต้องทำใน C. ดังนั้น "เล็กน้อย" . ฉันไม่แนะนำให้ใช้เป็นภาษาสอน
การศึกษาระดับมัธยมศึกษาตอนปลายมีสองประเภท: มหาวิทยาลัยและโรงเรียนการค้า ความแตกต่างคือสิ่งที่คุณต้องการเตรียมพร้อมที่จะทำหลังจากสำเร็จการศึกษา ในสาขายานยนต์ไม่ว่าคุณจะเป็นช่างหรือวิศวกรเครื่องกล
ที่ถูกกล่าวว่า C ++ เป็นภาษาแรกที่ดีถ้าคุณต้องการที่จะเป็นวิศวกรและเป็นหมัดถ้าคุณต้องการที่จะเขียนโปรแกรมเทียบเท่าของช่าง
คลาสอินโทรใน C ++ จะใช้เวลาพูดคุยเกี่ยวกับชนิดข้อมูลคำจำกัดความการประกาศพอยน์เตอร์การจัดสรรหน่วยความจำและอื่น ๆ เป็นจำนวนมาก สิ่งเหล่านี้เป็นรากฐานที่ดีหากคุณตั้งใจจะใช้เวลาหลายภาคเรียนเพื่อสร้างสิ่งที่มีประโยชน์ แต่ต้องการรู้ว่าเมื่อคุณไปถึงที่นั่นคุณจะมีพื้นฐานในการจัดการกับความซับซ้อนในระดับใด ๆ
ในทางกลับกันถ้าคุณต้องการทำสิ่งที่มีประโยชน์ได้เร็วขึ้น แต่ไม่ต้องสนใจว่าโดเมนและความซับซ้อนมี จำกัด แล้วใช้เวลาตลอดเวลากับแนวคิดระดับล่างที่อยู่ข้างหน้าจะเสียเปล่า มีโปรแกรมเมอร์จำนวนมากที่สามารถเขียนตัวตรวจสอบความถูกต้องของฟอร์ม html ที่ยอดเยี่ยมได้ แต่ไม่มีเงื่อนงำในการออกแบบไดรเวอร์อุปกรณ์
แน่ใจ ภาษาแรกของฉันคือ C แต่นั่นเป็นเพียงการทำให้ชั้นเรียนของเราง่ายขึ้นใน C ++ มันทำให้ Java ง่ายขึ้นที่จะจัดการเมื่อฉันไปถึงมหาวิทยาลัย C ++ อาจมีเส้นโค้งการเรียนรู้ที่สูงขึ้นเล็กน้อย แต่ถ้ามันสอนอย่างถูกต้องมันก็น่าจะดี
ไม่ C ++ ไม่เหมาะกับภาษาแรก ดังที่แสดงไว้ที่นี่โปรแกรมเมอร์มืออาชีพหลายคนแบ่งปันความคิดเห็นนี้ แต่ก็เป็นความเห็นที่ครูมืออาชีพมี
นี่คือรายงานจากคณบดีมหาวิทยาลัย Carnegie Mellon เกี่ยวกับการใช้ C ++ สำหรับหลักสูตรเบื้องต้นเพื่อการเขียนโปรแกรมสำหรับนักศึกษาใหม่:
ภาษามาตรฐานเช่น C หรือ C ++ ไม่เหมาะสำหรับหลักสูตรนี้เนื่องจากความซับซ้อนและข้อบกพร่องของพวกเขาเป็นอุปสรรคต่อทั้งเทคนิคการให้เหตุผลที่ไม่เป็นทางการและกลไก
มหาวิทยาลัยเชียงใหม่เปิดสอนหลักสูตรเบื้องต้น 2 หลักสูตรโดยเป็นหลักสูตรที่จำเป็นและหลักสูตรที่มีประโยชน์ SML ได้รับเลือกสำหรับการเขียนโปรแกรมการทำงาน ฉันไม่รู้ว่าสิ่งใดที่ถูกเลือกสำหรับหลักสูตรที่จำเป็น แต่รายงานระบุว่าใช้ส่วนย่อยของ C
แน่ใจ มีภาษาอื่นที่อาจเป็นเรื่องง่ายสำหรับนักเรียนปีแรกที่จะเข้าใจ อย่างไรก็ตามมีวิธีที่ครูสามารถแนะนำแนวคิดใน C ++ ได้ช้า
C ++ แน่นอนเป็นภาษาแรก แต่มันเกี่ยวกับวิธีการสอนที่ดี
ทุกคนพูดว่าภาษาแรกควรเข้าใจง่าย แต่ประเด็นของฉันคือคนส่วนใหญ่เริ่มเขียนโปรแกรมในระดับปริญญาตรี ดังนั้นคุณสามารถสอนสิ่งที่พวกเขาสามารถเข้าใจได้ และด้วย C ++ คุณสามารถเปลี่ยนจากระดับล่างไปเป็นระดับที่สูงขึ้น
ไม่อย่างแน่นอน
ถ้าฉันมีวิธีของฉันฉันจะไม่อนุญาตให้ใช้ในสภาพแวดล้อมทางวิชาการเกือบทั้งหมด ไม่ใช่เพราะเหตุผลที่ขัดแย้งกับสิ่งที่ทำไปแล้ว แต่เพราะหลาย ๆ คนคิดว่า C ++ (หรือความหลากหลาย) เป็นคำตอบสำหรับปัญหาเกือบทุกปัญหาเพราะคุณสามารถใช้มันได้ในเกือบทุกสถานการณ์ มันเป็นไขควงของการเขียนโปรแกรม
บางคนใช้เพื่อขันสกรูซึ่งเป็นเครื่องมือที่เหมาะสมอย่างยิ่งสำหรับงาน คนอื่น ๆ ใช้มันเหมือน prybar ในขณะที่มักจะมีประสิทธิภาพไม่เหมาะอย่างยิ่งเพราะไขควงไม่ว่าพ่อของคุณจะบอกคุณว่าไม่ใช่ prybar และอาจเป็นความหายนะที่ล้มเหลวเนื่องจากการใช้งานที่ผิดเนื่องจากองค์ประกอบของก้านไม่ได้สร้างขึ้นโดยเจตนา สำหรับกองกำลังชนิดหนึ่งแงะจะพบ ยังมีคนอื่น ๆ อาจลองใช้เป็นหมัดหรือสิ่วและพวกเขาก็มักจะประสบปัญหาเพราะด้ามไขควงไม่ได้ถูกสร้างขึ้นสำหรับการใช้งานที่ไม่เหมาะสมที่หมัดหรือสิ่วถูกออกแบบมาให้ทนต่อ
ในความคิดของฉันงานของโปรแกรมเมอร์คือการแปลปัญหาจริง ๆ ให้เป็นระบบอัตโนมัติที่ให้ประสิทธิภาพในระดับที่ดีขึ้น (ลดการมอบหมายทรัพยากรให้กับงาน) ความเร็ว (ลดเวลาในการปฏิบัติงาน) คาดการณ์ (เพิ่มความสามารถในการทำซ้ำ) ของงาน) หรือองค์กร (เพิ่มการรับรู้ของความสัมพันธ์ระหว่างงาน)
ในขณะที่เป็นที่เข้าใจได้ว่าทุกคนที่โปรแกรมควรมีความรู้ทั่วไปเกี่ยวกับการทำงานระดับต่ำของคอมพิวเตอร์และโดยเฉพาะอุปกรณ์ IO และการจัดสรรหน่วยความจำมันเป็นเรื่องแปลกแน่นอนที่จะต้องใช้ความรู้นั้นในระดับที่สำคัญใด ๆ งานส่วนใหญ่ ความพยายามที่จะทำเช่นนั้นโดยไม่เข้าใจบริบทที่กว้างขึ้นของปัญหาทำให้เกิดความเสี่ยงต่อความพยายามอย่างมาก
มันเป็นเรื่องไร้สาระที่ภาษาการเขียนโปรแกรมแรกควรเป็น C / C ++ หรือตัวแปรใกล้เคียงเนื่องจากคลาสของปัญหาที่ C และอนุพันธ์ของมันแก้ปัญหานั้นไม่ได้รับการยอมรับอย่างแน่นอนสำหรับปัญหาในปัจจุบันและอนาคตที่มีขนาดใหญ่โดยพลการบางส่วน โปรแกรมก่อนหน้าไขควง) และในความเป็นจริงเป็นชุด miniscule ของปัญหามา โปรแกรมเมอร์ส่วนใหญ่จะไม่เข้าใกล้การพัฒนาฟีเจอร์หลักของระบบปฏิบัติการหรืออินเทอร์เฟซอุปกรณ์โดยตรงแม้จะเพิ่มความล้ำหน้าของอุปกรณ์มือถือขนาดเล็กและเชื่อมต่อกัน ส่วนใหญ่จะทำงานและใช้ชีวิตเหมือนที่เราทำ การแก้ไขและยกเลิกการวางโค้ดที่มีอายุมากกว่าสองชั่วอายุใช้งานกับเทคโนโลยีที่แสดงอายุแล้วหรือทำงานในขอบของเทคโนโลยีในแอพ killer (x + 1)
สำหรับภาษาแรกฉันจะดู Lego NXT ซึ่งเป็นงานที่เบา แต่มีคุณลักษณะที่หลากหลายของ LabView ในขณะที่ Lego NXT ไม่ได้ใช้กันอย่างแพร่หลายในธุรกิจการค้า แต่จะนำเสนอลักษณะพื้นฐานของการเขียนโปรแกรมด้วยวิธี "เซ็นเซอร์ที่สมบูรณ์" ฉันอาจจับคู่กับภาษาสคริปต์เป็นกลางแพลตฟอร์มเช่น Javascript หรือ TCL / TK ทั้งสองอย่างนั้นมีผลกระทบค่อนข้างต่ำในแง่ของสิ่งที่คุณต้องค้นพบเพื่อทำงานขั้นพื้นฐาน แต่มีประสิทธิภาพโดยให้ผลตอบแทนสูงในแง่ของข้อเสนอแนะและความยืดหยุ่นในการแนะนำและแก้ไขปัญหาความซับซ้อนของปัญหาต่างๆ นอกจากนี้ยังให้โอกาสที่ดีสำหรับนักเรียนในขณะที่พวกเขาก้าวหน้าในการสำรวจศักยภาพที่เกินกว่าที่กำหนดไว้ในสภาพแวดล้อมแบบกระป๋อง: โอกาสที่จะลองทำงานในที่มืดชื้น
หลังจากที่พวกเขาเรียนรู้ที่จะขับรถสี่สูบอัตโนมัติจากนั้นก้าวขึ้นสู่ hotrod แมนนวล v8 ขนาดใหญ่หากพวกเขาสนใจและมีแรงจูงใจจริงๆ หากโจเอลไม่สามารถหาโปรแกรมเมอร์ร็อคสตาร์ใต้หินใด ๆ ที่อยู่ใต้ฝ่าเท้าของเขาเขาอาจต้องมองไปที่อื่นหรือคิดใหม่ว่าทำไมเขาถึงต้องการไขควงมากกว่าหนึ่งกล่องในกล่องเครื่องมือของเขา
บางจุดที่ผู้เริ่มต้นทำผิดพลาดได้ง่ายใน C ++ คือ:
การมอบหมายที่คุณต้องการทดสอบ = vs ==
หายไป;
ความสามารถในการอ่านของวงเล็บปีกกาเทียบกับตัวอย่างปาสกาลเริ่มต้นสิ้นสุด
แล้วมีไฟล์ทั้งหมดรวมถึงมาโครการจัดการหน่วยความจำและอื่น ๆ เพื่อสร้างความสับสน
ดังนั้นฉันจะบอกว่า C ++ ไม่ใช่ภาษาที่ดีที่สุดที่จะเริ่มต้นด้วย - อย่างไรก็ตามไม่ต้องสงสัยเลยว่ามันจะมีประโยชน์มากเมื่อคุณเรียนรู้มัน
ฉันจะ - ตามที่คนอื่นแนะนำ - ใช้ C #, Java หรือแม้กระทั่ง VB - และ IDE ที่ดีกับการเน้นไวยากรณ์, ดีบัก ฯลฯ เพื่อช่วยให้ง่ายต่อการกู้คืนจากข้อผิดพลาด
เมื่อฉันอยู่ในวิทยาลัย C ++ เป็นภาษาพื้นฐานที่สอนตลอดปีแรกของวิทยาลัย ทฤษฎีคือมันมีแนวคิดการเขียนโปรแกรมที่ซับซ้อนดังนั้นหากคุณสามารถเชี่ยวชาญมันคุณสามารถเลือกภาษาอื่น ๆ มันทำหน้าที่ฉันเป็นรากฐานที่ดี
ต้องบอกว่าในระหว่างปีอาวุโสของฉันฉันทำหน้าที่ในคณะกรรมการเพื่อตรวจสอบว่าจะเปลี่ยนภาษาหลักเป็น Java หลังจากพูดคุยกับนายจ้างที่มีชื่อเสียงหลายคนและศิษย์เก่าของภาควิชาบางคนแล้วเห็นว่าการเปลี่ยนมาใช้ Java เป็นสิ่งที่ดีที่สุดสำหรับนักเรียน นายจ้างที่เราคุยด้วยต้องการให้คนมีประสบการณ์ในภาษาที่พวกเขาใช้เพื่อจ้างพวกเขา ฉันเชื่อว่าตอนนี้ 10 ปีต่อมาพวกเขายังคงใช้ภาษาจาวาเป็นภาษาหลักของพวกเขา
ในบันทึกที่คล้ายกันเราต้องการจ้างผู้สำเร็จการศึกษาระดับวิทยาลัยที่มีทักษะภาษาซีพลัสพลัสที่ดี เราไม่พบอะไรเลย
ฉันจะบอกว่าใช่ แต่ภาษาใด ๆ สามารถเป็นภาษาแรกได้ ฉันคิดว่า C ++ นั้นดีเพราะในขณะที่มันซับซ้อนและบางครั้งก็ยากมันจะแสดงสิ่งที่คุณสามารถทำได้จริง ๆ (ข้อ จำกัด น้อยกว่า) นอกจากนี้ยังมีการออกแบบเชิงวัตถุบางอย่างที่สามารถช่วยให้คุณเตรียมพร้อมสำหรับภาษาอื่น ๆ
C ++ เป็นภาษาแรกของฉันและฉันดีใจที่มันเป็น มันทำให้ฉันคิดในใจ OOP ตั้งแต่เนิ่น ๆ และฉันก็รู้สึกขอบคุณสำหรับสิ่งนั้น แต่ท้ายที่สุดมันลงมากับสิ่งที่คุณต้องการทำจริงๆ ภาษาไม่สำคัญเท่าไหร่เพราะถ้าคุณเก่งภาษาเดียวโอกาสที่คุณจะไม่มีปัญหาในการเลือกภาษาอื่น เธออยากทำอะไรล่ะ? ทำเกม? โปรแกรมสำหรับโทรศัพท์มือถือ? แต่ละคนจะมีเครื่องมือและภาษาที่เหมาะสมกว่าสำหรับมัน
C ++ เป็นภาษาผู้เชี่ยวชาญไม่ใช่มือใหม่ ... จะบอกว่า C ก่อนไม่ใช่ Java หรือ C # หรือ Python ... ทำไม? เพราะ C สอนให้คุณดูแลเกี่ยวกับความทรงจำของคุณและแนวคิดที่ซับซ้อนบางอย่างเช่นพอยน์เตอร์ที่ "ซ่อน" โดยทุกภาษา แต่ยังมีอยู่ทุกที่ ฉันเคยเห็นนักพัฒนาหนุ่มหลายคนที่ไม่เข้าใจว่าทำไมหน่วยความจำถึงควรเปิดตัวในบางครั้งและเชื่อว่านักสะสมขยะไม่ใช่คนแคระตัวเล็กที่ทำความสะอาดการเข้ารหัส craps ทั้งหมด: พวกเขายกตัวอย่างพวกเขายกตัวอย่างและบูมมันระเบิดแม้ว่าพวกเขาจะมี XXXXGb RAM ... แต่พวกเขาไม่เข้าใจว่าทำไมตัวเก็บขยะไม่เพียงแค่ทำความสะอาดอย่างน่าอัศจรรย์! และฉันเคยเห็นนักพัฒนาซอฟต์แวร์ประเภทนี้เข้ารหัสใน C ++ (และยิ่งบ้าคลั่งใน Corba) และมันก็เป็นการสังหาร !!!!!!!!!!! ดังนั้นฉันจะแนะนำให้เรียนรู้การเขียนโค้ดใน C จากนั้นไปที่ Python / Java / C # สำหรับแนวคิดเกี่ยวกับวัตถุและน้ำตาลทั้งหมด จากนั้นเมื่อคุณเข้าใจเรื่องทั้งหมดคุณจะไปที่ C ++ และคุณรู้สึกถึงพลังของ C ++ แต่คุณก็ค้นพบอันตรายทั้งหมดและทำไมไม่ควรนำมาใช้กับทุกคน;)
NO มีสิ่งมากมายที่ C ++ มีซึ่งทำให้เป็นเรื่องยากสำหรับมือใหม่ที่จะเข้าใจ อย่าเข้าไปใน "ภาษาโปรแกรมทั้งหมดเท่ากัน" fallacie
เริ่มต้นด้วยพื้นฐานหรือ Pascal (ละเว้นสิ่งที่ "พวกเขาเลิกใช้แล้ว") และใหม่กว่าด้วย C / C ++ / Java / C # / Perl หรือถ้าคุณมีโอกาสอันดับแรกด้วยโลโก้และคาเรลจากนั้นก็พื้นฐานหรือปาสกาล
PD มหาวิทยาลัยและเพื่อนร่วมงานบางคนมีภาษาการใช้งานและการเปรียบเทียบชั้นเรียนและมันเกิดขึ้นว่าฉันสอนคลาสนั้น ;-)
คุณสามารถเลือกภาษาใดก็ได้เพื่อเรียนรู้พื้นฐานของการเขียนโปรแกรม ฉันเรียนรู้เนื้อหาใน C / C ++ แต่ 7 ปีต่อมาเครื่องมือ / ภาษามีการเปลี่ยนแปลงในโรงเรียนของฉันและพวกเขาชอบ java / C # ภาษาเป็นเพียงเครื่องมือ สิ่งที่คุณต้องทำให้ดีขึ้นคือพื้นฐาน เช่นในคน MIT เรียนรู้พื้นฐานของอัลกอริทึมโดยใช้ python เช่น Java อาจจะดีสำหรับการเขียนโปรแกรมเว็บ แต่ C / C ++ นั้นดีสำหรับบริการและแอปพลิเคชั่นที่มีประสิทธิภาพสูง ดังนั้นมันขึ้นอยู่กับสถานการณ์ของคุณ
หาก "เหมาะสม" หมายถึง "เป็นไปได้" ใช่ ถ้าสำหรับ "ดี" ไม่แน่นอน
เป็นไปได้ที่จะชอบแม้กระทั่งรัก C ++ แต่สำหรับคุณที่จะเรียนรู้หลายภาษาและทำงานกับทศวรรษที่ดีกว่ากับ codebases ที่เน่าเปื่อยตลอดชีวิตได้รับประสบการณ์เกี่ยวกับ "การประดิษฐ์ซอฟแวร์ที่แปลกใหม่
ไม่ใช่ตอนเริ่มต้นเมื่อคุณบริสุทธิ์เล่นซอกับปัญหาเล็ก ๆ (แต่น่าสนใจและสนุก) ที่มีปัญหา
ฉันจะเริ่มต้นด้วย python ตามด้วย SICP (แบบแผน) หรืออะไรที่คล้ายกัน อาจจะย้อนกลับหรือ interleaved กับคนที่คุณสามารถไปและจัดการกับปัญหา แทนที่จะต่อสู้กับระบบเดินในโคลนลึกและเรียนรู้นิสัยแปลก ๆ และเหตุผลทางประวัติศาสตร์ทุกชนิด
ต่อมาเมื่อคุณสามารถเขียนโปรแกรมออกจากถุงกระดาษแล้วให้เปลี่ยนเป็นโลหะเปลือย: เรียนรู้วิธีการประกอบและสถาปัตยกรรมหลายอย่างรวมถึง Knuth's Mix ฉันไม่ได้หมายถึงการจดจำ opcodes หรือทำเรื่องจริงเพียงเพื่อทำความเข้าใจกับหน่วยความจำการลงทะเบียน ALU แคชการขัดจังหวะและการอ่านระดับ
จากนั้นด้วยพื้นฐานดังกล่าวคุณสามารถสัมผัสกับภาษาอื่นรวมถึง C ++ อาจเป็นความคิดที่ดีที่จะเพิ่ม "ประวัติศาสตร์และวิวัฒนาการของภาษา" ในระหว่างนี้
ฉันเริ่มต้นด้วย C ++ ในโรงเรียนมัธยม ฉันหยิบสำเนาของหนังสือเล่มนี้: c ++ วิธีการโปรแกรมโดย Deitel และ Deitel หนังสือเล่มนี้ค่อนข้างดี
ตรงไปตรงมาไม่มีคำตอบที่ถูกหรือผิดที่นี่ฉันพบโดยส่วนตัวว่า C ++ สามารถเข้าใจได้ ฉันเรียนรู้ไปตลอดทางจนถึง OOP (ฉันสะดุด "สิ่งนี้" ซึ่งตอนนี้ฉันไม่เข้าใจว่าฉันทำไม่ได้ แต่อย่างใด) ลองไม่ท้อแท้ หากคุณติดขัดลองใช้ภาษาอื่นและเรียนรู้ภาษาใหม่ ๆ แนวคิดก็คือเมื่อคุณเห็นแนวคิดเดียวกันในรูปแบบที่แตกต่างกัน 2-3 แบบคุณจะเข้าใจได้ดีขึ้น อย่างที่ฉันพูดแนวคิดของตัวชี้ "นี่" ทำให้ฉันสับสน แต่เมื่อฉันเห็นสิ่งเดียวกันใน Python (ชื่อตัวเองแทน) มันทำให้ฉันรู้สึกได้ทันทีเพราะฉันเข้าใจใน C ++ เรียนรู้ Java ถ้าคุณสามารถสอนได้หลายวิทยาลัย เรียนรู้ภาษาไพ ธ อนหรือทับทิมเพราะเป็นภาษาดู่ jour และถ้าคุณสามารถสำรวจโพรง / สิ่งใหม่ ๆ เพิ่มเติมเช่น Clojure (และ lisps อื่น ๆ ทั้งหมด) Haskell, Scala ...
ไม่ฉันเริ่มต้นด้วย Java หรือ C # ถ้าคุณต้องการที่จะเรียนรู้ C ++ มันอาจจะง่ายขึ้นหลังจากที่คุณได้เรียนรู้พื้นฐานเช่นอะไรคือคลาส, วิธีทำลูปและส้อม (ถ้า, ตามด้วยข้อความ) ฯลฯ มันสำคัญมากที่จะต้องเรียนรู้วิธีการดู ปัญหาหรือสมการทางคณิตศาสตร์และตั้งโปรแกรมมากกว่าที่จะคิดออกว่าคุณได้ปล่อยหน่วยความจำทั้งหมดหรืออะไรก็ตาม
ดูเหมือนว่าสมมติฐานที่อยู่เบื้องหลังคำถามนี้คือ "C ++ ดูเหมือนซับซ้อนดังนั้นอายุ 16 ปีจะสามารถรับเป็นภาษาแรก (การเขียนโปรแกรมคอมพิวเตอร์) หรือไม่"
ตามเวลาที่เราอายุ 4 หรือ 5 เรารับสิ่งก่อสร้างส่วนใหญ่ในภาษาแม่เพียงแค่สัมผัสกับสิ่งนั้นผ่านการฟังคนอื่นพูด การสร้างประโยคที่ยอดเยี่ยมต้องใช้เวลาตลอดชีวิตไม่มีคำถาม
C ++ แน่นอนว่ามีความซับซ้อน / ซับซ้อนน้อยกว่าพูดภาษามนุษย์ส่วนใหญ่ เด็กอายุ 16 ปีควรจะสามารถรับมันได้ พวกเขาจะเขียนโค้ดที่ยอดเยี่ยมด้วยหรือไม่ ต้องรอดู
ผู้เริ่มต้นจำเป็นต้องชื่นชม 'การเขียนโปรแกรม' ก่อน จากประสบการณ์ของฉันในการฝึกชั้นเรียนผู้เริ่มต้นพวกเขาชื่นชมสิ่งที่พวกเขาเข้าใจมากที่สุดก่อน เช่น Python เทียบกับ C # พวกเขาชื่นชม Python เนื่องจากมีระดับสูงมากและไม่ใช้สัญลักษณ์เช่น C # ทำซึ่งมีความหมายใกล้เคียงกับภาษามนุษย์มาก ดังนั้นฉันขอแนะนำให้เรียนรู้การเขียนโปรแกรมจากระดับสูงถึงระดับต่ำ