C ++ เหมาะสมกับภาษาแรกหรือไม่ [ปิด]


26

วิทยาลัยท้องถิ่นกำลังสอนภาษาซีพลัสพลัสให้กับนักศึกษาชั้นปีที่ 1 (อายุ 16 ปี) ที่ไม่มีประสบการณ์การเขียนโปรแกรมมาก่อน

ในฐานะภาษาโปรแกรมแรก C ++ นั้นเหมาะสมหรือไม่


56
ภาษาใดก็ได้สามารถเป็นภาษาแรกได้ มันไม่สำคัญหรอก
อดัมเลียร์

8
สิ่งนี้อาจสนใจคุณ - joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Craige

19
@Anana Lear: แน่นอนว่าภาษาใด ๆ อาจเป็นภาษาแรก แต่นั่นไม่ถือว่า C ++ เป็นภาษาแรกที่ดี หากคำตอบของคุณเป็นคำตอบจริงฉันลงคะแนนว่าไม่ช่วยเหลือ
Ed James

6
@Doug: ฉันกำลังเขียนโปรแกรม C ++ สำหรับการใช้ชีวิต ... ประเด็นของคุณคืออะไร?
Matthieu M.

9
@Dough - 70% ของโครงการคอมพิวเตอร์ในปัจจุบันเกี่ยวข้องกับการเขียนซอฟต์แวร์สำหรับระบบฝังตัวและอุปกรณ์ไมโคร คาดเดาภาษาที่ใช้สำหรับโครงการเหล่านั้น เดาว่าใครมีความพร้อมที่สุดสำหรับตำแหน่งระดับเริ่มต้น? ไม่แน่นอนว่า Java หรือ. NET เป็นม้าตัวเดียว ฟังดูรุนแรง แต่โรงเรียนได้สร้างความเสียหายอย่างมากต่อผู้สำเร็จการศึกษา CS ทั้งรุ่นโดยการฝึกอบรมพวกเขาเพียง 30% ของตลาดงานการเขียนโปรแกรม เรามีโปรแกรมเมอร์มากเกินไปสำหรับภาคแอพ (30%) และเราขาดแคลนภาคระบบ (70%) ตัวเลขเหล่านั้นจะไม่ไปไหน โอกาสในการทำงานในอนาคต? ช่ายยย.
luis.espinal

คำตอบ:


61

กึกก้องไม่มี

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

"นักเรียนต้องเข้าใจแนวคิดระดับต่ำ"

การเข้ารหัส "ระดับต่ำ" ไม่ได้รวมเอาวัตถุมา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 ++ ก่อน


4
คำตอบที่ดี! แท้จริงแล้วคุณสมบัติ C ++ จำนวนมากนั้นไม่ได้เกี่ยวข้องกับการเขียนโปรแกรมระดับต่ำทั้งหมด
Marco Mustapic

7
+1 คำตอบที่ยอดเยี่ยม มันเป็นความจริงที่บางครั้งคำว่า C ++ นั้นมีความหมายที่ผิด ๆ ว่า "ระดับต่ำ" คุณเชื่อมโยงกับคำถามที่พบบ่อยเกี่ยวกับ C ++ แต่ฉันขอแนะนำให้ผู้อื่นดูที่C ++ FQA (หรือ "คำตอบที่พบบ่อย": P)
Andres F.

2
ว้าว. นั่นทำให้ฉันนึกถึงJava IAQ ...
Jesse Millikan

เห็นด้วยอย่างสมบูรณ์ แม้แต่ Malbolge ก็ยังดีกว่า C ++ สำหรับมือใหม่
rightfold

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

54

ไม่ 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!")

เพียงเท่านี้เราจะมาเขียนโค้ดอัลกอริทึมกัน


15
Python จะเหมาะสำหรับนักเรียนระดับประถมที่เจ็ด นักศึกษาสามารถเข้าใจได้มากกว่านี้
Gulshan

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

8
คุณไม่ได้เอ่ยถึงการค้นหาที่ขึ้นอยู่กับการโต้แย้งของ << :)
MetricSystem

6
คุณไม่จำเป็นต้องรู้ทุกอย่างเพื่อเริ่มต้นใช้ภาษา ศาล << อะไรก็ตาม; "ใช้งานได้" คุณไม่จำเป็นต้องไปดูรายละเอียดที่เป็นภาระจนกว่าคุณจะครอบคลุมผู้ปฏิบัติงานมากเกินไปเป็นต้นในภายหลัง
Colen

6
ฉันจะใช้ Python มากกว่า C ++ ทุกวันในสัปดาห์เพื่อเป็นภาษาเกริ่นนำ
jprete

21

อาจไม่ใช่ภาษาแรกที่ดี: ไวยากรณ์ที่ซับซ้อนกฎจำนวนมากภาษาเก่าการจัดการหน่วยความจำที่ผิดพลาดได้ง่าย ดีกว่าที่จะสอนให้นักเรียนของคุณมีอะไรมากกว่า OO เช่น Smalltalk หรือสิ่งที่ดีกว่าในการเขียนโปรแกรมด้วยเช่น Python หรือสิ่งที่ทำงานเช่น Haskell

พวกเขาสามารถเรียนรู้ C ++ ต่อไปในชีวิต (ถ้าพวกเขาไม่สามารถช่วยได้) หลังจากพวกเขาเรียนรู้ภาษาที่ดีขึ้น


5
Haskell เป็นภาษาแรกจะเป็นการทดลองที่น่าสนใจ
Larry Coleman

@ แลร์รี่หลักสูตร CS ของมหาวิทยาลัยเคมบริดจ์สอน SML เป็นภาษาแรก
Peter Taylor

1
การเขียนโปรแกรมใช้งานได้บิดสมองของคุณ - ฉันรู้ว่า MIT เริ่มต้นด้วย Scheme ก่อนหน้านี้ แต่ฉันดีใจที่ฉันไม่ได้เริ่มเขียนโปรแกรมเชิงฟังก์ชั่นจนกระทั่งหลังจากสองปีของการผสมผสานแบบไฮบริด / OO ในโรงเรียน
justkt

11
@justkt: ทุกภาษาทำให้สมองของคุณบิด เป็นเพียงเรื่องของวิธีที่คุณต้องการให้มันบิด
David Thornley

+1 แต่ฉันจะไม่ติดป้ายกำกับภาษาอื่น ๆ นอกเหนือจาก C ++ อย่างเด็ดขาดว่าจำเป็นต้อง "ดีกว่า"
greyfade

18

คำตอบสั้น ๆ : ใช่!

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

มันไม่ควรที่จะเรียนรู้พื้นฐานของการเขียนโปรแกรมการวนซ้ำและการเรียงลำดับก่อนที่คุณจะพึ่งพาภาษาที่สร้างขึ้นใน. เรียงลำดับ ();


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

4
@Marco: หนังสือแนะนำเบื้องต้นของ Stroustrup "การเขียนโปรแกรม: หลักการและการฝึกฝนโดยใช้ C ++" แนะนำตัวชี้ที่ประมาณกลางหนังสือ คุณสามารถทำสิ่งต่างๆมากมายใน C ++ โดยไม่ต้องใช้ตัวชี้
David Thornley

4
“ ไม่เป็นความคิดที่ดีที่จะเรียนรู้พื้นฐาน…มาก่อน…” คุณมีงานวิจัยใดที่จะสนับสนุนการอ้างสิทธิ์นี้หรือไม่? ฉันรู้ว่าคนฉลาดจำนวนมากยกย่องว่าเป็นความรู้ทั่วไปที่“ bottom up” เป็นวิธีการสอนที่แท้จริงเพียงอย่างเดียว แต่นี่เป็นประเด็นที่ถกเถียงกันมากและเป็นงานวิจัยเกี่ยวกับการสอนเชิงกลที่ จำกัด
Konrad Rudolph

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

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

14

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


10
ด้วยการให้เครดิตทั้งหมดแก่ Dijkstra จึงเป็นไปไม่ได้ในทางปฏิบัติที่จะสอนการเขียนโปรแกรมที่ดีให้กับนักเรียนที่เคยสัมผัสกับ C ++ มาก่อน ในฐานะโปรแกรมเมอร์ที่มีศักยภาพพวกเขาจะถูกทำลายจิตใจโดยไม่มีความหวังในการฟื้นฟู ;)
Mason Wheeler

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

16
@ Andrés F .: ไม่เห็นด้วย การรู้จักแอสเซมเบลอร์ทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้นไม่ว่าคุณจะเขียนอะไรเพราะคุณสามารถเข้าใจสิ่งที่เกิดขึ้นจริง
Mason Wheeler

2
@Andres: ฉันเคยเห็นโปรแกรมเมอร์ Java / C # มากเกินไปที่มากับภาษาอื่นและยัดเยียดทุกอย่างเป็นวัตถุ ... พวกเขาขาดประสบการณ์ที่กว้าง
Matthieu M.

3
@Andres F. - ใน 12 ปีของฉันที่ทำ Java ฉันได้พบส่วนแบ่งของฉันของโปรแกรมเมอร์ Java ที่ดูดจริง ๆ ไม่ได้สัมผัสกับเรื่องต่าง ๆ เช่นการจัดสรรทรัพยากร, RAII, ไม่ทราบวิธีการเขียนโปรแกรมประยุกต์ gc มิตร เป็นต้นการรู้จักการชุมนุมและการรู้ภาษาที่คอมไพล์โดยไม่มีการสนับสนุนขยะอัตโนมัติและด้วยการสนับสนุนกระบวนทัศน์อื่นนอกเหนือจาก OO (C, C ++, Ada หรือภาษาที่คอมไพล์ในตระกูล Algol) สอนวิธีการเขียนระบบที่มีประสิทธิภาพและใหญ่ใน Java C #, Python คุณชื่อมัน นอกจากนี้โมเดลวัตถุใน C ++ นั้นไม่เหมือนกับ Java เลย
luis.espinal

10

ฉันสอนตัวเอง C ++ เมื่อฉันอายุ 15-16

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


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

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

มีแนวโน้มที่ไม่ดีมากที่ต้องการซ่อนความซับซ้อนของการเขียนโปรแกรมสำหรับนักเรียน ที่ไม่ได้จบลงด้วยดี (cf Spolsky ของ Java Schools เรียงความ) คนเหล่านั้นต้องจบลงที่ DailyWTF หากพวกเขาไม่ได้มุ่งหน้าตรง Abstractions รั่วไหลและเมื่อ (ไม่ถ้า) สิ่งที่เป็นนามธรรมรั่วไหลที่เลวร้ายยิ่งกว่าต้องจัดการกับมัน ฉันทำงานเป็น TA สำหรับนักเรียนระดับเริ่มต้น C ++ สิ่งใดก็ตามจะต้องซ่อนอยู่ตลอดทางหรือพวกเขาจะต้องนำความสว่างเข้ามาเพื่อตรวจสอบ เวทมนตร์เป็นศัตรูของผู้เรียน

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


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

5
รอไม่มีใครคาดหวังว่าจะมีใครบางคนทำงานโครงการโดยใช้ C ++ โดยไม่ต้องเข้าใจ C ++ ก่อน! แน่นอนว่าจะนำไปสู่รหัสที่คุ้มค่าของ TheDailyWTF แต่ตรงกันข้ามกับการอ้างสิทธิ์ของคุณมันไม่สำคัญที่จะเรียนรู้ C ++ (และไม่ใช่ "C กับคลาส" อย่างใดอย่างหนึ่ง) C ++ มีไวยากรณ์และไวยากรณ์ขนาดใหญ่ที่ซับซ้อนและบางครั้งไม่มีความรู้สึกและไม่มีที่สิ้นสุดของคำหลักและกฎ มันเป็นภาษาที่น่ากลัวเริ่มต้นด้วย ในฐานะที่เป็นภาษาการสอนมันช่างยอดเยี่ยมเพราะมันทำให้นักเรียนต้องคิดว่าข้อบกพร่องของซีพลัสพลัสนั้นเป็นธรรมชาติและหลีกเลี่ยงไม่ได้ในโลกแห่งการเขียนโปรแกรม
Andres F.

1
Andr: คุณยืนยันในการแบ่งขั้วที่ผิดพลาด: "~ C ++ หรือ All C ++" นั่นผิดพลาด
พอลนาธาน

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

2
@Andr: ไม่จริง C ++ นำเสนอการทำให้เข้าใจง่ายกว่า syntax มากกว่า C89 นอกจากนี้เพื่อวัตถุประสงค์ระดับรายการสิ่งที่ตรงไปตรงมามากสำหรับทุกกรณีที่ฉันสามารถคิด ...
Paul Nathan

8

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

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

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


8
ภาษาใด ๆ เป็นภาษาแรกที่ไม่ดีถ้าสอนไม่ดี
David Thornley

3
@David Thornley: อย่างไรก็ตามถึงแม้จะสอนอย่างถูกต้องแล้วบางภาษาก็เป็นทางเลือกที่แย่เหมือนภาษาแรก ตัวอย่างเช่น Cobol
Andres F.

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

@ Andrés F .: ฉันไม่เห็นด้วยกับสิ่งนั้น อย่างไรก็ตามบัญชีของเควินนั้นเกี่ยวกับครูที่ไม่ดีและครูที่ไม่ดีสามารถทำให้ Python หรือ Scheme เป็นภาษาแรกได้ (ผู้ได้รับการเสนอชื่อสองคนของฉันเป็นภาษาแรกที่ดี)
David Thornley

2
@Chris: ฉันได้โปรแกรมใน Cobol และฉันสงสารคุณ :)
Andres F.

8

เลขที่

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

ไม่ได้หมายความว่า C ++ (หรือ C) เป็นภาษาที่ไม่ดีหรือไม่คุ้มค่าที่จะเรียนรู้ เพียงว่ามีภาษาสอนที่ดีกว่าเช่น Python


1
C เป็นภาษาที่ยากสำหรับการสอน แต่เป็นหนึ่งในสิ่งที่แย่ที่สุด COBOL และ Java รับเค้กในฐานะที่เลวร้ายที่สุดเลวร้ายกว่า C. สิ่งที่ดีเกี่ยวกับ C คือคุณต้องจัดการกับโลหะด้านในขึ้นด้านหน้า (โดยไม่ต้องเจาะเข้าไปในแอสเซมเบลอร์) ผู้คนประสบความสำเร็จในการสอนด้วยภาษา C เป็นภาษาหลัก แน่นอนว่ามีตัวเลือกอื่น ๆ ที่สง่างามกว่าเช่น Python หรือ Ruby (หรือภาษาใดก็ตามที่เป็นกระบวนทัศน์ที่หลากหลายและไม่จำเป็นต้องผลัก OO ไว้ล่วงหน้าแม้กระทั่งงานที่ง่ายที่สุด) C ไม่ใช่คำสอนที่แย่ที่สุด ทางเลือกไม่ใช่โดยการยิงยาว
luis.espinal

1
ดีขึ้นเล็กน้อย? คุณคิดยังไง C ++ นำทุกสิ่งที่ไม่ดีเกี่ยวกับ C และสร้างมันมาใช้ !
Mason Wheeler

1
@MasonWheeler: ส่วนใหญ่เป็นเพราะภาษา C ++ ให้ความซื่อสัตย์ต่อพระเจ้าstringชนิดข้อมูลที่ผู้ประกอบการทับถมชอบ+, =และ==ที่จะทำในสิ่งที่นักเรียนมากขึ้นหรือน้อยคาดหวังว่าเมื่อเทียบกับวิธีการตอบสนองความต้องการการประมวลผลสตริงที่จะต้องทำใน C. ดังนั้น "เล็กน้อย" . ฉันไม่แนะนำให้ใช้เป็นภาษาสอน
John Bode

7

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

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

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

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


5

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


4

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

นี่คือรายงานจากคณบดีมหาวิทยาลัย Carnegie Mellon เกี่ยวกับการใช้ C ++ สำหรับหลักสูตรเบื้องต้นเพื่อการเขียนโปรแกรมสำหรับนักศึกษาใหม่:

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

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


2

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


2

C ++ แน่นอนเป็นภาษาแรก แต่มันเกี่ยวกับวิธีการสอนที่ดี

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


แต่ทำไมไม่เริ่มต้นในระดับที่สูงขึ้นของการเขียนโปรแกรม? เป็นระดับที่เราแก้ปัญหาส่วนใหญ่ (ยกเว้นปัญหาเฉพาะบางโดเมนแน่นอน) จากนั้นหากพวกเขาต้องการเข้าใกล้โลหะพวกเขาสามารถเรียนรู้ C ++ แอสเซมเบลอร์ ฯลฯ
Andres F.

ฉันเห็นด้วยเกี่ยวกับวิธีการสอนที่ดี!
Gary Willoughby

2

ไม่อย่างแน่นอน

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

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

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

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

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

สำหรับภาษาแรกฉันจะดู Lego NXT ซึ่งเป็นงานที่เบา แต่มีคุณลักษณะที่หลากหลายของ LabView ในขณะที่ Lego NXT ไม่ได้ใช้กันอย่างแพร่หลายในธุรกิจการค้า แต่จะนำเสนอลักษณะพื้นฐานของการเขียนโปรแกรมด้วยวิธี "เซ็นเซอร์ที่สมบูรณ์" ฉันอาจจับคู่กับภาษาสคริปต์เป็นกลางแพลตฟอร์มเช่น Javascript หรือ TCL / TK ทั้งสองอย่างนั้นมีผลกระทบค่อนข้างต่ำในแง่ของสิ่งที่คุณต้องค้นพบเพื่อทำงานขั้นพื้นฐาน แต่มีประสิทธิภาพโดยให้ผลตอบแทนสูงในแง่ของข้อเสนอแนะและความยืดหยุ่นในการแนะนำและแก้ไขปัญหาความซับซ้อนของปัญหาต่างๆ นอกจากนี้ยังให้โอกาสที่ดีสำหรับนักเรียนในขณะที่พวกเขาก้าวหน้าในการสำรวจศักยภาพที่เกินกว่าที่กำหนดไว้ในสภาพแวดล้อมแบบกระป๋อง: โอกาสที่จะลองทำงานในที่มืดชื้น

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


1

บางจุดที่ผู้เริ่มต้นทำผิดพลาดได้ง่ายใน C ++ คือ:

การมอบหมายที่คุณต้องการทดสอบ = vs ==

หายไป;

ความสามารถในการอ่านของวงเล็บปีกกาเทียบกับตัวอย่างปาสกาลเริ่มต้นสิ้นสุด

แล้วมีไฟล์ทั้งหมดรวมถึงมาโครการจัดการหน่วยความจำและอื่น ๆ เพื่อสร้างความสับสน

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

ฉันจะ - ตามที่คนอื่นแนะนำ - ใช้ C #, Java หรือแม้กระทั่ง VB - และ IDE ที่ดีกับการเน้นไวยากรณ์, ดีบัก ฯลฯ เพื่อช่วยให้ง่ายต่อการกู้คืนจากข้อผิดพลาด


1

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

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

ในบันทึกที่คล้ายกันเราต้องการจ้างผู้สำเร็จการศึกษาระดับวิทยาลัยที่มีทักษะภาษาซีพลัสพลัสที่ดี เราไม่พบอะไรเลย


1

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

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


1

C ++ เป็นภาษาผู้เชี่ยวชาญไม่ใช่มือใหม่ ... จะบอกว่า C ก่อนไม่ใช่ Java หรือ C # หรือ Python ... ทำไม? เพราะ C สอนให้คุณดูแลเกี่ยวกับความทรงจำของคุณและแนวคิดที่ซับซ้อนบางอย่างเช่นพอยน์เตอร์ที่ "ซ่อน" โดยทุกภาษา แต่ยังมีอยู่ทุกที่ ฉันเคยเห็นนักพัฒนาหนุ่มหลายคนที่ไม่เข้าใจว่าทำไมหน่วยความจำถึงควรเปิดตัวในบางครั้งและเชื่อว่านักสะสมขยะไม่ใช่คนแคระตัวเล็กที่ทำความสะอาดการเข้ารหัส craps ทั้งหมด: พวกเขายกตัวอย่างพวกเขายกตัวอย่างและบูมมันระเบิดแม้ว่าพวกเขาจะมี XXXXGb RAM ... แต่พวกเขาไม่เข้าใจว่าทำไมตัวเก็บขยะไม่เพียงแค่ทำความสะอาดอย่างน่าอัศจรรย์! และฉันเคยเห็นนักพัฒนาซอฟต์แวร์ประเภทนี้เข้ารหัสใน C ++ (และยิ่งบ้าคลั่งใน Corba) และมันก็เป็นการสังหาร !!!!!!!!!!! ดังนั้นฉันจะแนะนำให้เรียนรู้การเขียนโค้ดใน C จากนั้นไปที่ Python / Java / C # สำหรับแนวคิดเกี่ยวกับวัตถุและน้ำตาลทั้งหมด จากนั้นเมื่อคุณเข้าใจเรื่องทั้งหมดคุณจะไปที่ C ++ และคุณรู้สึกถึงพลังของ C ++ แต่คุณก็ค้นพบอันตรายทั้งหมดและทำไมไม่ควรนำมาใช้กับทุกคน;)


1

NO มีสิ่งมากมายที่ C ++ มีซึ่งทำให้เป็นเรื่องยากสำหรับมือใหม่ที่จะเข้าใจ อย่าเข้าไปใน "ภาษาโปรแกรมทั้งหมดเท่ากัน" fallacie

เริ่มต้นด้วยพื้นฐานหรือ Pascal (ละเว้นสิ่งที่ "พวกเขาเลิกใช้แล้ว") และใหม่กว่าด้วย C / C ++ / Java / C # / Perl หรือถ้าคุณมีโอกาสอันดับแรกด้วยโลโก้และคาเรลจากนั้นก็พื้นฐานหรือปาสกาล

PD มหาวิทยาลัยและเพื่อนร่วมงานบางคนมีภาษาการใช้งานและการเปรียบเทียบชั้นเรียนและมันเกิดขึ้นว่าฉันสอนคลาสนั้น ;-)


0

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


0

หาก "เหมาะสม" หมายถึง "เป็นไปได้" ใช่ ถ้าสำหรับ "ดี" ไม่แน่นอน

เป็นไปได้ที่จะชอบแม้กระทั่งรัก C ++ แต่สำหรับคุณที่จะเรียนรู้หลายภาษาและทำงานกับทศวรรษที่ดีกว่ากับ codebases ที่เน่าเปื่อยตลอดชีวิตได้รับประสบการณ์เกี่ยวกับ "การประดิษฐ์ซอฟแวร์ที่แปลกใหม่

ไม่ใช่ตอนเริ่มต้นเมื่อคุณบริสุทธิ์เล่นซอกับปัญหาเล็ก ๆ (แต่น่าสนใจและสนุก) ที่มีปัญหา

ฉันจะเริ่มต้นด้วย python ตามด้วย SICP (แบบแผน) หรืออะไรที่คล้ายกัน อาจจะย้อนกลับหรือ interleaved กับคนที่คุณสามารถไปและจัดการกับปัญหา แทนที่จะต่อสู้กับระบบเดินในโคลนลึกและเรียนรู้นิสัยแปลก ๆ และเหตุผลทางประวัติศาสตร์ทุกชนิด

ต่อมาเมื่อคุณสามารถเขียนโปรแกรมออกจากถุงกระดาษแล้วให้เปลี่ยนเป็นโลหะเปลือย: เรียนรู้วิธีการประกอบและสถาปัตยกรรมหลายอย่างรวมถึง Knuth's Mix ฉันไม่ได้หมายถึงการจดจำ opcodes หรือทำเรื่องจริงเพียงเพื่อทำความเข้าใจกับหน่วยความจำการลงทะเบียน ALU แคชการขัดจังหวะและการอ่านระดับ

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


0

ฉันเริ่มต้นด้วย C ++ ในโรงเรียนมัธยม ฉันหยิบสำเนาของหนังสือเล่มนี้: c ++ วิธีการโปรแกรมโดย Deitel และ Deitel หนังสือเล่มนี้ค่อนข้างดี

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


-1

ไม่ฉันเริ่มต้นด้วย Java หรือ C # ถ้าคุณต้องการที่จะเรียนรู้ C ++ มันอาจจะง่ายขึ้นหลังจากที่คุณได้เรียนรู้พื้นฐานเช่นอะไรคือคลาส, วิธีทำลูปและส้อม (ถ้า, ตามด้วยข้อความ) ฯลฯ มันสำคัญมากที่จะต้องเรียนรู้วิธีการดู ปัญหาหรือสมการทางคณิตศาสตร์และตั้งโปรแกรมมากกว่าที่จะคิดออกว่าคุณได้ปล่อยหน่วยความจำทั้งหมดหรืออะไรก็ตาม


2
ทำไม Java หรือ C # เมื่อ Python ง่ายขึ้น?
David Thornley

-3

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

ตามเวลาที่เราอายุ 4 หรือ 5 เรารับสิ่งก่อสร้างส่วนใหญ่ในภาษาแม่เพียงแค่สัมผัสกับสิ่งนั้นผ่านการฟังคนอื่นพูด การสร้างประโยคที่ยอดเยี่ยมต้องใช้เวลาตลอดชีวิตไม่มีคำถาม

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


4
ภาษามนุษย์สามารถที่จะมีไวยากรณ์ที่ซับซ้อนเพราะถ้าคุณได้รับการ grammer หรือ speling rong ผู้คนยังสามารถเข้าใจคุณ ไม่เช่นนั้นกับภาษาคอมพิวเตอร์
dan04

-3

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

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