Я був там, де ти є, і мало не здавався кілька разів. Хоча аж ніяк не експертний розробник Scala, я відчуваю, що зараз я чітко розумію мову - безумовно, достатньо, щоб вона ретельно отруїла мої стосунки з Java.
Перше, що я зробив - провів кілька тижнів, граючи, читаючи різні блоги та знайомства з мовою. Це була помилка, я не навчився (або принаймні зрозумів) того, що було корисно, і відчув себе цілком поза глибиною.
Друга річ полягала в тому, щоб витратити деякий час на розробку проблеми, яка була технічно простою, але змусила мене самостійно вивчити конкретні аспекти синтаксису Scala:
Хоча це не перетворило мене на експерта протягом ночі, воно дало мені достатньо знайомства з мовою, що вже не відчувало себе такою неможливою.
З цим підсиленням впевненості я нарешті зробив те, з чого я повинен був почати: отримати програмування в Scala від Мартіна Одерського та спробувати прочитати цілу главу кожні пару днів. Це добре написана та вичерпна книга, і якщо у вас вже є звуковий фон програмування, не варто виявляти занадто непросто. Не потрібно робити ваше перше читання занадто болісним: пропустіть частини, позначені як необов’язкові, переконайтесь, що ви розумієте поняття, але не зациклюйтесь у деталях (зокрема, я вважаю, що глави колекцій надмірно важкі і можуть бути знежирений). Знання про те, що концепція існує і де читати вичерпне пояснення того, як вона працює, - це величезна допомога.
Альтернативою читання книги є відвідування класу Coursera - вона набагато менш всебічна, але охоплює більшість важливих моментів і розбивається на керовані, логічні одиниці. З іншого боку, я не знаю, чи можна отримати доступ до уроків, коли клас закінчується, і я також виявив, що я набагато менше займався, слухаючи когось (навіть когось такого очевидно розумного та знаючого, як Мартин Ордеський), ніж при читанні книги.
Ще одна проблема Scala - це кількість словникового запасу, який вам доведеться вживати - параметри за назвою? для розуміння? закриття? Якщо ви відчуваєте, що це переповнене, я виявив, що гарна суміш Словника словника та цільового пошуку переповнення стека допомогла мені багато (шукайте відповіді Даніеля Собрала та Тревіса Брауна). Насправді я пішов так далеко, щоб створити колоду Анкі з глосарієм, і відчуваю, що це була велика допомога.
Нарешті, це, мабуть, очевидно, але код, код, код. Знайдіть побічний проект, над яким можна працювати, навіть якщо це щось тривіальне. Що я зробив, це написати дуже простий сканер Amazon, який надсилав би мені твіт щоразу, коли автор, який мене зацікавив, випустив нову книгу. Це зайняло більше часу, ніж, мабуть, мало, але це коли я закохався у мову.
Якщо ви дійдете так далеко, вам, мабуть, не знадобиться додаткова допомога, але хороша пропозиція, як тільки ви зрозумієте мову, полягає в тому, щоб заглибитись глибше в основні поняття. Ви знайомі з OOP, спробуйте прочитати функціональне програмування - я можу з абсолютною впевненістю сказати, що це підірве ваш розум. Функціональне програмування в Scala має вийти незабаром (ish), але раннє видання вже є чудовим. Ще одна відповідь пропонує функціональне програмування для розробників Java , з яким я не знайомий, але я схильний вважати, що це добре (коли книга O'Reilly не вартувала принаймні скумування?).
Я сподіваюсь, що це не було занадто довго криво і очевидно, і чесно бажаю вам найкращого. Скала має свої помилки, але це чудова мова і перенесе ваш мозок у напрямку, про яке ви ніколи не знали. І я буду шукати твій "Навчання Хаскеллу, почуття зневіри" через рік :)