«Найкраще, що ми сьогодні можемо зробити з JavaScript, — це забути», — творець JSON Дуглас Крокфорд

За словами Дугласа Крокфорда, творця JSON, JavaScript — уповільнює прогрес розробки.

«Найкраще, що ми сьогодні можемо зробити з JavaScript, це забути. Двадцять років тому я був одним із небагатьох прихильників JavaScript. Його вкладені функції і динамічні об’єкти були блискучими. Я витратив десять років, намагаючись виправити його недоліки. Я мав незначний успіх з ES5. Але з тих пір існує великий інтерес до подальшого роздуття мови замість того, щоб покращити її. Тож JavaScript, як і інші мови „динозаврів“, став перешкодою для прогресу. Ми повинні зосередитися на наступній мові, яка має бути більше схожою на E, ніж на JavaScript».

Згідно з опитуванням StackOverflow, проведеним на початку цього року, JavaScript використовують понад 65% розробників, значно випереджаючи Python, який посідає друге місце з 48% (ігноруючи HTML, CSS і SQL, які не є мовами загального призначення).

А що ви думаєте про JS? Чи дійсно йому потрібна заміна?

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному2
LinkedIn

Найкращі коментарі пропустити

Найкраще що ми можемо зробити, це перейти на typescript

Та нормальні розробники пишуть нормальний код на будь-якій мові, хоч на php, хоч на js, хоч з TypeScript, хоч без. Це тільки на доу сидять мамкіни страдальці-архітектори, які знають, шо веб потрібно на C++ писати. Як не зайдеш на статтю про JS, так звідкись вилазять оті експерти, які самі той веб 10-метровою палкою тикати не хочуть, але чомусь він їх багато років хвилює і в них дуже багато цінних порад. Та дякуємо, у нас все добре, все давно працює без вас))

це прямо як у москалів які критикують Захід і вже 100 років чекають коли він «загнійот» зі своїми долларами.
Крокфорд лаєт, а ЖабаСкріпт пливьот. :) If you know what I mean...

А де у JSON коментарі? Як закоментувати у JSON файлі небажане?

Понемногу приходит осознание того что ЖС это костыль и вся суета вокруг ЖС это попытки исправить костыль другими костылями ибо обратная совместимость)
Бебели, вэбпаки, тайпскрипт — оверхед над языком который не решает проблемы, а добавляет новые)
Где там Тимур со своими проповедями?)

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

а може недоліки JS і спричинили «Його вкладені функції і динамічні об’єкти», що «були блискучими»?) це ж норм: хочеш красівий торт — старайся))

Не така вже і погана скріптова мова. Справа в іньшому, зараз за допомогою браузерів роблять не web сторінки, а по суті товсті клієнти близькі за функціоналом до повноцінних десктопних застосунків. Скріптові мови ніколи для такого не задумувались. Тобто JavaScript тепер прийшов до того, для чього задумувались Java та C# - пісочниця з API браузера, який став платформою як JVM чи .NET. Не дивно, що створили мови вищого рівня які поки що компілються в JavaScript: Darth, TypeScript тощо. Але Web ASM вже є, вже підтримується більшістю браузерів та покищо не дає доступу до DOM, судячи з усього лише тимчасово. Як тільки це станеться, застосунки для Web можна буде писати будь якою мовою яку можно скомпілювати в WebASM хочь C++, що вже не новина, хочь: Haskel, Scala чи Closure. Якраз Java без script в середені була би в тему, знову але без плугінів

писати будь якою мовою яку можно скомпілювати в WebASM хочь C++,

Все эти С++ Джавы и тд, можно было прикрутить еще 20 лет назад.
Но, JS прежде всего задумывался как язык для браузера с сильно ограниченными правами на выполнение.
И даже не смотря на это, наловил кучу лулзов по секурити, по окнам которые нельзя закрыть, по кукам, по фреймам и тд.
Вероятность, что на месте него окажется какойто обычный язык, достаточно мала.
Тогда нужно резать язык до основания, до состояния JS. Никто в здравом уме не даст выполнять залетный С++/Джава/Шарп код в браузере рандомного пользователя.

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

Лол) А яке відношення до цього JS має?)
Це api браузера, і всі ці фікси робились через архітектуру браузерів, http та веба в цілому, а не конкретної мови, яка дозволяє юзати цей api. C# замість js ніяк не змінив би content security policy, чи якісь там csrf атаки.

C# замість js ніяк не змінив би content security policy, чи якісь там csrf атаки.

В каком смысле не изменил ? А если вебсайт полезет серверный порт открывать, полезет в реестр, полезет файлы с диска читать ? Да даже если все это прикрыто, невозможность загрузить процессор на 100% и подвесить окно браузера каким-нибудь майнером, кто это будет менять в рантайм JIT ?

Ну, поживем увидим. Идея не нова на самом деле. Флеш и Джава сервлеты, все это мы уже когдато видели.

В каком смысле не изменил ? А если вебсайт полезет серверный порт открывать, полезет в реестр, полезет файлы с диска читать ?

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

JS и Browser создавали и писали одни и теже люди ) Они задавали стандарты на заре Веб. Разделять их примерно также как разделять ABAP и SAP.
Или 1С предприятие и его внутренний язык. Мол, язык нивчем не виноват, а вот интерфейс платформы, который позволяет это делать языку аяяй ... )

JS и Browser создавали и писали одни и теже люди ) Они задавали стандарты на заре Веб. Разделять их примерно также как разделять ABAP и SAP.

Ну це не зовсім так, це по-перше)
По друге це слабкий аргумент, щост на рівні : «Украинцы, русские, мы же все в савецком саюзе родились, в адной стране жили. Мы же адин народ, братья.»

«Украинцы, русские, мы же все в савецком саюзе родились, в адной стране жили. Мы же адин народ, братья.»

Это самый забавный аргумент у орков. Пройтись по какому-то селу, где каждый второй кум брат сват, некоторым перепитиям позавидует сериал Игра престолов.
А если еще кто-то у кого-то землю отжал ... ох .....
Мне кажется какому-то заезжему афроамериканцу или китайцу проще наладить добрососедские отношения со всеми в округе, чем распутать все эти родственные клубки =)

Java была даже до JavaScript через плугин. Технологія называлась Applet, сейчас это JavaFx. Лично я так и познакомился с Java когда делал свой дипломный проект, через этот плагин у меня был OpenGL 3D вьювер моделей которые из CAD системы экспортировались. Сам код вьювера вместе с моделью генерировался программой на С++, можно было генерировать С++, Delphi и Java. Рендер на Java правда был софтверный, саму имплементацию OpenGL 1.2 вроде Mesa, уже не актуальную ныне, сделал какой то аспирант из Тайваня. Буквально через пару лет, я уже работал с Mozilla где начали продвигать тему WebGL и это все не актуально стало. Хотя Microsoft ещё пару лет воду каламутили с WebGL, явно продвигая собственные: C#, SilverLight и Direct X. Но Apple и Джобс лично втягнули в стандарт открытые технологии. Sun же вообще забили на апплеты ибо занимались в основном JEE, а потом поздно стало c абгрейдом — JavaFx.
А байт код для сервера на самом деле совсем не обязательный оверхед, который догоро обходится и по процессору и по памяти. Зато, когда на клиенте может быть все что угодно и по ОС и по архитектуре CPU то байт-код отличная идея. WebASM это как раз байт-код и языки изначально разработанные под виртуальную машину и байт-код, как раз хорошо на него ложиться. JavaScript это конечно чистой воды скриптовый язык, у него другие задачи.

А байт код для сервера на самом деле совсем не обязательный оверхед, который догоро обходится и по процессору и по памяти.

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

Скріптові мови ніколи для такого не задумувались.

а Java задумувалась як МП для ембедед.

Немає значення для чого задумувались мови.
Має значення як вони еволюціоновали, та що них можна зробити швидше і щоб воно — задовільняло користувача, замовника.

застосунки для Web можна буде писати будь якою мовою

а будуть їх частіше писате тою — на який швидше їх писати :)

і ой навряди чи на Haskell, Scala то буде швидше чим за Python.

Швидкодія — то така же частина вимог до функціоналу. І коли вона не треба — то за час витрачений на неї — не заплатять.

І тому, вже не тільки веб додатки, а і серверну частину пишуть на Python і інших скриптових мовах. І цей тренд — незворотній там — де швидкість розробки важливіша за швидкодію аплікації.

Та і не факт, може є якісь математичні бібліотеки написані на Haskell. Треба їх заюзати десь на клієнті, скажімо для бот чата експертної системи, щоб той не загружав сервер непотрібними запитами. Якщо можна скомпілювати в WebASM — ніж переписувати буде набагато краще. Зараз вже Autocad доступний у Web через Web ASM таким чином. Портувати на JavaScript зайняло би роки у Autodesk і не факт, що виправдалось фінансово. А зробити WebASM версію виявилось прибутково.

Портувати на JavaScript зайняло би роки у Autodesk

скільки штук таких продуктів ми занємо?

Треба їх заюзати десь на клієнті, скажімо для бот чата експертної системи

зазвичай математичні бібліотеки НЕ треба юзати на клієнті.
просто тому що на клієнті залізо буде більш слабкім, чим на сервері. Або важкі мат ліби — ще й оптимізовані для GPU. Яких на клієнті і не буває.
І знову ж — а скільки відсотків продуктім мають таку потребу — юзати мат ліби на клієнті?

Додайте до тих аутокадів — і назвіть самий оптимістичний відсоток кому те треба:

WebASM

Навіть на JWST і то є підтримка JS.

www.theverge.com/...​t-jwst-instrument-control

Шах і мат!

Незнал, что у JSON есть творец. Ну ок.

Дивлячись на те, що зараз відбувається з вебом, думаю що через 5-10 років JS відійде на другий чи третій план, бо відімре концепт браузерних застосунків на базі HTML як таких.

Подивіться, все частіше можна побачити як сервіси відмовляються від нарощування функціональності веб версій та переходять замість цього на mobile. При цьому мобільний застосунок працює краще за десктопну веб версію. Це відбувається не тільки через популярність mobile, але й через те, що у веб фронтенді у такому вигляді до якого він дійшов на сьогодняшній день все всрато, неефективно й ненадійно. Таким його робить по-перше сам концепт застосунків побудованих навкруги HTML, DOM та CSS, технологій які з самого початку були створені для зовсім іншого масштабу задач (гіпертекстові сторінки), а по-друге, ці шалені чорнобильські фреймворки, які ми створили на базі JS.

Для мобільних платформ існують більш стабільні й ефективні екосистеми, з адекватними архітектурами, мовами та віртуальними машинами до них. Я вважаю що щось подібне із часом буде на десктопі. В цьому немає нічого нового, по суті це буде щось на кшталт того яким був Flash (але краще та більш інтегроване) або таких собі легковагих напів-онлайн десктопних застосунків. Можливо все це зформується на базі WebAssembly.

При цьому мобільний застосунок працює краще за десктопну веб версію

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

Я вважаю що щось подібне із часом буде на десктопі

Android — путь к десктопу2016 рік

що через 5-10 років

а, ну тоді чекаємо.

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

"

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

"
Наприклад, моб.застосунок «ПУМБ Online» (поповнення вкладу, якого немає у веб).

Це фантазія. Не буде такого. По перше, тому що ніхто не буде тримати сотні застосунків.
Зараз будь яка гівно компанія ліпить застосунок. Я тупо з цікавості скачую і одразу видаляю.
Навіщо тримати це на телефоні, якщо є сайти

Ну тут дивлячись який сайт і який застосунок. Якщо це це щось типу Iнстаграму / Тіктоку чи Нової Пошти то застосунок нормально відобразить всю необхідну інформацію на 6-7″. Але коли об’єм інформації росте відразу хочеться відкрити нормальний сайт на ком’ютері. Мені, наприклад, мобільними розеткою/епіцентом/тощо користуватися не зручно — постійно переключаєшся між списком товарів і фільтрами, хочеться легко виділити якийсь текст і загуглити в сусідній вкладці. На телефоні це не так зручно. Або взагалі відкрити кілька товарів/статей в різних вкладках.

Нажаль це зумисне — просто так співпало що незручно. Задум був меньше фільтрувать, не гуглити, не бачити зайвого не нервувати )). Кнопка купити щоб працювала ;)

приложухи клепають щоби пи₴дити твої дані і слати пуш повідомлення. все.

10 років тому жс/хтмл також ховали Флешем, як ви зараз ховаєте його мобайлом.

10 років тому жс/хтмл також ховали Флешем, як ви зараз ховаєте його мобайлом.

Десять лет назад был 2012, тогда флешу уже были гайки. Мб надо говорить про 20 лет назад?

Крінжанув, це й справді було так давно. Ви праві.

Подивіться, все частіше можна побачити як сервіси відмовляються від нарощування функціональності веб версій та переходять замість цього на mobile. При цьому мобільний застосунок працює краще за десктопну веб версію. Це відбувається не тільки через популярність mobile, але й через те, що у веб фронтенді у такому вигляді до якого він дійшов на сьогодняшній день все всрато, неефективно й ненадійно. Таким його робить по-перше сам концепт застосунків побудованих навкруги HTML, DOM та CSS, технологій які з самого початку були створені для зовсім іншого масштабу задач (гіпертекстові сторінки), а по-друге, ці шалені чорнобильські фреймворки, які ми створили на базі JS.

Еще большинство этих мобильных приложений — обертка над WebView

Вообще не понимаю что общее между смотрением в 6″ мобилу с пальцем на пол экрана и 27″ монитора с мышкой/клавой.

Все эти «mobile first» — не более чем байки очковтирателей.

Хз, на две статьи один график и то не пойми какой %)

Понятно что фейсбук с инстой листают люди нон-стоп из кармана, но я сомневаюсь что этот форум доу щас с телефона кто-то сильно листать пытается (особенно топики с 1000+ комментов)

Mobile вже заняв свою нішу. То, що ви описуєте сталось в Китаї один в один, там інтернет якраз мобільних застосунків. Так бізнесу, особливо e Commerce з нотіфікаціями в мобільних застосунках так простіше спамити. Та якось нащі клієнти робили досліди, що просто розіслали емейли зі списком нових товарів та скидок приблизно так само ефективно. А по усьому світу зараз тенденція на те, що описував Стів Джобс ще при житті. Тобто сімбіоз з Desktop, Web та Mobile які і створють екосистема людей у людей більше за один гаджет.

Не буде такого. Мобільні застосунки як і мобільні платформи дуже ненадійні для інвестицій. Кожна мобільна платформа це власність 1 компанії і кілька тупих кроків можуть вбити компанію і заодно мобільну платформу. Скоріш за все через 5-10 років apple і гугл загнуться і з ними їх мобільні платформи. Веб залишиться, і далі буде ще більш ефективний і надійний. Фрейворки нікуди не дінуться, але більше з них будуть більш нативні для веб, і менше намагатись тягнути концепти з ООП/десктоп. Однією з причин буде більша кількість про саме в вебі, і архітектурні рішення для проектів веб перестануть приймати вчорашні C++/C#/Java деви, які тільки переходять на веб.

О, джава скрипт? А его еще не похоронил type script? «Эпоха» жабоскрипта была в 2015 и около того годах, первый ангуляр и спа, нода...в итоге ангуляр переписали полностью иным, убрав ту вэй бандинг и перенсли на тайпскрипт, нода не уверен уже перешла на тайп скрипт или поять форкаются? Энивей, это шляпа(жабоскрипт) живет лишь потому что нет никакой замены в браузере.

На коленке слкепать бэкэенд позволяет что питон, что дотнет(не очень популярен среди стартаперов потому что «мастдайка»), что го.

Приведённые в статье 65% использующих, интересно, довольны тем что приходится его использовать? Или как подавляющее большинство джавистов и дотнетчиков плюются и проклинают когда надо докинуть фичей в уеб-морду спа? :-)

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

Тот факт что первые вакансии на джине в 10К+ были именно для тех кто ноду месит, говорит что тех кто действительно можеть «дать раду» этой херне крайне мало и требует мегамозга. меганервов. Так что нода и жабоскрипт уже переходит в легаси :-)

Я думаю что не за горами когда мамкены изобретатели скоро снова изобретут сервер рендеринг фреемверк, который решит проблему монстроузно-жирных клиентов :-)

ЗЫ хваленный эклектрон с его кросплатформенностью, оказался не таким уж и кросплатформенным(скайп и тимс на линуксе просто уебть об стену и еще много матов, заметно хуже работает чем на венде). В нише «сайтов любой сложности» по прежнему пхп нет равных.

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

«Эпоха» жабоскрипта была в 2015

А в 2010 была эпоха чего?)

Лучше бы ты и дальше стриптизером работал, твои попытки симулировать мыслительный процесс больше похожи на генератор случайных фраз 2000х

Фекально плазменный ураган Влада снова бушует :-)

Я думаю что не за горами когда мамкены изобретатели скоро снова изобретут сервер рендеринг фреемверк, который решит проблему монстроузно-жирных клиентов :-)

Внезапно: www.phoenixframework.org

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

Внезапно: www.phoenixframework.org

ну он позиционирует себя как ruby on rails на нормальном fp языке, а не замена реактов и ангуляров)

Речь вероятно шла конкретно о LiveView...

Да, спасибо! Именно о нём и речь — эдакая AjaxPanel on steroids.

Та нормальні розробники пишуть нормальний код на будь-якій мові, хоч на php, хоч на js, хоч з TypeScript, хоч без. Це тільки на доу сидять мамкіни страдальці-архітектори, які знають, шо веб потрібно на C++ писати. Як не зайдеш на статтю про JS, так звідкись вилазять оті експерти, які самі той веб 10-метровою палкою тикати не хочуть, але чомусь він їх багато років хвилює і в них дуже багато цінних порад. Та дякуємо, у нас все добре, все давно працює без вас))

А потім такий відкривієш браузер, а в тебе комп висне від 5 вкладок.

Ну так сінгл пейдж аплікешен — один пейдж і все, більше не можна :-)

коли 4ри гіга пам’яті то так.

ні, бувають звісно такі сайти, що кулер реве.
але, з свого користувацького досвіду — проблема надумана.

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

в знаю хто винуватий — виробники мобілок і фотоапаратів з фотками на 18MB які можна запхати в 56KB без втрати якості.

та не тільки

типова історія
є сайт. на ньому фоточкі.
у ті самі 5 Мб кожна
а показуються вони в віконцях 100px на 100px
от браузер — тягне оте все, а потім сам скейлить.
і так кожного рендерінгу.
І тількі цього достатньо, щоб на слабкому ноуті почути кулер, коли активно ходиш по такому сайту

а ще додамо паралаксів усяких на jQuery та анімації...

І шо, на плюсах не можна написати аплікуху, яка ви**е твій CPU в хвост і гриву? Просто закриваєш сайт і ідеш на інший, який писали не довбойоби) У мене завжди десятки тих вкладок, деякі місяцями відкриті, і нічого, якось вижив) Можна ще понити, шо в 98 році десктопні програми чи ігри були по 50-100Mb, а зараз DVD чи BluRay займають, обоже, як жити?))

Одна справа говорити про крайнощі, інша — тенденція. Я теж люблю відкрити кілька десятків вкладок і ніколи не закривати їх. У 2017 році це було робити простіше ніж зараз, на суттєво слабкішій машині. Причому ті сайти, які найбільше віджирають CPU та памʼять, це найчастіше наприклад Facebook (компанія яка створила React), Gmail, Maps або Youtube (та сама компанія яка створила Angular), Airbnb (які де-факто створили золотий стандарт правил eslint). То все довбойоби?

Ну так ми обговорювали випадок, коли
"

відкривієш браузер, а в тебе комп висне від 5 вкладок

"
хіба ні? В мене не висне комп від 5 вкладок нормальних сайтів/сервісів gmail/fb/google/etc. Ну але так, в 2017 трава була зеленіша, а в 90-х все на діскетку влізало)

я писав на Тurbo C — і головне щоб було два дісководи
хватало і для IDE і для ліб, і для компіляції у Святий маш код, і лінкер теж працював.

от якщо ті стогнущі та страждаючі мріють повернутися у ті часи — ну тоді ок. принаймі щирі.
але я чомусь думаю що коли якась студія чи айдія вижирає гігабайти — то вони не страждають, і вважають що то так і тра
а коли на якомусь сайті бандлів занадто багато підтягується — то горе і позор, «я не хочу жити в такому світі!»

Вкладки виснуть через те, що V8 написаний на С++ :-D

Качество языка определяется — можно ли на нем написать крупный кусок в 50-100 строк кода без багов или который хотябы пройдет смок тест.
Мой топ
SQL — можно писать крупные запросы по пять джоинов и все работают без багов с первого раза
С# - все работает почти с первого раза. Этим иногда можно пользоваться, сдаешь задачу без тестирования и вероятность что прилетит баг примерно 1 к 5
С++ — без тестирования уже не получится, но работать можно
JS — дно донное, в котором 10 тривиальных строк кода нужно перезапускать раз пять и всеравно что-то не работает. Оно и неудивительно, язык проектировался в 90х, чтобы заскриптовать всплывающий баннер.

Как там твой стартап на С#?))

С переменным успехом ) Известные события затормозили все на неск. месяцев, но не забросил

так скоріше визначається якість корустувача мови. я от sql знаю погано. крім select * from .. нічого з першого разу написати неможу

так скоріше визначається якість корустувача мови

Погана мова вимагає у користувача виключної акуратності і уваги в написанні кода.
Добра мова, навіть за рахунок IDE, не дасть в багатьох випадках побудувати некоректний код, навіть якщо ти його ще не білдив і не запускав.

С++ — без тестирования уже не получится, но работать можно
JS — дно донное, в котором 10 тривиальных строк кода нужно перезапускать раз пять и всеравно что-то не работает.

Напомни, в каком из языков в стандарте прописано неопределенное поведение?

Самое определенное поведение в бреинфаке (она же машина Тьюринга).
Количество комманд всего 8, запутаться что делает каждая из них крайне тяжело. А теперь попробуй написать сортировку пузырьком на бреинфаке, ты офигеешь там вылавливать ошибки. При этом на шарпе пузырек без ошибок напишет даже мидл.

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

Самое определенное поведение в бреинфаке (она же машина Тьюринга).
Количество комманд всего 8, запутаться что делает каждая из них крайне тяжело.

Вообще-то нет. Там undefined behavior на выходе за пределы «ленты», плюс куча unspecified/undefined behavior на переполнение, EOF, обработку ошибок.

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

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

эзотерический

Вообще-то нет. Там undefined behavior на выходе за пределы «ленты», плюс куча unspecified/undefined behavior на переполнение, EOF, обработку ошибок.

Null reference, OutOfMemory, StackOverflow exceptions.

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

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

Null reference, OutOfMemory, StackOverflow exceptions.

Можешь объяснить в чем разница между исключением и неопределенным поведением?

Можешь объяснить обьяснить, чем выход за пределы ленты Тьюринга отличается от OutOfMemoryException виртуальной машины и почему ты его считаешь для бреинфака

неопределенным поведением

?

Я объясню, ты сначала ответь на мой предыдущий вопрос.

При этом на шарпе пузырек без ошибок напишет даже мидл.

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

Мы вообще задрачивали это в 8м классе- 2-3 пары в неделю 100500 алгоритмов сортировок. Бессмысленное занятие.

JS — дно донное, в котором 10 тривиальных строк кода нужно перезапускать раз пять и всеравно что-то не работает. Оно и неудивительно

И виной тому конечно ЯП

язык проектировался в 90х, чтобы заскриптовать всплывающий баннер.

Угу, видно в С-языках же функции, циклы и условия другие.
Если кто то пишет на JS, к примеру, эмулятор FlashPlayer на 27к строк github.com/...​2js/blob/master/swf2js.js , а кто то 5 строчек запустить не может- то наверно дело не в ЯП.

27к строк

Это уже считается большой проект ?

а кто то 5 строчек запустить не может- то наверно дело не в ЯП.

Мне конкретно в эту минуту приходится писать в разных проектах сразу на неск языках.
SQL, C#, C++, JS, HTML. Опыт больше 20 лет без перерывов, коммерческий.
За последние 1,5 года написано больше 100к строк кода, единолично.
Считай сравнение языков — субьективным мнением.

За последние 1,5 года написано больше 100к строк кода, единолично.

Хосспаде какой ужас

Это уже считается большой проект ?

Ну если в 10 строк кто то запутывается, то 27к строк пет проекта одним модулем- да это много. Во вторых код не уровня «заскриптовать всплывающий баннер» или наляпать запрос на реакте.

За последние 1,5 года написано больше 100к строк кода, единолично.

Ну пусть так, но сколько из них на JS? А если с него выкинуть формы на Вью с Реактом и прочую попсу?

Ну если в 10 строк кто то запутывается, то 27к строк пет проекта одним модулем- да это много. Во вторых код не уровня «заскриптовать всплывающий баннер» или наляпать запрос на реакте.

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

поверх жс юзали джейквері

Как это тут библиотека для кроссплатформенной манипуляции DOM становится в один ряд с ЯП?

Как это тут библиотека для кроссплатформенной манипуляции DOM становится в один ряд с ЯП?

В нормальные языки кросплатформенность встроена. Нет необходимости тянуть чтото стороннее.
Например .NET Core работает с файловой системой и с сетью и в линуксе и в винде и не надо подключать «специальную библиотеку»

В нормальные языки кросплатформенность встроена. Нет необходимости тянуть чтото стороннее.
Например .NET Core работает с файловой системой и с сетью и в линуксе и в винде и не надо подключать «специальную библиотеку»

Кросс-платформенную файловую систему и сеть запилили еще в 90-х годах. В Nodejs, кстати, кроссплатформенный IO был запилен еще в 2010 году, за 5 лет до появления .NET Core.

Вот если бы в .NET Core запилили, например, кросс-платформенный UI, было бы о чем говорить.

Пытаются в восьмой раз перепродать XAML? Не вижу, чтоб было где-то написано, что этот фреймворк запилен для .NET Core.

Вони навіть віндовий WinUI 3 не можуть до ладу довести. Пару місяців назад розглядав можливість переїхати туди з WPF. Написав маленький додаток з кількома сторінками та контролами, отримав кілька крешів — знайшов відкриті баг-репорти на них, деяким з них близько року вже — і поки що від цієї думки відмовився.

Так жс і створювався для маніпулювання DOM.

В ECMA вообще ничего нет о DOM. DOM и BOM это API интерфейсы целевой платформы, тоже самое что для C будет WinAPI. И таким же будет абсурдом говорить что С# фигня как ЯП, потому что он для десктопных приложений вообще юзает WinForms(JQuery), а не напрямую WinAPI (DOM) и более того, вообще не имеет никаких встроенных средств отрисовки интерфейсов.

Что за бред. Ок. JS имеет метод, допустим, getElementById ( DOM api )
Где в .NET Core аналогичный метод на уровне языка чтобы стучатся к своему дом (WinAPI) ?
И главное почему он там должен быть если кор кросплатформенный ?

Что за бред. Ок. JS имеет метод, допустим, getElementById ( DOM api )

Это тот что window.getElementById? Это не JS(ECMA) имеет, это не оператор и такого в спецификации языка нет, а, как Вы сказали, объект window c DOM API, который в браузере используется как глобальный. DOM api это считай модуль с глобальным экспортом на целевой платформе. Не даром он у всех разный, т.е имеет нюансы. JS он один, если не считать версии, а его API (DOM&BOM) окружение разное и зависит от целевой платформы, которая их подсовывает VM JS. Думаю не надо говорить, что в JS под node.js нет никакого window и DOM? При этом JS он один и тот же, что в браузере, что в node. Это, кстати, один из классических entry вопросов на собесах.

Где в .NET Core аналогичный метод на уровне языка чтобы стучатся к своему дом (WinAPI) ?

Вот его и нет, как и в ECMA нет ничего для DOM. Если бы был глобальный авто импорт WinAPI модуля- то появился.

window.getElementById

Мне кажется или я общаюсь с гуру жаваскриптером который не знает самый ходовой метод в JS.
document.getElementById

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

Ладно, вижу с восприятием информации совсем туго. Было бы отлично увидеть ссылку на спецификацию ECMA на этот метод/оператор. А я уж завтра с помощью этой информации заполню свои пробелы в данном вопросе, чтобы наш срач в будущем был более конструктивен.

document это свойство (property) объекта window, если что developer.mozilla.org/...​en-US/docs/Web/API/Window

Возьмем две цитаты из моего стартового поста

можно ли на нем написать крупный кусок в 50-100 строк кода без багов
JS — дно донное, в котором 10 тривиальных строк кода нужно перезапускать раз пять и всеравно что-то не работает.

Далее меня обложили тем что «я ничего не понимаю в JS» и в процессе обсуждения джава скриптер, который специализируется на этом языке, выдал следующую цитату.

Это тот что window.getElementById?

Не 50. Нет 100. Одна. Одна (Карл!) строчка кода и УЖЕ джаваскриптер пишет с ошибкой.

Какие вам еще нужны доказательства ?

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

и УЖЕ джаваскриптер пишет с ошибкой.

Детский сад. Если Вам принципиальна вложенность метода, то window.document.getElementById — сути, о которой речь, это не меняет.

В спецификации JavaScript которая (ECMAScript) нету никаких методов для работы с DOM, BOM или сетью (типа fetch или XMLHttpRequest). Это все предоставляется окружением, в данном случае браузерами.

В спецификации JavaScript которая (ECMAScript) нету никаких методов для работы с DOM, BOM или сетью (типа fetch или XMLHttpRequest). Это все предоставляется окружением, в данном случае браузерами.

Очень удобная позиция на самом деле.
Но по факту, если взять _любой_ учебник по JS для самых маленьких, там будет целый раздел как работать с DOM и BOM. Без доступа к этим интерфейсам ценность JS начинает резко стремится к нулю. Не файлы же на нем писать/читать. Он хотябы откудато должен брать входные данные для своей работы и кудато выводить результат (взаимодействие с DOM \ BOM). Что это, если не часть языка ?

Не файлы же на нем писать/читать.

nodejs.org/api/fs.html

Что это, если не часть языка ?

Это часть SDK или библиотеки классов.

nodejs.org/api/fs.html

Я знал что всетаки ктото предложит
забивать микроскопом гвозди читать на JS бинарные файлы

Джаваскрипт, гавенный язык средней паршивости.

Поверим на слово. Раз в экосистеме ЯП есть фреймворки, значит ЯП паршивый. Логично же.

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

А на шарпе с джавой фремворков нет или они таки есть «чтобы не писать на чистой» джаве?

Поверим на слово. Раз в экосистеме ЯП есть фреймворки, значит ЯП паршивый. Логично же.

Здесь критерий как раз в количестве таких «фреймворков». Так вот на чистом JS почти не пишут, предпочитая абстракции поверх него.

А на шарпе с джавой фремворков нет или они таки есть «чтобы не писать на чистой» джаве?

И шарп и джава тоже не идеальные языки. Как я и указал в своем списке. А вот SQL уже ближе к топ, не имеет фреймворков, люди с удовольствием пишут на чистом SQL, причем не только девелоперы но и QA. И не изобретают на каждом шагу свои джиквери реакты и тайпскрипты.

Так вот на чистом JS почти не пишут, предпочитая абстракции поверх него.

Кто не пишет? Что не пишет? шта? Повторюсь — при чем тут язык к фреймворкам? На С++ с графикой без DirectX/OpenGL не работают — значит по Вашей логике на чистом С не пишут, а значит он паршивый ЯП.
Это если бы все на каком нить Dart писали, вместо JS, то это хоть какое то отношению к вашему заявлению имело бы и было бы уместно сказать «на чистом JS никто не пишет», а считать количество фреймворков и делать вывод о качестве ЯП — абсолютно абсурдный подход.

А вот SQL уже ближе к топ, не имеет фреймворков

ORM не? Чтобы «писать» на SQL и то с натяжкой надо писать хотя бы хранимые процедуры, а не пару джойнов в декларативном DML называть программированием.

на каждом шагу свои джиквери реакты и тайпскрипты.

То есть по Вашему фреймворки — ошибка природы по своей сути, а их задачи должен решать ЯП? =\

Повторюсь — при чем тут язык к фреймворкам? На С++ с графикой без DirectX/OpenGL не работают — значит по Вашей логике на чистом С не пишут, а значит он паршивый ЯП.

С/С++ это не графический язык.
JS это язык основная роль которого манипулировать DOM. И с этой задачей без сторонних библиотек он справляется плохо.

ORM не? Чтобы «писать» на SQL

ORM это не проблема SQL. Это проблема джавы и других языков, которые хотят работать с табличными данными как с обьектными.
Другими словами SQL не может выплевывать джава, дот нет, пхп, го и прочьи десериализированные обьекты для этих языков. Это проблемы этих языков, как их промапить, забрать данные в удобном для себя виде.

То есть по Вашему фреймворки — ошибка природы по своей сути, а их задачи должен решать ЯП? =\

Если бы JS проектировали сейчас, то сделали его похожим минимум на Type Script. Вот и ответ на вопрос.

JS это язык основная роль которого манипулировать DOM.

Это Вы так решили, хотя он и манипулирует на необходимом уровне- что не так? Найдите мне функции работы с DOM в спецификации ECMA. C — изначально язык для работы с железом. Значит никаких фреймфорков, библиотек и драйверов, все пишем ручками.

ORM это не проблема SQL.

По вашей логике — SQL для работы с данными, ORM тоже для работы с данными, но на удобном высоком уровне абстракции, чтобы не дергать ручками, т.е «без сторонних библиотек оно справляется плохо».

забрать данные в удобном для себя виде.

ORM это тот же JQuery для DOM, который унифицирует интерфейсы и оборачивает сырые данные в объекты, чтобы забрать их или запушить «в удобном для себя виде».

Если бы JS проектировали сейчас, то сделали его похожим минимум на Type Script. Вот и ответ на вопрос.

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

ORM это тот же JQuery для DOM, который унифицирует интерфейсы и оборачивает сырые данные в объекты, чтобы забрать их или запушить «в удобном для себя виде».

Забавное утверждение.
Тоесть между JS и DOM (а по сути браузером) такая же пропасть как между Java и SQL ?
Только вот в первом случае делали язык для манипулирования DOM.
А во втором случае это две абсолютно разные технологии, разные языки с разной парадигмой и разными хостами.

Если бы JS проектировали сейчас, то сделали его похожим минимум на Type Script.

Запилили бы что-то вроде language agnostic абстрактной машины, которая может выполняться в sandbox и быть эфективно реализованой на разных платформах (cough*webassembly*cough). И потом пилили бы компиляторы из существующих языков под эту абстрактную машину, и бекенды к существующим компиляторам. Новый язык вряд ли бы кто-то пилил, потому что существующих и так хватает.

А вот SQL уже ближе к топ, не имеет фреймворков, люди с удовольствием пишут на чистом SQL
WITH Fibonacci (PrevN, N) AS
(
     SELECT 0, 1
     UNION ALL
     SELECT N, PrevN + N
     FROM Fibonacci
     WHERE N < 1000000000
)
SELECT PrevN as Fibo
     FROM Fibonacci
     OPTION (MAXRECURSION 0);

збс

JS — дно донное, в котором 10 тривиальных строк кода нужно перезапускать раз пять и всеравно что-то не работает. Оно и неудивительно, язык проектировался в 90х, чтобы заскриптовать всплывающий баннер.

Так давно ж известно что плохому танцору тапки мешают, а плохому программисту жаваскрипт)

Так давно ж известно что плохому танцору тапки мешают, а плохому программисту жаваскрипт)

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

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

убирает кучу недостатков жаваскрипт и приносит туда кучу плюшек.

Ну для свитчеров- плюшки, для других оно «братишка я тебе покушать принес» :)

Типи норм

Ну если они опциональные, чисто для подсказок в IDE для публичных интерфейсов модуля как это делает JSDoc- норм. Ну и если они не уходят от канонов JS, т.е не вносят отсебятину, а только дополняют спецификацию JS. Но по сути это Flow выходит, а не TS.

А ООП звісно дискусійно.

Как раз тут ничего особо дискуссионного и нет. ООП и в js был, есть и будет. Семантика определения никогда не имела значения.

ООП в жс не мейнстрімовий.

Как будто это что-то плохое...

Как раз тут ничего особо дискуссионного и нет. ООП и в js был, есть и будет. Семантика определения никогда не имела значения.

О да, prototype это незабываемо и полный разрыв шаблонов, нынешней школоте не понять, они такого даже не слышали, это да

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

Не писав серйозно на JS. Ну є там пару приколів із конвертацією неінтуітивною. Ну нетипізована мова. Python теж не типізований. Мова як мова, можна без великих проблем написати що треба. Додайте типізацію рідну — можна буде нормально жити.
Щоб можна було якесь var name:Type робити і мати відповідні гарантії під які можна компіляцію оптимізувати.

Веб — лайно. В цьому проблема. Бо декотрі пишуть через одне місце і є зоопарк браузерів і це все якось має працювати і еволюціонувати. І ще треба жити із HTML та css поряд. Був би Python замість JS — таке саме було б. Уявіть перехід Python 2 -> 3 у світі веб. Ну синтаксис мені трішки більше у Python подобається, але то дрібниці.

В ідеалі мабуть треба зробити VM під веб, і щоб потім в неї компілити різні мови. На .NET фреймворку їх там купа живе, на Жабі теж є щось. Тоді там версія мови може компілитись у якісь версії VM, у якісь краще, у якісь гірше. Зайшов на сайт, воно тобі загрузило скрипт скомпілений під ту VM, що твій браузер подужує. Якщо твій браузер взагалі не в зуб ногою, то щоб у JS компілило.

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

у блазора по-моему тоже нету прямого доступа к апи браузера и к дом. только через джс интероп.

по всей видимости и не будет. Вебассембли, как я понимаю, для других целей создавался и развивается.

Проблема в том что в связке JavaScript + DOM, как раз DOM и является узким горлышком. Поэтому во фронтенде сейчас и популярны библиотеки/фреймворки основанные на virtual DOM. Так что даже тогда когда какой нибудь условный C++ получит прямой доступ к DOM выигрыш в производительности будет на уровне погрешности.

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

я ответил:
Если что-то происходит глобальное и со многими — не ищи кому выгодно.
Восход Солнца каждый день выгоден многим, но эта ли выгода — причина?
А тем более когда:
Если разработчики на X дорогие рукожопы, а на Y дешёвые таланты — то как так побеждает технология X а не Y?
Корпорации? А как они выбрав технологию X которая ещё и увеличивает время разработки чем Y — достигают доминирования и уровня бабла чтобы следующим шагом выбрать ещё более дурную технологию но ещё более дорогую?
Ветер это потому что деревья качаются?

В ідеалі мабуть треба зробити VM під веб

він вже є.

проблема що нічого універсальнішого і гнучкішого для опису UI крім декларативного plain text не прижилося.
я вже й назви забув, кінця 90их, коли були спроби. Бо стало зрозуміло — глобальна мережа — то майбутнє. і «графічний термінал до майнфрейму» треба замінити на щось більш високорівневе.

Тоді там версія мови може компілитись

немає значення у що компілиться, і компілиться чи взагалі.

це взагалі якась маячня, як на мене — ми пишемо програмний код — і чому хвилює в що він компілиться?
Проблема — в написанні цього коду, а потім — дописуванні і переписуванні, а в не в тому в що він компілиться і як/чим виконується.

І ще треба жити із HTML та css поряд

так.

але, давайте но подивимость на роль коду. і спробуємо замінити на щось краще:
1. якє у plain text описі структурє елементи UI
2. якє окремо описує відображення та позиціонування елемнтів UI

Ну нетипізована мова.

Ruby, PHP, JS, Python — показують що типізація і не треба.
а коли треба — то додати тим чи іншим чином до них — не так вже й важко.
все одно — тести писати :D

можна компіляцію оптимізувати.

а це — проблема? для кого і де?

Веб — лайно.

Вірніше буде сказати — мейнстрім лайно.
бо він формується не за бажаннями академічної науки.
І так буде вважайте завжди.
З мейнстрімом.

це взагалі якась маячня, як на мене — ми пишемо програмний код — і чому хвилює в що він компілиться?

Можна добазікатись, що і код писати і змінювати — маячня якась. Треба, щоб працювало як треба і де треба. І тоді починається уся ота веселуха.

спробуємо замінити на щось краще

Так я ж про те й пишу, веб — лайно! Можна змінити роботу, щоб не працювати із вебом і таки буде краще! =)

Ruby, PHP, JS, Python — показують що типізація і не треба.

Ну туплять жеж!

Можна добазікатись, що і код писати і змінювати

це прямий обов’язок програміста.

а от те що після push там десь проект збирається, запихується в докер, деплоїться кудись, запускаються тести і т.і. — вже ні.

Так я ж про те й пишу, веб — лайно!

так я й про те й пишу — мейнстрім лайно.
маргінали — так, красавчики у білих фраках.

Можна змінити роботу, щоб не працювати із вебом і таки буде краще!

так. кожен нехай сам вирішує — працювати йому з мейнстрім стеком, чи йти у маргінали, або взагалі в науку, чи R&D

Ну туплять жеж!

Інтернет, веб то мейнстрім.
Раз живе — то байдуже що там маргіналам не подобається — якщо вони крім свого обурення, незадоволення нічого не можуть запропонувати.

це прямий обов’язок програміста.

Це ж не тільки про вузькі прямі сферічні обов’язки саме програміста. Що і як там він пише — визначається саме вимогами «щоб працювало де треба і як треба».

так я й про те й пишу — мейнстрім лайно.

Ні, ви пишете не про те. Означені особливості — специфічні саме для вебу, а не для будь-якого іншого мейнстріму.

Веб — важлива річ і хтось має там працювати. Ну але там є неприємні особливості із якими доводиться жити і які прибрати вкрай важко, якщо взагалі можливо.

Усе ІТ — не мейнстрім. Для більшості — ми оті самі маргінали і життя йде без нас.

визначається саме вимогами «щоб працювало де треба і як треба».

ну і? що саме не працює «у вебі»?
от зараз малюю в draw.io
і яка мені різниця на чому він написаний, коли він працює як треба?

Означені особливості — специфічні саме для вебу

ну так. подібний списочок можно навести і про GUI — тільки він не мейнстрім вже.

Ну але там є неприємні особливості

так замість цього «там» можно поставити що завгодно. що вийшло за межі наукового, або R&D середовища.

або давайте простіше
поставте у речення
Ну але там є неприємні особливості
замість «там» те, що зробить речення неправдою :)

Усе ІТ — не мейнстрім.

Я й не казав що усе- Маргінальні напрямки в IT — це теж IT

Ruby, PHP, JS, Python — показують що типізація і не треба.

Ruby та Python — строго типізовані
JS та PHP — ні

я в курсі різниці між — динамичною та статичною типизацією, та сильною і слабкою

і мав на увазі перше.
бо другє не такє критичне. і вирішується частенько просто правилами в дев гайдах проекту, лінтерами і т.і.

про PHP — перед тим як робити таку заяву, вам спочатку слід почитати про його тайп-хінтінг, і засоби вмикання сильної типізації у PHP. а ще було б добре, коли б глянули на можливості PHPStan, Phan та Psalm
а про JS — питання давно вирішене за допомогою TS, Flow, Reason/Rescript, і т.д.

на практиці.
незадоволення пурістив — то такє. їм реальний світ ніколи не подобається.

Як на мене — так і повинно бути
люба типізація повинна бути опціональною, і її активація — гранульованною.
В залежності від вимог проекту, команди

var name:Type робити і мати відповідні гарантії під які можна компіляцію оптимізувати.

Воно і без цього оптимізує- нащо нам штучні обмеження?

оді там версія мови може компілитись у якісь версії VM, у якісь краще, у якісь гірше.

Залишається тільки питання- нахіба? Той же Webassembly не взлетів, так як для 99.99% проектів він не привносить ніяких бенефітів .

Якщо твій браузер взагалі не в зуб ногою, то щоб у JS компілило.

Не мала баба клопоту купила порося

Залишається тільки питання- нахіба? Той же Webassembly не взлетів, так як для 99.99% проектів він не привносить ніяких бенефітів .

шчо?
він ще толком не почав літати, щоби про нього казати «злетів» чи «не злетів»

він ще толком не почав літати

і не почне, бо він ніяк не вирішує головних проблем розробки.

скомпілювати сорци в щось, хоч під квантово-біологічний компьютер — то проблема авторів тулзів.
а не тих хто пише ті сорци.

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

По задумке.
А как будет по факту кто знает.

webassembly.org/docs/faq вот тут есть ответы на все вопросы.

В контексті розробки проектів, без JS, на що чомусь розраховували жабахейтери, він не злетів, уже і англомовна стаття десь рік назад була. Але тут він і не міг злетіти, бо ця технологія для зняття дуже рідкісних лімітів при розробці на JS, такий собі аналог С++ модулів під node, коли JS в якомусь вузькому місці недостатньо. По суті це віддалений функціональний аналог асемблерних вставок в С- тільки для вузьких задач і весь проект на ASM чомусь не пишуть, хоча теоретично можуть же.

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

dou.ua/forums/topic/35930

Гарна мова, хоч я на ній і не писав жодного разу. :-) Але ось знадобилося мені минулого місяця пропатчити чат рулетку щоб вона не відсікала віртуальні веб камери, посидів пару днів і готово. Або ось попросили підмінити в Skype звук виклику на якийсь довільний — теж нічого складного.

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

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

В лабах.
Пока это экзотика) Возможно в будущем сможет потеснить js. Но скорее всего нет, просто займет свою относительно не большую нишу.

Заодно треба покінчити з PHP безумством.
Кожна нова версія PHP десь чимось зворотньо несумісна із попередньою і безболісного переходу нема — переписуй і перетестовуй все.
Особливо радує, коли на сервері хостяться з десяток-другий сайтів, написаних у різні роки, і для них треба тримати цілий зоопарк PHP-шок.
У порівнянні з цим яваскріптове безумство вже не таке і страшне :)

А можна приклад де у пихи проблеми зі зворотньою сумісністю? Чи приклад де нова версія гірша за стару хоч в чомусь? Чи Вам аби ляпнути і показатись розумнішим?

Це переїзд на мажорну гілку, мажорна версія від мінорної і відрізняється тим, що видаляє всі deprecated-фічі, та рве зворотню сумісність
semver.org
А тепер скажіть, що зі списку мало б бути залишене? Більшість несумісностей — це фікси неоднозначної поведінки у неоднозначних кейчах, більшість з яких чиститься codestyle-фіксером (тобто, таких штук у коді взагалі не має бути). Для інших речей є Rector, для якого вже навіть є плагін на IDE.
То ж в чому проблема з міграцією на нову версію?
Назвіть хоч одну фічу, яку слід було залишити щоб не ламати життя любителям стабільності — і я розповім, чому це маячня, і чому еволюція мови програмування — це краще, ніж культ зворотньої сумісності (через який, власне, пиху і хейтять ті, чий хейт аргументований).

Перш ніж кидатись на людей, ознайомся, будь ласка, з матчастиною
www.php.net/manual/en/appendices.php

І про «гірша» я не казав, не треба приписувати іншим свої домисли і потім воювати з ними.
Це не робить тебе розумнішим.

Багато інфи, які саме поінти окрім гайда по переїзду на кожну нову мажорну версію важливий у цій дискусії? Я вище написав, чим еволюція мови краще за культ зворотньої сумісності. Додам ще те, що це комьюніті проголосувало саме за ці зміни. Чи є сенс порівнювати це з тим, що твориться з JS? У пихи-то як раз нема конкуруючих стандартів і потреби у сумісності з купою браузерів та інших клієнтів, що прибирає необхідність юзати поліфіли. Пиха набагато, набагато простіша, при всій її надійності для тих задач, під які вона заточена. То ж в чому, власне, проявляється PHP безумство? Сумісність тут точно не до чого.

P.S.: сорі за грубість, може це професіональна деформація та ввплив політичних срачів, де замість дискусій — наброси. Тут наче не такий треш, який я бачив у фейсбуці.

Доречі, проблема з зоопарком версій для різних сайтів — це теж не проблема PHP, у мов-конкурентів зоопарк буде виглядати приблизно так само (окей, махорних версій буде трохи менше) — а для NodeJS треба буде ще nodemon або аналогічну тулзу піднімати, щоб піднімати якщо впало. У пихи порівняно просто, хочеш зекономити — піднімаєш декілька версій php-fpm, ховаєш їх за одним NGINX, і воно працює. Ну а якщо треба скейлити — то все одно краще контейнеризації+оркестрації поки нічого не придумали, а там вже ізольоване оточення і юзай будь-яку версію що хочеш ) як і у інших мовах. Тобто, для всіх названих проблем є best practices, просто бери і юзай — phptherightway.com

несумісна із попередньою і безболісного переходу нема — переписуй і перетестовуй все.

Чимало було такого при появі 7ої версії.
у 8ії дещо з депрекейт перевили у непрацюючий стан.
Але — це треба глибоко копати, і воно доволі легко обходиться.

Так що, думаю, ви дещо перебільшуєте про біль несумістності версій PHP.
Core team PHP приділяє величезну увагу сумісності. Як і PHP-FIG — завертають нове на доопрацювання, якщо воно ломає без змогі обійти

Из свежего опыта.
был серьёзный монолит на C#.
Утомил. В проде был пару лет
выбросили, распилили на JS (+Flow). Полет нормальный, никто не жалеет. В проде уже больше двух лет.

С хейтингом JS та же история что с PHP — его количество коррелирует с количеством использования.

Причём совсем не так «для чего они предназначены»

Что пыха что джс — уверенно конкурируют с джавой и дотнетом на беке.
Хейтеры просто не в курсе, или пуристы.
Джаву плюсовики тоже — ох как хейтили. До надрыва животов, глядя на её первые версии...

через 5 років прийдеться переписувати все те що нажиесили фронтендери фулстаки на беку. Буде весело.

Я щас переписываю то, что надотнетили бекендеры фулстеки на фронте. Тоже очень весело (нет).

да я видел и что бекендеры набекендили на Java
и? Java то тут при чем :)

Самый наивный способ объяснять гадость в проекте — языком программирования на котором он написан.

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

Фулстек то взагалі доволі хрєнова ідея.

але — попит не зникне. фулстек має купу переваг, навіть якщо фулстекер такий собі що бекендер що фронтендер. переваг -у швидкості розробки при той ціні що платиться — одному програмісту, не двом.

А есть какие то пруфы что в 10 раз быстрее? Похоже что это неправда. Nodejs на данный момент очень быстр на уровне с Java и C#

В оптимізацію V8 вбухали доволі багато зусиль, можливно не стільки скільки в JVM, але тим не менш. Щодо однопоточності — це теж не зовсім так, але нода дійсно не дуже підходить для CPU intensive tasks, рішення цьому є, але якщо ви пишете якусь числодробилку — нода вам не підходить, да.

А за счет чего оно будет быстрее? Ну правда. Асинхронщина на до нете просто офиенская и работет из коробки. Нормально паралелится из под коробки через асинхронщину+TPL. Код очень читабельный. Дот нет копилируемый язык...

Так питання було про пруфи щодо «C# до 10 разів швидше». в плані мультипоточності я ще можу повірити, але ж не всі задачі її потребують. Було б цікаво знайти C# аналог github.com/socketio/socket.io наприклад, який буде тримати 10x коннектів на тому ж залізі

Було б цікаво знайти C# аналог github.com/socketio/socket.io наприклад, який буде тримати 10x коннектів на тому ж залізі

Прямо на той же странице ссылка на реализацию того же фреймворка под .NET.

10х это 10к? Я пилил на C# клиента, способного держать десятки тысяч одновременных подключений на одной машине еще в 2010 году, еще до появления async/await, на базе старого доброго AsyncCallback, который существовал чуть ли не с первой версии .NET FW. На моем нагрузочном тесте я вытягивал 32 тысячи одновременных клиентов, и то только потому что тестировал все на одном компе и упирался в лимит эфемерных портов.

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

10x — це в 10 разів швидше або в 10 разів більше конектів ніж реалізація на JS, с цього починався цей тред.

асинхронные не блокирующие поток операции ввода-вывода, которые существовали наверное со времен 80-х.

Ну это смотря в какой ОС... в винду I/O completion ports завезли только, начиная с NT 3.5 (это где-то 1994 год)

Асинхронщина и в NodeJS отличная. NodeJS с рождения вокруг неё и построен, собственно.
Для распараллеливания вычислительных задач в ноде сейчас тоже есть инструменты — которые, кстати, из коробки предотвращают множество способов выстрелить себе в ногу благодаря тому, что в ноде понятие shared memory отсутствует от слова совсем.

Что касается компилируемости — мы же все помним, что .NET компилируется в IL, а потом всё равно работает JIT, как и в V8? Да, есть ngen, но я не особо видел, чтобы его применяли на серверных проектах.

То есть, потеря только на начальном преобразовании JS кода во внутренний формат V8 JIT компилятора — но это преобразование работает крайне быстро.

Да, есть ngen, но я не особо видел, чтобы его применяли на серверных проектах.

Вже давно є CrossGen

Ну це той самий ngen, але кросплатформенний :) Питання у тому, наскільки часто його застововують при реальних деплоях

То есть, потеря только на начальном преобразовании JS кода во внутренний формат V8 JIT компилятора

Там под нодой можно грузить байткод (github.com/bytenode/bytenode), минуя преобразование в AST и первичную компиляцию, но там походу это с соображений защиты сорсов, а не экономии на спичках при загрузке приложения.

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

хейтеры — забавные ребята, натурально по библейскому
Почему ты видишь соринку в глазу брата твоего, но не замечаешь бревна в своём глазу?

Что касается компилируемости — мы же все помним, что .NET компилируется в IL, а потом всё равно работает JIT, как и в V8?

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

На практике

...было бы интересно посмотреть результаты бенчмарков :)

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

На практике

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

то есть — типизация по интерфейсам — мало чем помогает при генерации кода.
сбор статистики — да.
чем занимается и V8
В PHP уже тоже завезли. Но там синтаксических конструкций, на которых «сбрасывается» статистика больше чем в JS

а вот в С++ компилятор никак не может обойтись без постоянного вычисления в рантайме — адреса реального метода. Конечно, VMT высокоэффективна.

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

А вот сбор статистики — и JIT на ее основе позволяет генерировать более эффективный маш код чем статическая компиляция.
Про это много есть докладов по теме C++ vs Java(JVM)

GC — вот да, тормоз. Как и на ДОУ была упомянута история от Discord когда они сервис с Go на Rust переписали. После того как увидели что заоптимизировали все, но уперлись в GC.

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

JS же весьма минималистичен получится синтаксически. И для него вышло создать хороший JIT компилятор. Там их два даже, помнится.

Вот простой пример:

В C#

int add(int a, int b) {
    return a + b;
}

в общем случае компилируется в несколько инструкций

В Javascript тот же код не будет знать о типе a и b и в общем случае должен в рантайме проверять что за тип у значений a и b и в зависимости от этого вызывать одну из многих логик сложения, присутствующих в Javascript для разных типов.

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

Таких примеров можно множество привести — связанные с sealed классами, честными интерфейсами с vtable вместо «объект-словарь», дженерики, котоыре позволяют делать static dispatch интерфейсов, дженерики, которые позволяют эфективно хранить в памяти массивы/списки, структурные типы данных и т.п.

Про это много есть докладов по теме C++ vs Java(JVM)

При чем тут C++, речь о том, может ли обогнать JIT, в котором есть информация о типе данных JIT, который такой информации не имеет.

Вот простой пример:

я так и знал что будет показан самый примитивный случай — int
как венец оптимизации по типу :D

В Javascript тот же код не будет знать о типе a и b и в общем случае

в общем случае — да.
в конкретном случае — какая часть кода занимается арифметическими операциями, а какая — над массивами(в частности строками), и какая — вызовы call, передача аргументов

ну и изучение можно начать с

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

потому что:

Глобальный анализ кода может помочь Javascript

указывает что вы не поняли какие возможности есть JIT компиляторов, которых нет у статических.

и не всегда в принципе возможна.

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

Таких примеров можно множество привести

так же как синтетических числодробильных тестов быстродействия.

все «эти циклы в миллиарды итераций складывающие два числа» — что доказывают?

что доказывает что для a+b будет сгенериван лучший машкод?
а если такой же машкод будет сгенерирован JIT компилятором после 10 вызова функции с intами по факту — что докажет?

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

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

JVM например может заинлайнить вообще — виртуальный метод.
Статический компилятор — не может, в общем случае. У него нет информации о — выполнении кода :)

P.S.
глянул, бенчмарки свежие

почему не хейтят Питон?
Node js cpu 6.20
Python cpu 436.79

или вообще
Node js cpu 16.00
Python 3 Timed Out

А наоборот, Питон в топе, за ним будущее, и т.д.?
benchmarksgame-team.pages.debian.net/...​sgame/fastest/python.html

почему не хейтят Питон?

это не модно)

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

Я хейчу пистон

я не хейчу еще — но технологически — напрочь не понимаю чем он лучше php и js. потому что он — хуже.

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

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

То есть слава Python — вопиющий случай что у нас в айти тренды задаются совсем не по технологическим причинам.
Политика и социология — вот главные движители трендов.

И когда холиварят — ах, там в X чего-то не так
На Python посмотрите.
Как годами на него накручивали чтобы из учебного ЯП и для для написания «башскриптов» управления «переможением матриц» — сделать его промышленным ЯП.

При этом «социология» велит его хвалить, а вот php и js — хаять.
и толпы четко следуют этому указанию :)

но технологически — напрочь не понимаю чем он лучше php и js. потому что он — хуже

а чому гірше?
які аргументи?

а чому гірше?

тому що самий тормознутий з них :)
Є звісно PyPy та Pyston.

які аргументи?

глибоко не копав, але не побачив у нього ніякої кілер фічи. У всіх мов зазвичай є такі. А Python як сучасний Basic, як на мене. Все що потрібно для мейнстрім мови є, а щось свого — немає.

Ну і я би послухав про кілер-фічі жабаскрипту чи сішарпу? Ну от щоб прямо кілерфічі, як у якогось там ерлангу.
У пайтона є його треди, є встроєний біндінг до сі, є самий модний синтаксичний цукєр з мейнстрім мов і немає легасі тих самих мейнстрім мов.

Ну і я би послухав про кілер-фічі жабаскрипту

прототипне наслідування, легкість створення функцій першого класу, за рахунок простого лексікал скоупа та в цілому легка робота з функціями і над функціями.

У пайтона є його треди

це ті що з GIL?

треди вже і в Node js є.

синтаксичний цукєр

він всюди є.
Самий крутий що знаю — у PHP.

Але ж про це не можна казати, чи не так?
Треба ж хейтити PHP, хоча він семантично самий потужний серед мейнстрім мов.

цукор у пхп? де щоб array_filter зробити треба купу непотрібних буковок написати?
Загалом то так, після 7 версії пхп добре модернізувався, проте саме цукру там я навіть і не пригадаю особо. Хоча це може бути просто моє суб’єктивне незвертання уваги на звичні речі.

Про семантичну потужність не знаю, але отак швидко не скажу, чим він потужніший того ж пітона.

цукор у пхп?

так. просто афігений.
я такого не бачив ніде.

Ну, може тільки в Groovy ще — такого ж рівня. Та трохі менше в Ruby

після 7 версії

я починав з 5.5
він вже був крутий.

чим він потужніший того ж пітона.

тю. пітон то просто сучасний Basic.
так він і задумувався — як заміна МП для навчання, щоб діти та студенти не портили собі мізки Basicом. Ще, десь тоді так виник Pascal. Але з — статичною типізацією.

я не бачив ще нічого щоб викликало вау ефект від його семантичних можливостей.

де щоб array_filter

такого хешмап-лісто-масива-стека — не має ніде.
кілер фіча, факт.

а з array_filter не пам’ятаю проблем.

а з array_filter не пам’ятаю проблем.

авжеж, бо їх особо і немає. Просто бодай якимось цукром тут не посипали.

| чим він потужніший того ж пітона.

тю. пітон то просто сучасний Basic.

Так чим він потужніший?

Так чим він потужніший?

почніть с курсів для вайтішників.
в мене немає ніякого ані бажання, ані часу викладати php для мідл+ рівня тому у кого з array_filter проблеми

аргументів у вас нема, а не бажання.

такого хешмап-лісто-масива-стека — не має ніде.

це там, де ні хешмап ні ліст ні масив не працюють нормально? ясно

працюють ще й як. а поганому танцюристу завжди яйця мішають. то такє.

у PHP купа є недолікив та обмежень. але ніяк не про його array.
який — як не хочеться з ним працювати — можна не використувати. в PHP і для джава стайл програмування все є.

у пехопе все є, так. І оце «все є» ніяк не заважає пехопешному array бути пехопешним array, а не взірцем для інших.
Так то якщо використовувати сентенцію про яйця — можна виправдати буквально будь який стан речей. «ви просто нє умєєтє єво гатовіть» авжеж.

а щось свого — немає.

есть дурацкий синтаксис с отступами. Чем не особенность? :)

Особенность, да.

Киллер фича ли, если форматировщики кода — маст хев в проектах?

ніхто не хейтить пітончик більше, ніж непітончики. Ніяка соціологія чи соціум тут взагалі ні до чого. Чувачок спробував зробити «язь[ик] моєй мєчти», у нього трохи вийшло. Додали трохи хайпу, більш-менш зручний інтерактивний режим, біндінги до сяшечки.
Ну частково вийшло, свою нішу отримав. Всі, хто хотів писати сайтики на пітоні — пишуть на пітоні. Хто не хотів — пишуть на пехопе, особо упороті — на дотнеті. Різномаїття це добре.
І тільки подєлія на електроні не добре і бажна джира.

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

Ніяка соціологія чи соціум тут взагалі ні до чого.

до чого, тому що ви навели приклади саме з них, а не технічні.

Наведіть технічні переваги Python, які зробили його топовим на Tiobe і які забороняють його хейтити :)

І тільки подєлія на електроні

вони — вистреліли.
А от з аплікаціями з біндінгом до Qt — якось не так вже.

називайте як хочете — подєліями чи ще як з матюками.
Вони працюють, вони масові. а ідеальне з точки зору пурістів — ні.
Кому цікаво що там тобі бурчать маргінали?

Вони — вистрелили.
ну пітон так само вистрілив.
Імхо — цілком рівнозначні причини.

Імхо — цілком рівнозначні причини.

так назвіть їх.
Я ж назвав свою версію.
І по неї — причини різні.
Ви кажете що однакові.

То назвіть їх, ці однакові причини

ну так от причина
«вони — вистрелили»
Для подєлій на електроні ж ця причина підходить? То чому не підходить як причина популярності якоїсь мови Х?

Насправді пошук причини «чому Х краще У» — це як «чому кит сильніший слона». Кому що подобається той тим і користується. От куди віднести причину «наша команда краще знає пітона, тому обираємо пітон» — до соціальних? так «краще знає» === «зроблять технічно більш досконало», або причину «є нумпу і ліба для машінен обучінен, тому беремо пітон»?
Ну і вцілому «топ десь-там» це не те щоб показник. В топі серед галєр буде шарп, в топі серед індивідуалів — буде пехопе, в топі серед двадцятитрьохрічних сенйорів — жава.

Таке відчуття, що ви пітона «не хейтите», але добряче на нього образилися за щось)

«вони — вистрелили»

это не причина — а следствие.

Для подєлій на електроні ж ця причина підходить?

не підходить. бо це не причина їх успіху.

Я навів цей результат до того, що як послухати хейтерів — то ніяких подєлій на електроні не повинно було б бути взагалі.
З причин — на які вони вказують.

А от у дійсності — щось не так, з причинами на які вказують хейтері. Вже писав про це в цій темі.

Насправді пошук причини «чому Х краще У» — це як «чому кит сильніший слона»

насправді — «у всього єсть причина»
а от коли людина не має ніякої версії — то так, починає:
Ну і вцілому «топ десь-там» це не те щоб показник

бо просто — не знає, не думала над цім, але хоче щось сказати.
:)

або причину «є нумпу і ліба для машінен обучінен, тому беремо пітон»?

про це я вже написав у темі.

Таке відчуття, що ви пітона «не хейтите», але добряче на нього образилися за щось)

ок, ясно, понятно, черговий телепат :D

телепат не телепат, але вгадав, штош.
У всього є причина, так. Де причина успіху електрона? Добре, «вистрілили» — не причина. Де причина? Звісно вона є і не одна і ви цілком її можете навести (це не іронія). Далі візьміть цю причину і замініть «електрон» на «пітон».
Яка може бути версія у «чому пітон популярний»? та таких версій десятки, але більшість з них суб’єктивні. І навіть якісь об’єктивні (на кшталт тих же біндінгів) теж не абсолют, бо, припустимо, для тих же сайтиків ці біндінги і нафіг не здалися.
Тому такий пошук «причини» мені здається просто трохи надмірним, якщо він робиться не заради підтримати дискусію чи потролити)

коли людина не має ніякої версії

див. вищ. — біндінги, зручний інтерактивний режим, простий синтаксис.

телепат не телепат, але вгадав, штош.

тобто самі собі премію виписали :D

Де причина успіху електрона?

у тому й прикол що у хейтерів є причина щоб такі «подєлія» вмерли в род будинку.
запитайте у них — вони знаються на технологіях, які повинні перемагати :)

і не одна і ви цілком її можете навести

я їх навожу не один рік на доу :)
і не тільки. і в цій темі.
Ви, тітульований телепат — повинні це знати, чи не так? ;)

Тому такий пошук «причини» мені здається просто трохи надмірним

то просто тому що ви й шукати не вмієте.
всі сили пішли на прокачку телепатії мабуть :D

біндінги, зручний інтерактивний режим, простий синтаксис.

біндінги — то не про мову. а про комьюніті — соціальний аспект

зручний інтерактивний режим

ну у bash є. І?

простий синтаксис.

ну да, сучасний Basic. я ж про це вже писав.
тому й обраний для викладння в школах та колелжах. Бо він — Basic.
ну і тому — а більш ніяка мова і не відома. Перша і остання мова — Python :)
Тому оцей Basic впевнено йде в топи, і — хейтити його не можна. Хто ж Єдиного Бога у зростаючого натовпту посміє хейтити :)

ви читаєте — чи тільки на дар телепата покладаєтесь? ;)

«запитайте у тих», «пройдіть курси», «плохому танцору». Інформативні відповіді.

Баш використовується і популярний. Яка проблема з башем?

Пітон в топи саме йшов років десять тому. Зараз він зайняв свою нішу і розвивається, мабуть, потихеньку. Як і пхп, нода, ява і інші слова.

я не хейчу еще — но технологически — напрочь не понимаю чем он лучше php и js. потому что он — хуже.

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

— научные работники используют его вместо Mathlab, в качестве bash

А почему такого не сделали для похапе и джс?

Сорта г-на язычков с динамической типизацией

и миллионы мух — которые не ошибаются! ;)

в первом наслоения концептов и библиотек без структуры

ну это да, когда в голове структуры нет — то все видится без нее.

во втором — абсолютно е-тое поведение в корнеркейсах

нэ бэры важкого в рукы, а дурного в голову.

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

Но да, я о том и написал:
Питон лучше тем что он создавался по мотивам учебного языка (...Гвидо начал разрабатывать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию))

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

А почему такого не сделали для похапе и джс?

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

спрос — рождает предложение. мало кому нужны либы для суровой математики.
никто ж не считает что МатЛаб, R, Julia,... — это вещи для милллионов мух=софтвар дэвов? вот и нумпаи, там же — невостребованы.

я так и знал что будет показан самый примитивный случай — int
как венец оптимизации по типу :D

Что я могу сделать, если даже с примитивным случаем Javascript не справится?

Я не знаком с инструментами под Javascript, способными выдать удобоваримый ассемблерный листинг (типа godbolt.com), если знаете, напишите, я запилю более сложные примеры.

ну и изучение можно начать с

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

Нить, которая проходит через большинство примеров в статье: пишите свой код так, чтоб компилятор смог догадаться какие именно типы вы используете и сгенерировал код, который оптимизирован для конкретного типа, иначе компилятор сгенерирует какую-то фигню. Приходим к тому же выводу — информация о типах важна для эфективной работы JIT, явная или неявная. И очевидно, что явная и обязательная информация о типах (как, например, в C#) даст больше плюшек, чем best effort неявная, смекаешь?

указывает что вы не поняли какие возможности есть JIT компиляторов, которых нет у статических.

Я не сравниваю здесь JIT компиляторы с чем-то другим, речь идет о конкретно двух JIT компиляторах — C#/IL и Javascript.

Исходный тред: dou.ua/...​rums/topic/39492/#2466856, ознакомьтесь с контекстом прежде чем лезть в брод.

все «эти циклы в миллиарды итераций складывающие два числа» — что доказывают?

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

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

Я не вижу примера в вашем посте.

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

benchmarksgame-team.pages.debian.net/...​me/performance/nbody.html

Статический компилятор — не может, в общем случае. У него нет информации о — выполнении кода :)

Например, LLVM может использовать информацию, полученную при профилировании кода, для того, чтоб собрать более оптимизированный код: clang.llvm.org/...​ofile-guided-optimization

Что я могу сделать, если даже с примитивным случаем Javascript не справится?

не заниматься демагогией конечно :)

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

Я не сравниваю здесь JIT компиляторы с чем-то другим, речь идет о конкретно двух JIT компиляторах — C#/IL и Javascript.

я тоже не сравниваю. Это работы минимум на доклад для международной айти конференции :)
но делать из одного малозначимого недостатка — для конечного ПО — вселенские обобщения — демагогия.

В древние времена мне приходилось заниматься ручной оптимизацией — ассемблерного кода генерируемого компилятором С

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

но конечно, если взять в качестве этих 100 строк «перемножение матриц» то слив Python даже тупенькому компилятору, который и лично могу написать, с ЯП где примитивные типы четко прописаны — будет впечатляющим.
решил не ковырять более сгнивший труп PHP, уже ж мало кто помнит этого мертвяка. И смертельно больного JS, которому гарантировано осталось до могилы совсем чуть-чуть. Зачем тратить на это время.
Лучше сравнивать звезд :)

Впредь о просаде быстродействия и гавнакодинге потому что дин яп — буду использовать обобщенное свежее имя — Python

Я не вижу примера в вашем посте.

тогда ничем не могу помочь. Учите русский язык и матчасть.

Если бы все было так хорошо, как вы говорите, Javascript бы лидировал в бенчмарках,

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

По той же причине никакая круть JVM или JIT .NETа не смогут сделать их лидерами в бенчмарках. А вот на практике...

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

Например, LLVM может использовать информацию, полученную при профилировании кода

Профилирование кода — не тождественно статистике работы приложения в проде.

но делать из одного малозначимого недостатка — для конечного ПО — вселенские обобщения — демагогия.

Я не делаю вселенских обобщений по поводу сложения, я явно писал что это только простой пример.

Если можете посоветовать удобные инструменты для анализа финального ассемблерного кода, сгенерированного Javascript JIT компилятором, я б с удовольствием поискал более интересные примеры.

Впредь о просаде быстродействия и гавнакодинге потому что дин яп — буду использовать обобщенное свежее имя — Python

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

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

Если Javascript медленный именно из-за GC, то это бы не проявлялось на «числодробильных» бенчмарках, где не делаются постоянные аллокации в куче.

На nbody javascript решение делает только 6 аллокаций в куче за всю жизнь программы: benchmarksgame-team.pages.debian.net/...​program/nbody-node-6.html

Сливает он полторы секунды C#, в котором тоже JIT и GC, и в котором тоже делаются такие же аллокации в куче.

Профилирование кода — не тождественно статистике работы приложения в проде.

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

Если можете посоветовать удобные инструменты для анализа финального ассемблерного кода

Встречал в докладах.
Но я такой мышиной возней давно не занимаюсь.

Если такое нужно для работы, то я бы смотрел на использование C++ или Rust

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

докладов и статей по JIT JS вполне много.
Но в целом по JIT — лучше Javовские искать смотреть. Их больше и обычно глубже

Суть Python не в быстродействии самого Python, а в том, что в нем запилены эргономичные биндинги для большинства серьезных вычислительных библиотек

ну то есть если бы были такие же биндинги для PHP и JS — вы бы

только простой пример.

 не приводили бы?

Если Javascript медленный именно из-за GC, то это бы не проявлялось на «числодробильных» бенчмарках

Числодробильные бенчмарки — давно моветон и высмеиваются годами. Для любого ЯП.

Потому что для числодробильных задач ищутся — эргономичные биндинги.

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

в проде дело не в данных. а в типичности вызовов.

Если в 99% случаев — за интервал в неделю вызов функции с аргументами интовыми — то вот и будет выгода от вызова интовов версии машкода
Если вперемешку — 5 раз для интов, 5 раз для стрингов — то что есть там JIT что его нет, и чистый интерпретатор от толкового пятикурсиника — разницы не будет.

Сливает он полторы секунды C#, в котором тоже JIT и GC

Про специфику разогрева систем с статической зависимостью JIT — есть доклады для Java

И напомню — у V8 два компилятора — один быстрый но тупой. Второй медленный но крутой. Второй запускается при наличии большого размера статистики.

У JVM подобное же устройство.
А вот насколько помню С# - там нет VM, пошли другим путем, сразу компилировать.

Поэтому, в общем случае — ниавные бенчмарки Java vs C# будут в пользу C#
неразогретая VM — всегда сольет разогретой, или когда ее нет

Я не вижу примера в вашем посте.

добавлю другой пример.

Например мне поставили задачу написать JIT для дин ЯП — ну чтобы хотя бы работу с целыми числами делал эффективно!

Тьху, делов то.
MVP версия:
function add(a, b) {
return a + b;
}

a и б — неизвестного типа?
на этапе компиляции.

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

значит, при

add(arg_a, arg_b)
нам надо посмотреть на флаги типов arg_a и arg_b

если это intы — компилируем в машкод функцию add для intoв.
возвращаемое значение — оборачиваем в структуру с заполнением что это int
при этом, хотя в MVP не указано, в случае наличия локальных переменных в add — мы можем уже и на этапе компиляции вычислить их тип (конечно если не было возвращаемого значения с вызовов других функций, но и в этом случае можно пошаманить, и знать что за тип будет — если те функции мы тоже компилировали сами)

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

если это intы — компилируем в машкод функцию add для intoв.

Ніт, потому что такого типа как int в Javascript нет, есть Number (64-битное с плавающей запятой), и все операции нужно проводить как операции с плавающей запятой.

как операции с плавающей запятой.

Неа, внутри компилятор различает int и float. Это одна из множества оптимизаций.

Он может различать int и float, но операции сложения он должен проводить согласно тому, как написано здесь, а именно как операции сложения чисел с плавающей запятой.

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

Он может различать int и float,

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

Для таких биндингов например в PHP отрефакторили FFI. Норм подход, так и надо.

информация о типах данных,

в ЯП типов гораздо больше, чем аппаратных.
оптимизированный примитивный числовой тип — ничего не дает для оптимизаций по типам в ООЯ.

Ніт, потому что такого типа как int в Javascript нет

мы говорим о машинном коде вроде?
пофик что там в каком ЯП.

для указнного случая нам нужно ответить на вопросы:
— какие арифметические операции над int могут дать float?
— как дорого проверять помимо флага в структуре описания переменной — int там или float?
— имеет ли смысл проверять это и после операций с результатом float, и держать два вида машкода?

и т.п.

то есть нужно заняться этой работой.

а наивные примеры в холиварах, для тех кто не в курсе, и никогда ничего такого не делал — конечно истина в последней инстанции.

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

Есть примеры бенчмарков для PHP — пишем как обычно vs экономим на функциях. Разница ощутима.
Дмитрий Стогов — который многие годы занимается JIT PHP — в докладах на это сетует — что богатейшая семантика вызова функций в PHP не позволяет написать эффективный вызов в машкоде.

Подобная история была и HotSpot в Java. забыл имя, влом гуглить, автора регистрового аллокатора для — стековой машины, гарвардской, лежащей в основе JVM

Другими словами — как писали в теме — для юного поколения высокая эффективность асинхронщины в Ноде выглядит магией, хотя там никакой магии, DMA буферы контроллеров работали по тому же принципу тьму веков назад

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

Мало того что с ЖС залетели так ещё и флоу взяли)
Буллшит бинго, так сказать)

Максимальный хейт майкрософта.
Вообще по стеку можно подумать, что решение принимал не зрелый архитектор, а 23 летний синьор с юношеским максимализмом.

удивительно, но что первую версию на .NET, что потом переход на Ноду осуществляли выпускники MITа.
Они и сейчас рулят прирастающим клиентами проектом :)

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

арихектор думает что будет с проектом через несколько лет.

Это уже не архитектор, а Нострадамус какой-то. Что будет с проектом через несколько лет — не смогут сказать даже сами заказчики / стейкхолдеры.

Почему?
Очень вероятно, что если для фронта сейчас выберете ExtJS, то через год два тяжелее будет искать людей для расширения команды, чем если это будет React.

только безумец выберет сейчас ExtJs вместо Реакта или Ву
потому что на ExtJs тупо тяжелее писать Web UI.
Я с ним сталкивался. Чур меня чур. Разве что если платить в 2 раза больше будут — тогда можно подумать об этом Коболе WebUI разработки

только безумец выберет сейчас ExtJs вместо Реакта или Ву

Та всякое бывает. Люди вот например Flow вместо TypeScript выбирают. И ничего, живут с этим.

Давно дело было, когда выбирали. TS тогда не вызывал доверия.
А у Flow мне только старт его языкового сервиса в фоне не понравился. А так — свою работу делает. Как и TS.
И не заметил чтобы как-то уж хуже.

Сам не брал бы его конечно. Сейчас.
А когда то бы и ни пыху, ни ноду на бек не брал бы. И нелепый. Net тоже. Он же с версии 3 только стал прилично выглядеть :)

Так что клиенты ждут надёжную работу приложения и быстрое появление нового функционала.

На. Net прирастали. Но «себестоимость» стала неприемлимой.

И ещё раз, о компании и команде знаю изнутри. И код видел.
и мне понятен и выбор, и та чушь что пишут о ноде и жабоскриптерах.
Они там планируют TLA+ добавить, есть потребность. И добавят. «23летние жабоскриптеры»
Аха. Там вроде младше 30 лет и нет в команде никого. А архитектам и ведущим разработчикам под 40.
тупни короче. Им бы советов с доу послушать

Так что клиенты ждут надёжную работу приложения и быстрое появление нового функционала.

На. Net прирастали. Но «себестоимость» стала неприемлимой.

Поэтому стопнули приростание «нового функционала» и переписали с нуля на новой технологии, с обучением и со всеми рисками смены стека. =)
Тут или не полная вводная, или вы сами не владеете информацией на основе которой принималось решение, или послушать советов было бы не плохой идеей.

Поэтому стопнули приростание «нового функционала» и переписали с нуля на новой технологии, с обучением и со всеми рисками смены стека.

Да. потому что этот переход, вкупе с рисками оказался — выгоднее.
Делался естественно поэтапно. Выпиливались в сервисы части — и переписывались на Ноде. Пока — не осталось почти ничего на .NETе. Осталось конечно. То что будет просто выброшено, то есть не требует развития, а просто для совместимости, легаси, и т.д.

Примерно как
а давайте переведем наши десктоп приложения с GUI на Electron?
чтобы больше не решать проблемы — винды, макоси и линукса.

Тут или не полная вводная, или вы сами не владеете информацией на основе которой принималось решение

Вполне владею. От команды, с нашей стороны, которая в проекте не один год.

Вообще, я привел просто то что было реально вчера, далеко и ходить не надо.

Потому что распилами монолита и уход, в процессе, от Джавы/.NETа в сторону Ноды или Go — полон интернет.

то есть, как по мне, нелепо доказывать что это — обычная история.

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

или, позавчера, делал прокси серверок
я писал и на Джаве ,и на .NET
поэтому могу сравнивать — на Ноде в разы быстрее. и требования к железу меньше. и т.п.
и на пыхе писал. и тоже знаю — насколько и почему быстрее выходит разработка сложного бекенда, с мудреной бизнес логикой, имеющего только апи. То есть в случаях когда лет 10(или 15?) тому кроме как Джаву или .NET и не было что взять.
поэтому мне понятно — почему выбирают пыху или ноду. как и риски, особенно с пыхой.

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

поэтому, как писал
мейнстрим.

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

Да. потому что этот переход, вкупе с рисками оказался — выгоднее.
на Ноде в разы быстрее

Где-то тут 23-ех летний синьор и порылся.
Я если что не против ноды или js, но конкретна ситуация которые описываете вы очень странная.
Команда не смогла в монолит на .NET превратив его в дорогостоящий комок грязи. И решением проблемы выбрала не рефакторинг архитектуры, или даже переписать части системы с 0 в отдельные микросервисы/модули, а переписать с 0 с полной сменой стека.
Мне бы такой план вы не продали =)
И даже более того я бы сигнализировал менеджменту, что надо привлечь внешнего эксперта для аудита решений, потому что превратить в комок грязи/распределенный ад систему на ноде еще легче, чем на NET.

Ситуация не странная, а вполне типичная. Эта просто прямо свежая, вот и упомянул.

А сигнализировать менеджменту — у них не выйдет — потому что они сами и есть менеджмент.
Давно давно, группа программистов с айти отдела одной ТНК, делая софт для неё — увидела что если по универсальный его сделать — то ниша ого.
Ну и уволились. Сделали.
Вышли в прод с версией на. Net
Бизнес рос, продукт тоже.
и как технари И менеджеры в одном лице, увидели что есть выгодней технология, переход на которую решит или улучшит их И бизнес И проект. Оптимизация расходов плюс быстрее реализация хотелок пользователей, инноваций и проч. в продукте. На доу говорят что это плохо, надо думать об Идеальном программировании, да
(продукт не для хоум юзверов, если что. А для предприятий. Больших. Мелким он и даром не нужен)

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

А команда смогла в монолит. Фин отчётности не видел, но думается что как раз выход в стабильную прибыль и позволил, и вынудил.
И она смогла и в немонолит.
А не молилась догмам. Деньги решают. Которые — и время :)

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

Так что там что там с командой все более чем ок.
Но на доу конечно телепаты уже и с той командой, и с её бизнесом все просекли :)

из-за NDA не могу называть этот проект.
но да, «ДОУ гавкает — а караван идет»

И пусть идёт)
Деньги платятся, код мутится)
Почему бы не поспорить тем временем?

Караван ReacNative тоже шёл)

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

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

Хотя не я ж первый это заметил :)
закону Этвуда сколько уже лет.

Конечно, неожиданно появился третий — Python :)
И конечно, X is dead — риторический прием о старожилах в разработке

Джаву плюсовики тоже — ох как хейтили. До надрыва животов, глядя на её первые версии...

цей хейт цілком зрозумілий, бо рання джава, до версій десь 1.4-1.5, була доволі жалюгідною і незручною і нічого не давала взамін

нічого не давала взамін

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

Понемногу приходит осознание того что ЖС это костыль и вся суета вокруг ЖС это попытки исправить костыль другими костылями ибо обратная совместимость)
Бебели, вэбпаки, тайпскрипт — оверхед над языком который не решает проблемы, а добавляет новые)
Где там Тимур со своими проповедями?)

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

JS отличный язык который прикрасно вписывается в нужны работы с DOM.

Та пусть бы только кнопочки им и красили)

тайпскрипт — оверхед над языком который не решает проблемы, а добавляет новые)

Так может просто не надо «исправлять» то, что в этом не нуждается? :)

вэбпаки

Есть альтернативное предложение как нечто скриптовое с тысяч модулей должно доставляться клиенту, чтобы оно не было «костылем»?

Бебели

Ну так можете писать легаси без бабеля на ES3 по 15 лет, пока не умрет последний клиент, с обработкой ручками всех актуальных полифилов для платформ всех мастей и возрастов. С какого момента инструмент, позволяющий писать кроссплатформенно для всего зоопарка, в том числе используя самые свежие вещи, еще не вошедшие в стандарт, стал костылем? Это наоборот ускоряет итерации при внедрении новых возможностей в ЯП.

Есть альтернативное предложение как нечто скриптовое с тысяч модулей должно доставляться клиенту, чтобы оно не было «костылем»?

WebAssembly. Скрипт має компілюватися в байткод, а не в інший скрипт старішого стандарту. Тому поточна концепція бебелів — це чистий костиль.

кормить всех надо и каждому по квартире-машине

тут не только на джаваскрипте начнёшь писать

так, і що таке «Е»? І як це правильно гуглити?

Хутчэй за усе iдеальная мова аб якой марыць аутар, зразумела якой не iснуе.))

Я підозрюю, EcmaScript, але можу бути неправим.

ну хайпанув на заголовку, що далі?

давайте всі писати фронтенд на C++! webassembly forever! /s

Впевнений що хтось напише чи вже це зробив js рушій на webassembly :-)

Та можна той же гошний goja спокійно під wasm збілдити

Так, це перше що спало на думку. Але не хотів ділитися з публікою цими збоченими думками

Я «за». С++ не така страшна, просто треба підібрати фреймворк.
Зараз дефіцит заліза — то С++ якраз гарне рішення. Для невеликого сервіса на бекенд достатньо Расбері 3 чи 4 + статична ІР — і воно менше споживатиме електрики, ніж вентилятор сервера з тим самим на пайтоні.

«C++ — кошмарный язык. Его делает ещё более кошмарным тот факт, что множество недостаточно грамотных программистов используют его, до такой степени, что оказывается намного проще выкинуть его как мусор».
Линус Торвальдс

Процитируйте Линуса где он отзывается хоть о чем либо хорошо, кроме дизайна UNIX и C ? Безумовно и такое мировоззрение имеет место быть , проверенные временем и опытом технологии часто показывают результаты которых ряду новых не достичь никогда. В том числе и старички C++ и JavaScript, кстати симбиоз.

на плюсах сайты давно уже можно писать, а что не так? Wt же
www.webtoolkit.eu/widgets/forms/combo-box
Удобно как — бэк и фронт одним кодом. Скомпилил в бинарник, запустил на любом порту, прокинул к нему веб-сервер и всё. А не вот эти ваши интерпретаторы куда ни плюнь))

, а что не так?

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

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

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

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

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

Иногда — ключевое слово.
Иногда — все бывает. Как я говорю — Иногда бывает даже то, чего никогда не бывает.

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

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

Если бы было всё так просто

я и говорю что все куда сложнее чем мыслят себе идеалисты

Но распредление Гаусса — вполне работает и на статистике применения ЯП/технологии в проектах.

А иногда, конечно, бывает что и GUI приложение надо писать на С++.
распределение Гаусса не отрицает существование «1% случаев», и не утверждает что этот «1%» исчезнет.

це прямо як у москалів які критикують Захід і вже 100 років чекають коли він «загнійот» зі своїми долларами.
Крокфорд лаєт, а ЖабаСкріпт пливьот. :) If you know what I mean...

Давайте перепишемо 3 мільярди сайтів на іншу мову програмування, і увсіх девелоперів буде робота)

Цікаво, ніколи не чув про мову E

А я чогось подумав що це жарт і малось на увазі це:
github.com/...​eeeeeeeeeeeeeeeeeeeeeeeee

Простіше забути Крокфорда

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

Він і зробив.

Ну тільки нарешті наважився почати його вчити і на тобі...

А де у JSON коментарі? Як закоментувати у JSON файлі небажане?

То что ты кофиги в джсоне пишешь не значит что это правильная идея

Навошта каментары у фармаце для перадачы данных?

Ога, замените... Как замените — позовете ;)

Найкраще що ми можемо зробити, це перейти на typescript

Я в цьому бачу несказанну іронію — саме майкрософт закопали ECMAScript 4 де було все те що в тайпскрипті і купа всього чого там досі нема лише на надцять років раніше.

я за TypeScript, ELM — але ж воно транспойлиться в чистий JS. то шо там на NodeJS пишуть вапще гей-парад на марші.

Це правда. Але боюся, те що прийде на його місце, буде ще страшніше.

Він же ж нібито нікуди не подівся?

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