UNIX программа написанная 30 лет назад JS пакет написанный 30 месяцев назад / it-юмор :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)
Подробнее
UNIX программа написанная 30 лет назад
JS пакет написанный 30 месяцев назад
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор
исторически ЖС считается языком "из говна и палок", а то что он здорово эволюционировал с тех пор и обзавелся очень годными аддонами типа тайпскрипта, никого не волнует
*исторически ЖС является языком "из говна и палок"
"аддонами типа тайпскрипта"
што, простите?
ts - отдельный язык, сделанный совершенно другими людьми, которых заебало всё то говно, что в js как было в начале, так никуда и не делось. язык, компиляющийся в js.
компиляция в сорцы всегда была и будет писец тормозной, но даже на это люди идут, лишь бы тот сраный JS руками не трогать.
система типов потребовала в разы больше работы - умственной работы, такой работы, на которую способны может быть десятки людей в мире - чем всё остальное, что есть в сраном js.
по легенде js за неделю на коленке слепили.
все скриптовые языки примитивные, любой самый простой язык со статическими типами в разы сложнее самого сложного скриптового.
подразумеваю то же, что и все люди - насколько сложно было запилить этот язык. насколько крутые спецы для этого нужны, и сколько они убили на это времени
в инете, где же еще. ты к чему докопаться решил, к легенде про то, как Эйх его где-то там в самолёте наваял? я не утверждаю, что так и было, свечку не держал. Но то, что получилось говно - факт.
сам-то веришь что можно было "на коленке" наваять язык программирования?
Было поставлено вполне адекватное ТЗ - сценарный язык для обработки DOM, лёгкий, быстрый и компактный интерпретатор, некритичность к ошибкам в коде (и слабая типизация тут только в плюс). Отталкивались от тяжелых и неповоротливых Java-апплетов, требовательных к железу, терпению пользователей и всратому юзер-интерфейсу (почему-то до сих пор десктопные java-приложения с формами и кнопками сильно страдают от этого и имеют кучу проблем с мультиязычностью на разных платформах). Никто не предполагал, что на JS натянут реакт, засунут на сервер и простые частные решения повылазят боком любителям строгой типизации, ООП, крупных проектов.
"лёгкий, быстрый и компактный"
и чтоб отсасывал заодно. ты понимаешь, что это противоположные по вектору требования. быстрый - значит jit надо, jit компактным не будет.
"некритичность к ошибкам в коде" - это вообще что за ёбаный пиздец? это как? в каких языках такое есть? на каких эта фича была обкатана до того, как делать ее мировым стандартом?
"слабая типизация тут только в плюс"
ты троллишь? слабая типизация - кусок говна, при которой проекты длиннее пары страниц кода начинают разваливаться под своим собственным весом.
единственный плюс - ее можно сваять на коленке за неделю.
самый примитив из всех возможных вариантов.
"Отталкивались от тяжелых и неповоротливых Java-апплетов"
что? то есть, тупо текст пересылать по сетке - это норм. а классы с байткодом у нас тяжелые. ты бухой?
"требовательных к железу"
ну да, яву можно запихать в стиральную машинку, а на пк она требовательная дохуя
"почему-то до сих пор десктопные java-приложения с формами и кнопками сильно страдают от этого и имеют кучу проблем с мультиязычностью на разных платформах"
идею ты явно не видел. идея - это свинг. где там проблемы с мультиязычностью?
это настолько мимо кассы. какое это отношение имеет к языку, к технологии в целом. взял и сделал тулинг для мильтиязычности - в чем проблема? строчками манипулировать проблема?
"всратому юзер-интерфейсу"
ну прост надо было интегрировать DOM с авой, и был бы ровно тот же интерфейс, что сейчас на js ваяют. почему так не сделали - я хз. наверн потому что просто не хотели яву развивать, по причинам, не связанным с самой технологией
> это вообще что за ёбаный пиздец?
без комментариев.
> слабая типизация - кусок говна
в чём, говоришь, ты участвовал?
слабая типизация - просто инструмент, которым ты не умеешь пользоваться.
> при которой проекты длиннее пары страниц кода...
JS создавался не для этого, разработчики не предполагали что на JS будет писаться весь веб, с мелкими вкраплениями HTML. Его первоочередная задача сделать веб интерактивным путём добавления небольших кусков кода. Ещё 10 лет назад JS обрабатывал данные веб-форм и делал небольшие анимации типа слайдшоу-галерей. Не вина разработчиков языка, что они решили костылять глобальные библиотеки на неподходящем с твоей точки зрения языке и лепить костыли поверх.
> ты бухой?
у меня такое впечатление сложилось о тебе: лексика скатилась к повсеместной брани.
классы с байткодом ещё нужно на чём-то выполнять, нужна была виртуальная машина Java. к тому же минимальная аппка на java будет сильно потяжелей нескольких строк кода. и апплеты встраивались в веб-страницы и не имели доступа к самому браузеру. а браузер - к апплетам, соответственно, интеграция была паршивая.
> какое это отношение имеет к языку, к технологии в целом
общее впечатление такое, полученное от использования десятков программ и апплетов в разных ОС в течении 25 лет, одни и те же "детские болезни" в интерфейсе. Строчками манипулировать не проблема, юникод выручает, а вот с хот-кеями у них вечные проблемы, и с табуляцией между элементами.
Интегрировать Java с DOM никогда бы не получилось, так как она выполняется сама по себе в своём мирке, в своей виртуальной машине которую, как ты сказал, можно и в стиральную машину вшить. Это основная концепция этого языка. Любой другой язык на то время требовал подключений библиотек для минимальных манипуляций. Так бы и тот же C можно было бы использовать в браузерах. В своё время Visual Basic Script проник на этот рынок и хватанул значительную долю веб-рынка. Но он был так же похож на полноценный VB, как и JS на Java. на VBScript так же совсем не планировали писать крупные проекты, только небольшие куски кода. тем не менее, даже вирусню научились писать, дыры пытались латать, но VBS почил в истории. И он был значительно сложней JS. И угадай что? Отсутствие типизации как таковой!
Таким образом, я очень сомневаюсь, что разработчики двух (и единственных популярных) языков программирования для браузеров были глупей тебя и считали слабую типизацию или её отсутствие говном.
>Ещё 10 лет назад JS обрабатывал данные веб-форм и делал небольшие анимации типа слайдшоу-галерей
будем честны, для этого было бы достаточно урезанного примитивного С без указателей
>слабая типизация - просто инструмент, которым ты не умеешь пользоваться
судя по тому как стремительно все переползают на ts - ею вообще никто не умеет пользоваться.
ЖС тут не одинок, даже в бидон завезли type hints, чтобы хотя бы на уровне IDE отливливать types mismatch, а уж PHP и вовсе уверенно шагает в сторону Java.
>Интегрировать Java с DOM никогда бы не получилось, так как она выполняется сама по себе в своём мирке
вон даже шарпы в прошлом году как-то проинтегрировали, см blazor.wasm
>Таким образом, я очень сомневаюсь, что разработчики двух (и единственных популярных) языков программирования для браузеров были глупей тебя и считали слабую типизацию или её отсутствие говном.
разработчики всех браузеров несколько лет назад ломанулись пилить wasm, а возглавил всё тот же товарищ Брендан Эйх - автор и создатель JS
и таки да - wasm это байткод для простейшей vm, которая сама по себе не умеет ни в слабую, ни в динамическую типизацию.
я про него лет 5 назад слышал/читал, активно пиарили.
но, чё-т, вокруг все пилят на реакте, вю, ангуляре и менее популярных либах. даже jQuery всё ещё почему-то популярен, хотя я его "хоронил" тех же лет 5 назад, когда ES начал активно релизиться. а про wasm ничего не слышу. разве что если специально по тегу копать, но это не есть популярность.
потому что он всё еще не полностью готов. Но в целом ты уже сегодня можешь брать тот же blazor, который максимально оградит тебя от написания кода на js
А если задаче не требуется SPA-фрэймворк и достаточно vanilla js - можешь брать хоть ruby, хоть rust. Мануалы написаны и ждут великих свершений
нет уж ты давай прокоментируй, что такое компилятор, некритичный к ошибкам в коде? где он есть? ткни пальцем.
чем это отличается от undefined behaviour? и нахуя он такой нужен?
я, как и все нормальные люди, не хочу, штобы компилятор что-то догадывался сам. делал не то, что ему сказано. не понял - ругнись, но ругнись понятно. вот, что надо от компилятора.
10 дней и 10 ночей - вполне нормальный срок для создания языка который делал бегущую строку в статусбаре нетскейп-навигатора и валидировал веб-формы.
Брендан Эйх 10 лет разрабатывал операционки и сетевой код, в апреле 95-го разработал Мочу (прообраз JS), который дорабатывал до декабря месяца, когда и появился первый вариант JavaScript. Собственно, сам код первых версий JS был небольшим, в нём было мало возможностей, небыло Math, JSON, запросов, навигация по DOM осуществлялась только по нодам, небыло классов и CSS, небыло нормальных прототипов, с которыми сейчас можно вытворять всё, что заблагорассудится...
Согласись, что закодить такое можно и за 10 суток, но идею он вынашивал загодя, а потом обдумывал это всё ещё 8 месяцев.
>10 дней и 10 ночей - вполне нормальный срок для создания языка который делал бегущую строку в статусбаре нетскейп-навигатора и валидировал веб-формы.
"dynamic behavior" это далеко не только "бегущая строка" и "валидация форм"
>в апреле 95-го разработал Мочу (прообраз JS)
про мочу в виде js-фрэймворка знаю, можно чуть подробнее про мочу как яп?
>Согласись, что закодить такое можно и за 10 суток, но идею он вынашивал загодя, а потом обдумывал это всё ещё 8 месяцев.
не знаю, что он вынашивал, но нанимали его прикручивать lisp-подобный Scheme к netscape, потом заменив ТЗ на "а придумай нам язык, который похож на яву, но не похож на всё существующее"
так у нас простота интерпретатора, внезапно, плюс?
а тебе не кажется, что в этом случае не надо было проходить мимо максимально простого лиспа? давно проверенной технологии. и не изобретать велосипед
а еще это позволило бы раз и навсегда порешать все возможные проблемы с версиями синтаксиса. тк синтаксис лиспа отлит в граните раз и навсегда.
не пришлось бы также изобретать всратые циферки, которые ни один проц не умеет нативно.
позволило бы адаптировать под вэб ваще любой язык минимальными усилиями.
такие они там были умные-благоразумные, а сделали какую-то херню.
ок, допустим они делали язык совсем не для крупных проектов. нахуя его было делать с таким количеством необкатанной херни в нём? почему бы не стандартизовать как стандарт вэба что-то имеющееся и проверенное?
лисп не подошел, это часто бывает. может, в скобочках запутались :))) заказчик сказал пилить другой язык, с си-подобным синтаксисом.
что-то имеющееся не подходило, интерпретируемые скрипты - вполне себе обкатанные, стандарта вэба де-факто небыло, каждый разработчик браузера пилил свои фичи, функции, пытался продвигать свои технологии и монополизировать рынок. микрософт, например, видело радужное будущее со своим визуал-бейсиком и через дот-нет - со всем остальным, и это всё пихало в браузер, нарушая все писанные стандарты. а так же - свой вариант ES, во многом несовместимый с мозилловским, и совместимость была головной болью - писались кучи проверок на то - поддерживает ли браузер такую или такую функцию.
подобные "войны" всюду ведутся, взять тот же автопром где никак не стандартизируют вилки с розетками для зарядки электромобилей (хорошо хоть с USB все кроме одного производителя смартфонов договорились), полностью несовместимое программное обеспечение даже двух марок автомобилей одного автогиганта, и создание интерфейса для общения между собой автомобилей продвигается очень-очень медленно (опять же - почему не взять готовое обкатанное решение типа блютуса или вайфая, с готовыми протоколами обмена данных). В медицине медоборудование разных фирм категорически несовместимо между собой как в плане софта, так и на уровне кабелей, разъёмов. Есть только самый базовый уровень импорта-экспорта, через который мало что можно реализовать и практически никак не сделать мониторинг систем: всё для того, чтобы больница ВСЁ оборудование закупала одной фирмы. При этом пульс больных нельзя вывести на плазму у сестринского поста по обычному hdmi, нужна плазма с наклейкой фирмы медоборудования, в которой может быть просто перепаяно несколько проводков в кабеле, а в более дорогом варианте - ещё какое-то шифрование происходит.
> которых заебало всё то говно, что в js как было в начале, так никуда и не делось. язык, компиляющийся в js.
Философия TS не в том что "забеал js говно", а в том позволяет использовать в js типизацию. Аргументом могу привести, что ts в себе реализует практически все es proposals, которые доходят до stage 3, а так же обратно совместим с js (js код === ts код)
в ts дополнительным бонусом сделали возможность юзать js во всей его убогости. ну это ж не потому, что js хорош, а потому, что тонны легаси наваяны и их надо мигрировать, по возможности плавно.
так-то и до ts были языки, компиляющиеся в js, но не предоставив внятный сценарий транзита, особо не взлетели
> язык, компиляющийся в js.
не компиляция, а транспиляция, гугли разницу и не вводи людей в заблуждение.
> ts - отдельный язык
Тайпскрипт - джаваскрипт с типизацией, ровно тот же самый язык с доработкой в виде строгой типизации, чтоб "как в лучших языках" было (в целом тема годная, на мой взгляд).
> компиляция в сорцы всегда была и будет писец тормозной
если ты говоришь про транспиляцию TS -> JS, то нет, она очень быстрая
> лишь бы тот сраный JS руками не трогать
Команда разработки Сбербанк Онлайн (приложуха на телефонах) пишет все на JS и готовы с пеной у рта спорить что "так легче и понятнее и не нужон ваш тайпскрипт этот".
TS, CS, Babe.... - наличие вот этого вот всего говорит о том, что ЯП сам по себе не жизнеспособен. Ни в одном другом ЯП такого рака нет. Ты учишь основы ЯП и уверен, что будешь использовать этот синтаксис. А в JS ты учишь JS синтаксис, чтобы потом учить синтаксис всевозможных надстроек и каждый проект - это рандомный бульен этих надстроек.
Не будь дураком. Проблема в том, что js -- прикладной язык, который работает в браузерах. Если какая-нибудь java может позволить себе измениться хоть полностью от версии к версии, то js очень важно иметь обратную совместимость.
Ты не сможешь всех пользователей пересадить на браузер, который поддерживает async/await. Ты не можешь пользователей своего сайта пересадить на браузер, который использует нативно любой другой язык кроме js. Именно отсюда и TS, CS и Babe, а не кококок нижизнеспособен.
этого говна вообще не должно было быть в браузерах. кстати говоря, изначальный план был в том, чтоб языков было несколько, JScript был, Basic где-то реализовали. ну и по оставшемуся атрибуту language можно догадаться.
потом переобулись в прыжке, и решили делать one lang to rule them all. но взяли совершенно никем не обкатанную идею прототипного наследования, придумали свои всратые циферки, упоролись слабой типизацией, и спиздили название у другого языка. короче, чад угара и кутежа.
хотя рассматривался вариант прикрутить лисп. максимально простой, в который с самого начала можно было бы компиляться из других языков. или из той же явы байткод позаимствовать. сама по себе идея о том, что кто-то будет читать сорцы скриптов на страничках была явно идиотской.
недавно одумались, спустя 20+ лет, решили wasm запилить, но всё равно пытаются сбоку его прикрутить к vm жабоскрипта, а не выкинуть js на хуй.
"java может позволить себе измениться хоть полностью от версии к версии"
вот это ты хорошо схохмил
Java-апплеты в вебе тоже были, благополучно умерли - никому такое счастье не надо.
Потом был AS3 - тоже с компиляцией в байткод. Тоже умер. А JS жив и развивается.
Простота языка является плюсом разве что для обучающих целей.
апплеты пропали не по причине их технической несостоятельности, а из-за того, что их попробовали вкорячить как есть. что повлекло косяки с секурностью.
их надо было чутка переработать с прицелом на новый способ использования. плюс был мутный лицензионный статус. никто не хотел Сану отдать весь инет в анальное пользование.
потом был флеш, сервелат - те же яйца, только в профиль. теперь очередной виток - wasm. если и на этот раз нормально не получится, наверняка будут еще попытки.
ну потому что это очевидное решение.
actionscript вообще был братом близнецом js. что кабы намекает, что не сложность/простота языка порешала.
простота лиспа нужна не для обучения, никто б в здравом уме не стал бы его читать.
как сейчас никто не читает js, особенно если его минифицировали, обфусцировали. один хрен дело гиблое.
в него бы компилялись. lisp - это ж тупо сериализованное AST. но при этом высокоуровневое, безопасное, без ебли в указателями.
Не был никогда AS "близнецом". Да, это ECMAScript, но с типизацией, полноценными классами, областями видимости, другими моделями событий и так далее.
А Ява не пошла не потому, что кто-то там опасался Сана, а потому что не умели апплеты нормально интегрироваться со страницей. И флэш потому же загибался - у него, при всей его мощи, не было нормального языка разметки.
так не было технических препятствий научить апплеты интегрироваться со страницей. просто эту работу никто не хотел сделать. ее пришлось провести позже, но к тому времени кроме сраного жс ничего уже не осталось.
как будто сейчас в wasm не то же самое делают. разве нельзя было это сделать тогда? технически можно было, политически - хз.
флеш - немного другое дело. он взял на себя функции сразу всего, чего не хватало в вэбе - векторная графика, мультимедиа, более вменяемый скриптинг. и сделал это в том виде, в котором вообще это было возможно сделать.
я думаю, флеш распилить на куски бы не получилось всё равно, слишком он был больной и монолитный, и стандартизовать как есть, сразу всё тоже бы не получилось.
но в итоге всё равно сделали то же самое, тока под эгидой w3c.
и опять же проблема лицензирования.
зря ты от нее отмахиваешься. это ж была эпическая битва, каждый хотел подмять вэб под себя и стричь бабосы. а если уж сам не можешь, хотя бы всунуть палки в колёса соседу
>Если какая-нибудь java может позволить себе измениться хоть полностью от версии к версии
про "write once, run anywhere" не слышали, я так понимаю? оно не всегда соблюдается, но в целом люди стараются
>js очень важно иметь обратную совместимость
в хроме за последние 4 версии удалили "Web Components v0", "Comma separator in iframe allow attribute" и "insecure SameSite=None cookies" - о какой такой сокральной совместимости в вэбе речь? гугл заботится о вас и не оставит без работы
Пфф... Разработка на RN:
Пишешь приложение. Используешь бесплатные библиотеки. Выходит обновление RN, но ты не используешь его, так как потом вынужден будешь вносить изменения в проект. Автор библиотеки вносит правки критических ошибок, НО... библиотека написана под последнюю версию RN! Со скрипом обновляешься, НО... у тебя отваливается половина старых библиотек, так как их автор уже забил на обновления.
А реакт нейтив - это не жс фреймворк? Он от реакта отличается линковкой модулей и компонентами, и то линковка уже автоматом пролетает как год или даже больше
не скажи. есть разработчики, которые стараются по-минимуму использовать сторонние библиотеки, строго в пределах разумного, а есть которые каждую кнопочку и запрос сторонними библиотеками делают. это глобально.
читал разбор мобильных приложений, там некоторые библиотеки по десятку раз в разных местах подключаются, так как их разные разрабы подключают и пихают библиотеки с разными именами и в разные подпапки.
В моём случае было два варианта - купить готовую библиотеку за 10к у.е. ИЛИ написать свою с использованием всего что пожелаю. В итоге за меня выбрали сделать бесплатно, а дальше как хочешь. Благо сразу сообразил, что чёткого ТЗ у меня не будет до релиза и всю эту хрень следует на 2-3 дюжины независимых компонентов, чтобы в случае чего всё не полетело к херам. Так и получилось. Прошёл месяц - "а давайте ещё это добавим". Ещё месяц - "давайте ещё функционала добавим". Ещё два месяца - "отлично, а теперь финальный аккорд".
В итоге за 6-7 месяцев было использовано лишь 2 библиотеки для работы с жестами.
лет 8 назад нужен был виджет - медленно ползущая бесконечная timeline-простыня для медиков, чтоб можно было записываться пациенту на какое-то время, при этом он видел когда свободно, когда обед, и т.д., а так же перетягивать свою регистрацию между докторами и между больницами как таски в трелло или события в гугл-календаре. в течении разработки купили и пытались прикрутить 4 плагина (общая стоимость 800 уе), но ни один из них нормально не подошел (а предоставлялись они обфусцироваными, as is), пришлось свой писать, за 4 недели сделал.
Самому внести правки, самому зарелизить куда-то, самому себя проклинать когда этот древний кусок говна таки решат проапдейтить, а там десятки форконутых пакетов с кучей костылей. Ммммм, работа мечты :)
Я тут подумал, а разве справедливо сравнивать дороги древних и современных времен? Если взять отдельный участок современной дороги, то на ней, за день, будет проезжать сотни и тысячи машин, от легковых до грузовиков и автобусов. В то время как в на древней дороге только повозки на коники...
Разница в весе нивелируется разницей продолжительности эксплуатации. К тому же тут привели в пример пешеходку. Основной дамаг идет не от юзеров, а от энва(дожди, перепады температур...)
cd — не программа, а команда sh
Тот же cat был исправлен 3 месяца назад в gnu coreutils. Вроде самое старое, у которого меняли только копирайт — uname, 14 лет назад, более древней не увидел (но я и не слишком искал, если честно).
unix программа )) шутку пилил JS программист? 30 лет назад под UNIX писали на С. Язык такой ) На нем и сейчас пишут неплохо. BSD системы и многочисленные Linux системы тому доказательство.
'Tjl Katerina Borodina
@kathyra_
protip: alias sudo to "please" for a much more wholesome unix experience
ikarbandjSSOLSTICE: $ alias please=”sudo“ skarband@SOLSTICE:~$ please mv README.md codemopolitan/ skarband@SOLSTICE:~$ please find codemopolitan/ -iname *ME.md codemopolitan/README.md skarba
Сос^к
ЦСМийИсИ огс
рИр сколько времени назад Ш
Все результаты Картинки Карты Ещё ▼ Инструменты поиска
Результатов: примерно 363 ООО ООО (0,27 сек.)
Вычитание дат, узнать сколько прошло времени за промежуток I Р...
рЬ р. ги/Гоги тЛл еиЛо р1с. рЬ р?1=9756 Сообщений: 3 - Авторов: 2 -12 янв 2008
Отличный комментарий!