Tôi đã từng ở nơi bạn đang ở và gần như đã bỏ cuộc một vài lần. Mặc dù không có nghĩa là một nhà phát triển Scala chuyên nghiệp, tôi cảm thấy bây giờ tôi đã nắm vững ngôn ngữ - chắc chắn đủ để nó đã đầu độc triệt để mối quan hệ của tôi với Java.
Điều đầu tiên tôi làm là dành một vài tuần để chơi xung quanh, đọc các blog khác nhau và giới thiệu về ngôn ngữ. Đó là một sai lầm, tôi đã không học (hoặc ít nhất là hiểu) nhiều điều hữu ích và cảm thấy hoàn toàn nằm ngoài tầm sâu của tôi.
Điều thứ hai là dành một chút thời gian để giải quyết vấn đề đơn giản về mặt kỹ thuật nhưng buộc tôi phải tự mình khám phá các khía cạnh cụ thể của cú pháp Scala:
Mặc dù điều này không biến tôi thành một chuyên gia chỉ sau một đêm, nhưng nó đã cho tôi đủ quen thuộc với ngôn ngữ mà nó không còn cảm thấy không thể nữa.
Với sự tự tin đó, cuối cùng tôi đã làm được điều mà tôi nên bắt đầu với: lấy Lập trình trong Scala của Martin Oderky, và cố gắng đọc toàn bộ một chương mỗi vài ngày. Đó là một cuốn sách được viết tốt và toàn diện, và nếu bạn đã có một nền tảng lập trình âm thanh, không nên tỏ ra quá nản chí. Không cần phải làm cho lần đọc đầu tiên của bạn quá đau đớn: bỏ qua các phần được đánh dấu là tùy chọn, đảm bảo bạn hiểu các khái niệm nhưng không bị sa lầy vào các chi tiết (đặc biệt, tôi cảm thấy rằng các chương trên bộ sưu tập là quá mức cần thiết và có thể lướt qua). Biết rằng một khái niệm tồn tại và nơi để đọc một lời giải thích toàn diện về cách thức hoạt động của nó là một sự trợ giúp to lớn.
Một cách khác để đọc cuốn sách là tham dự lớp Coursera - nó ít toàn diện hơn, nhưng bao gồm hầu hết các điểm quan trọng và được chia thành các đơn vị logic, có thể quản lý được. Mặt khác, tôi không biết liệu có thể truy cập vào các bài học sau khi lớp học hoàn thành hay không và tôi cũng thấy rằng tôi đã ít tham gia hơn khi lắng nghe ai đó (ngay cả một người rõ ràng thông minh và hiểu biết như Martin Ordesky) khi đọc một cuốn sách.
Một vấn đề khác với Scala là lượng từ vựng bạn có để sử dụng - thông số theo tên? để hiểu? Khép kín? Nếu bạn cảm thấy choáng ngợp vì điều này, tôi thấy rằng một hỗn hợp tốt của Scala Glossary và các tìm kiếm tràn ngăn xếp được nhắm mục tiêu đã giúp tôi rất nhiều (tìm kiếm câu trả lời của Daniel Sobral và Travis Brown). Trên thực tế, tôi đã đi xa đến mức tạo ra một bộ bài Anki với bảng chú giải, và cảm thấy đó là một sự trợ giúp lớn.
Cuối cùng, điều này có lẽ là hiển nhiên, nhưng mã, mã, mã. Tìm một dự án phụ mà bạn có thể làm việc, ngay cả khi đó là một việc nhỏ. Những gì tôi đã làm là viết một trình thu thập thông tin rất đơn giản của Amazon sẽ gửi cho tôi một tweet bất cứ khi nào một tác giả mà tôi quan tâm để phát hành một cuốn sách mới. Mất nhiều thời gian hơn nó có thể nên có, nhưng đây là khi tôi yêu ngôn ngữ này.
Nếu bạn đã đi xa đến thế, có lẽ bạn sẽ không cần thêm trợ giúp, nhưng một gợi ý hay, một khi bạn đã nắm bắt được ngôn ngữ, là tìm hiểu sâu hơn về các khái niệm cơ bản. Bạn đã quen thuộc với OOP, hãy thử đọc chương trình chức năng - tôi có thể nói chắc chắn rằng nó sẽ thổi bay tâm trí của bạn. Lập trình chức năng trong Scala sẽ sớm được phát hành (ish), nhưng phiên bản truy cập sớm đã rất xuất sắc. Một câu trả lời khác cho thấy Lập trình hàm cho các nhà phát triển Java , điều mà tôi không quen thuộc nhưng có xu hướng tin là tốt (khi nào một cuốn sách O'Reilly không có giá trị ít nhất là lướt qua?).
Tôi hy vọng điều này đã không trở nên quá dài và rõ ràng, và thành thật chúc bạn những điều tốt đẹp nhất. Scala có lỗi của nó, nhưng đó là một ngôn ngữ tuyệt vời và sẽ đưa bộ não của bạn đi theo những hướng bạn chưa từng biết tồn tại. Và tôi sẽ tìm kiếm "Học Haskell, cảm thấy nản lòng" trong một năm :)