Хабрахабр

[Перевод] Один язык чтобы править всеми

Скрытый под слоем кода томится язык, жаждущий быть выученным.

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

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

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

перев. * здесь и далее, пожалуйста, помните, что это перевод, и ситуация на рынке труда у автора и в вашей стране может быть различной (как и другие нюансы), что, однако, само по себе не делает оригинальную статью хуже — прим.

Мой первый урок информатики

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

Но с одним условием: вы должны составить список конкретных инструкций, как приготовить десерт, а я — буду им следовать» «Сегодня мы будем дегустировать самостоятельно приготовленные пломбиры.

Где-то через минуту я набросал отличный рецепт для мороженого моей мечты: «Без проблем, — подумал я, — этот урок не будет долгим».

  1. Зачерпнуть и положить три шарика малинового мороженого в миску
  2. Открыть шоколадный соус и добавить две столовые ложки в эту же миску
  3. Добавить взбитые сливки в миску
  4. Посыпать всё это сахарными палочками и положить вишенку сверху

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

«Хорошо-хорошо, но сначала нужно его открыть!» — воскликнул я, пытаясь получить угощение поскорее.

СЛЕДУЮЩИЙ!» «Ты не написал этого в инструкции, а я не смогла приготовить тебе мороженое.

Промотаем время до попытки №2

  1. Открыть малиновое мороженое, убрав крышку
  2. Зачерпнуть и положить три шарика малинового мороженого в миску
  3. Открыть шоколадный соус и добавить две столовые ложки в эту же миску
  4. Добавить взбитые сливки в миску
  5. Посыпать всё это сахарными палочками и полжить вишенку сверху

Я даже на всякий случай убедился, что все ингредиенты для изготовления моего кулинарного шедевра открыты. Ну сейчас-то точно проблем не должно быть.

«Наконец-то мой прекрасный пломбир начал воплощаться в реальности!» Затем она открыла шоколадный соус и добавила две столовые ложки в миску. Учительница убрала крышку, зачерпнула и положила три шарика мороженого в миску. Без соуса в них. Не «добавила шоколадный соус из двух столовых ложек» — вы не подумайте — она, конечно же, положила в миску сами ложки. После того, как остальное было исполнено в том же духе, я получил на руки миску с мороженым и двумя столовыми ложками, еле заметными под морем взбитых сливок. Опять я не удосужился расписать всё точно. Сверху была пара сахарных палочек.

Он не знает об окружающих обстоятельствах и не делает предположений. Кажется, в этот момент до меня наконец-то дошло: компьютер — логика в вакууме. Он выполняет только чётко сформулированные инструкции и следует им слово в слово.

Мой конечный результат был итогом длинной, но необходимой череды проб и ошибок:

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

Последний пункт был особенно важен, так как без него, в предпоследний раз учительница просто начала есть моё мороженое.

Напряжённое создание тщательного набора инструкций для компьютера. Но это и есть программирование. По существу, это то к чему сводится каждый язык программирования — к составлению инструкций.

Карьера в программировании

Два разработчика могут быть одинаково востребованными рынком, зная абсолютно разные языки, а значит, умение разрабатывать важнее знания конкретного языка. Программирование достигло той точки, когда его сложно обсуждать как единую индустрию, так же как сложно использовать единственное слово «программист» в качестве описания вакансии. Универсальный атрибут, присущий всем успешным разработчикам — фундаментальная логика.

И это принципиально важно, потому что большинство программных продуктов — набор из недокументированных осколков плохого кода. Лучший программист — способный посмотреть на код под новым углом. Людям, не способным соединить разрозненные точки единой линией, придётся вечно быть на вторых ролях. Их постоянно нужно собирать вместе, заделывая бреши по мере необходимости.

Всё это подводит меня к ещё одной декларации, на этот раз болдом: фундаментальные знания всегда были и будут первостепенны для программиста.

Фреймворки устаревают, а компании реагируют на спрос, меняя стек используемых технологий. Языки приходят и уходят. Да — фундаментальные знания, которые потому и называются фундаментальными, что лежат в основе всего! Есть ли вещь, которая никогда не изменится?

Как улучшить фундаментальные знания

Фото Кристофера Йешке на Unsplash

Если ищете отправную точку для улучшения фундаментального логического мышления, попробуйте начать отсюда:

Знай сложность своей программы

Держать руку на пульсе используемых алгоритмов — важный шаг. Так же именуемую Big O «сложностью алгоритма» называют зависимость времени на выполнение программы от размера её входных данных (n).

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

Знание того, какую структуру использовать в каком случае, является самостоятельной дисциплиной. Структуры данных лежат в основе любой современной программы. Поиск элемента в массиве равен O(n), что говорит о дороговизне использования массивов в качестве входных данных. Структуры данных напрямую связаны со сложностью рантайма и выбор неправильной структуры может привести к фундаментальным проблемам с производительностью. Поиск по хэш-таблице — O(1), а значит, в этом случае время поиска значения не зависит от количества элементов.

Это был вернейший признак, что нанимать их не стоит — знай свои структуры данных. Ко мне на собеседование приходили люди, утверждавшие, что по массиву искать быстрее, чем по хэш-таблице.

Читай / смотри / слушай

Но для основ обратитесь к книгам по общим принципам, практикам и стилям кодирования. Такие сайты, как Udemy, Pluralsight и CodeAcademy — отличный выбор для изучения новых языков программирования. Улучшение существующего кода», «Совершенный Код», «Чистый код» и «Программист Прагматик». Наиболее рекомендуемые книги — это «Паттерны Проектирования», «Рефакторинг. Наконец, каждый разработчик должен держать копию «Алгоритмов» под рукой.

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

Такие сайты, как HackerRank, CodeWars, CoderByte, TopCoder и LeetCode предлагают тысячи интересных задачек для проверки знаний о структурах данных и алгоритмах. Не получится приготовить яичницу, не разбив яиц. Что подводит нас к последнему пункту: Попытайте счастья в решении приглянувшейся проблемы, выложите свой вариант на Github, а после посмотрите, как к ней подступились другие.

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

Разработка программного обеспечения — это в значительной степени командная работа. Самая большая ошибка, которую только можно сделать идя по пути разработки — совершать этот путь в одиночку. Время потраченное на чтение чужого кода окупится сторицей. Мы вместе создаём стандарты, вместе делаем ошибки и, наперекор всем неудачам, вместе становимся лучше. Только убедитесь, что это хороший код.

Как уже было сказано, наша отрасль огромна, а количество технологий необъятно. Ну а лучший совет, который я могу дать — никогда не стыдитесь, что чего-то пока не знаете. Я дам вам знать, когда сам добьюсь этого. Требуется много времени и усилий, чтобы выстроить общую картину, ещё больше, чтобы стать профессионалом в чём-то конкретном, и на порядок больше, чтобы отточить мастерство в своей области.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть