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

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

    Так и я о том же. Почему же js сам по себе не мог бы быть строгим, просто браузеры бы были более лояльны к коду, так же, как и в случае html?

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

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

      Пральна, лучше сразу кинуть пользователю ошибку :good:

      Цитата Мяут-Настоящий @
      К тому же сообщения об ошибках и ворнинги заставляют более качественно тестировать софт, а не "Ну не заработало и черт с ним"

      :lool: То-то я гляжу исключения прям заставляют себя обрабатывать, и ни в коем случае не позволяют оставлять catch пустым.

      Добавлено
      Цитата D_KEY @
      Почему же js сам по себе не мог бы быть строгим, просто браузеры бы были более лояльны к коду

      Браузеров много и заставить их себя как-то вести практически не реально. Язык более-менее один...
        Цитата Астарот @
        Пральна, лучше сразу кинуть пользователю ошибку :good:

        Астя, как будто-бы на Java или там на Erlang пишут софт не для пользователей, а для каких-то инопланетян. :)

        Добавлено
        Цитата Астарот @
        Браузеров много и заставить их себя как-то вести практически не реально.

        Ну у Python тоже не одна реализация, компиляторов C++ - выше крыши. Вроде все живы :)
          Цитата D_KEY @
          Цитата
          А что без него? Ну например
          ExpandedWrap disabled
            fun f (xs : [Object]) -> Void {
                for x in xs {
                    x.foo
                }
            }

          Теряем информацию о типе и смысл статической типизации.

          Ты уже начал читать про Dependent Types? =) В случае применения функции к статически сформированного списка ничего не теряем, в случае с формированием списка в рантайме шаблоны не помогут =) А смысл статической типизации вы каждый раз теряете при наследовании с переопределением виртуальных методов.
            Цитата Мяут-Настоящий @
            Ну у Python тоже не одна реализация, компиляторов C++ - выше крыши. Вроде все живы :)

            И что? Пока ты не заставишь все браузеры вести себя единообразно - разговор ниочем.

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

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

              Добавлено
              Цитата Мяут-Настоящий @
              Ну у Python тоже не одна реализация, компиляторов C++ - выше крыши. Вроде все живы :)

              угу, то-то собирать исполняемый файл из объектников созданных разными компиляторами -- занятие не из веселых. Кстати на ЛОРе как раз отрылась тема.
                Цитата Астарот @
                И что? Пока ты не заставишь все браузеры вести себя единообразно - разговор ниочем.

                Мне кажется, это замкнутый круг. Вместо того, чтобы использовать единые стандарты и следовать им, придумали язык, в котором можно вообще без стандартизации существовать :)
                  Цитата Мяут-Настоящий @
                  Цитата Астарот @
                  И что? Пока ты не заставишь все браузеры вести себя единообразно - разговор ниочем.

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

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

                  Добавлено
                  Так что, Мяут-Настоящий, это
                  Цитата Астарот @
                  Напоминаю - в одном и том же случае ie положит данные в объект глобальной области видимости, а все остальные браузеры передадут в функцию в виде аргумента. Решения пока так никто и не предложил.

                  проигноришь в лучших традициях?
                    Цитата Мяут-Настоящий @
                    Мне кажется, это замкнутый круг. Вместо того, чтобы использовать единые стандарты и следовать им, придумали язык, в котором можно вообще без стандартизации существовать :)

                    Дык в этом и суть, что есть уже сформировавшаяся "область" со своими минусами и плюсами, и исправить ее просто не реально. Если с завтрашнего дня все браузеры станут строго следовать стандартам html и более строго проверять JS-код, то примерно 99% веба просто перестанут работать. Ты будешь оплачивать простои или кто? =)
                      Цитата korvin @
                      В случае применения функции к статически сформированного списка ничего не теряем

                      Подробнее?

                      Добрался до компа, вот пример с "шаблонным мусором":
                      ExpandedWrap disabled
                        void format_print(const char *s)
                        {
                            std::cout << s;
                        }
                         
                        template<typename T, typename... Args>
                        void format_print(const char* s, T value, Args... args)
                        {
                           while (s && *s) {
                              if (*s=='%' && *(s+1) !='%') {
                                 std::cout << value;
                                 return format_print(++s, args...);
                              }
                              std::cout << *s++;
                           }
                        }


                      ExpandedWrap disabled
                        format_print("a = %, b = %, c = %", 10, 2.1, "aaa");

                      ExpandedWrap disabled
                        a = 10, b = 2.1, c = aaa


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

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

                      А может быть он отлично подходит потому, что к нему все "привыкли"? Чем он как язык хуже какой-нибудь lua, кроме того, что его поддерживают браузеры :) ?
                      Сообщение отредактировано: D_KEY -
                        Цитата D_KEY @
                        Да, для читающих, хочу заметить, что к обсуждению js это никакого отношения уже не имеет :D

                        А ну марш на мороз! :D

                        Добавлено
                        Цитата D_KEY @
                        А может быть он отлично подходит потому, что к нему все "привыкли"?

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

                        Цитата D_KEY @
                        Чем он как язык хуже какой-нибудь lua, кроме того, что его поддерживают браузеры :) ?

                        А чем Lua лучше, не говоря уж о том, что браузеры Lua не поддерживают?
                          Цитата Астарот @
                          А может быть стоит его выучить и попользоваться

                          Договорились :)

                          Добавлено
                          Астарот, литературу порекомендовать можешь хорошую?
                            Цитата D_KEY @
                            Чем он как язык хуже какой-нибудь lua

                            Вообще ей богу на таких вопросах хочется взять и уе... ну, ты понял. Показывают абсолютное незнание языка ВООБЩЕ. Сравнение идет на уровне синтаксиса и не далее, но при этом "а чем лучше", да еще и "кроме ключевой и основной особенности и области применения" :facepalm: Lua хуже тем, что там нет getElementById() - ВНЕЗАПНО нет, потому как Lua не используется в браузере где getElementById() нужен. Так же ВНЕЗАПНО там нет getElementsByTagName - в силу отсутствия тегов. В общем если подумать, то Lua, как замена js хуже js тем, что Lua не js...

                            Добавлено
                            Цитата D_KEY @
                            Астарот, литературу порекомендовать можешь хорошую?

                            Это запросто - пожалуй единственная в природе действительно вменяемая книга http://www.books.ru/books/javascript-podro...-555423/?show=1
                              Цитата Астарот @
                              Сравнение идет на уровне синтаксиса и не далее

                              На синтаксис мне плевать, мне семантика важна.

                              Цитата
                              Lua хуже тем, что там нет getElementById() - ВНЕЗАПНО нет, потому как Lua не используется в браузере где getElementById() нужен. Так же ВНЕЗАПНО там нет getElementsByTagName - в силу отсутствия тегов. В общем если подумать, то Lua, как замена js хуже js тем, что Lua не js...

                              Естестевенно, там был бы и getElementById и getElementsByTagName. Проблема-то в чем? Обычные библиотечные функции.

                              Добавлено
                              Цитата Астарот @
                              Цитата D_KEY @
                              Астарот, литературу порекомендовать можешь хорошую?

                              Это запросто - пожалуй единственная в природе действительно вменяемая книга http://www.books.ru/books/javascript-podro...-555423/?show=1

                              Ага, спасибо

                              Добавлено
                              MyNameIsIgor, тебе теперь пм не отправить... Зря ты так разошелся, хотя провокаторы-то известны, не будем показывать пальцем...
                                Цитата D_KEY @
                                Естестевенно, там был бы и getElementById и getElementsByTagName. Проблема-то в чем? Обычные библиотечные функции.

                                Ну так когда будут - тогда и можно говорить :-? К тому же это далеко не единственное чего там нет.

                                Добавлено
                                Цитата D_KEY @
                                хотя провокаторы-то известны, не будем показывать пальцем...

                                Ну, ты еще пожалей его - такого няфффку ни за что, ни про что обиженного :D

                                Добавлено
                                Кстати, вот ты все время "пользователь может вызвать функцию не так... надо вернуть ошибку..." Браузер вообще-то тот же пользователь - именно он вызывает код обработчиков события, и ему ошибку возвращать бессмысленно - браузер тупой, он как вызывал так и будет вызывать, ему пофиг на все :-? С этой точки зрения нужна максимальная лояльность в форме вызова, что бы дать возможность отработать коду внутрях, вдруг он сможет разрулить противоречие. Иначе пришлось бы делать так:
                                1. узнать версию браузера
                                2. при подвешивании события устроить кучку if'ов, типа если ie, то обработчик вызвать так, если ff - сяк...

                                При этом первый пункт придется реализовывать на том же js, а значит могут быть нюансы зависящие от браузера, для разруливания которых нужно браузер определить, для чего придется... и так далее по кругу :D А второй пункт обозначает что у тебя каждое подвешивание события обрастет бахромой лишнего кода.

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


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