JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 39 40 [41] 42 43 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#601
,
|
|
|
|
С учётом разницы статических и динамических типов как то так:
![]() ![]() int a, b; boost::tuple<int&, int&> t(a, b); t = boost::tuple<int, int>(1, 2); std::cout << a << std::endl << b << std::endl; Добавлено Или даже так: ![]() ![]() int a, b; boost::tuple<int&, int&>(a, b) = boost::tuple<int, int>(1, 2); std::cout << a << std::endl << b << std::endl; |
|
Сообщ.
#602
,
|
|
|
|
Цитата D_KEY @ Причем здесь компиляторы? Я говорю о скриптовом языке. У вас в стандарте написано, что он только для браузеров? А так я тебе говорил, что js используется и рассматривается как язык для скриптов. И в этом контексте его можно сравнивать с lua, python и пр. Хм... что-то я не видел в винде/линуксе/макоси скриптов на JS, равно как и поддержки браузерами lua, python и пр. |
|
Сообщ.
#603
,
|
|
|
|
Цитата Повстанець @ С учётом разницы статических и динамических типов как то так: ![]() ![]() int a, b; boost::tuple<int&, int&> t(a, b); t = boost::tuple<int, int>(1, 2); std::cout << a << std::endl << b << std::endl; Добавлено Или даже так: ![]() ![]() int a, b; boost::tuple<int&, int&>(a, b) = boost::tuple<int, int>(1, 2); std::cout << a << std::endl << b << std::endl; При чем тут динамические типы? я тебе привел пример на статическом языке. Ну да, заменить одну короткую строку тремя более длинными -- это круто =/ |
|
Сообщ.
#604
,
|
|
|
|
Цитата D_KEY @ Так в твоей фразе написано пролокальные проверки... так вот локальные проверки идут в тех же браузерах, что и у пользователя... Причем здесь компиляторы? Я говорю о скриптовом языке. У вас в стандарте написано, что он только для браузеров? |
|
Сообщ.
#605
,
|
|
|
|
Цитата D_KEY @ Мне не нужна куча int'ов, мне нужен набор произвольного количества произвольных параметров. В C++ это можно сделать через шаблоны. Как это сделать "правильно"? И как ты предлагаешь обрабатывать произвольное количество значений произвольных типов? Ну да, в языках с динамическим субтипированием это могло быть. ![]() ![]() f : [SomeSuperType] -> ResultType где SomeSuperType -- "нижняя граница" типов, вплоть до Top. |
|
Сообщ.
#606
,
|
|
|
|
korvin, так ты покажешь, как правильно описывается функция с переменным числом аргументов? Интересно, получается и CL тебе тоже не нравится?
|
|
Сообщ.
#607
,
|
|
|
|
Цитата korvin @ При чем тут динамические типы? я тебе привел пример на статическом языке. Ну да, с выводом типов. Допустим без вывода, с явным указанием: ![]() ![]() (a, b) : (Num, String) = (1, "one") или в стиле указания типа перед переменными: ![]() ![]() (Num, String) (a, b) = (1, "one") |
|
Сообщ.
#608
,
|
|
|
|
Цитата D_KEY @ korvin, так ты покажешь, как правильно описывается функция с переменным числом аргументов? Интересно, получается и CL тебе тоже не нравится? показал выше =) а в CL можно рассматривать все функции, как принимающие один аргумент -- список значений, ибо apply никто не отменял. + сахар для разбора и некоторой оптимизацией при компиляции. Но я-то говорю про статику, а не динамику. |
|
Сообщ.
#609
,
|
|
|
|
Цитата korvin @ И как ты предлагаешь обрабатывать произвольное количество значений произвольных типов? В динамически-типизируемых языках это должно быть просто списком аргументов. В статически - шаблоном функции, который может и рекурсивно(статически) обойти все элементы при генерации кода(до компа доберусь если, покажу на плюсах, из "каменного века", так сказать). Не согласен? Покажи как правильно. Добавлено korvin, ты немного сбил дискуссию в сторону. Скажи, тебе нравится, что в языке функцию, рассчитанную на 1 аргумент, можно вызвать со 100500? |
|
Сообщ.
#610
,
|
|
|
|
Цитата D_KEY @ В статически - шаблоном функции, который может и рекурсивно(статически) обойти все элементы при генерации кода(до компа доберусь если, покажу на плюсах, из "каменного века", так сказать). О да, уже предвижу кучу шаблонного мусора. =) Цитата D_KEY @ korvin, ты немного сбил дискуссию в сторону. Скажи, тебе нравится, что в языке функцию, рассчитанную на 1 аргумент, можно вызвать со 100500? Не вижу в этом ничего плохого для веба. Там как бы важно, чтобы клиент таки увидел информацию, даже если часть JS-кода окажется не совсем рабочей, а не сообщение об ошибке. Браузеры даже некоторые косяки в хтмл умеют исправлять, типа несбалансированность тегов. Т.е. приоритеты другие. Тут можно аппелировать, мол, если бы изначально все было строго, то... Но это уже не важно. Также и, например, С++ тянет наследие С, от которого бы неплохо избавиться, но... Да и вообще всё legacy-говно существует и с ним приходится работать. Мир не совершенен. И в этих условиях особенности JS вполне оправданы. Добавлено И как я уже возможно говорил, я против использования JS вне его ниши -- "скриптов для браузеров", как например node.js, серверный язык должен быть строже и более "явный". Да и в своей нише JS неплохо бы заменить CoffeeScript'ом например. Добавлено Вот я, например, вообще пользуюсь NoScript-плагином для FF, и по-дефолту скрипты отключены. Хороший веб-сервис при этом должен продолжать исправно функционировать (ну разве что с мультимедиа-контентом не все так просто, но это пока), JS же должен лишь дополнять и предоставлять какие-то бонусные удобства, не более. К сожалению многие говносайты без JS вообще не могут адекватно работать =( |
|
Сообщ.
#611
,
|
|
|
|
Цитата korvin @ Вот я, например, вообще пользуюсь NoScript-плагином для FF, и по-дефолту скрипты отключены. Хороший веб-сервис при этом должен продолжать исправно функционировать (ну разве что с мультимедиа-контентом не все так просто, но это пока), JS же должен лишь дополнять и предоставлять какие-то бонусные удобства, не более. К сожалению многие говносайты без JS вообще не могут адекватно работать =( Это до тех пор пока сайт должен исключительно предоставлять информацию без всякой динамической обработки твоей реакции Там уже без js никуда. |
|
Сообщ.
#612
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ В статически - шаблоном функции, который может и рекурсивно(статически) обойти все элементы при генерации кода(до компа доберусь если, покажу на плюсах, из "каменного века", так сказать). О да, уже предвижу кучу шаблонного мусора. =) Так покажи, как без него Цитата И как я уже возможно говорил, я против использования JS вне его ниши -- "скриптов для браузеров", как например node.js, серверный язык должен быть строже и более "явный". А я уже писал, что такая обработка в браузерах - норма. Они и html не строго обрабатывают, только это не повод вносить кривость в сам html |
|
Сообщ.
#613
,
|
|
|
|
Цитата D_KEY @ А я уже писал, что такая обработка в браузерах - норма. Они и html не строго обрабатывают, только это не повод вносить кривость в сам html ![]() А никто и не вносит, стандарт вполне четок, на сколько я знаю, другое дело, что ему мало кто следует. Вот этот форум проходит валидацию W3C? Google не проходит, на сколько я знаю. Добавлено Цитата D_KEY @ Так покажи, как без него ![]() А что без него? Ну например ![]() ![]() fun f (xs : [Object]) -> Void { for x in xs { x.foo } } Добавлено Цитата Астарот @ Это до тех пор пока сайт должен исключительно предоставлять информацию без всякой динамической обработки твоей реакции Там уже без js никуда.Без "динамической обработки реакции" в вебе вполне можно жить. Причем без напряга. |
|
Сообщ.
#614
,
|
|
|
|
Цитата korvin @ Без "динамической обработки реакции" в вебе вполне можно жить. Причем без напряга. Ну, как сказать... Вот форум без js нормально работать будет? |
|
Сообщ.
#615
,
|
|
|
|
Цитата korvin @ Там как бы важно, чтобы клиент таки увидел информацию, даже если часть JS-кода окажется не совсем рабочей, а не сообщение об ошибке. Гораздо хуже если из-за какой-нибудь внутренней ошибки клиент увидит неожиданный результат Ну там интернет-банк скажет, что у него на карточке undefined денег.К тому же сообщения об ошибках и ворнинги заставляют более качественно тестировать софт, а не "Ну не заработало и черт с ним" |