JavaRush /Java блог /Random UA /Одна мова, щоб правити всіма

Одна мова, щоб правити всіма

Стаття з групи Random UA
Є мова, яка знаходиться під кожним шаром коду, будь-якою мовою програмування. І він чекає, доки його виявлять… Переклад та адаптація статті Еріка Жіруа із спільноти Better programming на Medium. Одна мова, щоб правити всіма - 1Коли я писав цю статтю, кількість пошукових запитів у стилі “яку мову програмування вчити” перевищувала 517 мільйонів (!). На кожній сторінці зі списку видачі розповідається про переваги тієї чи іншої мови над іншими, і в 90% випадків вам порекомендують те саме, на кшталт Python, JavaSctipt (або щось із топ-3 авторитетних рейтингів ЯП. Актуальний рейтинг липня — тут ;) Дозволю собі зухвалість і офіційно висловлю незгоду з усіма 517 мільйонами результатів і скажу б, що перша мова програмування, яку вам варто вивчити - це логіка . Недостатньо просто знати, як писати код. Ринок переповнений випускниками різних курсів, через що посада junior-розробника, по суті, перестала існувати. Щоб досягти успіху в цих реаліях, вам потрібно не тільки писати код, але і відрізнятися логічним складом розуму.

Мій перший урок комп'ютерних наук

Перше знайомство з комп'ютерними науками у мене відбулося на факультативі у десятому класі. Я прийшов на урок і відчув почуття захоплення: у класі стояла купа коробок з морозивом і баночок з сиропами. Коли ми зайняли свої місця, вчителька оголосила: “Сьогодні ми робитимемо сандеї ( десерт із морозива та сиропів – прим. ред. ). Але з однією умовою: вам потрібно написати точні інструкції з приготування десерту, і я їм слідувати”. " Не питання ", - подумав я, - " це буде легко ". Всього за хвабону я накидав ідеальну інструкцію: Покласти три кульки малинового морозива в чашку Влити дві столові ложки шоколадного сиропу в цю чашку Додати|добавляти| збиті вершки в чашку Додати|добавляти| кондитерську посипку і вишню на верхівку сандея | інструкціям розіграла найбагатшу постановку з бачених мною. Вона почала люто "нападати" на картонну коробку з морозивом, але міцна кришка залишилася неушкодженою. "Добре, для початку зніміть кришку," - сказав я, сподіваючись якнайшвидше отримати десерт. "Ти не зміг правильно написати для мене інструкції, тому, на жаль, я не змогла приготувати для тебе сандей, НАСТУПНИЙ!"

Швидка перемотування до спроби №2

Відкрити коробку з малиновим морозивом, знявши кришку Покласти три кульки малинового морозива в чашку Відкрити шоколадний сироп і додати дві столові ложки в цю чашку Відкрити збиті вершки і додати трохи в чашку Додати кондитерську посипку і вишню на верхівку сандея разів. Вчителька зняла кришку, набрала три кульки морозива і поклала з чашку. Нарешті мій сандей ось-ось буде готовий! Потім вона відкрила шоколадний сироп і поклала дві столові ложки у чашку. Але не дві ложки сиропу – просто ложки, без нього! Мої інструкції знову вийшли недостатньо влучними. Коли все закінчилося, я отримав чашку з морозивом, двома металевими ложками, хмарою збитих вершків та приблизно 300 кульками кондитерської посипки. Здається, зараз мені все стало зрозуміло: комп'ютер — це сутність, яка керується чистою логікою. Він розуміє контексту і робить припущень. Він виконує суворий набір інструкцій і слідує їм до останньої літери. Остаточна інструкція з приготування сандея вийшла дуже багатослівною, але це було необхідно: Якщо ще не відкриті, відкрити упаковку всіх перерахованих об'єктів: Малинове морозиво, Шоколадний сироп, Кондитерська посипка і Збиті вершки Взяти чашку з полиці і поставити перед собою Взяти ложку для морозива по одному за раз, набрати і покласти три кульки морозива в чашку. Коли все виконано, покладіть ложку на стіл. Взяти ложку для шоколадного сиропу, якщо її ще немає у вашому розпорядженні. Потім набрати ложку шоколадного сиропу і ваботи в чашку. Виконати цю дію двічі. Забрати шоколадний сироп на полицю, коли це буде зроблено. Перевернути пляшку зі збитими вершками догори дном, і притиснути пальцем кнопку біля носика пляшки на три секунди, потім повернути пляшку у вихідне положення. Насипати 40 гранул кондитерської посипки поверх морозива і шоколадного сиропу в чашці, потім повернути шейкер з посипанням у вихідне положення. Дістати одну вишеньку з банки з вишнями та обережно покласти її на вершину сандея. Передати студенту сандей та десертну ложку. Остання команда в інструкції була дуже важливою, бо без неї вчителька починала їсти сандей сама. Це реальність програмування – потрібно давати максимально точні інструкції комп'ютера. По суті всі мови програмування складаються з інструкцій.

Кар'єра у розробці програмного забезпечення

Розробка ПЗ знаходиться на тому етапі розвитку, на якому розмова про неї як про окремо взяту галузь здається занадто загальним. Та й посада "розробник ПЗ" у світлі цього звучить розмито. Два розробники з різними наборами скіллів можуть бути однаково затребувані ринку праці, що підказує, що з успішної кар'єри у розробці потрібно щось більше, ніж просто скілл програмування. У досвідчених розробників є спільна риса, відокремлена від програмування – логіка . Найкращі розробники сильні у критичному мисленні. Це суттєво, тому що більшість проектів з розробки ПЗ є погано задокументованим різношерсним кошмаром. Щоб зібрати всі дані та заповнити прогалини, знадобиться людина з критичним мисленням. Тому ті фахівці, які не здатні пов'язати факти в єдине ціле, плетуться у хвості. Все це підводить до ще одного дуже важливого твердження: Основи комп'ютерних наук і зараз, і в майбутньому первинні. Вони важливіші, ніж здатність писати код. Популярні мови з'являються та зникають. Фреймворки старіють, і компанії реагують на запити ринку, що змінюються, комбінуючи стек використовуваних технологій. Що залишається без змін? Основи засад.

Як розвинути логічне мислення

Логіку та критичне мислення можна і потрібно розвивати. Раджу приділити увагу наступному:

1. Вивчайте ефективність алгоритмів у середовищах виконання

Відома як Big-O нотація використовується для опису складності алгоритмів. Якщо ви можете оцінити код у термінах Big O, проаналізувати співвідношення кількості виконуваних дій і витраченого часу, вважайте, що ви зробабо перший крок у правильному напрямку.

2. Вивчайте структури даних

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

3. Читайте/дивіться/слухайте

Вивчати програмування на Java , звичайно ж, потрібно на JavaRush :)
Ну а щоб розібратися в основах, читайте книги про концепції проектування, кращі практики, стиль розробки коду. Тим, хто вивчає програмування, рекомендується почитати:
  • “Прийоми об'єктно-орієнтованого проектування. Паттерни проектування” (Е. Гамма Р. Хелм Р. Джонсон Дж. Вліссідес),
  • “Рефакторинг. Поліпшення існуючого коду” (М. Фаулер),
  • "Довершений код" (С. Макконнелл)
  • "Чистий код" (Б. Мартін)
  • "Програміст-прагматик" (Е. Хант)
  • "Алгоритми: побудова та аналіз" (Т. Кормен, Ч. Лайзерсон, Р. Рівест і К. Штайн)

4. Практикуйтесь!

Не можна стати хорошим віолончелістом без сотень годинників практики. Щоденна практика – ключ до успіху у програмуванні. Сьогодні є маса онлайн-платформ, на яких можна знайти тисячі завдань, які потребують розуміння структур даних та алгоритмів (HackerRank, LeetCode, CodeWars та інші).
Завдання з програмування на Java, від найпростіших до складних, є на JavaRush. Їх в курсі – понад 1200. А ще – мініпроекти та завдання-ігри .
Для мене найефективніший спосіб роботи з такими платформами – подумати над унікальним підходом до завдання та повісити своє рішення на Github. Потім подивитися на топові рішення подібного завдання та проаналізувати підходи інших програмістів. Це і підводить нас до останньої поради:

5. Аналізуйте чужий код

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

Висновок

Особиста порада: ніколи не соромтеся того, чого не знаєте. Як сказано вище, ця галузь величезна, кількість мов – неймовірна, інформації – море. Потрібно багато часу та зусиль, щоб сформувати хоча б загальне уявлення про програмування, ще більше — щоб набратися досвіду, і ще більше, щоб стати справжнім профі. Коли в мене нарешті це вийде, я повідомлю :)
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ