Uploaded avatar of iHiD

Інтервʼю з Еріком Схірбомом

@iHiD
Більше 7 років тому

Інтервʼю з Еріком Схірбоомом, у якому він і Джеремі Волкер обговорюють функціональне програмування, супровід треків Exercism і майбутній статичний аналіз рішень на Exercism.

Привіт, Еріку! Дякуємо, що погодилися взяти участь у першому випуску «Прожектора учасників Exercism»! Ми хотіли висвітлити вашу роботу, бо здається, що ви долучаєтеся до кожної частини Exercism і маєте чудові думки з роботи над усім проєктом!

Тож для трохи контексту: як ви вперше долучилися до Exercism?

2014 року я пройшов курс із функціонального програмування, який використовував мову Scala. Після завершення курсу я шукав матеріали, щоб і далі вдосконалювати свої навички в Scala, і натрапив на Exercism. Минуло небагато часу, як я підсів і почав проходити й інші мовні треки на Exercism. Оскільки коментарі людей до моїх рішень дали мені багато, я теж почав коментувати рішення в треку C#. Згодом мене попросили стати мейнтейнером треку C#, і я радо погодився. Пʼять років потому я наставник у треках C# і F#, мейнтейнер треків C#, F# і Scala, а також допомагаю працювати над міжтрековими специфікаціями вправ.

Клас. Отже, ви долучилися до Exercism дуже рано, ще на самому початку її життя. Для тих, хто не знає: чи могли б ви пояснити, що означає бути мейнтейнером Exercism?

Авжеж. Абстрактно кажучи, мейнтейнер Exercism відповідає за «здоровʼя» треку. На практиці це може означати багато чого: додавання нових вправ, оновлення наявних вправ або перегляд пул-реквестів від інших мейнтейнерів. Ще один важливий аспект - правильно впорядкувати вправи треку, щоб учні мали якнайкращий досвід навчання. Варто зауважити, що бути мейнтейнером не означає, що людина мусить братися до всіх перелічених занять; цілком нормально, якщо мейнтейнер зосереджується лише на одній-двох справах.

Дякую! Отже, крім зосередженості на C#, F# і Scala, ви пройшли чи не кожен мовний трек на Exercism. Чи є у вас особливі улюбленці з погляду учня?

Хоча з кожного треку, який я пройшов, я навчився багато чого, найулюбленіший мій трек - це, мабуть, Haskell. Це не лише чудова мова з безліччю цікавих концепцій, але й якість її наставників була просто приголомшливою. Інші улюбленці - треки Kotlin і F#, адже Kotlin і F# - надзвичайно добре продумані й прагматичні мови, якими я люблю програмувати.

Так, я багато чув доброго про наставників Haskell! Уявляю, що проходження такої кількості треків дало вам цілу купу цікавих ідей щодо програмування. Чи було щось конкретне, чого ви навчилися з цього досвіду?

О так, безліч речей! Робота з найрізноманітнішими мовами показує безліч різних підходів до розвʼязання задач. Ці різні підходи так чи інакше вплинули на мій стиль програмування, хоча найбільше на мене вплинули, мабуть, функціональні мови. Тепер я помічаю, що використовую функціональні концепції всюди, де можу, навіть у нефункціональних мовах (які потроху вбирають функціональні можливості).

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

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

Я помітив те саме. Навчання від інших - це такий потужний множник! З практичного погляду, як ви давали раду з усім налаштуванням для різних мов? Мені часто здається трохи страшним сама думка про вивчення нової IDE. Ви трималися редактора, який знали, поки проходили мови, чи змінювали його, щоб спробувати отримати досвід, ближчий до ідіоматичного?

Для деяких мов налаштування нового середовища розробки колись було трохи морокою, але сьогодні більшість мов налаштувати досить легко. Тоді я намагаюся знайти IDE, яка дає найкращий досвід саме для цієї мови. Оскільки я працюю поперемінно то на Windows, то на Mac OS, IDE має бути ще й кросплатформною. Приклад чудової кросплатформної IDE - Visual Studio Code, яку я використовую для треків Haskell, JavaScript, TypeScript, Elm та Elixir. Для інших треків я користуюся IDE від JetBrains: Rider для C# і F#, IntelliJ IDEA для Java, Scala та Kotlin і, нарешті, RubyMine для Ruby (примітка: це теж кросплатформні IDE). Як бачите, я використовую кілька редакторів, щоб мати найкращий досвід із кожною мовою (хоча IDE від JetBrains, звісно, доволі схожі між собою).

Порада від професіонала: якщо ви ключовий учасник проєкту з відкритим кодом, JetBrains дозволяє подати заявку на безкоштовну ліцензію для відкритого коду!

Це надзвичайно корисно. Дякую! Отже, ви мейнтейнер C#, F# і Scala. Що саме вас приваблює в цих мовах?

C# одразу стала моєю улюбленою мовою, коли її випустили 2002 року. Це добре продумана, елегантна мова з чудовим інструментарієм і документацією. Мова також досить швидко розвивається, тож завжди є що вивчати! Ще один плюс - вона працює на чудовому фреймворку .NET (Core).

F# теж підкорила мене з першого погляду. З елегантним синтаксисом і багатим набором (функціональних) можливостей мови я помітив, що можу робити більше, писавши менше коду, особливо коли йдеться про моделювання предметної області. Це також дуже прагматична мова, з обʼєктно-орієнтованими можливостями й чудовою взаємодією з наявним кодом .NET (вона працює на тому самому фреймворку .NET (Core), що й C#). Додаткова перевага - її інструментарій, один із найкращих серед наявних для функціональних мов. А ще бонусом вона має один із моїх найулюбленіших вступів до мови за весь час - на сайті fsharpforfunandprofit.

Scala була мовою, яка познайомила мене з функціональним програмуванням, тож саме тому вона посідає особливе місце в моєму серці. Як і F#, це прагматична мова, з багато в чому тих самих причин. Завдяки інтеграції в екосистему Java вона справді допомогла популяризувати функціональне програмування.

Цікаво, що ви почали з функціонального програмування через Scala, наставляєте у F#, але найкращим треком вважаєте Haskell. Комусь, хто хоче пірнути у функціональне програмування на Exercism, яку з них ви порадили б спробувати першою?

Чудове питання! Мій голос за F#, бо, на мою думку, її найлегше опанувати. Це здебільшого тому, що мова F# менш складна, ніж дві інші. Чудовий інструментарій і документація F# теж великий плюс на старті. Утім, я дуже раджу також долучитися до треку Haskell, коли завершите з треком F#, адже в Haskell є кілька фантастичних, просунутих можливостей, яких немає у F#.

Вам відомо чимало наших планів щодо майбутнього Exercism. Чи є щось, що вас особливо захоплює в цьому проєкті?

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

Якщо цікаво, погляньте на мій (ранній) прототип аналізатора для треку C#, який використовує платформу компілятора .NET для статичного аналізу коду C#.

Так, статичний аналіз - майже найзахопливіша річ і для мене. Чудово, що у вас уже готовий прототип. Гадаю, покращення швидкості, які дасть нам статичний аналіз, значно покращать Exercism, і мене дуже тішить, як ми можемо розширити його, щоб навчати програмування зовсім початківців. Гадаю, це справді змінює все.

Останнє питання: чи є у вас особисті проєкти або справи, близькі вашому серцю, про які хотіли б розповісти всім?

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

Я хотів би заохотити людей спробувати долучитися й собі. Якщо у вас є мова, якою ви палко захоплюєтесь, і ви хочете допомогти людям її вивчити, реєструйтеся наставником на Exercism. Якщо вам більше до вподоби писати код, оберіть проєкт з відкритим кодом і долучіться. Обіцяю, це зовсім не таке страшне, як звучить, і ви відчуєте велике задоволення!

Чудово! Дякуємо, що знайшли час поговорити, і за всю вашу роботу над Exercism!

Translation missing: uk.number.nth.ordinalized Jan 2019 · Виявилося корисним?