ภาษาใดที่คุณจะแนะนำให้โปรแกรมเมอร์เรียนรู้ไม่ใช่เพราะพวกเขาจะมีการใช้ภาษาจำนวนมาก (แต่พวกเขาอาจมี) แต่เพราะมันจะพัฒนาทักษะการเขียนโปรแกรมโดยทั่วไปและให้คนอื่นคิด (และอาจดีกว่า) ) วิธี?
ภาษาใดที่คุณจะแนะนำให้โปรแกรมเมอร์เรียนรู้ไม่ใช่เพราะพวกเขาจะมีการใช้ภาษาจำนวนมาก (แต่พวกเขาอาจมี) แต่เพราะมันจะพัฒนาทักษะการเขียนโปรแกรมโดยทั่วไปและให้คนอื่นคิด (และอาจดีกว่า) ) วิธี?
คำตอบ:
สำหรับการเขียนโปรแกรมและอัลกอริทึม "ปกติ":
สำหรับประสบการณ์ที่เปลี่ยนความคิด:
สำหรับการทำลายจิตใจของคุณและข้ามเส้นแบ่งระหว่าง padawan และ Jedi Master:
อย่าลืมJavascript
มีคุณสมบัติ OO ที่ไม่ใช่คุณสมบัติ OO ปกติของคุณ เหมาะอย่างยิ่งสำหรับฟังก์ชั่นและการปิดลำดับที่สูงขึ้นและคุณใช้สิ่งเหล่านี้เป็นประจำ จะช่วยให้เทคนิคการเขียนโปรแกรมการทำงานมากมาย มีความยืดหยุ่นอย่างมาก
และมันใช้งานได้จริงเพราะเบราว์เซอร์ที่จริงจังทุกตัวมี
(แน่นอนว่ามันมีนิสัยใจคอที่ไม่เป็นที่พอใจด้วยเช่นกันบางภาษาที่ใช้งานไม่ได้)
Cและแอสเซมบลีสำหรับวิธีการทำงานของคอมพิวเตอร์
HaskellและLISPสำหรับการเขียนโปรแกรมใช้งานได้
APLสำหรับการเขียนโปรแกรมเวกเตอร์และตัวย่อ
ทุบตีหรือtcshสำหรับวิธีการจัดการคอมพิวเตอร์โดยทางโปรแกรม
ฉันอยากจะแนะนำ Scheme
มันเป็นภาษาที่ใช้งานได้จริง (ส่วนใหญ่คิดว่าเป็นภาษาถิ่น) จาก Lisp ความแตกต่างสำคัญกับ Common เสียงกระเพื่อมเป็นวิธีการของมันคือความเรียบง่ายมาก - มากดังนั้น ตัวอย่างเช่นในการแจกแจงแบบปกติของ Scheme (รูปแบบใด ๆ <R5 หรือ Mit / GNU / Scheme) คุณจะไม่พบการใช้งานแบบวนซ้ำ: คุณจะต้องทำด้วยตัวเองโดยใช้การเรียกซ้ำแบบหาง
เป็นเรื่องที่แสดงออกได้จริงและไวยากรณ์เป็นสิ่งที่ยอดเยี่ยมในการเรียนรู้สิ่งใหม่เกี่ยวกับการเขียนโปรแกรมเช่นเดียวกับเมื่อมองไปที่โค้ดคุณจะได้รับแนวคิดว่าคอมไพเลอร์ / ล่ามจะทำงานอย่างไร
นอกจากนี้ยังมาพร้อมกับหนังสือการเขียนโปรแกรมที่ดีที่สุดตลอดกาลโครงสร้างและการตีความของโปรแกรมคอมพิวเตอร์สามารถดาวน์โหลดได้อย่างอิสระบนเว็บไซต์ของ MIT
นี่คือบทเรียนวิดีโอบางส่วนที่ฉันหวังว่าจะทำให้คุณสนใจในภาษาที่น่าสนใจนี้ทันที - ผู้บรรยายเป็นผู้เขียน SICP: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman- บรรยาย /
LISP ควรมีโครงการร่วมกับ "โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์" ของ Abelson & Sussman จะสอนให้คุณคิดในแง่อื่นนอกเหนือจากที่กำหนดโดย C / C ++
FORTH โดยเฉพาะ FORTH ที่เน้นการบล็อกไม่ใช่ไฟล์ที่มุ่งเน้น (เช่น D85) จะสอนให้คุณลดความไม่แน่นอนของคุณ เมื่อคุณไม่สามารถอยู่ภายใต้สถานการณ์ใด ๆ ก็ตามไม่ว่าจะเขียนรูทีนที่มีความยาวเกิน 16 บรรทัด 64 ตัวอักษรคุณจะถูกบังคับให้ใช้บทคัดย่อและตัวคูณ
Java เป็นหนึ่งในภาษาที่สอนมากที่สุดในมหาวิทยาลัยทั่วโลกและมีเหตุผลสำหรับมัน แม้ว่ามันจะเป็นเหมือนไดโนเสาร์ แต่ก็ให้ภาพรวมที่ดีมากเกี่ยวกับแนวคิดของการเขียนโปรแกรมที่ทันสมัย มันไม่ได้แสดงให้คุณเห็นว่าคอมพิวเตอร์ทำงานอย่างไรเช่น Assembler หรือแม้กระทั่งภาษานามธรรมที่มีอยู่แล้วมากยิ่งขึ้น C แต่นักบินจะต้องสามารถบินได้และไม่สามารถสร้างเครื่องบินด้วยตัวเอง - ไปเรียนรู้ JAVA เป็นพื้นฐานที่ดีสำหรับรหัสใด ๆ ที่คุณจะเขียนใน (สำหรับ reson) ภาษาที่พบบ่อยที่สุดในปัจจุบัน: Java, c ++, php, c #, ruby (บนราง) python และอื่น ๆ ...
สูงสุด
C # 3 พร้อม LINQ
มันเป็นคำแนะนำที่ดีสำหรับการเขียนโปรแกรมการใช้งาน
ลองเขียนโปรแกรม (หรือแก้ Project Euler) และแทนที่ลูปให้มากที่สุดเท่าที่จะทำได้ด้วยการเรียก LINQ
ช่วยหนึ่งต้นแบบแนวคิดของการเขียนโปรแกรมการทำงานและการประเมินผลขี้เกียจ
จากจุดนี้เราสามารถไปยัง F # ได้
มือฉันพูด Haskell และด้วยเหตุผลสองประการ:
ฉันอยากจะแนะนำ Scala ถ้ามีใครมาจากโลก C / Java
ไม่ใช่ภาษาการเขียนโปรแกรมที่ใช้งานได้จริง แต่ใช้ OO เพื่อจำลองคุณลักษณะการเขียนโปรแกรมที่ใช้งานได้บางอย่าง (เช่นการใช้วัตถุเพื่อจำลองฟังก์ชันชั้นหนึ่งและฟังก์ชั่นลำดับสูง)
ดังนั้นหากคุณคุ้นเคยกับ OO สกาล่าใช้คำศัพท์ที่คุณรู้เพื่ออธิบายโลกที่ใช้งานได้
ฉันพบว่ามันง่ายกว่าสำหรับฉันที่จะเข้าใจการเขียนโปรแกรมฟังก์ชั่นใน Scala มากกว่าดำดิ่งลงในการเขียนโปรแกรมที่ใช้งานได้มากกว่าเช่น Haskell, List ... ฯลฯ
ภาษาที่ใช้งานได้เป็นภาษาที่ฉันรู้สึกว่าช่วยนำฉันไปสู่ที่ที่ฉันอยู่ทุกวันนี้ แม้ว่าฉันจะพัฒนาเว็บแอพพลิเคชั่น แต่แนวคิดที่เรียนรู้จากภาษาที่ใช้งานได้ช่วยให้ฉันเห็นวิธีแก้ไขปัญหาที่ฉันไม่เคยเห็นมาก่อน นี่คือภาษาที่ฉันทำงานด้วยในมหาวิทยาลัยของฉัน:
การเรียนรู้ภาษาเหล่านี้จะช่วยให้คุณเข้าใจโลกแห่งนามธรรมและวิธีการสร้างกลุ่มของรหัสที่ครอบคลุมการทำงานอื่น ๆ ซ่อนรายละเอียดในระดับต่ำเพื่อให้คุณสามารถมุ่งเน้นไปที่เป้าหมายทางธุรกิจระดับสูง
Ruby มีกรอบการทดสอบที่ทรงพลังและใช้งานง่ายที่สุดที่ฉันเคยใช้ ฉันไม่แน่ใจว่าฉันเข้าใจวิธีใช้การเยาะเย้ยและการขัดถูอย่างถูกวิธีจนกระทั่งฉันเริ่มเขียนการทดสอบด้วยทับทิม rSpec และแตงกวาเป็นเครื่องมือที่ยอดเยี่ยม
มีภาษาการเขียนโปรแกรมจำนวนมากที่คุณต้องนึกถึงปัญหาในรูปแบบใหม่ (เทียบกับสิ่งที่คุณคุ้นเคย) หลักสูตรภาษาที่พบบ่อยที่สุดในการเรียนรู้ที่ได้รับการสอนภาษาที่จำเป็นนั้นเป็นหน้าที่และ ภาษาตรรกะเช่นเปิดฉากและเสียงกระเพื่อม
บางภาษาได้รับอิทธิพลอย่างมากจากทฤษฎีหมวดหมู่เช่นocamlและHaskellและบางภาษาเป็นสายพันธุ์ข้ามเช่นCurry (หน้าที่และตรรกะ) แกงกะหรี่น่าจะเป็นภาษาที่น่าเหลือเชื่อที่สุดที่ฉันรู้จักไม่ใช่แค่เพราะมันทำให้จิตใจของ Haskell เต็มไปด้วยการเขียนโปรแกรมเชิงตรรกะ แต่ยังเป็นเพราะการรวมเข้ากับการเขียนโปรแกรมตามข้อ จำกัด
ภาษาที่สนุกก็คือสาธารณรัฐโคลัมเบีย-ปี่ตั้งแต่มันเป็นไปอย่างหนักในการทำงานพร้อมกัน แต่ยังเพราะล่าสุดพอร์ต Arduino
โปรแกรมเมอร์ที่มีความโค้งมนมีลูกเล่นหลาย ๆ อย่างที่อยู่บนแขนเสื้อของเขาและเธอเหล่านี้รวมถึง:
สิ่งเหล่านี้สอนวิธีคิดและแนวทางปัญหาที่แตกต่างกันเล็กน้อย
คุณจะไม่เรียนรู้ภาษาโปรแกรมอย่างถูกต้องหากไม่มีเป้าหมายที่ชัดเจน รู้ว่าคุณต้องการทำอะไรกับมันจากนั้นคุณสามารถตัดสินใจได้ว่าโปรแกรมใดที่เหมาะกับความต้องการของคุณ
ตัวอย่างเช่นสมมุติ c #
C # สามารถทำโปรแกรมเว็บโปรแกรมคอนโซลโปรแกรมปฏิบัติการเดี่ยวโปรแกรมเกม Silverlight และโปรแกรมมือถือ ในขณะที่ไวยากรณ์มีความเท่าเทียมกันในเกือบทุกกรณี แต่มันทำงานแตกต่างกันในทุกสถานการณ์ ตัวอย่างเช่นไฟล์เรียกทำงานแบบสแตนด์อะโลนจะเก็บข้อมูลไว้จนกว่าจะถูกยกเลิกการโหลดหรือโปรแกรมเสร็จสิ้นในขณะที่โปรแกรมเว็บข้อมูลจะถูกทำลายทุกครั้งที่คุณโหลดหน้าเว็บและใน Silverlight คุณจะใช้เวลาส่วนใหญ่ดิ้นรนกับ ไฟล์ xml
และอย่างที่สองอย่าใช้เวลากับภาษาแปลกใหม่ (เช่น Haskel) การพูดแบบ บริษัท มีโปรแกรมที่คุ้มค่ากับความพยายามของคุณ: java (ราชาแห่งขุนเขา), c # / vb.net, php และ sql
มีโปรแกรมที่ง่ายมากสำหรับการเขียน Java Applets ที่เรียกว่าการประมวลผล
ภาษานี้จะให้ความเข้าใจพื้นฐานเกี่ยวกับตัวแปรลูปและสิ่งต่างๆนั้นถ้าคุณเพิ่งเริ่มต้น
คำแนะนำดีๆที่นี่ ฉันอาจจะไปกับ C หรือ C ++ เป็นการส่วนตัว พวกเขาบังคับให้คุณจัดการกับแนวคิดมากมายที่สำคัญอย่างมากในการทำความเข้าใจว่าสิ่งต่าง ๆ ทำงานอย่างไร แต่มีแนวโน้มที่จะสับสนในภาษาอื่น เพียงแค่ทำความเข้าใจว่าสิ่งต่าง ๆ ที่ใช้งานได้จริงจะช่วยให้คุณเป็นโปรแกรมเมอร์ได้อย่างไรแม้ว่าภาษาที่คุณใช้ในภายหลังจะซ่อนรายละเอียดบางอย่าง
การชุมนุมเป็นเรื่องสนุกถ้าคุณต้องการขุดในระดับที่ต่ำกว่านั้น แต่อย่าคาดหวังว่าจะได้ทำอะไรมากมาย :)
ฉันจะแนะนำ Ruby Ruby ไม่ต้องการให้คุณเปลี่ยนกระบวนทัศน์ แต่มันกระตุ้นให้คุณทำงานในกระบวนทัศน์ที่หลากหลาย ฉันคิดว่าข้อดีของสิ่งนี้คือแทนที่จะหงุดหงิดที่ไม่สามารถทำงานในแบบที่คุณคุ้นเคยได้คุณใช้กระบวนทัศน์ที่แตกต่างออกไปจากความไม่พอใจด้วยข้อ จำกัด ในการทำสิ่งต่าง ๆ ในแบบที่คุณคุ้นเคย