{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Главные мысли из интервью создателя Java Джеймса Гослинга

Джеймс Гослинг придумал изначальную архитектуру языка программирования Java, написал для него первый компилятор и виртуальную машин. А DevRel Evrone Григорий Петров поговорил с ним о взглядах на языки, их возможности и решения, которые ежедневно используют тысячи разработчиков. Полный текст интервью вы можете прочитать по ссылке, а здесь мы публикуем самые интересные высказывания Джеймса Гослинга.

О пользе исправлений

«Каждое новое изменение, которое что-то ломает, делает больно всему сообществу. Если у тебя не так много программистов, такие изменения не проблема. Кроме того, нужно думать о балансе стоимости и пользы от этих изменений. Меняя что-то, ты добавляешь боли, но одновременно добавляешь и новые возможности».

О разнице статических и динамических языков

«Для однократных применений динамические языки работают довольно хорошо. Если важно постоянство, то стоит использовать все инструменты для статического анализа, какие найдешь. Но не всегда это нужно. Например, если ты физик и хочешь прямо сейчас получить результат какого-то вычисления, то достаточно сделать его ровно один раз. Всё зависит от контекста. Чем более надежным должен быть софт, тем больше помогают статически типизированные языки».

О производительности

«Чтобы действительно получить повышенную производительность, очень помогает иметь статически типизированный язык. Для динамических языков, вроде Python, это очень сложно. Обычно люди справляются с этим, добавляя аннотации: так получился TypeScript, который, по сути, все тот же JavaScript, но с аннотациями типов. И это вдвойне забавно, потому что JavaScript — это Java без объявлений типов. По сути, TypeScript — это Java с другим синтаксисом».

О скорости

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

О корутинах

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

О подходе к обучению

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

О pattern matching

«Думаю, если назвать эту конструкцию „type case“, это будет отлично. Но если называть это „pattern matching“, это звучит как обман или ложная реклама, ведь оно не дает столько же возможностей, как настоящие регулярные выражения. Но как возможность — это здорово».

О приоритетах

«Когда я начинал делать Java, одно из моих личных правил состояло в том, что я не хочу отлаживать странные проблемы с испорченной памятью. Я слишком много дней жизни отдал на починку таких багов. Которые зачастую заключаются в том, что кто-то в цикле перезаписал конец массива на один лишний элемент, и ты обнаружишь это много позже, через миллион инструкций. Ненавижу искать такие баги».

0
Комментарии
-3 комментариев
Раскрывать всегда