การเรียนรู้สกาล่ารู้สึกท้อแท้ [ปิด]


9

ฉันมาจากพื้นหลัง Java และพยายามเรียนรู้สกาล่า ในขณะที่ฉันรู้สึกแย่มากดูเหมือนว่าจะมีอะไรมากกว่านี้ที่จะเรียนรู้กับสกาล่าวิธีการต่าง ๆ มากมายในการทำสิ่งเดียวกัน

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

แม้แต่เรื่องเล็ก ๆ น้อย ๆ เช่นความเข้าใจในวงวนก็มีพลังมาก แต่ก็เป็นเพียงส่วนหนึ่งของไวยากรณ์ที่คุณต้องจดจำ!


สกาล่าเป็นภาษาที่มีความซับซ้อนโดยส่วนใหญ่บัญชีจึงไม่รู้สึกท้อแท้! Anecdotally ฉันเป็นโปรแกรมเมอร์ Haskell ที่มีความสามารถและฉันคิดว่า Scala ซับซ้อนกว่า :) วิธีที่ดีที่สุดที่ฉันได้เรียนรู้ทุกอย่างคือการสลับระหว่างหนังสือกับโครงการ สำหรับสกาล่าฉันขอแนะนำคอมไพเลอร์และหนังสือบันได แต่สำหรับพวกเขาแต่ละคน
Daniel Gratzer

ขอบคุณสำหรับกำลังใจ! หนังสือบันไดคืออะไร
jcm

การอ่านที่แนะนำ: จะเริ่มที่ไหน
ริ้น

ฉันลอง Scala เมื่อสองสามปีก่อนจากมุมมองของ Java และไม่เข้าใจเลย เมื่อเร็ว ๆ นี้ฉันเริ่มหลักสูตรที่ coursera.org เกี่ยวกับการเขียนโปรแกรมใช้งานได้ใน Scala มันเป็นวิธีที่แตกต่างกันอย่างมากพอที่พื้นหลัง Java ของฉันไม่ได้รับในทาง แต่ฉันกำลังเรียนรู้ที่จะคิดในโครงสร้างข้อมูลที่ไม่เปลี่ยนรูปการให้เหตุผลเกี่ยวกับอัลกอริทึมทฤษฎีเซตทฤษฎีชนิดและสิ่งสนุกอื่น ๆ ที่ฉันไม่ได้ฝึกฝนในการทำงานจริง ไม่ต้องกังวล ยังมีประโยชน์ที่แท้จริงของสกาล่าในโลกแห่งความเป็นจริง
BobDalgleish

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

คำตอบ:


11

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

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

สิ่งที่สองคือการใช้เวลาในการแก้ไขปัญหาที่เรียบง่ายทางเทคนิค แต่บังคับให้ฉันสำรวจแง่มุมที่เฉพาะเจาะจงของไวยากรณ์ Scala ด้วยตัวเอง:

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

ด้วยความมั่นใจที่เพิ่มขึ้นในที่สุดฉันก็ทำในสิ่งที่ฉันควรเริ่มต้นด้วย: เขียนโปรแกรมใน Scalaโดย Martin Odersky และพยายามอ่านบททั้งหมดทุกสองสามวัน มันเป็นหนังสือที่เขียนได้ดีและมีเนื้อหาครอบคลุมและหากคุณมีพื้นฐานการเขียนโปรแกรมที่ดีแล้ว ไม่จำเป็นต้องทำให้คุณอ่านครั้งแรกเจ็บปวดเกินไป: ข้ามส่วนที่ทำเครื่องหมายว่าเป็นตัวเลือกตรวจสอบให้แน่ใจว่าคุณเข้าใจแนวความคิด แต่ไม่จมลงในรายละเอียด (โดยเฉพาะฉันรู้สึกว่าบทในคอลเลกชันนั้นเกิน ไขมันต่ำ) รู้ว่ามีแนวคิดและสถานที่ที่จะอ่านคำอธิบายที่ครอบคลุมเกี่ยวกับวิธีการทำงานเป็นความช่วยเหลืออย่างมาก

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

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

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

หากคุณได้มาถึงตอนนี้คุณอาจไม่ต้องการความช่วยเหลือเพิ่มเติม แต่เป็นข้อเสนอแนะที่ดีเมื่อคุณเข้าใจภาษาแล้วก็ต้องเจาะลึกลงไปในแนวคิดพื้นฐาน คุณคุ้นเคยกับ OOP ลองอ่านการเขียนโปรแกรมฟังก์ชั่น - ฉันสามารถพูดได้อย่างแน่นอนว่ามันจะทำให้คุณทึ่ง ฟังก์ชั่นการเขียนโปรแกรมใน Scalaควรจะเปิดตัวเร็ว ๆ นี้ (ish) แต่รุ่นการเข้าถึงก่อนหน้านั้นยอดเยี่ยม คำตอบอีกข้อเสนอแนะการเขียนโปรแกรมฟังก์ชั่นสำหรับนักพัฒนา Javaซึ่งฉันไม่คุ้นเคยกับ แต่ฉันเชื่อว่าเป็นสิ่งที่ดี (เมื่อหนังสือ O'Reilly ไม่คุ้มค่าอย่างน้อย skimming?)

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


3

Scala เป็นวิธีคิดที่แตกต่างกันมากสำหรับ Java ดังนั้นอย่าท้อถอย! ฉันอาจเริ่มต้นด้วยฟังก์ชั่นการเขียนโปรแกรมสำหรับนักพัฒนา Javaเพื่อที่คุณจะได้เข้าใจวิธีการใช้งานได้

มีกลุ่มผู้ใช้ Java และ / หรือ Scala อยู่ใกล้ ๆ ไหม? การเรียนรู้ภาษาใหม่กับเพื่อนร่วมงานง่ายกว่าเสมอ

ขอให้โชคดีและพยายามอย่างเต็มที่!


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