Войти
ФлеймФорумСофт

Границы применимости JavaScript (3 стр)

Страницы: 1 2 3 4 58 Следующая »
#30
2:24, 10 июня 2017

И тут выхожу я в белом фраке.

> XMLHttpRequest.=это JavaScript инструмент
> при том там отмечено что явно незапротоколированый (в стандарте),
XMLHttpRequest изначально объект ActiveX, проприетарное расширение мс-стека, и создавался он через new ActiveX('Microsoft.XMLHTTP'). Пятый IE вообще огонь был, да баги, да нет спеки, но, условно, технически была возможность написать вк и ютуб в 2000м. На всем остальном - даже не близко. А еще там была нормальная блочная модель, которую таки добавили в стандарт, как только поняли, что с content-box'ом жить нельзя.
В netscape почесали репу и поняли, что c формочками и без динамики войну браузеров не выиграешь, и сделали глобальный класс XMLHttpRequest в 2002. W3V через четыре года описали его в отдельной спеке: https://www.w3.org/TR/XMLHttpRequest/. Сейчас спекой занимается whatwg: https://xhr.spec.whatwg.org/.
Спека эта перпендикулярна DOM'у, BOM'у и всему остальному. (xhr может вернуть документ, но в остальном от DOM'а не зависит). Ее можно реализовать для любого языка, т.к. там просто Web IDL. Web IDL - это, что бы было понятно, что-то типа CORBA IDL, COM IDL, protobuf (v3, который с сервисами), ну и всего такого. Ему абсолютно фиолетово кресты у тебя там, второй питон (просто, гвидо), жаваскрипт или ассемблер под не самую простую архитектуру. Он описывает совместимость на уровне исходного кода с точностью до биндингов (т.е. никто не ожидает, что ты на 89ой сишке будешь писать как на es2016).

> Дэвид Флэнаган Javascript
Флэнагана пора поставить на полку и вспоминать про него только в моменты прилива ностальгии и сентиментальности.
Во-первых, есть (и были) книги куда лучше.
Во-вторых, большую часть книги занимает документация, которая доступна на w3c/whatwg, mdn, и еще тысяча и одном ресурсе.
В-третьих, книга морально устарела. Учиться по ней в 2017 году определенно не стоит.

> html+DOM+JavaScript=ajax
AJAX - баззворд, который значит, что можно получать данные с сервера не перезагружая страницу. Под ним, кроме XHR, понимается jsonp, iframe post, да и вообще почти все, что угодно (можно, например высоту и ширину картинки получать). В первой половине нулевых это было вау, в диковинку, и вообще особой уличной магией. Но первая половина нулевых была больше десяти лет назад.

> JavaScript весь полностью асинхронный
JavaScript асинхронный ровно настолько, насколько асинхронны прикрученные к нему библиотеки. XHR, например, умеет работать в синхронном режиме (на http://xmlhttprequest.ru/ есть пример). canvas.toDataURI работает синхронно, а он, на секундочку может вам вернуть data: урл для картинки, скажем, 600х400, а ему ее надо закодировать и память где-то выделить. В ноде так вообще у каждого второго метода есть sync версия.
То, что разработчик на крестах не видел ничего кроме буст асио, не значит, что все кресты асинхронные и неблокирующие.


#31
11:35, 10 июня 2017

Ну а если обобщить, AJAX - это обычный  winsok по ТСП с приколоченным поверху HTTP протоколом.
Ну а чтобы жизнь малиной не казалась, еще запудрили мозг jsonp и iframe post, что еще труднее было понять что, куда, и зачем это нужно.

> В первой половине нулевых это было вау, в диковинку, и вообще особой уличной
> магией.
Это для браузера и ПХП-ешников, которые в JS тогда ни в зуб ногой.
Это сейчас его хоть как то  со скрипом можно на игру натянуть и чуть чуть народ заинтересовался, а раньше на него интерпрайзовцы гавно лили в полный рост.
Ну а для тех кто в танке ПК, я уже в начале 2000-х управлял через комп микроконтроллерами.

#32
11:52, 10 июня 2017

Щас webassembly во всех браузерах врубят, и js умрёт) Будет та же история что и с флешом)

#33
12:08, 10 июня 2017

Stranger087
А потом... лет через десять, хомячкам дойдет, что производительность зависит от контента, методов работы с видеокартой и шейдеров, а не от очередной розерки, воткнутой в браузер.
Но к этому времени PR-тролли придумают хомячкам новую сказку по белого бычка, у укажут новый единственно правильный путь в обратном направлении :)

#34
14:50, 10 июня 2017

Прочитaл про Sexp и вспомнил свою старую идею…
[file=126328]

P.S.: Кто скачал и решил запустить: Распакуйте прямо в D: и запускайте в IE…
(Вирусами не распространяюсь)

#35
14:11, 11 июня 2017

bodja
> AJAX - это обычный  winsok по ТСП с приколоченным поверху HTTP протоколом
Абсолютно все запросы браузер делает через HTTP (если для простоты забыть про websocket'ы). Последний хоть и не прибит к tcp, но в реальности 99% времени его используют поверх tcp.
Тут же суть не в протоколе, а в стандартных "библиотеках", которые есть в браузере, ниже которых ты не можешь опуститься. Так то XMLHttpRequest, делает, внезапно, HTTP запрос, со всеми вытекающими. Но не абсолютно любой запрос, а с оглядкой на Same-Origin и (теперь) на CORS.
jsonp, так-то, тоже делает просто HTTP запрос. Но у него другие ограничения: origin может быть любым, но запрос может быть только GET. Плюс нет возможности задавать произвольные заголовки. Потому что jsonp - это просто вставка <script> на страницу.
iframe делает не просто http запрос, а создает полноценную страницу, с глобальными объектами, event loop'ом, своим рендером.

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

#36
14:49, 11 июня 2017

новый стандарт требует отказываться от окон фреймов

#37
17:23, 11 июня 2017

Stranger087
> Щас webassembly во всех браузерах врубят, и js умрёт)

Это вообще анекдот я считаю, то, что происходит с коренными недостатками JavaScript.
Сперва Flash и Java стали большими, неповоротливыми, но главное - кишащими ошибками и всякое прочее говно, поэтому решительно от них все отказались, распилили HTML 5 + JavaScript во все затычки, но...
Оказалось, что JavaScript обладает фатальными недостатком - в нетипизированном языке программирования хоть усрись, но нет возможности скомпилировать return a + b в add eax, ebx; ret; потому что под a и b всегда может быть что угодно и как ни крутись ни прикручивай JIT, но дальше call VariantAdd оно не сможет уйти. Пичалька и десятикратное падение производительности.
Ну и что взамен? И тут начались ледебе-рако-щуки - кто-то пилит один диалект JS где была бы опциональная типизация переменных, кто-то пилит диалект другого языка изначально типизированного, но который можно простеньким транслятором перевести в JavaScript "с разметкой", кто-то начал пилить эти вот всякие WebAssembly, где наоборот из JavaScript просто можно странслировать в виртуальную машину (если нужно без типизации, в режиме совместимости - то тоже в call VariantAdd), коороче разброд, шатания, целая пачка виртуальных машин и никаких обоснований почему это всё должно стать лучше старой доброй Java. Или почему через 10 лет у этого всего типизированного и full-JIT-кроссоператбельного не будет весь ворох тех же болячек как у Явы.

Веб это та еще клоака от программирования...

#38
10:12, 12 июня 2017

Fla
> Абсолютно все запросы браузер делает через HTTP
> тогда любой джойказино сможет отправлять за тебя сообщени
Ну а что мешало запретить кроссдоменые запросы через crossdomain.xml и дать людям пользоваться через спокойно UDP и TCP.

> Дело не в "запудривании мозгов", а в постепенной эволюции технологий
Это постепенное закручивание гаек, без права на альтернативу.
Ну а запудривание потому, что у JS до сих пор есть кроссдомен через тег , чем социалки активно и пользуются :)

=A=L=X=
> Ну и что взамен?
А ничего, как обычно :)
В конце окажется, что JS придется допилить до уровня AS3 и JAVA, а потом встанет вопрос, а для чего нужна была вся эта "эволюция", если можно было сразу подобным пользоваться :)

#39
21:22, 12 июня 2017

bodja
У меня ощущение, что я с шахтером покемонов обсуждаю, тот тоже слово слышал, но не более.
> Ну а что мешало запретить кроссдоменые запросы через crossdomain.xml
Внезапно, bodja героически разрешает использовать TCP и UDP (с ограничением через blacklist) и весь world wide web превращается в гигантский ботнет, анархия, взломы онлайн банков каждые 30 минут, дудос прямо из браузера, на экране банкомата порнушка сменяется джойказино. 10/10, отличная идея. Где можно поставить подпись за то, чтобы навсегда запретить тебе принимать важные решения?
Мне кажется, ты забываешь, что в вебе ты скачиваешь и выполняешь программу на js просто открыв страницу. Нельзя мало того, что разрешать делать все что угодно (включая упомянутые TCP и UDP), нельзя даже давать разным сайтам/программам знать о существовании друг друга.
> дать людям пользоваться через спокойно UDP и TCP.
Зачем? Появилась необходимость - сделали WebSocket'ы. С нормальным апи, с сообщениями, а не потоком байтов.
> Это постепенное закручивание гаек, без права на альтернативу.
Лол, а posix, например, - не постепенное закручивание гаек без права на альтернативу? Одна из, собственно, причин, почему веб растет как на дрожжах, состоит в том, что web api гораздо лучше, проще, и удобнее posix. И они уже работают везде: на маках, на венде, на линуксах, на ведре, на айосе, на телевизоре, да даже на каком-нибудь тизене и умном холодильнике. В отличие, собственно, от того же posix.
> у JS до сих пор есть кроссдомен через тег
Что за глупость? Во-первых, чисто технически, он не у JS, а у HTML, и такой же кроссдомен есть у картинок и стилей. Во-вторых, он ОЧЕНЬ ограниченный: только GET запросы и только text/javascript ответы, при этом у скрипта со страницы нет возможности прочитать пришедший текст.
> JS придется допилить до уровня AS3 и JAVA
ES2016 и так на голову выше AS3 (который, не будем забывать, мертв). Java так вообще другого семейства язык: компилируемый, с типизацией, с жирнющим рантаймом, линкером, спецификацией на виртуальную машину. Ты, наверное, с питоном хотел сравнить? спойлер: es2016 может все, что может питон3, и даже больше
> JAVA
Лол. Помнишь Java апплеты?

=A=L=X=
> эти вот всякие WebAssembly, где наоборот из JavaScript просто можно странслировать в виртуальную машину
WebAssembly вообще не об этом. WebAssembly - это что-то типа LLVM IR, который браузер сможет (отсносительно) быстро скомпилировать. Он не замена JavaScript'у и не является таргетом для компиляции JavaScript'а.
> целая пачка виртуальных машин
Одна виртуальная машина, откуда пачка? Есть спецификация на поведение, на текстовое и бинарное представление.
И, раз ты упомянул Java, вот уж где пачка виртуальных машин, в каждой из которых еще по два-три разный garbage collector'а.
> Веб это та еще клоака от программирования...
Не спорю. Но где в коммерческом программировании не клоака?

Rikk
> новый стандарт требует отказываться от окон фреймов
/facepalm Как там в 2003? Как хомяк на народе поживает, в гостевой книге много ответов? Доллар все еще по 30? В читос кладут комиксы, переводные картинки или уже сотки?
Стандарт с определенного момента не поддерживает frameset'ы и frame'ы. Этот "новый" стандарт вышел в 97м и называется HTML 4.0, в нем фреймы поддерживаются только при определенном DOCTYPE'е.
В этом же HTML 4.0 появились iframe, который сейчас являются частью HTML5. Их использовать можно и нужно.

#40
5:15, 13 июня 2017

Fla
> Одна виртуальная машина, откуда пачка?

Так не одна же wasm борется с "коренными недостатками JavaScript", я же и говорю, что куча уже всяких разных решений развивается при этом чем они лучше Java в конечном итоге - непонятно.

> Не спорю. Но где в коммерческом программировании не клоака?

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

#41
7:33, 13 июня 2017

bodja
> Это постепенное закручивание гаек, без права на альтернативу.
  Тогда люба стандартизация это закручивание гаек по определению. В 90-х и 2000-х были альтернативы и они все успешно сдохли. Спасибо, больше не надо.

#42
13:59, 13 июня 2017

Fla
> Внезапно, bodja героически разрешает использовать TCP и UDP
Внезапно №1 crossdomain.xml является не запрещающим списком, а разрешающим, и ничего не происходит :)

> Что за глупость?
Внезапно №2 я делал коменты на народе :)

>Java так вообще другого семейства язык: компилируемый, с типизацией, с жирнющим рантаймом, линкером, спецификацией на виртуальную машину. Ты, наверное, с питоном хотел сравнить?
Внезапно №3 AS3 компилится java.exe :)

> ES2016 и так на голову выше AS3
Внезапно №4 AS3 - это ECMA-262 :), не ну в принципе хотелось бы услышать про эту разницу в голову канеш :)

>(который, не будем забывать, мертв)
Печалька, что те, кто делает игры для веба, про это не догадываются :)

> Лол. Помнишь Java апплеты?
Помню, но они запороли всю идею сертификацией.
Иначе наверное веб был совсем другим.

#43
16:39, 13 июня 2017

=A=L=X=
> не одна же wasm борется с "коренными недостатками JavaScript"
Тащемта, один только wasm. Все остальное собирается в JavaScript. И кроме как ради типов (TypeScript/Flow) необходимость использования компилятора (или, как сейчас модно говорить, транспилятора) уменьшается с каждым месяцем. Поддержка es2016 все лучше и лучше. async/await, генераторы, все это доступно уже сейчас.
Да даже без es6 жить можно: es5 со strict mode'ом поддерживается везде (про IE8 в приличном обществе не говорят), для стандартной библиотеки есть polyfill'ы. Вот с es3 уже тяжело.
> 1С
> год за годом платформа просто развивается и улучшается
> web
> топтаний на месте и шило-на-мыло
Я надеюсь, это шутка? В вебе появились WebSocket'ы, WebGL, WebRTC, etc. И это все не просто "мы напишем очевидные биндинги к posix'у и забьем на стандартизацию и совместимость", а большие, продуманные апи.
Шило-на-мыло это бесконечные одинаковые фреймворки. Но они к стандартам и web api не такое уж большое отношение имеют.

bodja
> №1 crossdomain.xml является не запрещающим списком, а разрешающим, и ничего не происходит
И правда разрешающий. My bad. Но тем не менее:
Ходить по tcp и udp не надо никому. Я бы руки отрубал тем, кто в вебе собирается ходить по tpc и udp.
Если тебе нужен разрешающий список, есть Cross Origin Request Sharing. Который стандарт, а не влажные фантазии компании, что вместе со своим плеером поставляет различный crapware.
> №2 я делал коменты на народе
Ну молодец, но при чем тут это? То, что ты написал про "кроссдомен" - глупость. Ты комменты делал как разработчик народ.ру или как владелец хомяка на нем? Потому что в случае первого было бы неплохо предоставить пруфы, раз уж ты пытаешься сослаться на авторитет. Ну а в случае второго не очень понятно зачем газифицировать лужу.
> №3 AS3 компилится java.exe
Он может хоть брейнфаком компилироваться. Исполняется он все равно виртуальной машиной Flash Player'а и к Java'е отношения не имеет.
> №4 AS3 - это ECMA-262 :)
/facepalm ECMA-262 - это и есть ECMAScript. И у него уже много версий. ActionScript 3 базируется на выкинутой четвертой версии из начала нулевых.
В 2009 вышел ES5. В 2015 - ES6. В 2016 - ES2016. Все фишки из этих версий в JavaScript'е есть, а в ActionScript'е - нет. Потому что ActionScript все еще имплементирует мертвый стандарт 15 (ПЯТНАДЦАТИ) летней давности. Со своими, нигде нестандартизованными, расширениями.
Даже с крестами и няшной ситуация лучше. Стыдно должно быть.
> Печалька, что те, кто делает игры для веба, про это не догадываются
Как там в 2009м? Запрос "ФЛЕШИГРЫ" все еще в топе яндекса? Браузеры еще не побанили флеш плеер?

> Помню, но они запороли всю идею сертификацией.
В частности. Они запороли всю идею тем, что принесли десктопную технологию в веб, где, напоминаюб ты качаешь и выполняешь программу просто переходя по ссылке. И вместо нового апи, который отражал бы все ограничения, они сделали кривую систему разрешений и сертификацию. По факту результат немногим отличался от ActiveX'ов.
Но мне кажется, основной проблемой был тормознутый jvm (тогда не было jit'а, а вместо gc был stop-the-world mark&sweep), убогий язык и наиубогейшие библиотеки для UI. Ну и то, что все писалось синхронно и любой апплет фризил браузер на пол минуты.
> Иначе наверное веб был совсем другим.
Вкладка жрала бы не 30 метров оперативы, а 300. Спасибо, не надо.


> я делал коменты на народе
> Внезапно Внезапно Внезапно Внезапно
> :) :) :) :) :) :) :) :) :) :) :) :) :) :)
Серьезный разговор, я так понимаю, закончился? Будем кидаться рандомными фактами и меряться кто когда свой первый хеловорлд написал? Могу тебе демотиваторов принести из 2009го, в котором ты так безнадежно застрял.

#44
16:42, 13 июня 2017

Fla
> Тащемта, один только wasm. Все остальное собирается в JavaScript.

Так а JavaScript - в виртуальную машину. Что не так то я сказал?
А т.к. JIT уже не освоил только ленивый, то глобальный недостаток JS - отсутствие типизации, не позволяющий делать add ebx, ecx, там где сейчас делается call VariantAdd. Именно поэтому типизация и нужна им позарез, а не какие то абстракции.
Т.е. всё то что выкинули с явой сейчас успешно и разными командами пытаются каждый по своему реализовать никак не объясняя по сути чем у них должно получится лучше.

Страницы: 1 2 3 4 58 Следующая »
ФлеймФорумСофт

Тема в архиве.