Category: техника

Будущее программирование

Я тут сделал доклад в JetBrains (внутренний, сорян) про будущее IDE. И после доклада было много вопросов из серии “Но ведь будущее определенно за Х, а вы его даже не рассматриваете”. Отвечаю.

— Почему вы не делаете IDE для браузера?

Visual Studio Code Online
Visual Studio Code Online

Делать IDE в браузере особого смысла нет. Да, лет десять назад, на волне успеха Google Docs всем казалось, что сейчас вообще все переедет в веб: и фотошоп, и обработка музыки, и монтаж видео, даже игры пытались. И, разумеется, программирование. Оказалось (внезапно, да) что браузер это довольно неудобная и ограниченная фигня и сидеть в нем добровольно никто не хочет. То есть это и так было понятно, просто лет десять назад казалось, что щас гугл с майкрософтом напрягутся и подтянут веб до нужного уровня. Тогда думать так было нормально. Сегодня это уже наивно, потому что мы видим, что по факту никто ничего никуда не подтянул, наоборот, закручивают гайки и делают из веба платформу для документов. 

Ну и десять лет назад, может быть, кому-то и казалось, что веб это дивный новый мир, но сегодня уже совсем не так ясно, зачем вообще лезть в браузер? От попадания туда у приложений не возникает магически каких-то волшебных свойств, которые невозможно было бы организовать на десктопе. Наоборот, многие полезные свойства гарантированно теряются: шорткаты сильно ограничены, drag-n-drop, файлы, интеграция в систему, перформанс. Зачем, мистер Андерсон, зачем? Если будущее приложений (вообще любых, кстати) и лежит где-то, то точно не в браузере.

— Но ведь есть WebAssembly!

Естественно, в таких дискуссиях неизбежно всплывает веб-ассемблер. Что тоже мне не очень понятно: веб ассемблер это такой способ запустить C++ в браузере. Но тут мы приходим опять же к вопросу: а зачем вообще запускаться в браузере? Что там есть такого, чтобы сначала усложнять себе жизнь, а затем эти проблемы героически решать?

— Но ведь если IDE написать для браузера, ты сразу сможешь запуститься на любом устройстве?

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

Нет, ребята, запинать код — не такая уж и проблема. Проблема — это чтобы продукт выглядел уместно в той среде, где запускается. Чтобы вел себя адекватно. Чтобы интегрировался. Поэтому write once, run anywhere это довольно наивная утопия, посмотрите хотя бы на кошмар UI-библиотек на Java. Гораздо здравомысленнее выглядит подход Flutter, которые сразу говорят: под каждую платформу виджеты свои, пишите дважды. Да, это тяжеловато разработчикам, зато прекрасно для тех, кто будет приложением пользоваться. Оптимизировать разработку продукта под время/удобство разработчика вообще путь в никуда. А если писать UI-код под каждую платформу заново звучит страшновато, то посмотрите на разработчиков игр — они под каждую консоль просто всю игру заново пишут, иногда это даже разные команды. И ничего, живут как-то, игры выходят, оптимизируются под особенности железа, используют фичи платформы. Игроки довольны.

— Ноутбуки говно, будущее за планшетами, ультимативной мобильностью и работой из купе поезда Москва-Владивосток. А что, разве нет?

Да, раз в год в интернете очередной персонаж объявляет год отказа от ноутбуков и программирования на айпаде. Да, так можно сделать. Можно найти способ, придумать, извернуться. Вопрос только: зачем?

Да, когда вышел iPad, никто не понимал, зачем он нужен. Да что уж, тогда и про смартфон было не все понятно. Да, были мысли, что за iPad-ом будущее. Были мысли, что сейчас везде всунут тачскрин, каждый ноутбук станет трансформером, майкрософт вон вообще придумывало, как так извернуться, чтобы приложения работали сразу во всех условиях одинаково. 

Но время прошло. Айпаду уже почти 10 лет, и за это время стало понятно, что у каждого из устройств есть свой sweet spot. Для телефона это приложения, доступ к которым нужен на бегу. Для ноутбука — серьезная офисная работа. Для планшета — чтение и рисование? Так или иначе, у каждой задачи есть свой максимально удобный форм-фактор, максимально подходящий набор приложений, максимально подходящая обстановка. Скажем, для рисования это действительно экран с пером, а не ноутбук, не аудиоколонка и не телефон. Для прослушивания музыки — умная колонка, а айпад с ноутбуком будут overkill. А вот для программирования — десктоп с большим монитором, настоящей клавиатурой и мышкой/трекпадом. Все остальное — компромисс.

Да, можно программировать и на ноутбуке, почти ничего не потеряв. Можно программировать и на айпаде. Можно и на телефоне, наверное, и даже на часах. Вопрос же не в том, как может извернуться человек. А в том, что вот перед вами программист, решивший остаток своих дней посвятить созданию программ. Предположим, чисто гипотетически, что например IntelliJ IDEA УЖЕ существует для всех на свете возможных платформ, включая MiFit. Так вот, зачем, какая сила даже чисто теоретически может этого человека заставить выбрать устройством работы с кодом айпад, а не нормальную рабочую станцию? Даже при прочих равных. Ну не сможет он, бедняга, поехав в отпуск и оставив ноутбук на работе, поправить десять строчек кода. Сможет только (и будет) смотреть мультики с детьми. Настолько ли это большая проблема? Настолько ли частая? И та ли эта ситуация, вокруг которой мы должны строить будущее для всех остальных?

Спасибо, кстати, что хотя бы никто не спросил, почему мы ничего не планируем для VR-а.

— За чем же тогда будущее? На что ориентироваться?

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

Есть несколько универсальных констант, на которые можно ориентироваться всегда и никогда не прогадаешь. Это так же верно сейчас, как было 10 лет назад и как будет через 10 лет.

Во-первых, компьютеры никуда не денутся именно для программистов. Может быть, часть каких-то приложений будет постепенно уходить с них на другие форм-факторы (телефон, планшет, часы), но не IDE.

Кросс-платформенная разработка важна как минимум для трех главных платформ: macOS, Windows, Linux. Пользуясь случаем, хочу напомнить, что настоящий язык по-настоящему кросс-платформенной разработки — никакая не Java, и все еще не JavaScript и уж конечно не WebAssembly, а C++. Вот уж что-то, что действительно runs anywhere.

Скорость всегда будет одной из главных фич любой программы, и уж конечно IDE. Взлет Sublime Text, Atom и VS Code связан не с успехом JavaScript, а с тем, что ждать, пока запустится Visual Studio/XCode/Eclipse/IDEA нет ну никаких сил. Если хотите расширить доступность вашей IDE — надо не выпускать ее под iPad, а лучше снизить потребление памяти вдвое. Пользуясь случаем, напомню, что по части скорости обскакать Atom/VS Code все еще есть куда (с Sublime Text уже сложнее).

Наравне со скоростью всегда будет цениться хороший UX. Буквально, если вам нужно ворваться на рынок IDE — просто берете и делаете нормально. Тут как-то даже и конкуренции особой нет.

Вот, например, я потихоньку собираю скриншоты проблем в Idea и VS Code (для отдельного поста):

Пользуясь случаем, напомню, что количество фич ≠ хороший UX. Мало сделать правильные фичи, нужно еще удержаться и не делать неправильные/ненужные/бесполезные. Feature bloat — анти-фича, и это как раз та дыра, куда сейчас летит VS Code. У них слишком много рук и слишком много свободного времени, поэтому на запуске она уже выглядит как зведолет. А значит, это еще одна возможность обскакать лидера рынка.

В общем, если будете вдруг делать IDE — успехов!

усы2

Впечатления от iPhone после 6 лет Android/Windows телефонов

Наконец вернулся к Apple. До этого отмотал три года на Nexus 5X, перед этим — Lumia 1520 и iPhone 4S. Последний до сих пор у меня лежит, я его даже включаю иногда, чисто поржать — современные приложения занимают примерно верхнюю половину экрана тулбарами, нижнюю — клавиатурой, а между ними остается места на 1-2 строки текста.

Так вот. iPhone 8. Пока свежи впечатления.

Очень маленький. Сильно меньше Nexus 5X, который и сам всего 5,2", мелочь по сегодняшним стандартам. iPhone 8 всего 4,7". Надо было брать плюс. И нет, десятка не спасет, потому что важна ширина экрана, а не высота (ну в кнопки я не попадаю, ну. Пальцы толстые).

Стекло и округлые формы — очень скользкий. Как обмылок. И нет, я не преувеличиваю. Чехлы я терпеть не могу, а без них телефон практически невозможно держать одной рукой, что-то нажимать и чувствовать себя уверенно, что он не выскользнет. Да что там, я даже из кармана каждый раз с опаской его достаю. Понимаю теперь людей, которые кольцо-держатель сзади клеят. Apple Pay вообще атас, по сути ты наклоняешь телефон ровно так, чтобы ему удобно было выскользнуть (от себя), и надеешься только на трение между большим пальцем и кнопкой home.

Лично у меня от одной этой картинки подкашиваются ноги

Кнопки громкости и включения с одной стороны (справа) были как-то удобнее. Наверное потому что большой палец сильнее сгиба указательного.

Приложения сильно веселее и вылизаннее. Тут никакого сравнения. Видно, что для iPhone стараются, даже одна и та же компания. Сбербанк, например, на голову красивее. Речь не о функциях, ничего принципиально нового они конечно не делают, но — анимации (да, не нужные, но приятные, satisfying, и небольшие), какие-то не знаю, переходы, взаимодействия, цвета, иконки. Твитбот, например, очень неожиданно удивил, как можно создать ощущение отзывчивости в условиях, когда Twitter API всем отвечает с одной скоростью.

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

Интеграция с Маком, да, приятная. Сразу начинает какие-то звонки принимать, пароли шарить, использовать сеть телефона, показывать заряд телефона, наушников и т.д. AirDrop опять же.

Даже заряд показывает, лапочка. А ведь его никто этому не учил!

Можно фотки айФоном делать с Мака и сканировать документы. Всё без настроек, само заработало. Ну и приятно, что можно засинкать например контакты, не привлекая в процесс Гугл вообще. Экосистема, понимаешь.

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

Особенно бесит несимметричность камеры. Попасть в камеру — свайп влево, а выйти — по кнопке Home. Постоянно путаюсь.

Перегруженная кнопка Home. Там есть тап, двойной тап, длинный тап, и у них еще разные действия в зависимости от того, где ты находишься. Скажем, двойной тап это либо вызов Apple Pay, либо переключение между недавними приложениями.

А. Ну и иконки наконец все одного размера и формы.

Ну да, Андроид не мог выровнять даже размеры квадратов

Сам iOS тоже не без багов. То страничка не пролистнется, то настройки зависнут. Ну бывает.

Force touch я так и не распробовал. Предполагается что если ты сильно нажимаешь на экран, то это еще одно доп. действие, на которое навешаны какие-то дополнительные интеракции. Например, на Home Screen оно вызывает контекстные меню у приложений, в Сафари приближает картинки и т.п. Ну так вот, из-за того что этот жест в принципе есть, приходится нажимать long tap очень осторожно (т.к. чуть переборщил и уже force touch). А long tap это вещь более старая, более универсальная и как следствие более полезная (перестановка иконок на Home screen например). Одно толковое применение Force Touch все-таки есть — это превращение клавиатуры в трекпад чтобы двигать текстовый курсор.

Еще не понял до конца что делать с нотификациями. На Андроиде нотификации работали четко как инбокс с задачами. То есть они копились, а потом я их разгребал. В связи с этим очень важный жест «разделаться с нотификацией, т.е. убрать ее, отметить как обработанную». Так вот, на iOS как будто чтобы их выкинуть надо ДВА раза смахивать влево, а это капец как муторно. Если смахивать вправо, то оно откроет приложение с этой нотификацией, если влево — меню. А как быстро избавиться? И когда нотификация приходит баннером сверху, тоже непонятно, как ее сразу удалить, а не просто убрать с экрана.

После свайпа нужно либо жмакать Clear, либо свайпать влево еще раз

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

Видишь нотификации? А они есть (надо потянуть снизу, чтобы увидеть)

Неоднозначная навигация. Я люблю как — каждый экран живет ровно в одном месте. А тут допустим экран с виджетами можно вытащить на заблокированном экране слева, в нотификациях сверху или на нулевом экране home screen. То есть три места. Поиск — два (виджеты и любой home screen). Нотификации — два (заблокированный и сверху). Камера снизу из контрол центра, справа на заблокированном экране, сверху из нотификаций и еще просто из иконки. То есть четыре места. Путает короче. На андроиде как было? Два раза нажал питание — камера. Я только этим шорткатом и пользовался, у меня даже иконки нигде не было.

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

скролль прицельно, %username%!

Но в целом все равно iOS приятнее Android. Приложений больше, они качественнее, Cocoa (или как он у них называется) сильно веселее Material, по совокупности всё более причесано и меньше совсем очевидной тупни. Лучше, но всё равно даже близко не «совершенный, идеальный интерфейс», вполне такой себе продукт своего века, с плюсами и минусами, насколько это вообще в человеческих силах.

усы2

КПД веба

Я тут выбрался на природу, а интернет тут только мобильный и только на букву Х (H, в смысле, ну прям не очень). И вот приспичило мне Ютуб-видосик посмотреть, где-то час в 720p.

Вы думаете что это было тяжело и больно? Как раз нет, средствами en.savefrom.net сам видеофайл, 600Mb в итоге скачался за интервал в пару-тройку часов. Мне норм, потому что я получил результат, примерно соответствующий физическим ограничениям и ситуации.

А вот что я не смог, так это открыть youtube.com на ноутбуке (через тот же мобильный интернет). То есть оно пыжилось очень сильно и долго, но максимум, что удалось увидеть — skeleton screen один раз (видимо, был закеширован где-то) и частичный лого в левом верхнем углу в другой раз с буквами «o» и «e» (серьезно, не знаю, как так, но вот так — реально только две буквы загрузились, и именно эти). При этом в network tab девтулов конечно много всякого происходило, что-то передавалось, запрашивалось, тянулось, ломалось, сервисворкеры че-то там шуршали, но результат — пустой экран, сколько не жди.

Ну как бы — а чего ты ожидал, без интернета-то? — но на самом деле чего я ожидал это веб-страницы с несколькими картинками. Просто подумайте — ну насколько сложно это должно быть, и насколько сложно это на самом деле сейчас? В вебе сегодня вообще общее место, каждый первый сайт жирный переросток, собранный из миллиона технологий, работающий только в предположении, что у тебя всё хорошо, тратящий на это в миллионы (106) больше ресурсов, и серверных, и сетевых, и клиентских, чем того требует задача, чем того требует получаемый результат вообще, и все делают вид, что это окей, потому что это поддерживает экономику видимо? Есть повод улучшать сети, покупать разработчикам новые мощные ноутбуки (в mbp mid 2018 можно воткнуть 32Гб RAM и запустить Atom и Slack одновременно!), переобучать их?

Я не разбираюсь, да мне и не очень интересны причины, но это всё чудовищное, просто ненормально гигантское несоответствие между задачами, средствами и результатом, делает меня грустным. Конечный пользователь, я, ничего не получает от того факта, что YouTube сделан на чем он там сделан — Polymer? Angular? — я получаю ту же самую простую веб-страничку с сеткой картинок и подписями-гиперлинками к ним. Еще раз: насколько это сложно? 1 HTML, 1 CSS? Я готов согласиться, что плеер, да, ему там требуется некое количество JS, все-таки нетривиальная задача, и какое-никакое кастомное взаимодействие, но всё остальное-то, боже мой? Зачем? Куда уходят эти тысячи человеко-лет, потраченные на достижение тривиального в общем-то результата непропорционально сложным и обходным путем? Ведь это всё зря, зря, мимо и низачем. Адское трение и чудовищный уход энергии в тепло вместо полезной работы. И тренд на то, чтобы делать хуже. Никто не заинтересован делать лучше. Когда это прекратится? (Никогда, я знаю, но отказываюсь в это верить)

https://twitter.com/cmuratori/status/1018985856843968512

Me: Everyone's web site is way slower than it should be.
Web: That's because they have to scale!
Me: But it seems like things still go down under load.
Web: ...
Me: Amazon runs AWS, and _their_ site didn't even stay up!
Web: Oooh look! Someone released a new JavaScript framework!


усы2

Зуб за зуб

Надо было это написать к анонсу iPhone 7, конечно. Это тот, где убрали гнездо для наушников.

Я всеми руками за беспроводное будущее. Я уже частично там: у меня куча всего беспроводного дома. Только работает оно не очень. В машине мы с женой периодически меняем телефоны — то она хочет музыку послушать, то я один еду — и это всегда небольшая пляска, чтобы телефон соединить, и отдельная — чтобы понять, что он соединился. Предыдущий мой телефон вообще перезагружался, если во время подкаста принять звонок в машине.

Дома у нас беспроводная колонка, которая умеет два одновременных устройства, и это вообще песня: «устройств» как минимум 4, поэтому чтобы послушать музыку откуда ты хочешь, надо как-то их спаривать, а на колонке, разумеется, «одна кнопка™» (с логотипом bluetooth, ни больше ни меньше) и что происходит вообще не очевидно.

Ну и эти веселые ситуации, когда проигрывание музыки/фильма прерывается секунд на 5, чтобы второе подключенное устройство (не специально, конечно, просто отспарить их еще сложнее, чем спарить) произвело какой-нибудь «пук» на нотификацию и отключилось обратно. Короче, колонка эта у нас проходит по категории «самый ненавистный предмет» и сейчас подключена проводом к стационарному компу. Двумя проводами даже: аудио и зарядкой.

Эппл-трекпад радует меня тем, что на каком-то расстоянии (ноут взял в соседнюю комнату) или по таймауту неактивности намертво отконнекчивается от макбука. Намертво — это не значит, что устройство пропадает, нет, устройства как раз друг друга видят, но разговаривать категорически отказываются. И никакое количество включений/выключений/сбросов/передобавлений это не лечит. Только перезагрузка ноута. Что характерно, после перезагрузки коннектится он легко и непринужденно. То есть всё в целом было в порядке, просто не хотели разговаривать. (видимо, какой-то драйвер в компе дохнет и не рестартует)

Или как я ночью перед конференцией пытался минут 20 заставить айпад и макбук увидеть друг друга по AirDrop, чтобы перекинуть слайды (макбук видел айпад, а мне надо было в обратном направлении гг). В итоге сделал через шнур и iTunes. И это всё эппловское, а не разных китайских производителей! Экосистема проявляется, разве что, в том, что Nexus 5X с макбуком соединить по bluetooth я в принципе не смог. Нерешаемая задача. Не хотят, и всё тут.

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

Я не знаю, но наверняка есть какая-то техническая причина, почему нельзя сделать нормально? Почему этот вот discovery такой ад? Почему устройства не хотят говорить? Из всего bluetooth-зоопарка у меня не было ни одного беспроблемного устройства. Ни одного! Единственно 100% надежно работающее беспроводное у меня дома — это микрософтовская клавиатура с USB-ресивером. Втыкаю/перетыкаю его по десять раз на дню, и всегда всё подхватывается мгновенно. Вот они как-то добиваются беспроблемной работы?

И в целом я был только рад, когда эппл выкинул CD-ROM — интернет и флешки тогда уже работали. Когда убрали Ethernet порт, уже был WiFi и он работал. А вот с блутусом как-то до сих пор не полетело.

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

усы2

AnyBar: OS X menubar status indicator



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



Использую лично я для индикации состояния билда (вот плагин для boot-clj). Билд крутится в терминале, а так как экранчик у ноутбука маленький, то терминал на заднем плане где-то. Если сломалось — сразу видно по статус-бару. Вот видик, показывающий, как это работает, на старой версии.

Исходники и ссылка на скачивание на гитхабе:

https://github.com/tonsky/AnyBar

Вступайте в фан-клуб, в общем.

Ну и похвастаться:

(no subject)

Наверняка, многим серьезным веб-программистом преходилось испытать неприязнь, когда они узнавали, что чтобы выложить веб-сайт надо еще изучать пхп. Все соглашаются (и в интернете я тоже читал) что это очень, очень плохой язык. Это на самом деле глупость и когда я прочитал я долго не мог поверить ходил спрашивал и оказалось не зря. Тепер ьвеб-сайты можно писать на самом популярном в мире языке джаваскрипте. Это революционный переворот и он происходит прямо на наших глазах. Что это значит для нас, ребята? Что мы уже знаем, как писать сйты по сути. Я был шокирован, как там все организовано, но похоже они все вопросы продумали с самого начала и договорились что это будет очень востребованный проект.Более того, умные C++ перцы из гугл которые по утрам ездят в автобусах набитых баскетбольными мечами уже работают над тем, чтобы джаваскрипт работал быстрее С++, потому что он комплируется сразу в результат, минуя стадию вычисления! Вы наверняка заметили это по тому, что gmail.com открывается за 5 секунд, а не 20 как это было в до-интернетную эпоху, может хотя бы самые древние. Его кстати тоже делали в гугл. Что это если не порыв я не знаю. То есть, если вы напишете свой сайт на nodejs, он автоматически будет бытсрым и будет масштабироватсья (обрабатывать столько клиентов, сколько пришло, это настоящая проблема в пхп была и некто не знал как с ней быть). Например, данные между разными запросами не изолированны и вообще можно использовать одни и те же глобальные переменные для всех клиентов и экономить память. В том же пхп это в принципе не возмонжно и засчет этого у ноды такая гиганская производительность. Там даже продумано если вы будете работать с другом или кто-то допустим, то я зык специально за счет очень удобной типизации можно писать так что вы не будете знать что и как вам передает ваш друг. Это очень удобно потому что позволяет меняь програму в одном месте и вообще не парится о том же друге что там у него програма все равно запустится.Только представьте! Любой кусок кода можно насать один раз. Например, функцию, переворачивающущю строку, и вызывать ее из браузера или включать музыку с телефона. Особенно если заморочиться совместимостью северного кода и особеностей разных браузеров. Также они добавили возможность создавать внутри функции другие функции и это очень круто, но я пока не понял как потом вернуться в первую функцию. Но самое главное, что над нодой сейчас работает туча народу просто, они переписывают все что было до них написано на ноду и у них получается лучше потому что они сразу заточились на производительность и чтобы было лучше а так же просто использовать. Например нужно сходить в базу данных создал проект на гитхабе сразу набежали форкнули завтра только пуллреквесты принять и можно заливать в продакшн на свой ноутбук. Сообщество очень дружелюбное, если кому-то удается сделать что-то работающее на ноде его обязательно хвалят и подбадревают потому что это правда успех. Я пока не понял как допустим считать файл но говорят эт из-за безопасности,там все очень надежно, ведь если к тебе вдруг идет миллион клиентов и вы облажаетесь в 10% случаев ты облажаешься перед 100 000 человек. Поэтому например если где-то произошла ошибка лучше сразу аккуратненько завершиться чем пазориться перед остальными, тем более если перезапустить сервер то там и память лишняя освободится и бегать начнет пошустрее, да и перезапускается он очнь бытсро. Иногда бывает быстрее перезапустить сервер чем дождаться окончания сборки мусора. Ктому же nodejs так оптимизирован что никогда не займет больше одного ядра а это значит что базу данных например можно поставить на тот же ноут на другое ядро для экономии ресурсов и надежности (иметь что-то на той же машине всегда надежнее, много ли что, все у кого есть дома интернет вы это итак знаете) и все будет быстро бегать и даже можно во что-нибудь пошпилить или дальше форум по nodejs почитать но тогда надо побольше ядер купить. Но в серверы как раз много ядер и ставят и как видите nodejs прекрасно справляется с этой задачей. Правда что бы писать на ноде нужно купить макбук потому что все примеры в интернете написаны на мак буке но я думаю если выделаете высокопроизводительный веб-сервис, вам всеравно прийдется пройти раунд финансирования у родителей чтобы потом его запускать. Вообщем я в восторге хотя немного напрягает что гдето должны быть проблемы но я пока не понял не столкнулся ая уже очнь долго с ней разбираюсь и пока не понял.