На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (66) « Первая ... 39 40 [41] 42 43 ...  65 66  ( Перейти к последнему сообщению )  
> JS и его "недостатки"
    Цитата korvin @
    окей, давай напиши мне аналог такого кода на C++:
    С учётом разницы статических и динамических типов как то так:
    ExpandedWrap disabled
          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;


    Добавлено
    Или даже так:
    ExpandedWrap disabled
          int a, b;
       
          boost::tuple<int&, int&>(a, b) = boost::tuple<int, int>(1, 2);
       
          std::cout << a << std::endl << b << std::endl;
      Цитата D_KEY @
      Причем здесь компиляторы? Я говорю о скриптовом языке. У вас в стандарте написано, что он только для браузеров?
      А так я тебе говорил, что js используется и рассматривается как язык для скриптов. И в этом контексте его можно сравнивать с lua, python и пр.

      Хм... что-то я не видел в винде/линуксе/макоси скриптов на JS, равно как и поддержки браузерами lua, python и пр.
        Цитата Повстанець @
        Цитата korvin @
        окей, давай напиши мне аналог такого кода на C++:
        С учётом разницы статических и динамических типов как то так:
        ExpandedWrap disabled
              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;


        Добавлено
        Или даже так:
        ExpandedWrap disabled
              int a, b;
           
              boost::tuple<int&, int&>(a, b) = boost::tuple<int, int>(1, 2);
           
              std::cout << a << std::endl << b << std::endl;

        При чем тут динамические типы? я тебе привел пример на статическом языке. Ну да, заменить одну короткую строку тремя более длинными -- это круто =/
          Цитата D_KEY @
          Причем здесь компиляторы? Я говорю о скриптовом языке. У вас в стандарте написано, что он только для браузеров?
          Так в твоей фразе написано пролокальные проверки... так вот локальные проверки идут в тех же браузерах, что и у пользователя...
            Цитата D_KEY @
            Мне не нужна куча int'ов, мне нужен набор произвольного количества произвольных параметров. В C++ это можно сделать через шаблоны. Как это сделать "правильно"?

            И как ты предлагаешь обрабатывать произвольное количество значений произвольных типов? Ну да, в языках с динамическим субтипированием это могло быть.
            ExpandedWrap disabled
              f : [SomeSuperType] -> ResultType

            где SomeSuperType -- "нижняя граница" типов, вплоть до Top.
              korvin, так ты покажешь, как правильно описывается функция с переменным числом аргументов? Интересно, получается и CL тебе тоже не нравится?
                Цитата korvin @
                При чем тут динамические типы? я тебе привел пример на статическом языке.

                Ну да, с выводом типов. Допустим без вывода, с явным указанием:
                ExpandedWrap disabled
                  (a, b) : (Num, String) = (1, "one")

                или в стиле указания типа перед переменными:
                ExpandedWrap disabled
                  (Num, String) (a, b) = (1, "one")
                  Цитата D_KEY @
                  korvin, так ты покажешь, как правильно описывается функция с переменным числом аргументов? Интересно, получается и CL тебе тоже не нравится?

                  показал выше =) а в CL можно рассматривать все функции, как принимающие один аргумент -- список значений, ибо apply никто не отменял. + сахар для разбора и некоторой оптимизацией при компиляции. Но я-то говорю про статику, а не динамику.
                  Сообщение отредактировано: korvin -
                    Цитата korvin @
                    И как ты предлагаешь обрабатывать произвольное количество значений произвольных типов?

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

                    Не согласен? Покажи как правильно.

                    Добавлено
                    korvin, ты немного сбил дискуссию в сторону.
                    Скажи, тебе нравится, что в языке функцию, рассчитанную на 1 аргумент, можно вызвать со 100500?
                      Цитата D_KEY @
                      В статически - шаблоном функции, который может и рекурсивно(статически) обойти все элементы при генерации кода(до компа доберусь если, покажу на плюсах, из "каменного века", так сказать).

                      О да, уже предвижу кучу шаблонного мусора. =)

                      Цитата D_KEY @
                      korvin, ты немного сбил дискуссию в сторону.
                      Скажи, тебе нравится, что в языке функцию, рассчитанную на 1 аргумент, можно вызвать со 100500?

                      Не вижу в этом ничего плохого для веба. Там как бы важно, чтобы клиент таки увидел информацию, даже если часть JS-кода окажется не совсем рабочей, а не сообщение об ошибке. Браузеры даже некоторые косяки в хтмл умеют исправлять, типа несбалансированность тегов. Т.е. приоритеты другие. Тут можно аппелировать, мол, если бы изначально все было строго, то... Но это уже не важно. Также и, например, С++ тянет наследие С, от которого бы неплохо избавиться, но... Да и вообще всё legacy-говно существует и с ним приходится работать. Мир не совершенен. И в этих условиях особенности JS вполне оправданы.

                      Добавлено
                      И как я уже возможно говорил, я против использования JS вне его ниши -- "скриптов для браузеров", как например node.js, серверный язык должен быть строже и более "явный". Да и в своей нише JS неплохо бы заменить CoffeeScript'ом например.

                      Добавлено
                      Вот я, например, вообще пользуюсь NoScript-плагином для FF, и по-дефолту скрипты отключены. Хороший веб-сервис при этом должен продолжать исправно функционировать (ну разве что с мультимедиа-контентом не все так просто, но это пока), JS же должен лишь дополнять и предоставлять какие-то бонусные удобства, не более. К сожалению многие говносайты без JS вообще не могут адекватно работать =(
                        Цитата korvin @
                        Вот я, например, вообще пользуюсь NoScript-плагином для FF, и по-дефолту скрипты отключены. Хороший веб-сервис при этом должен продолжать исправно функционировать (ну разве что с мультимедиа-контентом не все так просто, но это пока), JS же должен лишь дополнять и предоставлять какие-то бонусные удобства, не более. К сожалению многие говносайты без JS вообще не могут адекватно работать =(

                        Это до тех пор пока сайт должен исключительно предоставлять информацию без всякой динамической обработки твоей реакции :-? Там уже без js никуда.
                          Цитата korvin @
                          Цитата D_KEY @
                          В статически - шаблоном функции, который может и рекурсивно(статически) обойти все элементы при генерации кода(до компа доберусь если, покажу на плюсах, из "каменного века", так сказать).

                          О да, уже предвижу кучу шаблонного мусора. =)

                          Так покажи, как без него :)

                          Цитата
                          И как я уже возможно говорил, я против использования JS вне его ниши -- "скриптов для браузеров", как например node.js, серверный язык должен быть строже и более "явный".


                          А я уже писал, что такая обработка в браузерах - норма. Они и html не строго обрабатывают, только это не повод вносить кривость в сам html ;)
                            Цитата D_KEY @
                            А я уже писал, что такая обработка в браузерах - норма. Они и html не строго обрабатывают, только это не повод вносить кривость в сам html ;)

                            А никто и не вносит, стандарт вполне четок, на сколько я знаю, другое дело, что ему мало кто следует. Вот этот форум проходит валидацию W3C? Google не проходит, на сколько я знаю.

                            Добавлено
                            Цитата D_KEY @
                            Так покажи, как без него :)

                            А что без него? Ну например
                            ExpandedWrap disabled
                              fun f (xs : [Object]) -> Void {
                                  for x in xs {
                                      x.foo
                                  }
                              }


                            Добавлено
                            Цитата Астарот @
                            Это до тех пор пока сайт должен исключительно предоставлять информацию без всякой динамической обработки твоей реакции :-? Там уже без js никуда.

                            Без "динамической обработки реакции" в вебе вполне можно жить. Причем без напряга.
                            Сообщение отредактировано: korvin -
                              Цитата korvin @
                              Без "динамической обработки реакции" в вебе вполне можно жить. Причем без напряга.

                              Ну, как сказать... Вот форум без js нормально работать будет?
                                Цитата korvin @
                                Там как бы важно, чтобы клиент таки увидел информацию, даже если часть JS-кода окажется не совсем рабочей, а не сообщение об ошибке.

                                Гораздо хуже если из-за какой-нибудь внутренней ошибки клиент увидит неожиданный результат :) Ну там интернет-банк скажет, что у него на карточке undefined денег.
                                К тому же сообщения об ошибках и ворнинги заставляют более качественно тестировать софт, а не "Ну не заработало и черт с ним"

                                :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (66) « Первая ... 39 40 [41] 42 43 ...  65 66


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1872 ]   [ 15 queries used ]   [ Generated: 25.08.26, 13:45 GMT ]