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

Прихований під шаром коду нудиться мова, що прагне бути вивченим.

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

На момент написання цієї статті запит «програмування, яку мову вивчати першою» видає 517 мільйонів пошукових результатів. Кожен із цих сайтів нахвалюватиме одну певну мову, і 90% з них, зрештою, порекомендують Python або JavaScript.

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

Просто знати як кодувати ще мало. Ринок настільки насичений випускниками інститутів та курсів, що позиція джуніора практично перестала існувати*. Щоб досягти успіху в сьогоднішньому світі, ви повинні і кодити, і мати просунуте фундаментальне логічне мислення.

* тут і надалі, будь ласка, пам'ятайте, що це переклад, і ситуація на ринку праці у автора і у вашій країні може бути різною (як і інші нюанси), що, однак, саме по собі не робить оригінальну статтю гіршою — прим. перев.

Мій перший урок інформатики

Моє перше знайомство з інформатикою було факультативом, який я взяв у 10 класі. У перший же день, зайшовши в аудиторію, я був захоплений, побачивши перед собою велику кількість відерець морозива та різноманітних топінгів. Після того, як усі розсілися, вчителька проголосила:

«Сьогодні ми дегустуватимемо самостійно приготовлені пломбіри. Але з однією умовою: ви повинні скласти список конкретних інструкцій, як приготувати десерт, а я — слідуватиму їм»

"Без проблем, - подумав я, - цей урок не буде довгим". Десь за хвилину я накидав чудовий рецепт для морозива моєї мрії:

  1. Зачерпнути і покласти три кульки малинового морозива в миску
  2. Відкрити шоколадний соус і додати дві столові ложки у цю ж миску
  3. Додати|добавляти| збиті вершки в миску
  4. Посипати все це цукровими паличками та покласти вишеньку зверху

Моя вчителька — «комп'ютер» у цій милій метафорі — розіграла саркастичніше-літеральне, ніж я бачив колись раніше, виставу. Вона почала завзято тикати відерце морозива ложкою для кульок, навіть не доторкнувшись до кришки.

"Добре-добре, але спочатку потрібно його відкрити!" — вигукнув я, намагаючись якомога швидше пригоститися.

Ти не написав цього в інструкції, а я не змогла приготувати тобі морозиво. НАСТУПНИЙ!»

Промотаємо час до спроби №2

  1. Відкрити малинове морозиво, прибравши кришку
  2. Зачерпнути і покласти три кульки малинового морозива в миску
  3. Відкрити шоколадний соус і додати дві столові ложки у цю ж миску
  4. Додати|добавляти| збиті вершки в миску
  5. Посипати все це цукровими паличками і покласти вишеньку зверху

Ну зараз точно проблем не повинно бути. Я навіть про всяк випадок переконався, що всі інгредієнти для виготовлення мого кулінарного шедевра відкриті.

Вчителька прибрала кришку, зачерпнула і поклала три кульки морозива в миску. "Нарешті мій прекрасний пломбір почав втілюватися в реальності!" Потім вона відкрила шоколадний соус і додала дві столові ложки у миску. Не "додала шоколадний соус із двох столових ложок" - ви не подумайте - вона, звичайно ж, поклала в миску самі ложки. Без соусу в них. Знову я не спромігся розписати все точно. Після того, як решта була виконана так само, я отримав на руки миску з морозивом і двома столовими ложками, ледве помітними під морем збитих вершків. Зверху була пара цукрових паличок.

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

Мій кінцевий результат був результатом довгої, але необхідної низки проб і помилок:

  1. Відкрий, якщо ще цього не зроблено, кожну з наступних упаковок: малинове морозиво, шоколадний соус, збиті вершки, цукрові палички.
  2. Дістань миску і постав перед собою
  3. Візьми ложку для морозива і один за одним поклади три кульки малинового морозива в миску. Поклади ложку для морозива на місце.
  4. Візьми банку з шоколадним соусом, зачерпни соус і вили в миску вміст столової ложки. Повтори дію із зачерпуванням та виливанням соусу ще один раз. Поклади ложку та банку на місце.
  5. Візьми та переверни вгору ногами упаковку збитих вершків і, тримаючи її над мискою, поливай ними морозиво 3 секунди, після чого поверни упаковку на місце.
  6. Візьми банку цукрових паличок, висип близько сорока паличок у миску і поклади банку на місце.
  7. Візьми одну вишеньку з миски з вишеньками і поклади її зверху на морозиво.
  8. Передай учневі миску з готовим пломбіром та ложку.

Останній пункт був особливо важливий, оскільки без нього, востаннє вчителька просто почала їсти моє морозиво.

Але це є програмування. Напружене створення ретельного набору інструкцій для комп'ютера. По суті, це те, до чого зводиться кожна мова програмування — до складання інструкцій.

Кар'єра у програмуванні

Програмування досягло тієї точки, коли його складно обговорювати як єдину індустрію, так само як складно використовувати єдине слово програміст як опис вакансії. Два розробники можуть бути однаково затребуваними ринком, знаючи абсолютно різні мови, а отже, вміння розробляти важливіше знання конкретної мови. Універсальний атрибут, властивий усім успішним розробникам. фундаментальна логіка.

Найкращий програміст - здатний подивитися на код під новим кутом. І це принципово важливо, тому що більшість програмних продуктів — набір недокументованих уламків поганого коду. Їх постійно потрібно збирати разом, зашпаровуючи проломи в міру необхідності. Людям, не здатним з'єднати розрізнені точки єдиною лінією, доведеться завжди бути на других ролях.

Все це підводить мене до ще однієї декларації, цього разу болдом: фундаментальні знання завжди були і будуть першорядними для програміста.

Мови приходять і йдуть. Фреймворки старіють, а компанії реагують на попит, змінюючи стек використовуваних технологій. Чи є річ, яка ніколи не зміниться? Так - фундаментальні знання, які тому і називаються фундаментальними, що лежать в основі всього!

Як покращити фундаментальні знання

Одна мова щоб правити всімаФото Крістофера Єшке на Unsplash

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

Знай складність своєї програми

Так само іменовану Великий О «Складністю алгоритму» називають залежність часу на виконання програми від розміру її вхідних даних (n). Тримати руку на пульсі алгоритмів, що використовуються, — важливий крок.

Знай свої структури даних

Структури даних є основою будь-якої сучасної програми. Знання того, яку структуру використовувати у разі, є самостійної дисципліною. Структури даних безпосередньо пов'язані зі складністю рантайму і вибір неправильної структури може призвести до фундаментальних проблем із продуктивністю. Пошук елемента в масиві дорівнює О (п), що говорить про дорожнечу використання масивів як вхідні дані. Пошук по хеш-таблиці O (1), отже, у разі час пошуку значення залежить від кількості елементів.

До мене на співбесіду приходили люди, які стверджували, що масивом шукати швидше, ніж по хеш-таблиці. Це була вірна ознака, що наймати їх не варто — знай свої структури даних.

Читай / дивись / слухай

Такі сайти, як UdemyБагатокутник и CodeAcademy - Відмінний вибір для вивчення нових мов програмування. Але для основ зверніться до книг за загальними принципами, практиками та стилями кодування. Найбільш рекомендовані книги – це «Паттерни Проектування», «Рефакторинг. Поліпшення існуючого коду», «Довершений Код», «Чистий код» та «Програміст Прагматик». Нарешті кожен розробник повинен тримати копію «Алгоритмів" під рукою.

Практикуйся!

Не вдасться приготувати яєчню, не розбивши яєць. Такі сайти, як Хакер RankCodeWarsCoderByte, TopCoder и Код пропонують тисячі цікавих завдань для перевірки знань про структури даних та алгоритми. Спробуйте щастя у вирішенні проблеми, що сподобалася, викладете свій варіант на Github, а потім подивіться, як до неї підступилися інші. Що підводить нас до останнього пункту:

Читай чужий код

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

Ну а найкраща порада, яку я можу дати — ніколи не соромтеся, що чогось поки що не знаєте. Як уже було сказано, наша галузь величезна, а кількість технологій неосяжна. Потрібно багато часу та зусиль, щоб вибудувати загальну картину, ще більше, щоб стати професіоналом у чомусь конкретному, і на порядок більше, щоб відточити майстерність у своїй галузі. Я дам вам знати, коли сам досягну цього.

Джерело: habr.com

Додати коментар або відгук