ทำไมเราถึงเรียน Java ที่มหาวิทยาลัย? [ปิด]


25

Java มักพบในสถาบันการศึกษา อะไรคือเหตุผลเบื้องหลัง


9
ไม่มีค่าลิขสิทธิ์สำหรับ Java IDE เช่นเดียวกับระบบนิเวศของ Microsoft ค่าเล่าเรียนที่ยิ่งใหญ่ของคุณเพิ่มขึ้นสู่สถาบัน
mjhilton

16
อะไร? คุณสามารถรับ Microsoft Visual Studio Express ได้ฟรี
quant_dev

12
ที่จริงแล้วส่วนใหญ่คุณสามารถรับ Visual Studio ได้ฟรีหากคุณเป็นนักเรียนรวมถึงแอพ Microsoft อื่น ๆ
Erin

5
เพราะคุณต้องการสร้างรายได้เมื่อคุณจบการศึกษาใช่ไหม การใช้เวลา 4 ปีในการศึกษาสิ่งต่าง ๆ ที่ไม่มีใครใช้ในrealโลกนั้นไม่ได้เป็นประโยชน์ต่อนักเรียนหรือ บริษัท ที่ต้องการจ้างนักเรียน

5
@JarrodRoberson มีเพียงบาง บริษัท เท่านั้นที่ใช้ Java มหาวิทยาลัยควรให้ความรู้แก่คุณเกี่ยวกับภาษาที่หลากหลายเพื่อให้คุณพร้อมสำหรับโลกแห่งความเป็นจริง คุณไม่ต้องการติดขัดในการเป็นเพียงโปรแกรมเมอร์ Java เมื่อมีวิธีคิดและพัฒนาอื่น ๆ อีกมากมาย
CaffGeek

คำตอบ:


73

ไม่กี่มหาวิทยาลัยมีใครสักคนที่เป็นที่รู้จักกันพอว่าการตัดสินใจหลายคน (ส่วนใหญ่ถ้าไม่) หมุนรอบของบุคคลนั้นชอบคนไม่ชอบความคิดเห็นรสชาติ ฯลฯ เพียงตัวอย่างเช่น Texas A & M มี Bjarne Stroustrup กับเจ้าหน้าที่; อาจเป็นเรื่องแปลกใจสำหรับผู้ที่หลักสูตรของพวกเขามีแนวโน้มที่จะเน้นภาษา C ++

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

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

ในที่สุดแม้ว่ามันจะทำงานตรงข้ามกับเกณฑ์สองประการก่อนหน้านี้ส่วนใหญ่แต่ก็มักจะต้องการ (หรืออย่างน้อยต้องการ) เพื่อที่จะตอบสนองต่อความต้องการของอุตสาหกรรม

Java เป็นจุดตัดของทั้งสามสิ่งนี้:

  1. แนวคิดทุกอย่างที่นำมาใช้นั้นเป็นที่รู้จักกันดีในปี 1980 ไม่มีอะไรที่จะรู้ได้มากไปกว่าแนวคิดพื้นฐานที่สุดของ OOP
  2. เป็นทางเลือกที่ถูกต้องไม่มีกลิ่นไม่มีพิษไม่มีพิษย่อยสลายได้ทางชีวภาพ
  3. ภาษาอื่น ๆ ในประวัติศาสตร์ที่มีอยู่เป็นเวลานานและเกือบจะเป็น SQL ที่สร้างสรรค์น้อยกว่า แม้ว่าพวกมันจะไม่ค่อยมีสิ่งที่คุณเรียกว่าเป้าหมายที่เคลื่อนไหวเร็ว แต่ภาษาโคบอลและฟอร์แทรนยังคงสร้างสรรค์สิ่งใหม่ ๆ มากกว่า Java
  4. มันถูกใช้กันอย่างแพร่หลาย เมื่อคุณได้รับมัน profs และ PHBs มีเกณฑ์ที่คล้ายกัน

โปรดทราบว่าฉันไม่ได้พูดจริง ๆ (ตัวอย่าง) ว่าไม่มีอะไรให้รู้เกี่ยวกับ Java มากกว่าความคิดพื้นฐานที่สุดของ OOP คืออะไร - เฉพาะที่นั่นคือทั้งหมดที่จำเป็นในการทำสิ่งที่ผ่านไปสำหรับงานสอนที่ยอมรับได้


ความคิดเห็นทั้งหมดถูกลบออกจากที่นี่เนื่องจากความคิดเห็นของคำตอบนี้ถูกแบ่งออก
ชื่อที่ปรากฏ

1
FWIW ฉันชอบวานิลลา
การแข่งขัน Lightness กับโมนิก้า

ฉันสมัครใช้งานเพื่อ
โหวต

22

ฉันเรียนวิชาวิทยาการคอมพิวเตอร์ในช่วงต้นทศวรรษที่แล้วก่อนที่ Java จะออกมา วิธีการตามมาโดยอาจารย์ของเรามีดังต่อไปนี้

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

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

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

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

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

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

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

นี่เป็นเพียงประสบการณ์และความคิดเห็นของฉัน


1
เมื่อฉันอยู่ที่มหาวิทยาลัยในปีที่ 1 เราได้ทำหลักสูตรการเขียนโปรแกรม Ada (การประกอบบางอย่างในหลักสูตรระบบคอมพิวเตอร์) ปีที่ 2 เป็นภาษาที่ค่อนข้างคล้ายกัน ปีที่ 3 เราได้รับการบอกตรงนี้ว่า "นักวิทยาศาสตร์คอมพิวเตอร์ทุกคนที่รู้แนวคิดของการเขียนโปรแกรมควรจะสามารถอ่านหนังสือและเรียนรู้ภาษาการเขียนโปรแกรมใหม่" ในตอนท้ายของปีเราสอนตัวเอง C, C ++, Java และภาษาที่คุณเคยทำในโครงการของคุณ (ฉันเป็น Python) มันเป็นการเตรียมการที่ดีที่สุดที่ฉันเคยได้รับสำหรับโลกแห่งความเป็นจริงวิธีการเรียนรู้อย่างรวดเร็วและทันที
Amy

(+1) ภาษาการเขียนโปรแกรมที่เกี่ยวข้องกับภาษาปาสคาลดีกว่าที่จะใช้สำหรับการสอนการเขียนโปรแกรมเพราะพ่อ "Niklaus Wirth" ออกแบบอย่างระมัดระวังสำหรับการสอน ;-)
umlcat

@umlcat: ขอบคุณ ใช่ฉันคิดว่าเป็นการดีที่มี C หรือ C ++ ที่คุณสามารถทำผิดกฎและแฮกได้ แต่ก่อนที่จะทำผิดกฎคุณต้องรู้ว่ากฎใดที่คุณทำผิด สำหรับสิ่งนี้มีประโยชน์มากที่จะมีภาษาการเขียนโปรแกรมที่สะอาดเช่น Pascal เพื่อเรียนรู้วิธีที่คุณควรตั้งโปรแกรมใน "โลกอุดมคติ" อย่างน้อยคุณก็รู้ว่าคุณกำลังทำอะไรเมื่อคุณแฮ็ค :-)
Giorgio

@Giorgio: ฉันคิดว่านักเรียนควรได้รับการสอน Pascal ก่อนและหลังจากนั้น C / C ++ และ Java ในภายหลัง ฉันไม่ได้หมายถึงอย่างใดอย่างหนึ่งเท่านั้น แต่ทั้งหมดในลำดับที่เฉพาะเจาะจง บางโรงเรียนสอนวิชาหนึ่งให้กับโรงเรียนอื่นฉันยังทำงานใน C และ Java ด้วย หวังว่ามันจะช่วย ;-)
umlcat

@umlcat: ฉันเห็นด้วยอย่างยิ่ง ฉันจะเพิ่ม Lisp, Haskell, Prolog: ยิ่งกระบวนทัศน์การเขียนโปรแกรมรู้ได้ดีเท่าไร
Giorgio

10

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

นักวิชาการคนหนึ่งต้องการสอนทฤษฎีและอัลกอริธึม ภาษาที่อำนวยความสะดวกให้คุณเรียนรู้อัลกอริธึมที่ไม่ต้องการประสบการณ์มากมายในการทำงานดีที่สุด: Scheme, Python, Java, Smalltalk และอื่น ๆ อีกมากมายภาษาที่ได้รับจะทำให้คุณเสียสมาธิมากขึ้นจากการเรียนรู้อัลกอริธึมที่แท้จริง ในเวลานั้นภาษาสคริปต์เป็นพลเมืองชั้นสองที่นายจ้างหน้าบึ้งเพราะราคาถูกหรือรวดเร็วและสกปรก นักวิชาการมองว่าพวกเขาเป็นแมวเลียนแบบมากกว่า แต่สิ่งที่นายจ้างต้องการก็มีอิทธิพลกับนักวิชาการด้วยเช่นกัน

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

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

โดยส่วนตัวฉันคิดว่า Java ไม่ได้โง่ CS ฉันคิดว่ามันเป็นเรื่องดีเพราะนักเรียนสามารถเรียน CS มีส่วนร่วมใน Open Source และหางานทำแม้ในขณะที่อยู่ในโรงเรียน ฉันยังเชื่อว่าคุณควรศึกษาภาษามากมายในฐานะนักเรียน CS และนั่นไม่ควรเป็นแค่ Java แต่ถ้าพวกเขาทั้งหมดใช้ python Joel ก็จะเกลียดหลามด้วยเช่นกัน


หากโรงเรียนของคุณยังคงใช้ภาษาปาสคาลในช่วงกลางยุค 90 แสดงว่าพวกเขาไม่ได้รับการตรวจซ่อม ชั้นเรียน CS แรกของฉันอยู่ที่ Pascal แต่นั่นก็คือในปี 1980! ที่น่าสนใจคือมันเป็นเพียงหลักสูตรเบื้องต้น - คลาสระดับบนใช้ C (สำหรับการฝึกงานภายใน OS), Modula (สำหรับการออกแบบคอมไพเลอร์), Prolog และหลักสูตรระดับบัณฑิตบางหลักสูตรแม้แต่ใช้ Ada ฉันไม่เข้าใจว่าทำไมโรงเรียนถึงไม่ทำเช่นนี้
TMN

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

เราใช้ C / C ++ สักหน่อยหลังจากหลักสูตรเบื้องต้นของ Pascal Prolog, LISP, Scheme, Smalltalk, Assembly ถูกนำมาใช้ในชั้นเรียนระดับกลาง ในขณะที่ความสำคัญของการใช้เทคโนโลยีลดลงของรัฐบาลในปี 1990 Ada ได้ยุติลงและกล่าวถึงเมื่อปลายปี 1990 ฉันคิดว่าอันตรายของ Java ไม่มีส่วนเกี่ยวข้องกับ Java แต่เป็นการเรียนรู้แบบเชิงเดี่ยวและการเรียนรู้ ตอนนี้ฉันเป็นนักพัฒนา Flex และ Adobe สิ้นสุดความสามารถในการหาเลี้ยงชีพกับมันเมื่อสัปดาห์ที่แล้ว ฉันไม่กังวลเพราะฉันมีประวัติอันยาวนานที่ไม่ได้ใช้แค่ 1 ภาษา ฉันมี Java, Ruby, Php, Python เพื่อถอยกลับ
chubbsondubs

8

มีเหตุผลสองสามข้อที่รวมถึง:

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

โปรดทราบว่ามีโรงเรียนหลายแห่งที่สอน C # ด้วยเหตุผลหลาย ๆ ประการ มีสาเหตุอีกหลายประการบางคนก็เจาะจงไปที่โรงเรียนเฉพาะแห่งมากขึ้น ในสาระสำคัญ Java ได้กลายเป็นวัตถุที่มุ่งเน้น "พื้นฐาน" ของปีกลาย


มีหนังสือ Java ที่ยอดเยี่ยมรวมทั้ง OOP จะรวม OOP เช่น Java object ตัวแรกที่ใช้ BlueJ อย่างไรก็ตามใน C # ฉันไม่เห็นหนังสือการเรียนรู้ที่นำคุณไปจากศูนย์และเรียนรู้อย่างดี คุณเห็นด้วยกับฉันไหม?
Goma

ฉันจะ. การสอนเป็นงานที่ยากมากและครูยังคงเรียนรู้วิธีที่ดีที่สุดในการสอน คุณจะพบกับโรงเรียนออนไลน์จำนวนมากเช่น Strayer Keep ถึง C # และโรงเรียน Brick และ morter มักจะมุ่งสู่ Java อาจเป็นเพราะโรงเรียนออนไลน์ให้ความสำคัญกับนักเรียนที่กำลังทำงานอยู่ หนังสือการเขียนโปรแกรมขั้นพื้นฐานสามารถนำไปใช้กับภาษาใด ๆ ดังนั้นจึงมีวัสดุที่ใช้ได้
Berin Loritsch

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

Java อาจไม่มี*ไวยากรณ์ แต่มันจะยากมากที่จะใช้โดยไม่ต้องมีความเข้าใจพื้นฐานของตัวชี้
dan04

@WTP และนั่นคือเหตุผลที่ Java มักใช้สำหรับหลักสูตรเบื้องต้น (ซึ่งเคยใช้ Pascal หรือ Modula มาก่อน) และ C (++) ในภายหลัง
jwenting

6

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

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


2
Mit หยุดใช้ Scheme เมื่อไม่กี่ปีที่ผ่านมา - cemerick.com) / 2009/03/24 / …
nate c

@nate c - ya ฉันไม่แน่ใจ ถึงกระนั้น Python ก็เรียนรู้ได้ง่ายเช่นกัน ขอบคุณสำหรับลิงค์!
Jetti

ฉันจะสกรูกับนักเรียนอย่างสมบูรณ์ถ้าฉันกำลังสอนชั้นเรียน ฉันขอแนะนำให้เขียนภาษาการเขียนโปรแกรมของคุณเองและคุณสามารถใช้ภาษาการเขียนโปรแกรมนั้นได้ตลอดหลักสูตร
berlinbrown2

1
@Berlin - ฉันเดาว่าทำไมคุณไม่ได้เป็นครูแล้ว :)
Jetti

3

คำตอบหลายข้อที่ให้ไว้ข้างต้นนั้นเป็นคำตอบที่ดี

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

นี่คือความสำคัญที่แท้จริงของ Java เมื่อมันออกมา เรื่องตลกคือ "รหัสครั้งเดียวตรวจแก้จุดบกพร่องทุกที่" แต่มันเอาฮาร์ดแวร์และระบบปฏิบัติการออกจากสมการจริงๆ


บางทีนี่อาจอธิบายได้ว่าทำไมเลือก Java มากกว่า C, C ++ หรือ C # แต่ Ruby และ Python (ในหมู่อื่น ๆ ) ทำงานได้ดีข้ามแพลตฟอร์ม
Eric Wilson

จุดดี. ฉันเชื่อว่าแผนก CS ยังชอบภาษาที่พิมพ์อย่างมากด้วยเหตุผลหลายประการ นอกจากนี้ Java ยังมีจุดเริ่มต้นใน US Ruby ที่ไม่ได้ทำที่นี่จนถึงปี 1999 หรือใหม่กว่าและ Python ค่อนข้าง จำกัด จนกระทั่ง 2.0 ออกมา
Matthew Flynn

1

ฉันได้ยินอาจารย์บอกว่าพวกเขาใช้ java เพื่อสอนเพราะ:

  • ใช้กระบวนทัศน์ที่ใหม่กว่า (OOP, ข้อมูลทั่วไปบางอย่าง)
  • วากยสัมพันธ์ง่ายมากแม้ว่าจะค่อนข้างละเอียด
  • ไม่มีแนวคิดขั้นสูงเช่นฟังก์ชั่นการสั่งซื้อที่สูงกว่าการปิดการ currying หรือการต่อเนื่องที่อาจสร้างความสับสนให้กับผู้คนที่ยังคงเรียนรู้แนวคิดพื้นฐาน
  • มีห้องสมุดมากมายที่เขียนขึ้นสำหรับมัน
  • นักเรียนไม่ได้จมอยู่ในการดีบักการรั่วไหลของหน่วยความจำเนื่องจากมี gc

โดยส่วนตัวฉันดีใจที่ฉันรับ CS ที่ Berkeley เมื่อพวกเขาใช้ Scheme เพื่อสอน แม้ว่าฉันจะไม่ได้ตระหนักถึงความงดงามของภาษามันจริงจนกระทั่งอีกไม่กี่ปีต่อมา


1

พื้นหลังเล็กน้อย

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

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

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

ในเวลาเดียวกันฉันไม่รู้จัก Java Framework ทั้งหมด แต่ฉันรู้วิธีโค้ดและปรับให้เข้ากับสภาพแวดล้อม Java หากฉันเข้ารับการฝึกอบรมเกี่ยวกับมาตรฐานการเขียนโค้ด Java ที่ดีฉันอาจจะเริ่มต้นด้วยรูปแบบ Java ที่ดีขึ้นหรือมีความรู้เกี่ยวกับระบบนิเวศของ Java

เมื่อมองย้อนกลับไปฉันไม่คิดว่ามันสำคัญ

เพื่อตอบคำถามของคุณ: ทำไมเราจึงเรียน Java ที่มหาวิทยาลัย?

ควรสอน Java แต่ไม่ได้ใช้ในทุกหลักสูตร:

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

ในการวิจารณ์ Java:

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

นอกจากนี้ทำไมนักพัฒนาซอฟต์แวร์จึงไม่โจมตี C หรือ C ++ หรืออย่างน้อย C ++ กระบวนทัศน์การเขียนโปรแกรมที่จำเป็นจะคล้ายกันมาก และฉันไม่เคยคิดจะเขียน webapp ใน C ++ แต่ฉันอาจใช้ Java

นี่คือวิธีที่ฉันจะติดตั้งหลักสูตร:

  1. หลักสูตรเบื้องต้น: Scheme, Python, ภาษาแอสเซมบลี, C (ทั้งสาม)
  2. หลักสูตรอัลกอริทึม: C, Haskell, Python (ทั้งสาม)
  3. หลักสูตรระบบปฏิบัติการ / หลักสูตรระบบเครือข่าย: C / C ++
  4. การพัฒนา GUI: Java Swing, C ++ บน Win32
  5. การเขียนโปรแกรมเชิงวัตถุ: (นี่เป็นเรื่องยุ่งยากฉันจะไม่มีหลักสูตร OOP) C ++, Java, C #
  6. องค์กร? การพัฒนา: Java, C #, Python
  7. ออกแบบภาษา, ผู้แต่ง: Haskell, Scala, C, Assembly, Scheme, Common Lisp, Prolog

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

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

(ขออภัย Ruby lang)


(-1) "ภาษาแอสเซมบลี" ซับซ้อนเกินไปสำหรับ "หลักสูตรเบื้องต้น" ฉันไม่ได้หมายความว่า "อย่าสอน" ฉันหมายถึง "เราจะสอนในภายหลัง"
umlcat

1

ขออภัยคำตอบที่น่าเบื่อยาวเท่านั้น:

(1) คุณหมายถึง:

"ทำไมเราถึงเรียน Java ที่มหาวิทยาลัยเป็นภาษาโปรแกรมแรก

(2) หรือคุณหมายถึง:

"ทำไมเราถึงเรียน Java ที่มหาวิทยาลัยด้วยซ้ำถึงแม้ว่าเราจะเรียนภาษาโปรแกรมอื่น ๆ ต่อหน้า Java"

ฟังดูเหมือนคุณหมายถึงทั้งสองคำถามจริงๆ

ในกรณีของ (1):

ฉันไม่คิดว่า Java (หรือ. NET C # และ Visual Basic) ควรสอนเป็นภาษาโปรแกรมแรก Structured & Pascal แบบแยกส่วนควรเป็นอันดับแรกแม้ว่าจะเป็นแบบเก่าและล้าสมัยก็ตาม

หลายคนคิดว่าเราควรสอนคนที่เขียนโปรแกรมเชิงวัตถุหรือการเขียนโปรแกรมฟังก์ชั่นในระดับกลางเพียงเพราะ "hype" หรือ "แนวโน้ม"

ฉันเรียนรู้ Structured Pascal เป็น "การเขียนโปรแกรมเชิงวัตถุ" รุ่นเล็ก ๆ ไม่ใช่สิ่งที่คล้ายกัน ฉันเห็นโปรแกรมที่มีโครงสร้างเป็นวัตถุชิ้นเล็ก ๆ

หลังจากนั้นฉันแนะนำให้ใช้ภาษาที่ใช้งานได้และ Object Pascal ต่อไป

และต่อมา C, C ++, C #, VB.Net, Java

เหตุผลหลักที่ฉันไม่ชอบ Java หรือ C # เป็นภาษาการเขียนโปรแกรมแรกเพราะพวกเขามี "พอยน์เตอร์", "พอยน์เตอร์ไปยังวัตถุ" และ "วัตถุ" ตัวเอง ("อ้างอิง") ​​แนวคิด

ฉันเชื่อว่านักเรียนควรมีจิตใจความแตกต่าง & ความคล้ายคลึงกันในแนวคิดเหล่านั้น การเปรียบเทียบวัตถุ Strings ใน Java เป็นตัวอย่างที่ดีของคี่ชื่อ:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

ในกรณีของ (2):

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


0

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

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

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

เหตุผลง่าย ๆ ได้รับการอธิบายแล้ว Java ไม่มีค่าธรรมเนียมใบอนุญาต คุณสามารถสอนได้โดยใช้เครื่องมือแก้ไขทดสอบพื้นฐาน มันใช้ด้วยเหตุผลที่ผิดอย่างแน่นอน

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


ฉันจะชี้ให้เห็นว่าความไม่รู้นั้นไม่เหมือนกับ "โง่" คนที่ "ผ่าน" Java อาจไม่รู้จัก "แนวคิดง่ายๆ" เหล่านั้นเพราะพวกเขาไม่ได้รับการสอน ไม่ได้หมายความว่าถ้าพวกเขาใช้เวลาในการคิดออกว่าพวกเขาจะไม่ได้รับมัน
Jetti

0

สวิทช์จากCเพื่อJavaที่เกิดขึ้นในเวลาที่ผิด

ประมาณปี 2000 ฉันอยู่ในชั้น C สุดท้ายที่มหาวิทยาลัยของฉัน

  • C ++ มีคุณสมบัติมากเกินไปที่จะไม่ทำให้มือใหม่สับสน (และมันยังคงทำและวางแผนที่จะเพิ่มบางส่วน)

  • .NET นั้นยังไม่โตพอและมีราคาแพงกว่าทุกวันนี้

  • Objective C เก่าและการใช้งานของ Apple กำลังบินอยู่ใต้เรดาร์ ( ไม่มี iPhoneอยู่รอบ ๆ )


ปัญหาอื่น ๆ . NET ในเวลา? ไม่มีรันไทม์แบบพกพา - มีไม่มีขาวดำที่มีอยู่
ZJR

ไม่มีความเป็นกลาง- แก้ไขข้อความ ( ข้อความสงครามแก้ไขจะน่าเกลียด แต่จริง) และ IDE เริ่มต้นที่ทำให้นักเรียนหลงระเริงในboilerplating
ZJR

BTW ฉันอยากจะให้โลกได้รับเส้นทางObjective Cแอปเปิ้ลจะไม่เป็นลูกคนเดียวใน ballpark นั้นและแม้กระทั่งรูปแบบธุรกิจของมันก็จะไม่เป็นบ้าเลยแม้แต่น้อย
ZJR

0

ฉันรู้สึกถูกบังคับให้เพิ่มคำตอบที่นี่เนื่องจากฉันไม่เห็นคำตอบใด ๆ เหล่านี้ซึ่งครอบคลุมมุมมองของฉัน

ฉันเป็นโปรแกรมเมอร์มือสมัครเล่น ฉันล่วงหน้าก่อนถึงโค้งเมื่อพูดถึง 'คอมพิวเตอร์' และ 'การเขียนโปรแกรม' ฉันสำเร็จการศึกษาระดับปริญญาตรี - ปริญญาตรี - ในปี 2550 และปริญญาโทอีกประมาณสองปีต่อมา - 2552 ฉันทำงานกับภาษามากมายรวมถึงการประกอบ, QuickBASIC, C, C ++, Java, PHP, Perl, Python, สคริปต์ BASH, Javascript, COBOL ฯลฯ .

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

ในช่วงปี 1990, C ++, Java, Perl และภาษาดังกล่าวได้รับความสำคัญเป็นหลักเนื่องจากระดับที่สูงกว่า C และเป็นหลักการของการพัฒนาอย่างรวดเร็ว ดังนั้นพวกเขาจึงหยุดสอนที่ประชุมแก่นักเรียน CS และสอน C เป็นวิธีการแสดงอัลกอริทึม ช้าที่มีการเปลี่ยนแปลงในช่วงทศวรรษที่ผ่านมาซึ่ง C ถือเป็นภาษาระดับต่ำเกินไปที่จะจับสาระสำคัญของอัลกอริทึมได้อย่างมีประสิทธิภาพและไม่มีความรู้ 'ระบบ' มากเกินไป นี่เป็นสิ่งสำคัญอย่างยิ่งเนื่องจากหลักสูตร CS ควรมุ่งเน้นไปที่ 'เชิงทฤษฎี' มากกว่าภาคปฏิบัติและทุกครั้งที่มีคนต้องการเขียนอัลกอริทึมถ้าเขา / เธอจมอยู่กับการจัดสรรหน่วยความจำและเลขคณิตตัวชี้คุณจะไม่ได้รับ ทุกแห่ง

แม้วันนี้ถ้าคุณอยู่ในโปรแกรม Masters CS คุณจะต้องทำตามข้อกำหนด 'ระบบ' บางอย่าง (อย่างน้อยที่สุดในสหรัฐอเมริกาและสิ่งนี้ไม่ควรแตกต่างกันมากสำหรับมหาวิทยาลัยในสหรัฐอเมริกา) ซึ่งต้องการให้นักเรียนสามารถใช้โปรแกรมระดับระบบและ ในบางกรณีลึกเท่าระดับแฮ็คเคอร์เนลที่จะผ่านข้อกำหนด ดังนั้นแม้ว่า C ไม่ใช่ภาษา defacto ที่ได้รับการสอนในโรงเรียน แต่ก็มีความเกี่ยวข้องถ้าคุณต้องการที่จะชำนาญในการพูด Systems หรือคอมพิวเตอร์ประสิทธิภาพสูงหรือ niches ดังกล่าว

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


0

ฉันคิดว่าส่วนใหญ่ของมันคือสิ่งที่ถูกนำมาใช้ในอุตสาหกรรม

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

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


0

เพราะพวกเขาหวังว่านักเรียนน้อยจะล้มเหลวในหลักสูตรซึ่งเป็นความล้มเหลวในตัวเอง IMHO อาจเป็นหนึ่งในเหตุผลที่เกือบจะไม่มีใครรับปริญญาของมหาวิทยาลัยอย่างจริงจังอีกอย่างน้อยก็ที่นี่

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

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

แต่สถาบันการศึกษามีชื่อเสียงในด้านความฝันเกี่ยวกับ AI, OWL และเทคโนโลยีของเล่นอื่น ๆ ในขณะที่พวกเขาทำการค้นคว้าสิ่งต่าง ๆ บางครั้งบางคนก็มีบางสิ่งที่น่าอัศจรรย์เช่นกัน แต่ถ้าคุณต้องการเป็นนักพัฒนาที่ดีคุณต้องเรียนรู้ด้วยตนเอง

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