Зачем программисту ассемблер и математика и как писать код у себя в голове: лучшее из интервью создателя языка D
Имя Уолтера Брайта не суперизвестно, и язык, который он создал — D — тоже не стал суперпопулярным. Но, возможно, вы использовали его компилятор для C++ Digital Mars или знаете игру Empire (она сильно повлияла на популярную серию Civilization). Кстати, это первый компилятор для C++, который напрямую компилировал код без его преобразования в C.
При этом Уолтер Брайт — самоучка в программировании. Он стартовал с разработки Empire, постепенно перейдя в область создания компиляторов: помимо C++, он создал компиляторы для C.
Своими мыслями о том, как писать хороший код он поделился в интервью Владу Тену на YouTube-канале «Мы обречены». Highload публикует главные мысли из этого видео.
Уолтер Брайт / Medium
Про популярность D и другие языки программирования
Мне не нравится ни один популярный язык программирования. Я же создал D — какой смысл был бы мне создавать свой язык, если бы мне очень нравился какой-то из уже существующих?
Я использовал другие языки в течение многих лет и постоянно замечал что-то, что мне не нравилось. Так что я устал быть нытиком и просто сделал свой. И самое забавное, что один за одним, другие языки начинают перенимать функции языка D, на которые раньше никто не обращал внимания.
Это лестно, но также мне бы хотелось, чтобы D был мейнстримным языком, а не нишевым. Так что я хочу снизить барьер для входа в язык D для новичков. Сейчас я работаю над тем, чтобы декомпилятор мог импортировать код на языке С напрямую, а не через транслятор. То есть встраиваю компилятор С в компилятор D.
Про то, зачем учить D
C++ — это безопасный выбор. Если вы владеете С++, то знаете, что всегда найдете работу и вас никогда не будут критиковать. D привлекает людей нестандартных, более авантюрных и готовых пробовать новое. И некоторые работодатели заметили это и постоянно ищут программистов со знанием D, потому что им нравится такой подход к работе.
Организации, которые используют язык D / Полный список на сайте языка D
Про то, как писать код у себя в голове
Большую часть кода я пишу, когда бегаю. Бег — это мое время для размышлений. Перед тем как бежать, я загружаю голову контекстом проблемы, которую пытаюсь решить. Просто говорю себе: вот, есть такая проблема. А затем выхожу на пробежку.
Сам процесс бега как бы встряхивает кусочки информации в голове. И часто они складываются в решение к тому времени, когда я возвращаюсь — остается только его записать.
Может быть, я использую этот подход, потому что я начинал работать в старые времена, когда трудно было получить доступ к компьютеру. Поэтому мне часто приходилось писать программы карандашом на бумаге.
Про то, что нравится в программировании
Мне жаль тех, кто идет в программирование только ради денег. Вы тратите восемь-десять часов в день на работу, так что она должна быть чем-то, что вам нравится делать. Или вам нужно найти способ получать от этого удовольствие. Когда я работаю над D, я в основном работаю над ним бесплатно, потому что это весело 🙂
Например, мне нравится работать над мельчайшими деталями. Я люблю нырять в грязь и пытаться написать идеальный маленький кусочек кода. Я постоянно рефакторю текущий проект, потому что каждый раз думаю, что смогу сделать его лучше и быстрее.
Про то, зачем программисту математика
В автомобильной промышленности есть механики и инженеры. Механики заказывают детали по каталогу и устанавливают их, следуя инструкциям. А инженеры разрабатывают эти детали и пишут инструкции. Так что инженер-программист — этот тот, кто пишет библиотеки. А если вы просто «берете детали из каталога» и вызываете API — это больше похоже на работу механика.
Кто-то однажды спросил у меня: «Зачем мне знать математику, если я хочу быть программистом?». Я ответил: «Без математики вы не сможете написать огромное количество программ. Как без математики написать пакет с плавающей запятой, движок, нейронную сеть? Конечно, вы можете купить готовый пакет для этого, но я бы остерегался использовать готовые пакеты без понимания, как они работают».
Про то, что учить начинающему программисту
Люди будут ненавидеть меня за это, но я считаю, что первое, что нужно выучить начинающему программисту — это матанализ. Даже если вы не будете потом его использовать, он перестроит ваш мозг. Появится ощущение, что теперь вы можете разобраться с чем угодно.
Мем про матанализ / Meme-arsenal
Потом переходите к машинному коду. Даже если вы будете писать на высокоуровневых языках, если вы хотите понимать, как работает ваш код и видеть проблемы в нем, учите Ассемблер. Вам будет гораздо проще так отлаживать свои программы.
А потом можете переходить на D — вы готовы 🙂
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: