Навчання Scala, почуття відстороненості [закрито]


9

Я родом з Java і намагаюся навчитися Scala. На даний момент я відчуваю себе дуже переповненим, мабуть, є набагато більше чого навчитися зі Скалою, так багато різних способів зробити те саме.

Мені було цікаво, чи є хто-небудь поради щодо того, з чого почати, і скільки часу знадобилося, щоб вони почували себе досить компетентними на мові?

Навіть такі дрібниці, як для розуміння циклу, здаються справді потужними, але це просто інший фрагмент синтаксису, який потрібно запам’ятати!


Більшість акаунтів Scala - це складна мова, тому не відчувайте себе обескураженою! Анекдотично я досить грамотний програміст Haskell, і я вважав, що Scala набагато складніший :) Найкращий спосіб, який я дізнався, навчитися чомусь, - це чергувати книгу з проектом. Для Scala я б запропонував компілятор та сходові книги, але для кожної свої власні
Даніель Гратцер

Дякуємо за заохочення! Що таке сходова книга?
jcm

рекомендується прочитати: З чого почати?
гнат

Я спробував Scala кілька років тому з точки зору Java, і не дуже зрозумів. Нещодавно я розпочала курс у курсуrara.org з функціонального програмування у Scala. Це досить різний підхід, який мій фон Java не заважав. Натомість я (повторно) вчусь думати в незмінних структурах даних, міркуючи про алгоритми, теорію множин, теорію типів та всі інші цікаві речі, які я не можу практикувати на реальній роботі. Не хвилюйтесь; все ще існує реальна корисність Scala в реальному світі.
BobDalgleish

2
Scala - це велика нова екосистема, яку можна назвати (сама основна мова не така вже й велика - це переважно бібліотеки та концепції). Якщо ви на деякий час приклеюєте більш дрібний кінець речей і підбираєте одну концепцію, речі дійсно почнуть зближуватися. Зазвичай речі, схожі на химерні спеціальні синтаксиси, потрапляють у більш загальну категорію речей, яку можна абстрагувати всією мовою. Але, безумовно, потрібно трохи грати чи читати, щоб зрозуміти, що це за речі.
KChaloux

Відповіді:


11

Я був там, де ти є, і мало не здавався кілька разів. Хоча аж ніяк не експертний розробник Scala, я відчуваю, що зараз я чітко розумію мову - безумовно, достатньо, щоб вона ретельно отруїла мої стосунки з Java.

Перше, що я зробив - провів кілька тижнів, граючи, читаючи різні блоги та знайомства з мовою. Це була помилка, я не навчився (або принаймні зрозумів) того, що було корисно, і відчув себе цілком поза глибиною.

Друга річ полягала в тому, щоб витратити деякий час на розробку проблеми, яка була технічно простою, але змусила мене самостійно вивчити конкретні аспекти синтаксису Scala:

Хоча це не перетворило мене на експерта протягом ночі, воно дало мені достатньо знайомства з мовою, що вже не відчувало себе такою неможливою.

З цим підсиленням впевненості я нарешті зробив те, з чого я повинен був почати: отримати програмування в Scala від Мартіна Одерського та спробувати прочитати цілу главу кожні пару днів. Це добре написана та вичерпна книга, і якщо у вас вже є звуковий фон програмування, не варто виявляти занадто непросто. Не потрібно робити ваше перше читання занадто болісним: пропустіть частини, позначені як необов’язкові, переконайтесь, що ви розумієте поняття, але не зациклюйтесь у деталях (зокрема, я вважаю, що глави колекцій надмірно важкі і можуть бути знежирений). Знання про те, що концепція існує і де читати вичерпне пояснення того, як вона працює, - це величезна допомога.

Альтернативою читання книги є відвідування класу Coursera - вона набагато менш всебічна, але охоплює більшість важливих моментів і розбивається на керовані, логічні одиниці. З іншого боку, я не знаю, чи можна отримати доступ до уроків, коли клас закінчується, і я також виявив, що я набагато менше займався, слухаючи когось (навіть когось такого очевидно розумного та знаючого, як Мартин Ордеський), ніж при читанні книги.

Ще одна проблема Scala - це кількість словникового запасу, який вам доведеться вживати - параметри за назвою? для розуміння? закриття? Якщо ви відчуваєте, що це переповнене, я виявив, що гарна суміш Словника словника та цільового пошуку переповнення стека допомогла мені багато (шукайте відповіді Даніеля Собрала та Тревіса Брауна). Насправді я пішов так далеко, щоб створити колоду Анкі з глосарієм, і відчуваю, що це була велика допомога.

Нарешті, це, мабуть, очевидно, але код, код, код. Знайдіть побічний проект, над яким можна працювати, навіть якщо це щось тривіальне. Що я зробив, це написати дуже простий сканер Amazon, який надсилав би мені твіт щоразу, коли автор, який мене зацікавив, випустив нову книгу. Це зайняло більше часу, ніж, мабуть, мало, але це коли я закохався у мову.

Якщо ви дійдете так далеко, вам, мабуть, не знадобиться додаткова допомога, але хороша пропозиція, як тільки ви зрозумієте мову, полягає в тому, щоб заглибитись глибше в основні поняття. Ви знайомі з OOP, спробуйте прочитати функціональне програмування - я можу з абсолютною впевненістю сказати, що це підірве ваш розум. Функціональне програмування в Scala має вийти незабаром (ish), але раннє видання вже є чудовим. Ще одна відповідь пропонує функціональне програмування для розробників Java , з яким я не знайомий, але я схильний вважати, що це добре (коли книга O'Reilly не вартувала принаймні скумування?).

Я сподіваюсь, що це не було занадто довго криво і очевидно, і чесно бажаю вам найкращого. Скала має свої помилки, але це чудова мова і перенесе ваш мозок у напрямку, про яке ви ніколи не знали. І я буду шукати твій "Навчання Хаскеллу, почуття зневіри" через рік :)


3

Scala - це зовсім інший спосіб мислення до Java, тому не варто відмовлятись від цього! Я, мабуть, почав би з функціонального програмування для розробників Java, щоб ви могли ввійти у функціональний спосіб мислення.

Чи поряд є група користувачів Java та / або Scala? Завжди простіше вивчити нову мову з колегою.

Пощастить і продовжуйте наполегливо!


Крім того, я б рекомендував ознайомитись зі структурами та інструментами Scala стосовно галузей, які вас цікавлять. На мій досвід, проект, над яким ти любиш працювати, полегшує справи. Ознайомтеся з технологією Lift or Play Framework, наприклад, коли ви працюєте в веб-розробці або Akka, якщо паралельні або розподілені програми - це ваша річ.
juwi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.