คำถามที่น่าสนใจ; ฉันชอบความสำคัญของคุณเกี่ยวกับเกณฑ์วัตถุประสงค์ เราต้องการน้องใหม่ที่จะเรียนรู้:
แนวคิดการเขียนโปรแกรม : ภาษาโปรแกรมแรกต้องรองรับ: การเรียกใช้ฟังก์ชันการวนซ้ำการเรียกซ้ำ
แนวคิดพื้นฐาน : ภาษาการเขียนโปรแกรมแรกจะต้องสนับสนุนอาร์เรย์ (สำหรับขั้นตอนแรกในการแนะนำอย่างนุ่มนวลเกี่ยวกับวิธีการทำงานของหน่วยความจำและวิธีการทำงานของพอยน์เตอร์)
ทักษะการเขียนโปรแกรมภาคปฏิบัติ : วิธีการใช้ดีบักเกอร์, วิธีการใช้ตัวสร้างโปรไฟล์, วิธีการแก้ปัญหาที่มีขนาดใหญ่ (ภาษาระดับสูง), วิธีการรวมระบบขนาดใหญ่, วิธีการแยกแยะปัญหา (การสลายตัวของปัญหา), วิธีการหลีกเลี่ยงการเขียน รหัสที่ซับซ้อนวิธีการสื่อสารกับมนุษย์ความตั้งใจที่อยู่เบื้องหลังชุดคำสั่งที่ปฏิบัติการได้ (มักจะเป็นความลับ)
ความจริงที่ว่าไลบรารีที่มีการเขียนไว้ล่วงหน้านั้นมีอยู่สำหรับสิ่งต่าง ๆ เช่น sort () และวิธีใช้งาน - เช่นความจริงที่ว่าไม่จำเป็นต้องเขียนทุกอย่างตั้งแต่เริ่มต้น
เกณฑ์อื่น ๆ สำหรับภาษาแรก :
ตีความ (ข้อเสนอแนะอย่างรวดเร็วช่วยให้กระบวนการเรียนรู้)
สภาพแวดล้อมแบบโต้ตอบซึ่งความเร็วการเรียนรู้การทดสอบและการดีบัก
ซอร์สโค้ดคุณภาพสูงมีไว้ให้นักเรียนอ่านในภาษานั้น
"ง่ายต่อการอ่าน", "ไวยากรณ์ที่ใกล้เคียงกับภาษาธรรมชาติ" (เพื่อให้ง่ายต่อการอ่านและให้คะแนนซอร์สโค้ด)
พกพา (ทำงานบน Mac OS, Windows, Unix) มีการใช้ซอฟต์แวร์อย่างน้อยหนึ่งภาษาฟรี
รวดเร็วในการสอน "gotchas น้อย" - ตัวอย่างเช่น "[I] t อาจเร็วกว่าที่จะสอนผู้เริ่มต้น Python และ Java เป็นอันดับแรกแทนที่จะใช้ Java เป็น OOPL ตัวแรก" - "การเปรียบเทียบภาษาโปรแกรมเชิงวัตถุ" และกฎของTelescope
Matthias Felleisen ได้พัฒนาภาษาการเขียนโปรแกรมพร้อมข้อความแสดงข้อผิดพลาดที่เหมาะสำหรับผู้เริ่มต้น เขาเน้นว่าการเลือกใช้ภาษานั้นไม่สำคัญเท่ากับการสอนวิธีการออกแบบที่ดี ในความเป็นจริงเขาเห็นหลักสูตร CS แรกเป็นวิชาศิลปศาสตร์การสอนการคิดเชิงวิพากษ์การแก้ปัญหาและการใส่ใจในรายละเอียด
เกณฑ์สำหรับภาษาโปรแกรมที่สอง
สิ่งที่เราต้องการให้นักเรียนเรียนรู้ แต่อาจจะรอภาษาโปรแกรมที่สอง:
ภาษา "ที่เกี่ยวข้อง" ที่เป็น "ไม่ลึกลับเกินไป"; สิ่งที่ "เป็นที่นิยมในอุตสาหกรรม"
ทฤษฎีความซับซ้อน: วิธีการจดจำงานที่เป็นไปไม่ได้ด้วยเทคโนโลยีปัจจุบัน
ระดับสูงกว่า: วิธีเลือกเครื่องมือที่เหมาะสมสำหรับงาน , วิธีใช้คอมไพเลอร์, โครงสร้าง, การเขียนโปรแกรมเชิงวัตถุ, การเขียนโปรแกรมเชิงฟังก์ชัน, การเขียนโปรแกรมเชิงตรรกะ, การเขียนโปรแกรมเชิงตรรกะ, การออกแบบคอมไพเลอร์, การเรียบเรียงและจัดการฟังก์ชัน การเขียนโปรแกรมพร้อมกันและกระจาย
เนื้อหาระดับต่ำ: ตัวชี้เลขคณิต, สถาปัตยกรรมคอมพิวเตอร์ การจัดการหน่วยความจำเฟรมสแต็คการเขียนโปรแกรมแอสเซมบลีสถาปัตยกรรมเครื่องไดรเวอร์อุปกรณ์และการออกแบบระบบปฏิบัติการ (ดังนั้นเครื่องจะไม่ "ดูเหมือนกล่องดำน่ากลัวที่พวกเขาไม่สามารถเจาะ")
แก้ไข: ฉันคิดว่ามันน่าผิดหวังที่โพสต์บทสรุปของบางสิ่งที่ฉันเขียนโดยความร่วมมือกับคนอื่น ๆ หลายคน "อาจไม่ใช่บทความทางกฎหมาย"
ดังนั้นฉันจึงเพิ่มการอ้างอิงที่เป็นทางการมากขึ้นในลิงก์ที่ไม่เป็นทางการก่อนหน้าของฉันพยายามที่จะปฏิบัติตามการใช้งานอย่างเป็นธรรมและปัญหาลิขสิทธิ์อื่น ๆ ของวิกิ
คำตอบนี้เป็นบทสรุปของภาษาแรกของน้อง (Anon 2011) ที่เก็บข้อมูลรูปแบบพอร์ตแลนด์
(อานนท์ 2011) นักเขียนนิรนามและอีกมากมายหลายคน "Freshmans ภาษาแรก" พื้นที่เก็บข้อมูลแบบพอร์ตแลนด์ วันที่ 27 กันยายน 2011 http://c2.com/cgi/wiki?FreshmansFirstLanguage