เหตุใดครอบครัว c จึงเป็นมาตรฐานการศึกษา CS สำหรับโปรแกรมคณิตศาสตร์ / CS แทนที่จะเป็นตระกูล LISP [ปิด]


14

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

ฉันได้อ่านคำด่าของ Joel Spolsky หลายคนในโรงเรียน JAVA และสิ่งที่ไม่ - และฉันเห็นด้วยกับการประเมินของเขา - แต่โรงเรียนของฉันไม่ได้สอน JAVA ด้วยเหตุผลอย่างนั้น พวกเขาเข้มงวดในการสอนแนวคิดพื้นฐานเช่นพอยน์เตอร์การออกแบบอัลกอริทึมการเรียกซ้ำและแม้แต่คำแนะนำการประกอบ อย่างไรก็ตามพวกเขาทำสิ่งนี้ทั้งหมดใน C และ c ++ ไม่มีใครรู้เหตุผลของเรื่องนี้และ / หรือประวัติของมัน?


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

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

คำตอบ:


13

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

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

ในที่สุดคุณมีสถาบันทางเทคนิคหรือสถาบัน 'ปลายล่าง' ที่สอนชุดเทคโนโลยีใด ๆ ที่จะตรงกับคำหลักที่นักเรียนต้องการในประวัติย่อของพวกเขา - ดังนั้นคุณเลยเพิ่งได้ Java

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


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

ฉันคิดว่าทั้งสองมีที่ของพวกเขาและมหาวิทยาลัยอาจได้รับประโยชน์จากการมีทฤษฎี / การศึกษาที่มากขึ้นจนถึงระดับ CS ที่คุณขยายความคิดของคุณ เพลงนั้นควรมีภาษาที่หลากหลายเช่น Lisp, Prolog, Algol-based ฯลฯ และเพลงที่ใช้ฝึกหัดโดยเน้นที่สิ่งที่รสชาติการปฏิบัติของวันนั้น ๆ
Andrey Butov

@ Jonathan Henson: จุดประกาย!
คริส

9

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

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


1

โดยพื้นฐานแล้วทฤษฎีวิทยาการคอมพิวเตอร์เป็นเชิงคณิตศาสตร์ อย่างไรก็ตามวิศวกรรมซอฟต์แวร์ไม่ใช่ การสร้างแบบจำลองแนวคิดทางคณิตศาสตร์โดยตรงไม่ใช่ข้อได้เปรียบโดยธรรมชาติ - ฉันเถียงว่ามันมักจะเป็นข้อเสีย

ทฤษฎีที่ดีและโปรแกรมที่ดีไม่จำเป็นต้องเกี่ยวข้องกัน


"ทฤษฎีที่ดีและโปรแกรมที่ดีไม่จำเป็นต้องเกี่ยวข้องกัน": การเขียนโปรแกรมเป็นเรื่องเกี่ยวกับการสร้างและการรวม abstractions ที่แก้ปัญหา และตามวิกิพีเดีย "ทฤษฎีเป็น ... ประเภทของการคิดเชิงนามธรรมหรือการสรุปความคิดหรือผลลัพธ์ของการคิดเช่นนั้น" ( en.wikipedia.org/wiki/Theory ) ดังนั้นทฤษฎีและการเขียนโปรแกรม (ดี) นั้นอยู่ใกล้กันมาก
จอร์โจ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.