Беседа с основателем Node.js Райаном Далем

внешний интерфейс Информация
Беседа с основателем Node.js Райаном Далем

Он авторизует общедоступную учетную запись 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 по двум причинам.

  1. Я очень хорошо знаком с ним и могу быстро кодировать с ним. Мне нравится работать с ssh и tmux, и я наслаждаюсь безмятежностью полноэкранного терминала.
  2. Важно, чтобы программная инфраструктура была текстовой и доступной с помощью простых инструментов. В мире 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,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.