- Оригинальный адрес:Interview with Ryan Dahl, Creator of Node.js
- Оригинальный автор:Ryan Dahl
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:
- Корректор:Chorer,zenblo,lsvih
Он авторизует общедоступную учетную запись WeChat: используется интерфейсный класс утреннего чтения, включая, помимо прочего, редактирование, пометку оригинальности и т. д.
Беседа с основателем Node.js Райаном Далем
предисловие
Райан Даль — основатель Node.js и один из первых разработчиков сред выполнения Deno JavaScript и TypeScript. Мы хотели бы иметь возможность поговорить с Райаном о некоторых других проектах, над которыми он работал, и основных проблемах, с которыми сталкивается Deno, узнать его мысли о будущем JavaScript и TypeScript, узнать больше о сторонней экосистеме Deno. проектов и обсудить Если бы он мог вернуться в прошлое, как бы он изменил разработку Node.js!
опрос
Еврон:Ваш новый проект для разработчиков Deno оказал значительное влияние. Вы бы сейчас большую часть времени, что делать?
Райан:Я работаю над Deno большую часть времени! На самом деле Deno — это довольно большая коллекция программного обеспечения, которое мы помещаем в исполняемые файлы. В настоящее время мы улучшаем среду выполнения Deno, а также работаем над внедрением инфраструктуры в коммерческие проекты.
Еврон:У вас есть практический опыт работы с несколькими языками программирования, такими как C, Rust, Ruby, JavaScript и TypeScript. На каком языке вы предпочитаете развиваться?
Райан:В эти дни я обнаружил, что написание кода ржавчины наиболее интересна. Его кривая обучения очень крута, и она не подходит для многих сценариев, но для того, что я сейчас изучаю, это действительно идеально, намного лучше, чем C ++ - я твердо верю, что я никогда не начну начать новую. C + + проект. Rust имеет такую простую способность выражать механические языки низкого уровня, это действительно здорово!
JavaScript никогда не был моим любимым языком, это просто самый распространенный язык, и поэтому мы используем его для выражения многих идей. Я не думаю, что TypeScript — это самостоятельный язык, ведь его преимущество в том, что он расширяет JavaScript. TypeScript позволяет людям создавать более крупные, надежные и надежные системы с помощью JavaScript, и я думаю, что это будет предпочтительный язык для моей повседневной работы.
В Deno мы пытаемся упростить перевод кода TypeScript в JavaScript, что, как мы надеемся, позволит большему числу разработчиков использовать TypeScript.
Еврон:
Райан:
Еврон:Как уважаемый пользователь VIM, что вы думаете о таком современном редакторе кода, как VS Code? Дружелюбны ли они к разработчикам старшего поколения?
Райан:Все, что я работаю с использованием VS-кода. Они любят это, и я думаю, что большинство людей должны пойти, чтобы использовать его.
Я продолжаю использовать VIM по двум причинам.
- Я очень хорошо знаком с ним и могу быстро кодировать с ним. Мне нравится работать с ssh и tmux, и я наслаждаюсь безмятежностью полноэкранного терминала.
- Важно, чтобы программная инфраструктура была текстовой и доступной с помощью простых инструментов. В мире Java разработчики допустили ошибку, слишком сильно связав IDE с миром языка, создав ситуацию, когда люди фактически были вынуждены использовать IDE для написания кода Java. А с помощью простых инструментов я могу убедиться, что разрабатываемое мной программное обеспечение не зависит от IDE без необходимости. Если вы попробуете grep вместо перехода к определению, вы обнаружите, что косвенный переход к определению невыносим. Для того, что я делаю, я думаю, что это приводит к лучшему программному обеспечению.
Еврон:Среда выполнения Deno демонстрирует возможные способы устранения давних проблем с управлением зависимостями, безопасностью и многим другим. Вы хотите, чтобы это было похоже на Haskell место для экспериментов, или вы хотите использовать его как лучший вариант для чего-то?
Райан:Не принимайте новизну за эксперимент, Deno определенно практичен и основан на многолетнем опыте работы с серверным JavaScript. Мои коллеги и я работаем над созданием практичных динамических языковых сред выполнения. Наш выбор дизайна в отношении управления зависимостями и безопасности очень консервативен. Мы могли бы легко внедрить другую централизованную систему, аналогичную NPM, но выбрать систему ссылок, основанную на стандартных веб-URL. Мы, конечно, можем легче открывать различные дыры в безопасности в файловых системах и сетях, но вместо этого мы предпочитаем управлять доступом так же тщательно, как это делают браузеры.
Deno — это новое программное обеспечение, что делает его непригодным для многих случаев использования. Но Deno также представляет собой большую кодовую базу Rust с отличной скоростью, стабильным и успешным управлением CI и регулярными запланированными выпусками. Вы говорите, что это эксперимент, это не эксперимент!
Еврон:В 2020 году Генеральная ассамблея большинства разработчиков программного обеспечения стала «онлайн» и «виртуальной» встречей. Вы пробовали участвовать в этой новой форме конференции? Каково ваше мнение о них?
Райан:Да, но теперь я избегаю онлайн-встреч. Для меня лучшая часть встречи — это «коридор» (имеется в виду сеть), который является ключевым аспектом, отсутствующим в онлайн-встречах. В свободное время я предпочитаю смотреть выступления на YouTube на удвоенной скорости. Надеюсь, я смогу посетить некоторые невиртуальные конференции позже в 2021 году.
Еврон:Идея децентрализации графа зависимостей из одного файла в один файл с исходным кодом была подхвачена Webpack и получила высокую оценку многих разработчиков. Но управление зависимостями было сложной задачей, и Node.js потребовались годы, чтобы перейти с Common.js на ESM. Какую основную проблему управления зависимостями вы пытаетесь решить с помощью Deno?
Райан:Браузеры не используют CDN для распространения JavaScript. Децентрализованный характер Интернета является его самым большим преимуществом, и я не понимаю, почему это не сработает и для серверного JavaScript. Поэтому я надеюсь, что Deno не зависит от какой-либо централизованной базы данных кода.
Еврон:Python и JavaScript соревнуются, PK является лучшим языком программирования общего назначения для начинающих разработчиков. Что Вы думаете об этом?
Райан:Языки сценариев отлично подходят для начинающих. По сути, языковые системы Python и JavaScript очень похожи, но имеют разный синтаксис и немного разную семантику. JavaScript регулируется Комитетом по международным стандартам, работает везде, на порядок быстрее (по сравнению с V8 и cpython) и имеет большую пользовательскую базу. Для некоторых областей доступно больше библиотек Python, особенно для научных вычислений. То, что хочет разработать начинающий программист, зависит от человека, и Python может подойти. Но в целом, я думаю, JavaScript — лучший язык для начала.
Еврон:имеет основной поток и малыйhandler
Примеры асинхронных одновременных Callable объектов являются одним из краеугольных камней Node.js. Теперь эта идея посредством новыхAsync / Await
Райан:
epoll
,kqueue
) построен. JavaScript по своей сути является однопоточной системой, поэтому один экземпляр Node или Deno обычно не может использовать все ядра ЦП в системе, не начав создавать новые экземпляры. Node/Deno — лучший выбор для JavaScript, но при отсутствии других требований, которые могут благоприятствовать JavaScript, Go в конечном итоге является лучшим выбором для систем с высокой степенью параллелизма.
Еврон:Каким вы видите будущее JavaScript и TypeScript, учитывая такую большую конкуренцию, особенно в том, что касается бэкенда, встраиваемых систем и машинного обучения (ML)?
Райан:Динамические (или «сценарные») языки** очень полезны. Проблемы, которые приходится решать программистам, обычно не привязаны к центральному процессору. Проблема больше ограничена временем разработки. Еще более важна возможность быстрой разработки и развертывания. Среди динамических языков JavaScript (обычный или типизированный) является самым популярным и, безусловно, самым быстрым. Я считаю, что в будущем единственным динамическим языком, который нам нужен, будет этот странный эволюционный язык, полученный из веб-браузеров. С Deno мы пытаемся устранить барьеры для применения JS в тех областях, где он используется редко, например, в машинном обучении. Например, мы можем добавить поддержку WebGPU в Deno, что позволит легко программировать графический процессор «из коробки», что в конечном итоге позволит запускать такие системы, как TensorFlow.js, в Deno.
Как упоминалось ранее, динамические языки имеют свои ограничения и подходят не для всех предметных областей. Если вы программируете базу данных, лучше всего писать на языке, который дает вам максимальный контроль над вашим компьютером, таком как Rust или C++. Если вы пишете сервер API с высокой степенью параллелизма, трудно представить лучший выбор, чем Go.
Еврон:Современные операционные системы и новая среда выполнения Deno вводят детализированные разрешения для противодействия рискам безопасности стороннего программного обеспечения и зависимостей. Однако могут ли конечные пользователи и разработчики, использующие зависимости, принимать правильные решения при «разрешении» и «отклонении» запросов безопасности приложений? Что вы думаете о риске автоматического нажатия «разрешить все», как большинство из нас делает через несколько лет, как большинство из нас делает сейчас с «подтверждениями безопасности» файлов cookie веб-сайта?
Райан:Всплывающие окна с файлами cookie на веб-сайтах — не лучшая аналогия — это довольно бесполезный юридический побочный продукт. Еще лучше встроенный диалог с надписью «Разрешить этому веб-сайту доступ к вашей камере», «Разрешить уведомления на рабочем столе» или «Разрешить этому веб-сайту видеть ваше местоположение». Это не бесполезно, это довольно важные функции безопасности.
Программист запускает на компьютере множество различных программ автоматизации, ни у кого нет времени просмотреть весь код, который они хотят запустить, недостаточно запустить весь код в контейнере Docker: он изолирован, когда вы запускаете LINT? Нет, ответ таков: вы должны верить, что скрипт Lint не разрушит вашу систему. Я думаю, что очень удобно разрешить пользователям просматривать и отказываться от ненужного доступа к системе.
Еврон:Новая концепция «полного стека» подталкивает разработчиков к одновременному написанию внешнего и внутреннего кода, и теперь гораздо проще использовать один и тот же язык и общий стек, такой как TypeScript. Как вы думаете, это хорошая идея для многих разработчиков включать так много разных вещей в свою повседневную работу?
Райан:Снижение сложности всегда полезно. Чем меньше языков, виртуальных машин, фреймворков и концепций приходится взаимодействовать программисту, тем лучше.
Еврон:Как вы планируете обрабатывать обновления версии для самого языка TypeScript? В экосистеме Node.js обновления синтаксиса JavaScript с использованием движка V8 часто приводят к неправильной работе определенных пакетов.
Райан:Язык TypeScript почти полностью функционален. Пользователи, полагающиеся на самые современные языковые функции, могут столкнуться с нестабильностью, пожалуйста, не делайте этого.
Еврон:Что вы думаете о хорошем образовании для разработчиков программного обеспечения? Нужна ли нам «наука» (например, «компьютерная наука») со всеми математическими, алгоритмами и структурами данных, или нам нужно что-то еще?
Райан:
Еврон:У вас есть очень любимый Deno реализовал третьимперийный проект ECOSYSTEM?
Райан:Да, конечно есть:
- Фреймворк React
- Сетевой фреймворк (например, Express)
- Веб-интерфейс для настольных приложений
- Кукловод (такой же, как манипулятор в Node)
- Визуальная блок-схема
- Минимальный, но гибкий генератор статических сайтов
Еврон:С появлением социальных платформ, таких как GitHub, отдельные разработчики и крупные корпорации теперь могут легко использовать открытый исходный код и вносить свой вклад. Считаете ли вы, что это «золотой век открытого исходного кода» или вы думаете, что все еще есть некоторые основные проблемы?
Райан:Теперь это определенно открытый исходный код, и ситуация с лицензированием хорошо известна и решена. Остаются открытыми вопросы о модели стимулирования обслуживания, и, возможно, спонсоры GitHub помогают в этом направлении. Это лучше, чем было раньше, но я надеюсь, что мы сможем найти способ, при котором люди, поддерживающие важные части программного обеспечения, смогут независимо оплачивать свою работу.
Еврон:Deno уже некоторое время отсутствует, каковы основные технические проблемы проекта прямо сейчас?
Райан:deno lsp
Еврон:Наш классический вопрос о путешествии во времени: если бы время могло повернуть время вспять, так что вы просто начинаете разрабатывать свой собственный молодой Node.js предложение, были бы какие-либо предложения?
Райан:На заре Node я не был уверен, что начинающие программисты смогут легко использовать асинхронный ввод-вывод в крупных проектах. Я прочитал лекцию и сделал это заявление, но я не уверен, как это исправить. Если бы я мог вернуться в прошлое, я бы уверил себя, что это сработает. Я также скажу себе, что Node станет важной частью программного обеспечения и что большие проекты программного обеспечения требуют другого внимания, чем небольшие проекты: бюджетирование, коммуникация, организация. Я бы посоветовал себе уделять больше времени этим мета-вопросам.
Еврон:Какой-нибудь совет разработчикам, которые хотят поддерживать Deno через пакеты npm?
Райан:Используйте модули ES и проверьте наш уровень совместимости Node.
В заключение
Мы были рады поговорить с Райаном и узнать больше о его жизни, мыслях и планах. В Evrone мы часто используем Node.js для создания индивидуальных решений для наших клиентов. Спасибо за прочтение!
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.