Micrоsoft покупает NPM

Компания NPM Inc, контролирующая разработку пакетного менеджера NPM и занимающаяся поддержанием репозитория NPM, объявила о продаже бизнеса компании Microsoft. В качестве покупателя в сделке фигурирует компания GitHub, функционирующая в качестве независимого бизнес-подразделения Micrоsoft. Сумма сделки не называется.

www.opennet.ru/...​nnews/art.shtml?num=52554

blog.npmjs.org/...​007680/next-phase-montage

github.blog/...​16-npm-is-joining-github

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn

Лучшие комментарии пропустить

Все: обоже, новый кризис, надо срочно покупать доллары
MS: срочно покупаем дол.... стопэ, у нас уже есть доллары. Что еще можем купить?
Кто-то: NPM
MS: бокал шампанского этому господину, покупаем NPM

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Интересно, а для чего покупать пакетный менеджер ?! У меня как-то не укладыватся какой из того можно извлечь профит.

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

В идеале исключат мусорные библиотеки от кретинов с 100500 зависимостей, там внизу Алекс кидал либу для определения четных чисел и либу для нечетных чисел, у каждой дофига зависимостей. На практике — хз.

В идеале исключат мусорные библиотеки от кретинов с 100500 зависимостей

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

Вообще, маленькие библиотеки многим нравятся так как они помогают уменьшить размер билда (важно на фронте). Если мне нужно выполнять арифметику без ошибок округления — я беру mathjs. Если кому-то нужно только проверить число, он может взять is-number. Lodash есть в npm как одним куском, так и отдельные функции. И это удобно — зачем мне тащить весь lodash, если мне нужна одна функция?

«И это удобно — зачем мне тащить весь lodash, если мне нужна одна функция?»

Мда, а в языках без VM есть статическая линковка...

а в бандлерах(webpack etc) есть tree-shaking. Правда, в отличие от «языков без VM» файл может импортиться, не использоваться напрямую, но менять глобальное пространство имен("Date.prototype.customToString«, «window.jQuery = function() {}», «setInterval(...)»), потому там надо дополнительно это описывать.
Плюс, как-то не стало популярным, потому ответы на вопросы может быть сложно найти.

Правда, в отличие от „языков без VM” файл может импортиться, не использоваться напрямую, но менять глобальное пространство имен("Date.prototype.customToString„, „window.jQuery = function() {}”, „setInterval(...)”), потому там надо дополнительно это описывать

Мимо, у swift, objective-c, c# (хотя там вроде есть vm?) есть type extensions:

docs.swift.org/...​uageGuide/Extensions.html

developer.apple.com/...​a-CocoaCore/Category.html

docs.microsoft.com/...​structs/extension-methods

т.е. это заденет другие программы, которые уже были скомпилированы? я правильно понимаю?

Чего только не придумают чтобы не использовать staged programming.

А кто заставлял других «кретинов» их использовать?
Там вообще любят зависимости. Даже ради банальных вещей хотят тянуть пакет- чутка багов пытаюсь закрыть, так ради фикса получения ссылки на глобал скоуп в EE2 в одно строку, на ревью хотят тянуть пакет «global» в зависимости, что ж уж говорить о пакетах по меньше.
Но да, есть куча накрученых пакетов, которые четенько раскручивают друг друга по зависимостям, которые имеют миллионы загрузок в неделю. Кто ж их раскрутил, как не выдающиеся разрабы, ищущие на is number пакет в npm. Или крутой npm пакет number-is-nan с 10 лямами загрузок в неделю. Люди ментейнят пакет, функционал которого для нормального разраба сводится к x!==x но люди качают, напрямую или в зависимостях. При этом еще и проверяют сначала является ли переменная числом, чтобы потом выполнить быстрое сравнение. Кажись самый офигенный пакет в npm) Благо покрыт тестами)

x!==x
null !== null
false

Не всё так однозначно

null !== null
false

Эм... Ну так и это правильно :) Эта функция+выражение проверяет являеться ли x псевдотипом NaN. A Null это не NaN. Это не какой то там isNotLikeNumber(x) который реально проверяет не число ли это, а Number.isNaN(x)

Что-то не сходится

3 !== 3
false

UPD Полнял что имеете в виду, но так для этого можно и isNaN вызвать. Но многим нужно именно проверить не число ли это. При заполнении пользователем формы даже тип не особо интересен (из инпута строка придет все равно)

Да, я же о том и говорю- тот пакет делает именно полифил Number.isNaN, который сводиться к банальному x!==x и ничего не приводит к числу

module.exports = function (value) {
	return typeof value === 'number' && value !== value;
};
Хотя в данном контексте typeof value === ’number’ вообще бесполезен и только замедляет, ибо только NaN не равно самому себе.
пользователем формы даже тип не особо интересен

но загрузок 50 лямов в месяц, 120 использующих его пакетов.
Еще и предлагают

Get professional support for this package with a Tidelift subscription

:))
P.S. и когда настанет тот день, когда dou сможет по-людски кодовый блок рендерить...

Добавить платный сапорт. Некоторым компаниям запрещено использовать бесплатное программное обеспечение.
Контроль за пакетами. По идее можно ввести модерацию, и блочить конкурентов.

NPM уже давно прайсит ряд вещей
www.npmjs.com/products

Сложно, что ли поклацать офф сайт

Прайсит не значит с того имеет больше чем на поддержание штанов. Тот же MySQL купили не потому что он приносил хорошие деньги за счет платного сапорта.

Там существовали аккаунты организаций платные. Они не приносили столько, сколько хотели инвесторы, но тем не менее. Кроме того, гитхаб в прошлом году релизнул фичу для хостинга пакетов, поэтому по сути они выкупили конкурента. А это и технологии, и пользовательская база

А это и технологии, и пользовательская база

Вот в пользовательской базе есть смысл. Технологии у мелокософта есть какие угодно.

Вот будет веселуха если Мs купит CocoaPods

Фаундер должен быть доволен, как и выкидывавший людей на мороз в прошлом году менеджмнент

Все: обоже, новый кризис, надо срочно покупать доллары
MS: срочно покупаем дол.... стопэ, у нас уже есть доллары. Что еще можем купить?
Кто-то: NPM
MS: бокал шампанского этому господину, покупаем NPM

Теперь npm будет пропускать только сертифицированные пакеты, а издатели должны будут отваливать мелкомягким баблишка за сертификацию?

если выкинуть мысор из npm то там будет пусто

Тепер я розумію, чому реактовський інсталер тягне 100к пакетів.

Чтоб дерево побольше было. И 32 модуля его используют

Лучше уж так, чем тонны мусора вроде

И как определять мусор или нет. Вот к примеру
www.npmjs.com/package/redux-thunk
и код этого «пакета»
github.com/...​/blob/master/src/index.js

Ценность у данного пакета не столько в коде, сколько в том что к коду идут понятные примеры использования. Это готовое решение популярной проблемы, оформленное в пакет npm. Автор мог просто написать запись в блоге и выложить там код функции, но пакетом действительно удобнее пользоваться, чем копипастить код руками.

Та спору нет, проблема типичная и важная, но реально пакет из 14 строк кода. Я лишь к тому, что не понятно как различать вот это шлак, а это хоть и 14 строк, но больше 1м скачиваний.

Шлак вообще понятие относительное

как найти классные игры в Steam? как найти удобные приложения в PlayMarket?
перебор. поиск. отсылки.

Так никто же не заставляет тебя их юзать)

Они имеют свойство подтягиваться транзитивно, и во многих есть уязвимости

npm audit --fix

Это так сложно? Иногда вообще уязвимости никак не касаются проекта, если это фронт, а уязвимость только в девелоперских зависимостях

но все ж он прав, над транзитивными зависимостями контроля не имеем. а случай с event-stream который тырил биткоины или шо он там делал, показывает, шо и на девелоперских зависимостях можно поживиться.
правда, отказываться от зависимостей — тоже так себе решение.
тупик.

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

Скайп был ужасен всегда.

Да ну? Пока его не продали мелкомягким и эстонцы ваяли он был отличен. Но это было так давно, можно сказать чуть не до рождения большинства доучан.

До мелкомягких скайп был топчиком, да еще и плагины поддерживал.
И до того как его переписали на ссаный электрон он не лагал)

До этого его успели продать джва раза. МС его купил уже, повидавшим некоторое дерьмо.

В 2007 году на узком канале аудио вечно уходило в рассинхрон — при этом сейчас современный дискорд нормально работает с эдж соединением на телефоне.

В что ли 2010 году рейдил в WoW и какие-то извращенцы в пуге вместо того, чтобы пустить всех на гильдийский сервер тимспика или вентрило, собрали 10 человек в конфу скайпа. Лагало неимоверно даже с лидером конфы сидящим на 100мбпс канале. Не говоря о рейдах на 25 чел.

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

«Топчик».

эээ, вы с гуглом не путайте.

Учитывая его «развитие» в последние 2-3 года, ему был бы рип, если б его никто не купил.

Ну может хоть МС запилит вменяемый IDE для фронта, где будет все из коробки, а не из гомна и палок.

каким боком ide к npm? И они и так уже запили vscode, ничего нового пилить думаю не будут.

по идее, если они хотят быть в топчике, то или перепишут vscode на c#+ кросплатформенный гуи, либо сделают транслятор js->c# + кросс гуи

они уже сделали свой выбор — Blazor, и активно его развивают.
Не очень понимаю, что даст переписывание vscode?

престиж и перспеквтиность языка, это как быть директором автозавода и ездить на машинах конкурента

Сомнительный аргумент.

Blazor, и активно его развивают.

Не получится как с Silverlight?

Вполне может и получится, тут гарантий нет :) Инновации по другому не делаются.

ХЗ, если б я знал то сидел бы в МС каким-то синьор принципал манагер дайректор визионер .

Просто когда педалишь на C# .Net в VisualStudio и переходишь во фронт разработку, такое впечталение переходишь со звездолета на старую ладу.

Я бы предпочел в браузере аналог msil, есть компилятор который переколбашивает любой тебе понравившийся язык во msil, а среда его уже исполняет, в итоге в паре с хорошей ide никакого богомерзкого жабоскрипта и еблей с модулями и прочей сборокой проектов и дрочкой с этим в браузере и все это делается в одной среде.

Просто формолешпишь не вникая в то как собирается/билдается/компилится/устанавливается/исполняется проект. А если и лезешь туда то только когда именно тебе это надо, а не пытаешься собрать баттлкрузер из говна и палок.

В вижуал студии 2019 все это есть в полной мере. Asp.NetCore + React/Angular — проект сам качает модули, билдит, бандлит, поднимает нод сервер и там же в вижуал студии можно ставить брекйпоинты, дебажить javacript/typescript.

Я бы предпочел в браузере аналог msil

попытки были, и я не о флеше, и других джава апплетах прикручиваемых сбоку.

когда начало назревать вебдванолье(многие ли помнят этот хайп уже?), стало понятно что html как-то не очень годится. xhtml тоже как-то не исправлял ситуации (и деятельность рабочей группы XHTML 2.0 была прекращена в конце 2010 года, а все ресурсы перенесены в рабочую группу HTML5)
XUL...

причем тогда еще не стояла так остро проблема совместимости.

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

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

а революционно думаю отрасль, вместе с наукой не готовы. и даже не по причинам проблем с совместимостью

при всем опыте виртуализации, пока не видно добротного подхода к универсальной виртуальной машине для UI
частные случаи есть. только под линукс там зоопарк движков, затрудняюсь даже их родословную определить, какой Wayland какому GTK кем приходится, и «кто на ком стоит»

а общего подхода к GUI-VM как-то не видится...
может не знаю просто

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

да, корпоративные интересы усугубляют и без них технически непростую задачу

Я — наоборот: устал вычищать Студию от «рекомендованных» настроек, которые все-равно не способны помочь ни с независимым реакт проектом, ни со связанным с билдом. ФБ уже сделал create-react-app, чтобы не думать о «собирается/билдится/компилится». Остальные фреймворки пусть «страдают»

Остальные фреймворки пусть «страдают»

В остальных тоже есть свои рекомендованые утилиты, которые позволяют не думать о том как оно там собирается

А как же WebStorm и PhpStorm? Или они тоже из говна и палок?) Сам их не юзал, просто интересно)

Вебшторм оуенный. Круче вскода.

Ну они из говна и палок, судя по загрузке проца, но современные процы тащат, такчто все офигенно.
Ну пока твой проект меньше 10к строчек кода на файл.

МС запилит вменяемый IDE для фронта,
МС запилит вменяемый

Очнись, где М$ а где вменяемость?

Вижуал студио отличная IDE.

Была, давно уже. 2005 еще можно было юзать. А дальше гадость и с каждой новой версией все большая гадость.

Для дотнетчика все отлично, много фишек решарпера перетянули.

Ага, и студия наконец перестала фризиться, когда окно интеллисенса отрисовывается :))

Ща пойдет волна троллпикч с нпэмом с дизайном экселя/виндоус.

Надеюсь чтобы закрыть эту черную дыру?

Microsoft что-то знает?
о будущем JS/TS и хочет запрыгнуть в поезд?
или просто обычная скупка всего что набрало популярность?

много денег, надо вкладывать , тк инфляция растет, проще купить актив который не дешевеет, чем держать в кеше или акциях которые дешевеют

это понятно
но между вложить деньги, и выбросить деньги — все же разница

почему они решили вложить в
«Самый неправильно понятый язык программирования ставший самым популярным»

и конечно интересно — пойдет это на пользу. об node_modules спотыкались все хоть как-то причастные...

почему NPM это выброс денег?
популярен, замены нет, будут еще пользоваться несколько лет, можно повтыкать свои технологии, отслеживтаь статистику, брать популярные пакеты под свой контроль и тд

почему NPM это выброс денег?

значит вложение
а вложение подразумевает — получение бОльшего количества денег в последствии.

популярен, замены нет, будут еще пользоваться несколько лет,

а использование врядли возможно монетизировать
значит это вложение в JS мир. и не на несколько лет. несколько лет — это не те масштабы которыми мыслят корпорации такого уровня.

брать популярные пакеты под свой контроль

а зачем им оно нужно, если нельзя будет получить денег.
косвенно конечно.
а если JS труп ,потому что жабоскрипт, уродлив, и скоро ФЯ и WebAssembly его вытеснят, бла-ба-бла, то получить не получится

вот и интересно, насколько они прошибли с вложением

вот потому и

Microsoft что-то знает?
популярен, замены нет,

yarn?

репозиторий пакетов у них разный?

Они шарят. но думаю у ярна есть копия :)

ставший самым популярным

Поэтому.
У них никогда не получалось с гос заказов зарабатывать (они их сделать не могли, попил попилом, но работу сделать надо по гос заказу всегда), но хорошо получалось на хомячках.

У них никогда не получалось с гос заказов зарабатывать (они их сделать не могли, попил попилом, но работу сделать надо по гос заказу всегда), но хорошо получалось на хомячках.

Вау, эксперты в треде!

С 1992 в программинге большей частью насмотришься всякого и разного.

А с госзаказами они пытались, чуть эсминец на испытаниях с их софтом не утонул (NT4 попытались продавать пентагону).

У них никогда не получалось с гос заказов зарабатывать

из свежих новостей:
Компания Microsoft получит 10 миллиардов долларов от министерства обороны США за создание инфраструктуры хранения данных

но хорошо получалось на хомячках.

обслуживать потребителей преимущественно малого и среднего бизнеса и home users

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

но — не рационально, по моему.

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

Ажур у них тоже достаточно приличный продукт.

на самом то деле у них много приличных продуктов
просто широко известны — провалы.

охват аудитории большой, поэтому все видели сами синие экраны.

а когда IBM фейлит — знают только узкие группы специалистов.

Excel

Сейчас весь MS Office ужасен для меня. Предпочитаю LibreOffice.
Про второй не скажу, с базами не работаю, но знакомые его ругали в сравнении с Оракловским.

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

ну и я застал Lotus 1-2-3 и видел как Excel его вытеснял. Хотя кто бы мог тогда подумать, что можно сделать эл таблицы лучше чем Lotus 1-2-3

а MS SQL классом чуть пониже чем Oracle DB и IBM DB2
«макдональдс» vs «мишлен»
и при этом всю троицу ругают.

а уж как ругают MySQL/MariaDB!

но если бы MS SQL был бесплатным и одинаково работал на всех платформах
то я бы с MySQL перешел бы на него, а не на Postgress

мало того, если б .NET работал на всех платформах, я бы на него перешел а не как когда выбирал на Java
Хейлсберг — крут.
как и получившайся экосистема

но конечно, раз тебе .NET не нужен, то он гуано

Дело в том, что мне ни один из этих продуктов или не нужен или не удобен был.
А в твоей области работы их продукты одни из лучших.

В итоге спор дальше бессмыслен. Но вы меня убедили, что у MS еще есть приличные продукты, кроме ажура, которые многим нужны.

Например, а на линукс ушел, потому что виндовс меня достал за 20 лет — он мне был сильно не удобен, а в линухе мне просто отлично. И да линух в 90-х и линух сейчас сильно различные. Я ушел, когда линух начал меня удовлетворять.

В итоге спор дальше бессмыслен.

с аргументами блондинки да, спор всегда бессмысленен

я не оценивал с позиции что нужно мне.

у MS еще есть приличные продукты

у них они давно были
ты просто «забыл» сколько времени линукс сообщество рожало операционку с GUI.

а на линукс ушел, потому что виндовс меня достал за 20 лет

ну да, когда выродили за 20 лет — ты и ушел.
а тогда, на что бы ты ушел? только на яблоко и можно было.

я же переводил пром предприятие на сусю, в 2000ом
победили конечно.

хотя все равно процентов 10 машин пришлось оставить на NT Workstation

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

Увы. По-хорошему, ему бы выйти из Офис и из Майкрософт, стать самостоятельным проектом, и чтобы без всех этих на всю голову интеграций с мелкомягким говнищем.

Какая интеграция в экселе и с каким «говнищем» там неуместна или не даёт спокойно жить пользователям?

Я не противопоставляю, а пишу о том, что у них лучше получается
но хорошо получалось на хомячках

Ты не шаришь вообще о чем пишешь. Основную выручку М делает не «на хомячках»
и даже не на

обслуживать потребителей преимущественно малого и среднего бизнеса и home users
Ты не шаришь

Возможно. Но приводи доказательства тогда.
Или так и останемся при своих мнениях.

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

С этим я спорить не могу. Наверное так и есть.

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

все так
просто привел политкоректный перевод того кого называют «хомячками» тру программисты в таких контекстах.

а тем временем, в новостях:
Windows 10 установлена на одном миллиарде устройств

вот оно, полное фиаско!

как и «ООП провалилось», однозначно!

в каком мире живут эти тру программисты, я хз. многолетняя загадка.

Компания Microsoft получит 10 миллиардов долларов от министерства обороны США за создание инфраструктуры хранения данных

И это только на инфраструктуру, а её таки для чего-то создают, и это только для министерства обороны, а там ведь и другие министерства тоже есть.

А вот у тех свои тендеры и там зарабатывают другие типа IBM, Амазона и других.

Ага... а тот контракт так пришел.. без тендера сам по себе.
Сказочник блин. Не рассказывай то, чего не знаешь.

Ага... а тот контракт так пришел.. без тендера сам по себе.

Это не я — это ты рассказываешь, а потом сам себя же и опровергаешь.

из свежих новостей:
Компания Microsoft получит 10 миллиардов долларов от министерства обороны США за создание инфраструктуры хранения данных

Эти свежие новости родом из осени прошлого года. Вот тебе из свежих:

Department of Defense seeks to reevaluate JEDI cloud-contract bids after Microsoft win paused

актив который не дешевеет
акциях которые дешевеют

стоп стоп, а актив это не акции?

кэш и акции самой МС могут дешеветь, зачем держать в кеше если можно вложить в актив, когда упадет в цене до минимума , позже сделают процент на его росте.
крупному бизнесу нужна стабильность — поэтому этот актив супер надежный

акции самой МС могут дешеветь

так акции этой поделки могут дешеветь вслед за МС

Я мав на увазі сьогрднішній день, в порівнянні до середнього по біржі, до тих же фейсбука чи гугла, акції МС показують досить непоганий результат

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

А вообще очень логичная покупка, имхо, Github уже есть, есть TypeScript, осталось докупить менеджер пакетов. Они скупают методы разработки и наращивают влияние на экосистему разработки, особенно фронт-энда, все логично.

А вообще очень логичная покупка, имхо, Github уже есть, есть TypeScript

Ещё что-то в прошлом году релизили для хостинга пакетов (это вот), так что покупка npm очень логична

Возможно npm купили и правда чтобы закрыть его и юзать гитхаб вместо него.

о будущем JS/TS и хочет запрыгнуть в поезд?

Э.. м... да как бы 10 лет назад уже запрыгнула.
Используют его много где.

то был легкий сарказм в адрес жабаскрипт хейтеров :)

я на нем не пишу, так что личной привязанности нет. просто отдаю ему должное. язык на самом то деле неплохой вышел. а то как его развивают последние лет 5 — вообще хорошо.

о будущем JS/TS и хочет запрыгнуть в поезд?

так они ж TS разрабатывают.

да как бы в курсе

перепощу
— Когда я смотрел на TS, меня очень удивило отсутствие возможности создать новый тип (Не алииас) на основе имеющегося.
Vlad Balin Да лана. Там сильнейшие алгебраические типы среди мейнстримовых языков....
Хотя, кажется, ты имеешь в виду разницу между structural и nominal typing.
Тебе кажется, что structural typing это плохо.
--- костыли или говнокод в частных моментах лучше чем архитектура построенная на костылях
Vlad Balin Архитектура суть набор правил. Ты следуешь тем, которые тебе даны. Программист на LISP смеется их авторам в лицо, и создает свои.

Напишу небольшое эссе по Javascript. Для тренировки. Возможно, это поможет мне объяснить кое-кому, что не стоит выбрасывать кое-как работающий продукт на node переписывая его целиком на Go. Может, нет. Но не суть.

Штука в том, что JS многие понимают неправильно. Учитывая, что большинство на нем не пишет (самые востребованные на рынке труда в США языки — Java с Питоном, и они идут с отрывом) — большинство понятия не имеет, в чем вообще фишка JS и где его плюсы. А они есть. Только совсем не там, куда смотрят.

Смотрят на слабые стороны. Вот эти вот гэги про то, как там приводятся типы (никто в реальности с этим не сталкивается, и TypeScript ловит все это как ошибки если ему скормить JS без аннотаций типов). Динамическая типизация — это же опасно (TypeScript c опцией strict проверяет типы глубже и строже чем большинство популярных языков). Думают, что TypeScript — это какой-то другой язык (нет — это не более чем комплементарная система типов для JS). Что JS медленный (он, на минуточку, способен full HD видео в кодеке H.264 декодировать и рисовать в браузере программно, есть демо).

Это все на самом деле не слабые стороны. Но вопрос не в этом. Есть ли в нем сильные? Их, право, немного. Но они есть.

Штука в том, что JS — это на самом деле гибрид LISP и Smalltalk, который притворяется C-подобным языком.

Почему это Smalltalk? Потому, что в JS, внезапно, все есть объект.

А LISP почему? Потому, что там практически возможны и оправданны многие трюки, похожие на эффекты метапрограммирования в LISP. Мы, конечно, не можем менять синтаксис языка, это не (может, и к лучшему). Но глубина того, что мы можем вытворять с объектами такова, что по эффекту это вполне сравнимо с метаязыками. Прелесть TypeScript-а в том, что эти мета-трюки могут, в отличии от LISP, быть статически затипизированы.

Все это делает JS/TS идеальным языком для умного, но очень ленивого программиста.

Например.

type Contact = typeof Contact;

const Contact = attributes({
. . name : String,
. . email : String,
. . createdAt: Date
})

Вот тут функция attributes динамически создает конструктор некоего класса, объекты которого будут обладать указанными атрибутами. А вот декларация type выше — создает правильный тип этого класса, который проверяется компилятором статически.

Этот класс дохрена умеет. Например, приводить в динамике типы атрибутов при присваивании к тем, что написаны. Написано Date — и будет Date, no matter what. Это, в общем случае, не то чтобы просто. Но вы эту сложность не видите. Вы видите декларацию. Почему?

Потому, что можем.

...Давайте я поясню, зачем тут «type Contact = typeof Contact», и как он работает.

Штука в том, что attributes уже возвращает конструктор класса с правильно выведенным типом из своих аргументов. Проблема только в том, что TypeScrips еще не знает, что ему надо трактовать Contract не только как значение с типом, но и как имя типа.

Вот мы ему и помогаем этой строкой. Говорим ему — «чувак, тип вот этого значения — он называется вот так». И тайпскрипт такой — «ой, теперь это не отличимо от моего родного класса».

Вот и все. Штука не в том, как оно выглядит (не так страшно, простой паттерн). Она в том, можете ли вы в приципе повторить подобное по эффекту в своем любимом языке.

И шо, говорите, в питоне так нельзя?

и где я это говорил?

тем более вы сейчас покажете код, верно?

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

ура, появится новая альтерантива

Напомним, что в прошлом году компания NPM Inc пережила смену руководства, череду увольнений сотрудников и поиск инвесторов. Из-за сложившейся неопределённости в отношении дальнейшем судьбы NPM и неверия в то, что компания будет отстаивать интересы сообщества, а не инвесторов, группа сотрудников во главе с бывшим техдиректором NPM основала репозиторий пакетов Entropic. Новый проект призван был устранить зависимость экосистемы JavaScript/Node.js от одной компании, полностью контролирующей разработку пакетного менеджера и поддержание репозитория. По мнению основателей Entropic у сообщества нет рычагов для привлечения NPM Inc к ответственности за совершаемые действия, а ориентация на получение прибыли мешает реализации первичных с точки зрения сообщества, но не приносящих денег и требующих дополнительных ресурсов, возможностей, таких как поддержка верификации по цифровой подписи.

Подписаться на комментарии