Java หรือ C ++ สำหรับหลักสูตร CS ในมหาวิทยาลัย?


11

ฉันกำลังตกหลุมรักการลงทะเบียนเรียนที่โรงเรียนเพื่อรับปริญญา CS โรงเรียนที่ฉันกำลังมองหานั้นมีทั้ง Java- และ C ++ สำหรับหลักสูตรการพัฒนาซอฟต์แวร์เบื้องต้น (การเขียนโปรแกรมเชิงวัตถุรูปแบบการออกแบบสิ่งต่าง ๆ ) เป็นทางเลือกของนักเรียนที่ติดตามติดตาม แต่มีเวลาเพียงหนึ่งติดตามเท่านั้น

รู้ว่าคุณรู้อะไรตอนนี้ถ้าคุณมีทางเลือกคุณจะวางรากฐานหลักสูตร CS ของคุณใน Java หรือ C ++ หรือไม่

ปัจจุบันการอภิปรายของฉันในปัจจุบันมีลักษณะเช่นนี้:

เพื่อนที่ดี (ที่มีปริญญาเอกใน AI) กำลังโน้มน้าวให้ Java เป็นตัวเลือกที่ดีกว่าโดยไม่คำนึงถึงสิ่งที่ฉันทำถ้าเพียงเพื่อเพิ่มโอกาสในการทำงานมากขึ้นในภายหลังแม้ว่าเขาจะลำเอียงเพราะงานของเขาทั้งหมดอยู่ใน Java (เขา รักมัน) ฉันอาศัยอยู่ในเขต Boston, MA, USA และฉันเห็นงาน Java และ C ในปริมาณที่เท่ากัน

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

ฉันควรจะทราบว่าฉันเป็นผู้ใหญ่ที่จะกลับไปโรงเรียนหลังจาก 20 ปี (ปัจจุบันฉันไม่มีระดับใด) ดังนั้นฉันจึงมองหาโอกาสและเวลาที่ดีที่สุดที่ฉันสามารถทำได้ ฉันเอนตัวไปทาง C ++ แต่ฉันก็ยังสงสัยอยู่บ้างและข้างนอกคำแนะนำที่เป็นกลางจะช่วยได้ที่นี่

หรือฉันอาจจะคิดหนักเกินไปเกี่ยวกับเรื่องนี้

UPDATE:ปรากฎว่าการเลือกภาษายังไม่ชัดเจนเท่าที่ฉันคาดไว้ในตอนแรก ในขณะที่หลักสูตรแกนกลางสองสามหลักสูตรมุ่งเน้นไปที่ Java แต่หลักสูตรแกนกลางอื่น ๆ บางหลักสูตรทำงานในภาษา C และ Java เป็นหลัก อันที่จริงภาคการศึกษาที่เหลือของฉันจะอยู่ใน Objective-C หลังจากใช้เวลาใน Java และ Javascript ภาคการศึกษาล่าสุดคือ C, Javascript และ PHP รวมถึงบางภาคที่ต้องทำตามที่ได้รับมอบหมาย เนื่องจากสิ่งต่าง ๆ โดยรวมแตกต่างกันมากกลางและฉันยังคงได้รับคำตอบนี้ฉันกำลังพยายามทำงานหลักสูตรของฉันเพื่อที่ฉันตอบสนองความต้องการทั้งหมดสำหรับการศึกษาระดับปริญญา แต่เพื่อดูดซับภาษามากเท่าที่ฉันสามารถจัดการ . จนถึงตอนนี้ผลการเรียนของฉันยังไม่ได้พยายามที่จะทำเช่นนี้


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

1
@Chris: ซึ่งเป็นเหตุผลที่คำแนะนำของฉันคือการเรียนรู้สิ่งที่อำนวยความสะดวกในการเรียนรู้เพิ่มเติมมากกว่าสิ่งที่เป็นที่นิยมในขณะนี้ ฉันขอแนะนำ C ++ หรือ Python มากกว่า Java (เห็นได้ชัดว่าด้วยเหตุผลที่แตกต่างกัน)
David Thornley

ไม่ใช่ภาษาที่สำคัญ มันเป็นแนวคิดที่เป็นนามธรรม ได้แนวคิดที่ถูกต้องเพื่อให้นักเรียนสามารถเรียนรู้อะไรได้ในภายหลังในชีวิตของเขา
J-16 SDiZ

1
ฉันอยู่ในสถานการณ์ที่คล้ายกัน (น่าขนลุก): กลับไปโรงเรียนสำหรับ CS หลังจาก 20 ปีจากโรงเรียน โรงเรียนของฉันมีแทร็กแยก Java / C ++ หลังจากอ่านทุกอย่างที่นี่และให้ +1 กับคำตอบที่ดีที่สุดฉันยังคงไปกับ Java และนี่คือเหตุผลในกรณีที่เป็นประโยชน์กับคุณ: ฉันมาจากการพัฒนาเว็บ (Javascript, PHP, Python) ดังนั้นการสนับสนุนไลบรารี Java จึงเป็นข้อดี สมมติว่าฉันใช้เวลาในการจับหลักการ OOP จริงๆฉันไม่คิดว่าการย้ายไปที่ C ++ (ถ้าจำเป็น) จะเป็นเรื่องยาก Java เป็นพื้นกลางระหว่างการเขียนสคริปต์และการรวบรวม
จะ hollenbeck

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

คำตอบ:


51

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

สิ่งที่ยากอย่างแท้จริงเกี่ยวกับระบบนิเวศ Java คือมันมีโครงร่างมากมาย, ห้องสมุดและอื่น ๆ - พวกเขาไม่น่าจะครอบคลุมทั้งหมดที่ University แต่อย่างใด

ในตอนท้ายของวันมันจะไม่สำคัญว่าคุณเลือกภาษาได้มากแค่ไหนหากคุณเรียนรู้หลักการ

JUG ของฉันกำลังจะฆ่าฉันเพื่อรับรอง C ++ ;-)


1
+1 สำหรับจุดที่ยอดเยี่ยมเกี่ยวกับขนาดของระบบนิเวศ Java และคำอธิบายการเปลี่ยนแปลง
Jas

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

2
อีกหนึ่งการข้ามไปสำหรับ C ++ คือคุณสามารถทำการจัดการ C ++ บน. NET Framework ซึ่งจะทำให้คุณมีโอกาสเป็นผู้นำในการเรียนรู้ C #, F # และภาษาอื่น ๆ ในรันไทม์นั้น Java ยังมีผู้นำที่ยอดเยี่ยมสำหรับ JVM และภาษาอย่าง Scala แต่ไม่มี JVM C ++ ที่ฉันรู้จัก
CodexArcanum

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

ย้อนกลับไปในบางวันก่อนที่ Java เราไม่มีตัวเลือกนี้และเราทุกคนเรียนรู้ C ++ ดังนั้นฉันไม่เห็นปัญหาใด ๆ กับผู้ที่ยังคงเรียนรู้ C ++ ก่อน ฉันเดาคำนำใน Java ดีกว่าคำนำใน Turbo Pascal
Bratch

18

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

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

เมื่อคุณมีความเชี่ยวชาญในภาษา C ++ อย่างมั่นใจในการจัดการหน่วยความจำและ STL การเลือก Java / C # ควรเป็นเรื่องง่าย


เห็นด้วยฉันคิดว่าการเรียนรู้ Java ถ้าคุณมีความเชี่ยวชาญในภาษา C ++ อยู่แล้วจะง่ายกว่าการเรียนรู้ภาษา C ++ มากถ้าคุณมีความเชี่ยวชาญภาษาจาวาอยู่แล้ว
Carson63000

ปัญหาของการกลายเป็น "มีความเชี่ยวชาญพอสมควรกับ C ++" คือการใช้เวลาหลายปีและคุณจะยังคงเรียนรู้ OOP เพียงเล็กน้อย
เฮนรี่

Java ไม่ใช่ภาษาพัฒนาแอปพลิเคชันที่รวดเร็ว มันอาจจะมีระดับที่สูงกว่า C ++ เล็กน้อย แต่ก็ไม่มีอะไรใกล้เคียงกับระดับนามธรรมของ Python, Ruby, Perl หรือ Visual Basic
Evan Kroske

@Evan - ใช่ Java เป็นภาษาการพัฒนา "รวดเร็ว" หากไม่มีสิ่งอื่นสำหรับไลบรารีขนาดใหญ่ (โดยทั่วไปแล้วจะกล่าวว่า Java dev ใด ๆ ที่มีเอกสาร Java API เปิดในขณะทำงาน) และไม่ต้องจัดการหน่วยความจำด้วยตนเอง และคนที่ออกแบบ Java ก็ออกแบบเพราะเขาไม่ได้ใช้ C ++ เลย บวกกับจำนวนของแอพพลิเคชั่น Java ที่ปรับใช้ในทุกวัน
Jas

9

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

เหตุผลดังต่อไปนี้: ยกเว้นผู้มีความสามารถพิเศษนักเรียนส่วนใหญ่สามารถ (และอาจไม่เคย) เข้าใจการวางแนววัตถุโดยไม่เข้าใจการเขียนโปรแกรมแบบแยกส่วน และพวกเขาไม่สามารถเข้าใจการเขียนโปรแกรมแบบโมดูลาร์ได้หากไม่เข้าใจการเขียนโปรแกรมแบบโครงสร้างในภาษาขั้นตอน เรียบง่าย. พินัยกรรมเรื่องนี้ (เหนือสิ่งอื่นใด) คือแม้ว่าเราจะรู้จัก OO มานาน 3-4 ทศวรรษแล้ว แต่ผู้คนยังคงเขียนสปาเก็ตตี้มากเกินไปในทางปฏิบัติ

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

คุณไปที่โรงเรียน CS เพื่อเป็นนักวิทยาศาสตร์คอมพิวเตอร์และโปรแกรมเมอร์ (หวังว่าจะมีการฝึกปฏิบัติการเขียนโปรแกรมด้วยมือในหลาย ๆ ภาษา) ถ้าคุณรู้ว่าเป็น Java (หรือ. NET หรือ C หรือ Python อะไรก็ตาม) จากนั้นคุณเป็น "โปรแกรมเมอร์ Java" (ไม่ใช่โปรแกรมเมอร์ที่สามารถทำงานกับ Java แต่เป็น "โปรแกรมเมอร์ Java") และนั่นทำให้รู้สึกว่าคุณเป็น "ช่างไม้ค้อน" หรือ "ช่างไขควงไขควง Phillip" ใช่มั้ย

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

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

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

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

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

ฉันขอแนะนำให้คุณอ่านผลงานของ Joel Spolsky ใน "Java Schools"

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

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


จากคนที่รู้จัก Java, C และ C ++ ค่อนข้างดีและผู้ที่ไม่จบการศึกษานานเกินไปฉันจะต้องไม่เห็นด้วย C (หรือ C ++) VS Java - Java เป็นวิธีที่ 'ง่ายขึ้น' บางทีถ้าฉันเริ่มต้นด้วย C ++ (ซึ่งฉันคิดว่ามันยอดเยี่ยมมาก (แต่ไม่ใช่ง่าย) btw) (แทน (Delphi (eww) +) Java)) เป็นไปได้ทั้งหมดที่ฉันจะปลดประจำการให้เลิกและไม่ได้เป็นโปรแกรมเมอร์ (แม้ว่าบางทีเราเพิ่งมีครู C ++ ที่ไม่ดี) แต่ใช่การเรียนรู้ C ++ เพื่อเข้าใจ internals ของ Java นั้นมีค่าอย่างยิ่ง และฉันเดาว่า 95% ของโปรแกรมเมอร์ทุกวันนี้ "ไม่เคยเข้าใกล้ฮาร์ดแวร์"
Dukeling

" C (หรือ C ++) VS Java - Java เป็นวิธี 'ง่ายขึ้น' " - ดีนั่นเป็นที่รู้จักกันดี ฉันไม่แน่ใจว่าเกี่ยวข้องกับโพสต์ของฉันอย่างไร (?????)
luis.espinal

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

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

Java โดยการบังคับให้คุณเรียนรู้การเขียนโปรแกรมในโหมดที่เป็นรูปธรรมคำนามทุกอย่างเป็นวัตถุมันมีการเปรียบเทียบแบบจำลองที่ไม่ดีสำหรับกระบวนทัศน์อื่น ๆ ที่เหมาะสำหรับการสร้างแบบจำลองโลกจริง นักพัฒนามืออาชีพจากสนามเพลาะสามารถแก้ไขข้อ จำกัด นั้นได้ นักเรียนทำไม่ได้และให้อภัยฉัน แต่มีอาจารย์วิทยาลัยน้อยคนที่มีประสบการณ์จากสนามเพลาะเพื่อรู้ความแตกต่าง ฉันจะเลือก Python หรือ Ruby (หรือ Lisp จริงหรือ BASIC) บน Java ถ้า C / C ++ นั้นง่ายเกินไป
luis.espinal

4

ฉันคิดว่ามากขึ้นอยู่กับบุคลิกของคุณ อย่างน้อยจากมุมมองของฉัน Java และ C ++ มีทิศทางที่แตกต่างกันอย่างสิ้นเชิงที่ดึงดูดผู้คนที่แตกต่างกันอย่างมาก

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

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

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

C ++ เป็นมากที่ซับซ้อนมากขึ้นภาษาซึ่งหมายถึง (ในหมู่สิ่งอื่น ๆ ) ว่าการสร้างเครื่องมือในการจัดการกับรหัสที่มา C ++ เป็นอย่างมากยากกว่าสำหรับ Java ยอดคงเหลือที่เป็นที่จำเป็นน้อยกว่า - งาน refactoring ที่อาจเกี่ยวข้องกับการเปลี่ยนแปลงหลายร้อยไฟล์หลายสิบไฟล์ใน Java อาจทำได้โดย (ตัวอย่าง) การเปลี่ยนพารามิเตอร์เทมเพลตเดียวใน C ++

Java ให้ความสำคัญกับการเรียนรู้ง่าย C ++ ให้ความสำคัญกับการใช้งานง่ายกว่ามาก (แต่น่าเสียดายที่) เฉพาะในกรณีที่คุณรู้ว่าคุณกำลังทำอะไรอยู่

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

1ใช่ฉันรู้ว่ามันไม่ถูกต้อง แต่ฉันพยายามป้องกันไม่ให้หนังสือเล่มนี้กลายเป็น ...


3

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

Java เป็นภาษาที่ง่ายกว่ามากและจะไม่เข้ากับการเรียนรู้ของคุณ

หากคุณต้องเรียนรู้ C ++ เรียนรู้แนวคิดด้วย Java จากนั้นไปที่ C ++ หรือยังดีกว่า OBJ-C หากคุณต้องการเขียนซอฟต์แวร์ Mac Java และ OBJ-C ไม่แตกต่างกันมากเกินไป

FYI ฉันใช้เวลา 10 ปีในฐานะนักพัฒนา C ++ เชิงพาณิชย์


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

3
Java จะได้รับในทางของการเรียนรู้ของคุณ มันจะสอนคุณเกี่ยวกับแนวคิดที่ไม่เกี่ยวกับภาษา
DeadMG

2

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

  • EJB 1.x / 2.0, JNDI, JMS, JTA / JTS, RMI, JDBC, Servlets, JSP, SAX / DOM, บริการเว็บ, สบู่, WSDL, UDDI, JAXB, JavaMail, WAP, WML, HTML
  • Tomcat, Apache Xalan, Apache Xerces, Jserv, JRun, JBuilder, TogetherJ, เว็บลอจิก 5.x / 6.x, Websphere 3.5 / 4

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


1
ฉันจะเพิ่มที่ (อย่างน้อยในพื้นที่ของฉัน) งาน C ++ ยังจ่ายค่อนข้างดีกว่างาน Java (วัตถุประสงค์) และโดยทั่วไปน่าสนใจมากขึ้น (ส่วนตัว)
Cercerilla

2

มันยากเพราะ Java นั้นง่ายต่อการเรียนรู้อย่างปฏิเสธไม่ได้ คุณจะทำอะไรได้เร็วขึ้นด้วย Java

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

ในระยะยาวมันจะมีประโยชน์ที่จะเข้าใจทุกสิ่งที่ C ++ สอนคุณ การเปลี่ยนจาก C ++ เป็น Java นั้นทำได้ง่ายกว่าอีกทางหนึ่ง

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

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


2

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

ที่กล่าวว่างาน C ++ นั้นแทบจะไม่เหมือนกับงาน Java

Java และลูกหลานของมัน C # เป็นโซลูชั่นมาตรฐานสำหรับพื้นที่เข้ารหัสขนาดใหญ่สำหรับองค์กร / องค์กร ฉันขอแนะนำให้เรียนรู้หนึ่งในสองในปีที่สองของคุณและรู้สึกสบายใจเมื่อเรียนจบหลักสูตร มันจะช่วยให้คุณได้รับงานมากได้ง่ายขึ้น ไม่ได้หมายความว่าฉันคิดว่างานเหล่านั้นมีผลประโยชน์ทางปัญญาอย่างมีนัยสำคัญโดยเฉลี่ย ฉันเพิ่งผ่านงานซอฟต์แวร์ Craigslist ใน Rocky Mountains เมื่อเร็ว ๆ นี้และงานส่วนใหญ่เป็น C # / Java และเกี่ยวข้องกับซอฟต์แวร์ที่เรียกว่า " CRUD " IMO ที่น่าเบื่อมาก


1

มีการสอนทั้งภาษา C ++ และ Java ในระดับวิทยาลัย, ฉันจะขอแนะนำJava

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

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

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


2
หากคุณพบปัญหาร้ายแรงเกี่ยวกับบัฟเฟอร์ล้นและการจัดการหน่วยความจำแสดงว่าคุณสอน C ++ ผิด คอนเทนเนอร์มาตรฐานใดที่สามารถล้นเช่นบัฟเฟอร์ได้
David Thornley

อาร์เรย์? อันที่จริงฉันอาจสอน C ++ ผิด สิ่งนี้ดีกว่าทศวรรษที่ผ่านมา
Alex Feinman

0

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

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


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