1. Куча / Говнокод #16346

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    Я не считаю, что писать сайты на С++ - это бред. По-моему бред - это использовать динамически типизированный скрипт, типа PHP, у которого даже нормального ООП нет.
    Я писал на PHP и знаю, как это не удобно. Я считаю, если создать нормальную удобную обертку, то на С++ писать гораздо удобнее. 
    Самый главный минус С++ в том, что свой сайт я могу держать только на своем собственном сервере, и не могу его залить на какой-нибудь бесплатный хостин,
    как в случае с PHP.

    Прафессианальные сайтостроители с гейдева просвещают.

    Запостил: gost, 15 Июля 2014

    Комментарии (186) RSS

    • > gost
      Денис Попов, перелогинься )
      Ответить
      • > Прафессианальные сайтостроители с гейдева просвещают.
        Я не прафессианальный сайтостроитель с гейдева.
        Ответить
    • > Самый главный минус С++ в том, что свой сайт я могу держать только на своем собственном сервере, и не могу его залить на какой-нибудь бесплатный хостин,
      Да почему, можно залить на тот же openshift. Один хер посещаемость этого говносайтца будет чуть менее чем нулевая, и фришный small gear вполне вытянет нагрузку.
      Ответить
      • Лучше сразу исходники на говнокод пускай заливает.
        Ответить
    • Wt уже существует.
      Ответить
    • осталось узнать на чем ком Апача написан
      Ответить
    • показать все, что скрытоЯ впрыскиваю своих неродившихся детей в анус Bormand-a!!!!!
      Ответить
    • Есть нормальное ООП в PHP. Автор - бородато-пузатый пидорас. Хорошо бы его уебать скоростным поездом.
      Ответить
      • показать все, что скрытоХачи торгуют овощами, казахи улицы метут,
        Всепопустительства админов плоды беспечные цветут.
        ***
        Таджики трахнули Азула:конча струится,кровь течет.
        На помощь прибежал Диаз: теперь не парень - пидорас.
        Несчастный модер крикнул: "No-o-o-o!!!!!", но гомосекам все равно.
        ***
        А где админ? А вот и он:
        Вот, кто-то в рот его ебет.
        Певец в стоячий микрофон - Азам Азизов хуй сосет.
        Ответить
    • Боже мой, опять текст и огромная полоса прокрутки. Во имя Тараса, не используйте более 80 символов на строку. Это ужасно - читать и скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить, скроллить. Просто ад.
      Ответить
      • Я проксроллил до конца. Удовлетворены?
        Ответить
        • Поздравляю! 95% людей не могут проскроллить до конца.
          Ответить
          • Уху! Я особенный!
            Ответить
          • А у 5% Браузер, в котором есть "fit to width"
            Ответить
            • Уже меньше 5%. Некоторые пользователи предали браузер, в котором есть «fit to width», и перешли на Хром с красной иконкой.
              Ответить
              • >предали браузер
                Этим говном сегодня пользоваться нельзя, все тормозит и лагает, а жаль.
                Ответить
            • Я специально юзерскрипт отключил чтоб понять чего все обсуждают.
              Ответить
        • там ад
          Ответить
      • Все соснули сочного норвежского хуйца и лизнули красную букву О изнутри.
        Ответить
    • Ну, если учитывать риски утечек памяти, и правильно озадачиться многопоточностью и производительностью, standalone-демон может быть не хуже php-cgi.
      Ответить
      • > риски утечек памяти
        Их нет, как и переполнений буфера*.

        * если не делать вид, что ты пишешь на си, а не на крестах
        Ответить
        • Если убивать подпроцессы регулярно, тогда не будет.
          Ответить
          • Их и так не будет. Просто не изображай из себя Сишного Царя, и не юзай сырые указатели и delete.

            P.S. Ну да, возможны утечки как в жабе - бесконечно растущие кеши и т.п. Но они в любом языке возможны (кроме, пожалуй, пыхи, из-за ее любви к рестарту после каждого запроса).
            Ответить
            • Хитрый план такой хитрый.
              Есть другая проблема - слегка неудобно менять страницы, но это поправимо, если логику засунуть в библиотеки.
              Ответить
              • > слегка неудобно менять страницы
                Да ну... Остановить старый бинарь, подменить на новый, да запустить. Заодно спасёт от желания править скрипты прямо на боевом сервере.

                Если вся эта байда работает через балансер - никто даже и не заметит перебоя в работе.

                > если логику засунуть в библиотеки
                Имхо, будет менее удобно, чем с монолитным бинарником.
                Ответить
                • Только микроядро, только хардкор!
                  Ответить
                  • С микроядром получится апач/нгинкс с плагинами ;)
                    Ответить
                    • Спасибо, что напомнили про плагины. Есть много интересного даже для такой мелочи, как Лайти:

                      http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModMagnet
                      http://redmine.lighttpd.net/projects/lighttpd/wiki/AbsoLUAtion
                      Ответить
    • Пришло время писать сайты на с++
      Ответить
      • Сайт на c++ сам себя не напишет!
        Ответить
        • ПРИШЛО ВРЕМЯ ПИСАТЬ САЙТЫ НА C++
          САЙТ НА C++ САМ НЕ НАПИШЕТСЯ
          НАПИШИ ЕГО, НАПИШИ ЕГО ЕЩЕ РАЗ
          ЗАЧЕМ МНЕ НУЖЕН PHP, У МЕНЯ НЕТ ВРЕМЕНИ ЧТОБЫ ЕБАТЬСЯ С НИМ
          ЛУЧШЕ ЕЩЕ РАЗ НАПИСАТЬ САЙТ НА C++
          Я ПИШУ САЙТ НА C++ ПО 3 РАЗА В ДЕНЬ
          КАЖДОЕ НАПИСАНИЕ ЗАНИМАЕТ ДВАДЦАДЬ МИНУТ
          Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
          Я УСПЕШЕН И ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ ИГРАЮ В ИГРЫ
          А ПОСЛЕ ЭТОГО ПИШУ САЙТЫ НА C++
          ТУПЫЕ ПОХАПЭКОДЕРЫ ОДЕРЖИМЫ НЕДО-ООП
          А Я СВОБОДНЫЙ ОТ ЗАДРОТСТВО ЧЕЛОВЕК
          СКОЧАТЬ БЕЗПЛАТНО И БЕЗ РЕГИСТРАЦИИ МОКРЫЕ ПИСЕЧКИ
          КРЯК УЛЬТИМАТ КЕЙГЕН РАЗБЛОКИРУЙ ВЕНДУ
          ЛУЧШЕ Я НАПИШУ САЙТ НА C++
          И НАБЛЮЮ НА ВОРНИНГИ, СТАБИЛЬНОСТЬ НЕ НУЖНА
          Я НЕ ПИСАЛ САЙТ НА C++ НЕДЕЛЮ
          ПОЙДУ НАПИШУ
          В C++ ВСЕ ПРОСТО И ПОНЯТНО
          ОШИБКА ACCESS VIOLATION 0XC0000005. ЭТО ЖЕ ОЧЕВИДНО КАК ЕЕ РЕШИТЬ
          ПРИШЛО ВРЕМЯ ПИСАТЬ САЙТ НА C++
          ККОКОКОКОКОКОКО
          ПШП ХТМЛ ПИТУХИ
          КОКОКОКОКОКОКО
          Ответить
          • Ответить
            • КРЯК УЛЬТИМАТ КЕГДАН РАЗБЛОКИРУЙ ВС
              Ответить
              • ВС?
                Ответить
                • Как раз сегодня говорили о важности этой аббревиатуры: http://bash.im/quote/429123
                  Ответить
                  • Что то чем больше я читаю Haskell тем меньше понимаю мир вокруг.

                    Я нихуя не понял
                    Ответить
                    • Надеюсь, Роман придёт и расскажет, что за ВС.
                      Есть версия, что это ошибка в слове "всё".
                      Ответить
                    • > тем меньше понимаю мир вокруг.
                      >Бесконечноразрядный компьютер вселенной тик за тиком раскрывает бесконечный ленивый персистентный вектор иммутабельных состояний пространства-времени.
                      http://govnokod.ru/11978#comment157061
                      Ответить
                • > ВС?
                  Вижуал Студия
                  Ответить
          • ))
            Ответить
      • Их пишут с незапамятных времён. Правда, в основном бэкэнды.

        Главная страничка Гугла, насколько мне известно, обслуживается с++-бэкэндом.

        Facebook раньше деплоился не в виде php-скрипта, а путём кросс-компиляции в c++ c последующей сборкой бинарника (сейчас не уверен).

        У нас на работе есть внутренний fastcgi framework, позволяющий писать веб-бэкэнд на C++ не менее удобно, чем какой-нибудь Play Framework. На нём написана куча разных сервисов.
        Ответить
        • Где-то разбирали метод Фейсбука (их компилятор PHP в C++ можно скачать бесплатно без SMS). В общем, их метод даёт такой же перфоманс, как и обычный кэш опкодов (APC, XCache etc.), потому что компилятор воспроизводит весь функционал PHP, включая динамическую тупизацию с ненужной питушнёй (обычная переменная, хранящая числовое значение, превращается в объект).

          Чтобы получить хоть какой-нибудь перфоманс, нужно переходить на статическую типизацию. Но всё равно не будет решена главная проблема PHP — смерть процесса после каждого запроса.
          Ответить
          • Там у них кажись поддерживается сабсет пыхи, урезали чтоб всякие оптимизации наворачивать.

            >потому что компилятор воспроизводит весь функционал PHP, включая динамическую тупизацию с ненужной питушнёй (обычная переменная, хранящая числовое значение, превращается в объект).
            Движкам браузеров это не мешает быть адски шустрыми *. Всё дело в JIT.
            Он собирает статистику, если переменная в методе используется только как число, он будет хранить число.
            Когда происходит "питушня" VM просто деоптимизирует и начинает интерпретировать код.
            * В сравнении с другими динамическими языками
            Ответить
          • > всё равно не будет решена главная проблема PHP — смерть процесса после каждого запроса.
            Это всё виртуально - с точки зрения программера. Думаю там запилены пулы и кеши.
            На самом деле пыха у fb и vk работает намного лучше чем у многих кресты там жаба или шарп.
            Ответить
            • Охохо, я был за «PHP» ещё до того как это стало мейнстримом.
              Ответить
          • А как тогда обрабатывать наш любимый код типа
            $a = "10";
            $a *= 2;
            Ответить
          • Статическая типизация тут ни при чем. Вопрос не в том когда компилятор проверяет типы, а в том на сколько строго и на сколько полезно. В Форте, например, типов нету как понятия в языке, и тем не менее код на Форте как правило в пределах 2-5 раз медленнее, чем на Си.

            Другой пример: в Яве есть т.н. два типа полиморфизма (они же механизмы, которые регулируют диспатч методов): статический и динамический. Статический предполагает определенную оптимизацию еще на стадии компиляции, а динамический будет разруливать применимые типы в рантайме, что по-сути никак не отличается от того же Питона, ж.скрипта и т.п. Если программист не понимает разницу, и, например, пишет код используя восновном интерфейсы, не конкретизируя, то есть большой шанс того, что работать это будет точно так же, как в том же Питоне или ж.скрипте.
            Ответить
            • > в Яве
              > динамический будет разруливать применимые типы в рантайме

              Это только invokedynamic разруливает, да и он всего раза в 3-4 медленнее прямого вызова.

              Если речь идёт о вызове метода интерфейса, то это по сути вызов функции по указателю, никакого разрешения не нужно. Разница в производительности между вызовами статических методов и полиморфных смехотворна. И уж пистон с его строковым лукапом по иерархии словарей там даже рядом не стоял.
              Ответить
              • Я не знаю как именно это сделано в Питоне, но в В8 схема похожая, и в Лиспе динамический вызов такой же.

                Но опять же, ответ не совсем по теме. Главное, что статическая типизация ортогональна производительности, потому что регулирует когда, а не как интерпретируются типы (при условии, что интерпретатору вообще интересно работать с типами).
                Ответить
                • > статическая типизация ортогональна производительности

                  Да вот не ортогональна.

                  Если все типы проверены, а вызовы разрешены на этапе компиляции, то во время выполнения этого делать не придётся, следовательно, программа должна работать быстрее (иногда существенно).

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

                  Если вся работа выполнена в статике, рантайму не придётся отслеживать сложные связи между сущностями и оптимизировать куски заново в связи с изменившейся политикой партии.

                  Да, рантаймовый оптимизатор иногда может знать больше статического и может оптимизировать более сложные кейсы, частично компенсировав свои недостатки.

                  Но пока ещё статика и производительность идут бок о бок.

                  > в В8 схема похожая
                  Не похожая. В V8 жабоскрипт в рантайме компиляется в практически плюсовые классы, хэш-таблички по возможности заменяются структурами, методы превращаются в нативные функции, которые дёргаются по указателям. Но если кто-то вдруг решит добавить к объекту полей, рантайму придётся менять определение класса и генерить нативный код заново, что является весьма затратной операцией.
                  Ответить
                  • > компиляется в практически плюсовые классы
                    А мне казалось, что там какой-то псевдоассемблер.
                    Ответить
                  • Для контекстно-независимых языков парсинг (со всемы вытекающими) - это O(n) операция. Так что O(n)тимизаторы должны спать спокойно. Разница только в константе.
                    Ответить
                    • >O(n)тимизаторы
                      Brilliant!
                      Ответить
                    • > O(n)тимизаторы должны спать спокойно

                      Пф, O(n) удовлетворяет только неудачников. Крутые пацаны ровняются на Джеффа Дина и не пользуются алгоритмами хуже O(1/n)
                      Ответить
                  • И, еще раз. А что компилятор в рантайме не работает? Не создает код? Или вам вдруг показалось, что каждый раз выполняя код он генерирует АСТ и все дела? Конечно же нет. Может какие-нибудь допотопные языки так и делают, но большинство современных языков компилируют программу один раз. От того, что это случается не по нажатию кнопки программистом, а после загрузки программы в браузер производительность не меняется. Если бы браузер умел компилировать С++, то можно было бы вместо ж.скрипта писать на С++.
                    Ответить
                    • > после загрузки программы в браузер производительность не меняется.

                      Меняется. Программа на JS динамична и может так себя изменить, что для эффективного её представления потребуется повторная оптимизация.

                      За бОльшую выразительность и гибкость в процессе выполнения приходится расплачиваться производительностью.

                      У меня аналогии с обратным индексом в вебе. Когда у нас есть статичный набор документов, можно спокойно построить индекс и выполнять запросы очень быстро. Если набор документов постоянно меняется, возникают проблемы с шардированием и мёржем индексов, слежением за удалёнными документами, необходимость слияния на запросах и вообще куча сложностей. Если сделать всё грамотно, производительность не сильно упадёт, но повозиться придётся, да и запросы бегать будут медленнее, хотя амортизированная сложность алгоритмов будет той же.
                      Ответить
                      • Ровно в такой же степени, как это может сделать и любой другой язык. Если в браузерe можно выполнить С++, значит в нем есть и компилятор С++, значит можно евал.
                        Но я уже устал повторять. Это ошибка в определениях: неправильно понято что такое "статическая типизация", ну и дальше ей приписываются магические свойства основаные на очень ограниченых личным опытом наблюдениях. Нет даже никакой корелляции между тем когда проверяются типы и тем как быстро работает програма. Но людям приятно верить в чудеса.
                        Ответить
                        • > Нет даже никакой корелляции между тем когда проверяются типы и тем как быстро работает програма.
                          > людям приятно верить в чудеса.

                          Вы, как всегда, абсолютно правы.
                          http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=gpp&lang2=sbcl&data=u32
                          
                          http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=gpp&lang2=python3&data=u32
                          Ответить
                          • И что? Эти тесты меряют качество компиляторов. Это не меряет влияние статической типизации на производительность, т.как последнее вообще нельзя померять, т.как его просто не существует. Еще раз: слово "статическая" в словосочетании "статическая компиляция" значит только то, что существует програма которая, используя набор евристик, пытается обнаружить несоответствия в коде. И, конкретно, что разработчику вменяется ее использование (т.е. разработчик не сможет запустить свою програму не использовав проверочную програму). Является ли это полезным инструментом? - да. Существуют ли у этого инструмента недостатки? - тоже да.

                            Скорость програмы меряется в атомарных операциях необходимых для ее выполнения, при условии, что мы говорим о компутере Фон Ноймана. Может ли так получиться, что програма со статической типизацией справится хуже с поставленой задачей, чем програма с динамической, или отсутствующей типизацией? - да. Аналогично, верно и то, что програма со статической типизацией может справиться с задачей лучше.

                            Утверждать, что програмы со статической типизацией быстрее програм с другими видами типизации - это просто демонстрировать отсутствие понимания терминологии. Нет никакой закономерности, в том чтобы первое или второе было исключительно верно. Просто так получилось, что в нашем очень маленьком мире программирования, который и просуществовал-то всего-ничего, было написано несколько компиляторов, которые лучше справлялись с ограниченым спектром задач.
                            Ответить
                            • > Просто так получилось, что в нашем очень маленьком мире
                              Но этот мир существует, используется и формирует мнения. На крестах пишут люди поумнее тех, кто пишет на жс. Думают и пишут оптимальный код без лапши, красивостей и замыканий замыканий замыканий шестиуровневых лямбд. Слабая динамическая типизация и сахарок привлекают и развращают. Пишут программы реальные люди.

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

                              P.S. Непропорционально больно Вы в комметариях бьёте за неточные и интуитивные высказывания.
                              Ответить
                              • И что? И где связь? Как из этого следует абсолютные метафизические заявления о качестве? Речь не о правильном мире, а о понимании терминологии. О том, что значит "быть быстрее" и "статическая типизация". О каких "обычно у нас" идет речь, когда до этого речь шла о метафизических постулатах?

                                Почему это не правильно думать, что языки со статической типизацией быстрее языков с другой типизацией? - Потому, что это неправильное понимание причины и следствия, это как думать, что ветер дует потому, что деревья шатаются. Если мы делаем неправильные выводы из ситуации, которую мы наблюдаем сейчас (даже если они не противоречат наблюдениям), мы не будем развиваться в правильном направлении (т.е. мы не будем в состоянии адекватно предсказать результаты наших последующих действий). Если мы так думаем, потому, что нам так "здесь и сейчас" удобнее, вместо того, чтобы думать потому что "этому есть логическое объяснение". Если мы будем продолжать думать догматически, а не формально, то мы придем верным путем к системе требующей эпициклов и т.п. неоправданых сложностей.
                                Ответить
                                • Да, ничего абсолютного не следует из этого. Только здесь и сейчас, только аппроксимация. Аналогично, не учитываем в обычной жизни мы релятивистские эффекты - их для нас обычно нет или почти нет. Но это не значит, что наши выводы неправильны. Когда разгонимся, тогда и поправки рассчитаем.

                                  > Если мы делаем неправильные выводы из ситуации, которую мы наблюдаем сейчас
                                  Можно и правильные сделать, выражаясь более политкорректно. Скажем, "Вывод: В исследованных 60% проектов статическая быстрее на январь 2020 года", где-то в глубине души осознавая, что всё могло быть наоборот.

                                  А от "здесь и сейчас" мы так просто не оторвёмся. За неправильными выводами стоят большие дяди и их деньги. Увидели, что параметр N позволит получить больше денег - подкрутили N, пока мода не сменилась. В итоге за деньги дядь суетится большая толпа народа. Стоит только почитать посты на хабре о увеличении посещаемости. Здесь и сейчас модно зелёное - значит сделаем зелёный фон, чтобы получить +2 человека. В этом году пользователи жмут на круглые кнопки чаще на 0.00002% - сделаем круглую кнопку.
                                  Всё это позорно, конечно, но сложно игнорировать. Разве что действительно начать строить мощный лазер.
                                  Ответить
                                  • Кстати, это же big data-подход. Неточные выводы из жизненного опыта, определяющие тенденции и позволяющие заполучить с какой-то вероятностью на рубль больше.
                                    Ответить
                                  • Какая же это аппроксимация? Аппроксимация, это когда мы с какой-то точностью вычисляем правильное значение. Тут значение не то, что не правильное, оно вообще не возможное. Это все равно что аппроксимировать по движению планет количество пальцев на руках.

                                    Нет никаких исследований которые это подтверждают. Исследования должны выдвинуть гипотезу, а данные должны ее подтвердить. Тут нет никакой гипотезы вообще. Это даже сформулировать нельзя так, чтобы это можно было подтвердить, или опровергнуть.
                                    Ответить
                                  • ОК, я думаю, я нашел хорошую аналогию.

                                    * Светофоры делают машины быстрее

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

                                    Естесственно, это предположение - не правильное. Т.как его можно опровергнуть, например, сравнив скорости на междугородней трассе, или на специальном спортивном треке.

                                    Точно так же, проверка типов не является фактором влияющим на скорость програм. Просто мы ее наблюдаем в таких условиях, где ее эффект совпадает с желаемым. Естесственно, программист, который лучше проверяет свой код, скорее всего, при наличии ограниченых ресурсов (времени, знания системы) напишет вцелом лучший код, который, кроме остальных показателей, будет еще и быстрее работать. Но, аналогично ситуации с автогонками, из этого не следует причинно-следственная связь, и возможно, когда в будущем роботы будут управлять автомобилями, светофоры будут не нужны.
                                    Ответить
                                    • > ОК, я думаю, я нашел хорошую аналогию.
                                      Красиво.

                                      > И можно провести эксперимент в годордких условиях, где на дороге со светофорами автомобили будут всреднем двигаться быстрее.
                                      > Естесственно, программист, который лучше проверяет свой код,<...>
                                      > Но, аналогично ситуации с автогонками, <...>
                                      Да.

                                      Да, всё верно. Утверждение работает локально, но может перестать.
                                      Ответить
                        • > Нет даже никакой корелляции между тем когда проверяются типы и тем как быстро работает програма.
                          один раз при компиляции на машине разработчика, и далее эффективное использование стека, регистров и оптимизаций и, главное, ровно 0 секунд затрат на проверку реальных типов в реалтайме,
                          либо N раз при каждом исполнении этого блока, каждый раз с потенциально разным результатом, и потому пессимистичным размещением операндов и отсутствием оптимизаций

                          действительно, никакой разницы вообще
                          Ответить
                          • Ну как можно не понять такую элементарную вещь... нет, это не правильно, это все равно что мерять ускорение в Герцах, или в удавах. Это разные характеристики. Одна характеристика: на сколько хорошо проверена програмa, другая: как быстро она работает.

                            Если бы идиотские утверждения о типизированых програмах были бы правильными, то, поскольку в машинном коде типов нет, любая програма на Ц++ была бы быстрее этой же програмы, но скомпелированой.
                            Ответить
                            • Лолшто, как это нет типов? Я для кого про регистры и стек рассусоливал?
                              И да, перечитай ещё раз. Твоя динамическая программа не может получить тот же машинный результат. Физически. У неё будет иное представление. С кучей дополнительных проверок и именно что убогое размещение данных и в случае интерпретатора - и кода. На то она и динамическая типизация.
                              Ответить
                              • Это не типы. Типы, это дополнительное "измерение" лямбда абстракций. В машинных кодах нет никаких типов, они по определению "не типизированые", точно так же, как, например, Форт (наверное, самый известный из языков, дизайнеры которых настаивают на том, что у них типов нет, они им не нужны).

                                Взять любую книжку по теории типов, как правило, автор сначала сваяет в ней свою версию нетипизированого лямбда-исчисления, а потом к нему добавит типов. Как правило, там же будет такое или подобное заявление "добавив типов, мы не расширили выразительности языка, но некоторые выражения теперь стали невозможными"). Например, On The Expressive Power of Programming Languages Матиаса Фелайзена (хрестоматийный текст, по-сути):

                                \Lambda^t [типизированый вариант варианта лямбда-исчисления расширеного вызовом по имени и вызовом по значению -- мое] has the same set of phrases as \Lambda [нетипизированый прототип первого -- мое] but uses a type checking algorithm for filtering valid programs.

                                Никому даже в голову не прийдет выступать заявлениями о скорости. Еще раз. Скорость измеряется, для компьютера Фон Ноймнана, гарантировано завершающихся програм, в количестве элементарных операций нужных для выполнения поставленой задачи. Присутствие или отсутствие типов в принципе не могут на это повлиять. Типы это способ ограничить возможные выражения языка, и все.
                                Ответить
                              • Т.е. еще раз, для закрепления материала: типы, когда бы они ни проверялись, не влияют на скорость. На скорость влияют только количество элементарных операций. (Где-то была об этом цитата Холмогорова, но есть в запасе так же Тюринг и Бэббидж).

                                Типы влияют на то, сколько выражений можно построить инструментами языка.

                                Время проверки типов влияет на то, как скоро программист обнаружит ошибки в своем коде.

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

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

                                Нет никакой статистики подтверждающей влияние выбраной схемы типизации (или полного отказа от типизации) на скорость работы програм. Более того, у нормальных людей такой вопрос даже не возникает, т.как скорость и корректность програм явления достаточно хорошо изученые, чтобы делать такие предположения.
                                Ответить
                                • Сколько элементарных операций надо затратить программе на языке c++ для операции print a, если уже на этапе компиляции всем понятно, что это целое знаковое число, расположенное в регистре eax, и интерпретатору <подставьте сюда ваш любимый питу... динамический язык>, если a имеет конечный тип и семантику только в непосредственный момент исполнения операции print. Например, интерпретатор может подозревать, что a - это сейчас функция, потому что язык это позволяет.

                                  И для теоретиков на засыпку - сколько тактов реального процессора потребуется затратить в обоих случаях.
                                  Ответить
                                  • Во тупость то... да ну прочитай еще раз и пойми, что ты меряешь скорость в миллилитрах. Статическая типизация описывает только время когда происходит проверка програмы и необходимость этой проверки для запуска. Все, больше ничего она не делает. Это даже не свойство языка. Если бы кто-нибудь написал интерпретатор Ц++, то точно та же самая програма, не просто изоморфная статически компилируемой, а омоморфная, т.е. идентичная вплоть до любых структурных деталей вдруг стала бы динамической питушней.

                                    Почему у людей без выдающихся аналитических способностей бытует мнение, что динамические языки медленнее?

                                    - Потому, что компиляция, которая будет делать много проверок относительно корректности программы занимает много времени. Для практических задач, иногда можно пожертвовать корректностью в пользу скорости. Выполнить скрипт на Питоне может оказаться гораздо быстрее дождаться загрузки Ява компилятора, сборки и запуска програмы на Яве. Другая сторона медали - отсутствие специфики в проверках (которое позволяет сократить время компиляции) приводит к тому, что какую-то часть этих проверок удобнее оставлять до времени исполнения програмы.
                                    Т.е. в конце концов, програмы тормазаят изза того, что в них есть проверки типов. Именно там они проводят бесполезное время, которое не делает никакого вклада в вычисление результата програмы.
                                    Ответить
                                  • Наш друг, как подобает лисперу, не отличает время компиляции от времени выполнения. Ибо для него человек, который выполняет программу совпадает с человеком, который её компилирует.
                                    Ответить
                            • >> в машинном коде типов нет
                              Хм) Размерность операнда самый что ни на есть тип! В x86 есть такие типы как byte, word, итд.
                              Ответить
                              • Нет, тип это нер размер. Тип - это набор правил, которые должны быть непротиворечивы, быть частью системы правил, в которой над ними происходят операции и, желательно, описывать что-то полезное о предемете разговора. Например, тип A -> B описывает функцию, которая, данный А посылает в B. Это только имеет смысл в системе, где эти правила как-то используются, т.е. есть какие-то другие правила, которые описывают другие зависимости между А и В. Нам это может быть интересно, если какими-то другими правилами описано, что, например, для любого a в A и b в B истинно, что a = b * 2.

                                Сама по себе инфорамция о том, сколько битов есть в каком регистре ничего такого интересного нам не дает. Ее можно дополнительно интерпретировать как типы, но:
                                1. Это будет интерпретация не заложеная в сам язык.
                                2. Эта интерпретация не будет даже похожей на исходные типы, которые были в програме из которой получился этот машинный код.
                                Ответить
                                • Byte это двоичное число от 0 до 11111111. Для него действуют те же самые правила, что и для какого-нить unsigned int в высокоуровневом языке. Нету никакой разницы.

                                  Конечно можно интерпретировать byte (или qbyte) как signed или каждый его бит как флажок, ну так и в сях можно точно так же делать с интом. Или в сях тоже нету типов?
                                  Ответить
                                  • А мне и без типов неплохо программируется с интами, даблами и прочей ересью.
                                    Ответить
                                  • Все хорошо, только к типам это не имеет отношения. Типы - это правила (валидные выражения) в логической системе. Сколько там битов в байте не имеет к этому отношения.

                                    Пример типа: b в системе { a -> b, ~a }. Или описаный словами: "тип b в системе правил состоящей из b следует из a, и не a". Т.е. система не должна быть перечислением всех типов, но типы должны не противоречить системе.
                                    Ответить
                                    • Типы есть и они жестко определены в системе, это по сути смещение на определенное количество байт относительно базы (базового адреса), если на самом низком уровне рассматривать. Типы это ничего кроме блока памяти определенного размера. Так почему это типов нет, когда как раз таки они жестко зашиты в систему? А набор правил это методика.
                                      Ответить
                                      • Ну что вы за ерунду рассказываете... есть раздел математики "теория типов". Но никто из комментирующих тут даже не удосужился ознакомится с основными идеями этой теории, а вместо этого высказывают личное мнение. Ну вот представте какой-нибудь другой малопопулярный раздел математики, например, теорию катастрофы, (который посвящен на самом деле определенным явлениям в поведении функций / что-то из области геометрии), но потому, что слово "катастрофа" знакомо обывателям, обыватели приплели к нему ДТП, Холокост, Титаник и т.д.
                                        Вот тут та же ситуация: почему-то комментаторам кажется, что они точно знают, что такое типы в то время, как говорят о вещах которые к типам прямого отношения не имеют.
                                        Ответить
                                        • Вот Вы сами и поставили точку в назревающей дискуссии.
                                          Слово "катастрофа" по-разному понимается в разных областях наук. Слово "функция" по-разному понимается в математике и программировании. Более того, его смысл различен даже в отдельных ЯП. Или функторы в Haskell и функторы в C++. Везде используются свои термины.
                                          А Вы приходите со своими математическими типами на ГК словно математик на новостной сайт и просите более никогда не употреблять слово "катастрофа" в отношении "ДТП, Холокост, Титаник и т.д." из-за того, что кто-то использовал это понятное слово в своих корыстных целях (передаём привет компании "Яблоко").

                                          P.S. Если булевы значения в Вашей математике образуют тип, то чем int не его расширенный вариант (либо с трактовкой Анонимуса, либо просто как многозначный boolean)? Если же true|false - не тип, то Ваша математика не имеет практического смысла, а значит будет пылиться на полке до нужных времён.
                                          Ответить
                                          • Нет, не по-разному. В мы же не говорим про типы в контексте биологии, или кто-то тут серьезно думает, что это форум посвященный биологии? Мы точно говорим о типах в контексте программирования, и в этом контексте нет никаких разногласий относительно того, что такое типы. Есть разногласия относительно полезности.
                                            И вообще, математика - это не наука, но это уже я цепляюсь к словам.
                                            Я говорю не про какие-то специальные "математические типы", а про типы в программировании, которые описываются математической теорией.

                                            Не нужно приплетать сюда разногласия, которые не имеют отношения к теме разговора. Я не говорил про функции и про то, что под этим подразумевается в разных языках.

                                            В "моей" математике? Какие вообще булевые значения? О чем это вообще? Возьмите, блин книжку, да просто хотя бы статью в Википедии и прочитайте, зачем мне высказывать личное мнение о вопросе в котором личных мнений быть не может? А может у вас есть личное мнение о том, как должно работать сложение и умножение? Или личное мнение о скорости света?

                                            Вот, для начала: http://en.wikipedia.org/wiki/Type_(model_theory).
                                            Ответить
                                            • Вы все про теорию, а вам про конкретику. Может вы и правы, но процессор об этом всем не знает, он только умеет оперировать нулями и единицами. И типы это для него блоки памяти определенной размерности, да взять хотя бы простую программу на Assembler, там нет типов как таковых, там выделяются блоки памяти разных размерностей, а типы уже потом для простоты придумали в более высокоуровневых языках.
                                              Ответить
                                              • Не бывает конкретики, которая не соответствует теории. Такое мнение может сформироваться, если не знать, или не понимать то, о чем говорит теория. Например, если теория говорит, что нельзя передвигаться быстрее скорости света, то это не значит, что на практике это "не всегда работает", или если теория говорит, что на ноль делить нельзя, то на практике не может "иногда получаться какой-то результат".

                                                Тип - это абстрактное математическое понятие, такое же, как "множество", или "коммутативность". Програмы на Ассемблере не являются каким-то показателем / предметом в обсуждении того, что такое тип. К ним можно подойти с определенной точки зрения, и охарактеризовать в них что-то как систему типов. Но это не будет значить, что эти програмы выражают, или описывают эти типы. Перепутать эти две вещи, это т.н. use-mention error (в моем дословном переводе: ошибка интерпретации, т.е. ошибка которая возникает когда описание чего-то принимается за само явление, или, наоборот, явление интерпретируется как описание этого явления).

                                                Типы никто не "придумывал", и уж тем более с исторической точки зрения это не правильно. Типы существовали и спокойно себе существуют безотносительно компьютеров, битов и байтов. Более того, человечество вымрет, вместе с компьютерами, а типы останутся.
                                                Ответить
                                                • Вы рассуждаете в слишком широком смысле, говоря о типа как о математическом понятии. А дискуссия идет о типах программных, о принятых соглашениях, о том как типы представляются в памяти/компьютере. Не понимаю что вы пытаетесь доказать/показать. Вы говорите типов нет, хорошо, тогда что такое по вашему тип в любом яп?
                                                  Ответить
                                                  • Да ну нет же, нет каких-то специальных "отдельных програмных типов" которые ведут себя не так, как ведут себя все типы. Если вам так кажется, то вы не знаете, что такое типы, и эта дискуссия вам не поможет, потому что вы спорите с определением вместо того, чтобы соглашаться, или не соглашаться с утверждением. С определениями спорить нельзя, это в принципе не имеет смысла: если не принимать утверждения, то однозначно известно, что ни к какому заключению нельзя прийти.

                                                    Где я говорю, что типов нет? Я говорю, что тип - это такое же понятие, как "множество", и даже ссылку дал, где доступно описано, что такое тип. Просто люди, которые используют это слово в этом обсуждении используют его не по назначению, но хотят прийти к выводу, который не в определении этого термина.
                                                    Ответить
                                                    • Нет разницы между самом джаваскриптом и руби

                                                      Типы есть везде кроме ыортрана
                                                      Ответить
                                                    • Нет, я просто хочу понять что же вы имеете ввиду. Вы говорите что тип это правила в логической системе. О какой именно логической системе идет речь и каким же правилам подчиняются так называемые программные типы. И что тогда по вашему всё же программный тип?
                                                      Ответить
                                                      • Ну по ссылке, прямо во втором предложении написано же:

                                                        More precisely, it is a set of first-order formulas in a language L with free variables x1, x2,…, xn which are true of a sequence of elements of an L-structure \mathcal{M}

                                                        Другой пример.

                                                        Допустим, вы хотите дать определение умножению. И вот вы смострите на то, как умножение работает, технически, чтобы понять что это такое. И первое, что вам приходит в голову, это что умножение - это последовательное применение побитового "или", побитового "и" и сдвига влево (так можно реализовать прибавление побитовыми операциями - тот же принцип, что и сложение "в столбик").
                                                        Но, естесственно, у такого определения тут же возникают проблемы:
                                                        - а что если не известен размер числа?
                                                        - а что если нам нужно сделать то же самое, но для рациональных, вещественных, комплексных, векторов, матриц, геометрических трансформаци и т.д.?
                                                        - а что если битов у нас вообще нет?

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

                                                        Точно так же и с типами: да, можно найти какое-то соответствие между некоторыми типами и их реализацией в, например, С++. Но, например, если знаковый и беззнаковый чисельные типы в языке отличаются, то в их "реализации" они не отличаются. Но более того, мы можем определить типы, в которых одинаковое количество битов, например, две структуры с двумя полями, где первое поле в первой структуре занимает 2/3 от размера типа, а второе - 1/3, а во второй наоборот - тут вообще ни о какой совместимости речь идти не может. Ну и в конце концов, никто не знает сколько битов в типе List<T>.
                                                        Ответить
                                                        • В List<T> знают сколько битов, по вашему компилятор не знает сколько ему надо выделить памяти? List<T> занимает n*sizeof(T) + количество битов под указатель на блок синхранизации + количество битов под указатель на объект-тип. Вы думаете компилятор будет от балды выделять память? Мол, а давай ка я 1Гб выделю. По крайней мере в C# точно так. А вы знаете что если копнуть еще дальше, как все операции и числа реализованы, как память работает. 0 и 1 это электрические сигналы меньше 1В и примерно 5В соответственно, все наши 0 и 1 в памяти это состояния триггеров в ОЗУ, я повторюсь, процессор не знает всех ваших правил и всего того что вы говорите, он умеет только оперировать 0 и 1, все. Любые данные в памяти это определенное состояние носителей/запоминающих устройств, процессор не знает что там сидит, у него есть команды, это команды используются для того чтобы оперировать этими представлениями данных в памяти. Типы есть, но это то, что было сделано для удобство понимания того, с каким блоком памяти ты работаешь. А почему вам нужно знать размер блока памяти? Да опять так потому что любой так называемый тип это какой то базовый адрес + смещение относительно него, если вы выйдете за границы этого адреса, у вас уже не будет ваших данных, вы не понятно в какую область памяти попадете, поэтому при работе с памятью нужна строгость в определении блоков (их размеров), с которыми работаешь, дабы избежать утечек.
                                                          Как это не известен размер числа и как это нет битов? В компьютере так не бывает.
                                                          Ответить
                                                          • Конечно же компилятор не знает сколько памяти выделить под List<T> - он это только может знать для конкретных типов, для типов, для которых не известно, что такое T - нет, не может.

                                                            Как это не известен размер числа? - никто не сообщил, вот и не известен. А вы вообще компьютеры видели, что так уверенно рассуждаете о том, что там бывает, а что нет?

                                                            Но вы все равно ничего не поняли, и делаете всю ту же ошибку: типы говорят о другом качестве вещей, нежели сколько битов нужно для их описания в конкретном языке на конкретной архитектуре и т.д. Вы не понимаете разницу между концепцией и ее реализацией.
                                                            Ответить
                                                        • Выши агрументы про "рациональные, вещественные, комплексные, вектора, матрицы, геометрические трансформации" абсурдны, процессор про них ничего не знает, он умеет делать элементарные операции, имеет иструкции, люди, используя их, реализуют все то, что вы говорите. Память - способ пердставления данных, процессор - тот, кто умеет работать с этими железяками, не более, все остальное это асбтракции над элементарными операциями. Процессор не умеет умножать к слову, он умеет двигать регистры складывать, отсюда операция вычитания реализуется обратным кодом, а сложение и деления сдвигами.
                                                          Ответить
                                                          • Нет, это вы ничего про них не знаете, не нужно это на других экстраполировать.
                                                            Речь идет не о каком-то процессоре, а о типах. Типы вполне могут оперировать такими понятиями, как "вещественное число", потому что это понятие достаточно хорошо определено для того, чтобы его можно было использовать в контексте типов, и это все, что нужно.
                                                            Ответить
                                                            • Вы говорите слишком асбтрактно, ссылаясь постоянно на свою статью на вики, в обход реальным вещам. Тема была конкретная, про типы данных в компьютере, вы перескочили на какие то абстрактные определения из математики, говоря что определение тип ни кем кроме вас не понимается, все мы простые смертные. Обсуждения связанные с мирозданием и вопросами теологии в соседнем форуме.
                                                              Ответить
                                                              • Каким реальным вещам? Нет, это вы не можете сделать шаг от частного к общему.

                                                                Где я говорю, что никем кроме меня? Я что-ли статью эту написал? Я говорю, что вы не понимаете о чем речь. Но есть много людей, которые таки да понимают. Более того, это люди, которые пишут книжки об этом, разрабатывают языки программирования, компиляторы к ним и т.д. Например, Чарч, Мартин-Леф, Хиндли, Милнер, Скотт, Пирс, Кардели, Констейбл и еще куча людей, силами которых типы существуют в програмировании.
                                                                Ответить
                                                    • >> поскольку в машинном коде типов нет
                                                      >> Где я говорю, что типов нет?
                                                      Занавес.
                                                      Ответить
                                                      • Годный тред. Надо вернуться сюда ещё через три месяца и снова похоливарить о типах.
                                                        Ответить
                                                        • Ну за три месяца много чего может изменится.

                                                          Этот товарищ месяц назад доказывал мне что статической типизации не существует. Теперь он утвреждает что и типов нет. Возможно что через три месяца мы узнаем что структуры данных и алгоритмы это тоже глупые выдумки.
                                                          Ответить
                                                      • Фигасе... я не говорю, что типов нет вообще, но их нет в машинном коде. Что это за высосаная из пальца херня?
                                                        Ответить
                                                        • А в википедии вот противоположное написано.
                                                          Ответить
                                                          • Хоспадя, ну где вы типы в машинном коде нашли? Какой тип имеет ячейка с адресом 0x12345678? Какой тип лежит в 128-битном xmm регистре?

                                                            Можем ли мы проинтерпретировать содержимое ячейки не зная команд, которые будут с ней работать? Нет, можно только ткнуть пальцем в небо. Причем одна команда может работать с этой ячейкой как с флоатом, вторая - как с беззнаковым целым, а третья - вообще как с последовательностью байт.
                                                            Ответить
                                                            • P.S. А если посмотреть на тот же add - он ведь даже не знает, знаковые числа он складывает или беззнаковые! Эта команда работает прямо над представлением (representation) даже на наносекунду не задумываясь о том, как его интерпретировать (interpretation)! А вы тут о каких-то типах мечтаете...
                                                              Ответить
                                                      • >>Где я противоречу себе?
                                                        >> поскольку в машинном коде типов нет
                                                        >> Где я говорю, что типов нет?
                                                        *fxd
                                                        Ответить
                                                • > Например, если теория говорит, что нельзя передвигаться быстрее скорости света, то это не значит, что на практике это "не всегда работает", или если теория говорит, что на ноль делить нельзя, то на практике не может "иногда получаться какой-то результат".

                                                  Годные примеры. Если говорить о скорости света, можно двигаться быстрее скорости света в некоторой среде. Если не придираться к словам, на практике есть объекты, которые движутся быстрее скорости света. Например, горбик волны или светлое пятно от пикселя на экране. И это ничему не противоречит.

                                                  Теория пределов даёт конкретные ответы, учит как делить на "почти ноль" и работает в выдуманном мире. Ничего не мешает (вернее, ничего не помешало) воспользоваться этим в реальном мире и создать float/double с некоторыми допущениями. Да, не учли асимптотику и x/x, x*x/x, x/(x*x) дают NaN. Но поскольку физическая бесконечность встречается крайне редко и скорее сигнализирует об ошибке, мы получили более удобную систему контроля. Хочу - включаю исключение, хочу - проверяю результат, хочу - передаю inifinity/NaN тому, кто это будет обрабатывать.

                                                  Математика - царица наук и служанка физики.
                                                  Ответить
                                                  • Нет на практике ничего, что движется быстрее скорости света в том же смысле, в котором движется свет. Мы не говорим о разных интерпретациях слова "движется". Ну и что, что можно делить на "почти ноль" - об этом не было речи, речь была про делить на ноль. Как одно опровергает другое?
                                                    На ноль нельзя делить из совсем других соображений - изза определения того, что такое деление.
                                                    Ответить
                                                    • > Как одно опровергает другое?
                                                      По мне - так всё связано и плавно перетекает из одного в другое. Когда мы говорим, что можем делить на ноль или делим на ноль в вычислениях с double, используем какую-то модель малой величины, но в быту называем её нулём, вызывая бугурты математиков. Я об этом говорил.
                                                      Ответить
                                            • > Какие вообще булевые значения? О чем это вообще?
                                              ложь-истина. Если они не образуют тип, мы говорим о совершенно разных понятиях "тип" и математические типы никак не связаны с типами в ЯП.

                                              > личное мнение
                                              Не совсем личное мнение. Конечно, я привык к типам в ЯП, и это слилось с моим личным мнением, но это как минимум не я напился на празднике и придумал. Это сложившиеся термины, Вы, можно сказать, сами "спорите с определением".
                                              Ответить
                                              • Логика не занимается вопросами того, что такое ложь или истина. (Этими вопросами занимается философия). А теория типов не занимается вопросами о том, формируют ли "ложь" и "истина" типы. Прочитайте, наконец, как минимум определение того, о чем вы говорите.

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

                                                Математических типов отдельно от типов в програмировании не существует. Математика описывает типы в програмировании. Математика - это род человеческих знаний, который описывает закономерности. Одна из множества таких закономерностей - типы в програмировании, и поэтому математика может их описать. Конкретно, она их описывает в теории типов.

                                                Вы не "привыкли", вы просто как и другой комментатор не можете понять связь между частным и целым.
                                                Ответить
                                                • В науке "разведения полемики" у вас явно докторская степень. Теперь вы уже просто утверждаете что мы ничего не понимаем, а вы все знаете.
                                                  >Где я говорю, что никем кроме меня?
                                                  >Нет, вы просто не понимаете о чем речь, и пытаетесь убедить кого-то, кто таки да понимает, в своей правоте, которая основана не более чем на ваших личных фантазиях.
                                                  Опять же повторюсь, вопрос был как раз таки о конкретном представлении информации в памяти, а вы уже ушли к философии и к тому же теперь противоречите себе.
                                                  Ответить
                                                  • Если "вы" - это 1024-- и cyperh - то, вобщем-то, можно смело сказать, что о типах вы практически ничего не знаете. У вас есть какая-то интуиция основаная на опыте знакомства, но она чаще дает неправельные результаты.

                                                    Кто сказал, что вопрос о конкретном представлении информации в памяти (конкретных процессоров / устройств памяти?)? Чего вы тогда решили говорить о типах? Типы тут-то при чем?

                                                    Где я противоречу себе?
                                                    Ответить
                                                • Мне пока хватит и этого с ru.wikipedia.org/wiki/Тип_данных:
                                                  Кроме этого, в программировании используется низкоуровневое определение типа — как заданных размерных и структурных характеристик ячейки памяти, в которую можно поместить некое значение, соответствующее этим характеристикам. Такое определение является частным случаем теоретико-множественного. На практике, с ним связан ряд важных свойств, требующих отдельного рассмотрения[⇨].

                                                  P.S. Нет, это не я редактировал Википедию ради цитаты для ГК.
                                                  Ответить
                                                  • Тип данных относится к типам как car к carpet.
                                                    Ответить
                                                    • Я ещё в http://govnokod.ru/16346#comment257909 говорил о том, что речь идёт о разных значениях слова "тип". Хорошо, что сейчас можно действительно поставить жирную точку.
                                                      Ответить
                                                      • Связано в ваших фантазиях. Если вы себе позволяете думать подменяя одни понятия другими без разбора, то, соответственно и результаты получаются случайными по большей частью. Это все равно, что с генератором рандомных чисел разговаривать :/

                                                        Речь изначально шла о типах в программировании, а не о типах данных. Для понимания разницы: массив, это пример типа данных, и, в том же Форте массивы естесственно существуют, никто в этом не сомневается. Но програмных типов там не существует (или, другими словами, там все одного типа). Статическая проверка типов относится к проверке програмных типов, а не к проверке типов данных (их вообще никто не проверяет / это не такая вещь, которую можно осмысленно проверить).
                                                        Ответить
                                                        • &gt;Речь изначально шла о типах в программировании, а не о типах данных.

                                                          Сивоконь -- король пиздаболов
                                                          Ответить
        • > Facebook раньше деплоился не в виде php-скрипта, а путём кросс-компиляции в c++ c последующей сборкой бинарника (сейчас не уверен).

          HHVM?
          Ответить
        • ВК тоже выкатил в опен сорс свой пых. он там урезанный до неприличия, к примеру нет ООП.
          Ответить
    • Мне как пользователю пахеру, на чём написал сайт.
      Но если блин я не могу на сраном ютубе добавить субитры, в которых записана моя скорость движения, из-за того, что при наведении мышки на кнопку "добавить" надо дождаться ответа от сервака, потом отпустить кнопку, потом подождать 5 минут (проц при этом занят на 100% хуй знает чем, потому что на экране никаких изменений) и плюнуть, то мне хочется взять того пидора, что писал этот интерфейс для ютуба, засунуть клавиатуру ему в задницу, которой он елозил по клавиатуре, вместо того, чтобы писать код руками, а потом провернуть, чтобы у него кишки наружу вылезли и весёлые фонтанчии крови брызнули на стены!
      Ответить
      • Какой багор)
        Ответить
      • По секрету скажу.... Диалап это прошлый век тс-с-с-с-с, только ни кому ни - ни.
        Ответить
        • По секрету скажу, что скорость работы сайтов давно уже определяется не столько пропускной способностью канала, сколько перегруженностью скриптами и тормознутостью браузера.

          Диалап не может занять проц на 100% (если, конечно, у пользователя не IE3-IE4).
          Ответить
          • Celeron 600...
            Ответить
          • +1, скрипты меня ваще пиздец нахуй убивают
            я не пойму, если число страниц ограничено, то их все можно сгенерировать программкой, написанной на любом языке и сразу все залить на сайт, например, разве не так? зачем все эти цээсэс, пэхэпэ?
            Ответить
            • Без цээсэс у страницы будет дефолтный дизайн. Ни цвета, ни жирноты. Вангую, что сейчас придут погромисты и скажут, что именно данные без дизайна и нужно отдавать, а пользователь сам всё раскрасит на свой вкус.

              А пэхэпэ как раз и генерирует страницы на стороне сервера (это ведь программка, написанная на любом языке). Только обычно почему-то пэхэпэ используют как сервер, чтобы он генерировал на лету. А ведь можно сделать так, чтобы пэхэпэ сохранял html-файл на сервере и сервер отдавал клиенту готовый файл, не вызывая пэхэпэ на каждый чих. Буст перфоманса гарантирую!
              Ответить
              • А, типа чтоб клиент мог прикрутить свой дизигн? Ну, это мало кому надо имхо. Генерировать страницы можно заранее, если у них не очень много вореций.
                Ответить
                • > Ну, это мало кому надо имхо.
                  С точки зрения пещерного человека, безусловно.
                  Реальность же такова, что создание api с сервисами чрезвычайно востребовано в нынешнее время.
                  Я хочу версию сайта на мобиле, кто-то хочет читалку под андроид, кому-то надо вставить в своё приложение только небольшой сервисок уведомлений ответов мне, кто-то хочет нотифайер стока. Монолитный html этого не обеспечит, а если и обеспечит, то заёбистым путём.

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

                  А css обеспечивает великолепное повторное использование кода - можно поменять стиль половины сайта, добавить ховеры, градиент или затухание практически парой строк. Классы стилей придают нагромождению настроек хорошо описанную структуру.

                  >Генерировать страницы можно заранее, если у них не очень много вореций.
                  Цельный, статический html и теги font, i, b вместо css - это 90-е веба.
                  Ответить
                  • А еще скрипты неплохо разгружают сервер и уменьшают* задержки - при полной регенерации html надо заново заселектить-ошаблонить-передать все баннеры-менюшки-друзяшек по бокам, а с API будет передан только контент.

                    Хороший пример - отправка коммента на ГК. Тарас, ты и на это жалуешься и хочешь, чтобы форма отправки открывалась в отдельной странице, а потом перезагружался весь тред?

                    * На компьютерах. Для калькуляторов не гарантируется.
                    Ответить
                    • > Тарас, ты и на это жалуешься и хочешь, чтобы форма отправки открывалась в отдельной странице, а потом перезагружался весь тред?
                      А вдруг он действительно на ГК скрипты отключил?
                      Ответить
                    • Не, формой я нормально пользуюсь, на этой же странице. Тут статикой не обойтись, да.
                      Ответить
                  • > А css обеспечивает великолепное повторное использование кода

                    Ими же, собственно, можно настроить стили под разные девайсы.

                    > статический html и теги font
                    Ещё небось и тормозня по сравнению с CSS - надо же в каждый тег лезть и лэйаут пересчитывать, да и парсинга html существенно больше.
                    Ответить
                  • > Цельный, статический html и теги font, i, b вместо css - это 90-е веба.
                    ГК застрял в девяностых? :)
                    [size] -> <span style="font-size:10px;">...</span>
                    [color] -> <span style="color:green">...</span>
                    [b] -> <b>...</b>
                    [i] -> <i>...</i>
                    Ведь <span style="font-size:10px;"> мало чем отличается от <font size=...>...
                    Ответить
                    • > ГК застрял в девяностых?
                      Не застрял, а удобно расположился.
                      Ответить
                    • >ГК застрял в девяностых? :)
                      Цельный, статический html - 90-е

                      Генерируемый на пхп-сервере html - 00-е.

                      [b] -> <b>...</b>
                      Это ж пользователь по сути вводит. jshighlight/govnokod.css
                      Ответить
                    • >> i, b вместо css - это 90-е веба.
                      > [i] -> <i>...</i>
                      <div
                        class="html-tag-inline text-comment-italic-15"
                        id="element-cda64659-87be-4adc-80be-1e4d2a2a211b"
                      >Универсальная универсальность</div>

                      Любители CSS, пощадите! Размер страницы увеличился вджвое, универсальность достигла Луны. Открыл страницу за городом, один из сотни стилей не подгрузился - на экране нечитаемая каша.
                      Ответить
                      • <div class="i b small-font" id="comment-247201">Экономия на закрывающих тегах.</div> 

                        Ответить
                        • Смех смехом, но я недавно наговнокодил фрагмент, в котором с помощью псевдоэлементов :before и :after сэкономил четыре дива:
                          http://codepen.io/anon/pen/opGcL
                          Ответить
                      • > cda64659-87be-4adc-80be-1e4d2a2a211b
                        Зато базы будут неплохо мерджиться между собой...
                        Ответить
                      • Несемантичное говно! В именах классов не должно быть никакой информации о способе отображения типа italic-15, должно быть только назначение элементов, потому что в стилях для других устройств (‘speech’, ‘braille’, ‘handheld’, ‘print’, ‘projection’, ‘tv’ etc.) италик-15 может оказаться ненужным.
                        Ответить
                        • > Несемантичное говно!
                          Можно и семантичное говно вместо i:
                          comment-text semi-sarcasm-4 troll-weight-500

                          Исход один: http://habrahabr.ru/company/abbyy/blog/173885/
                          Ответить
                          • Для энтерпрайзности ещё не хватает БЭМ: http://bem.info/

                            <div class="b-comment-text b-comment-text__semi-sarcasm_4 b-comment-text__troll-weight_500">
                            Ответить
                          • Можно ещё применить HTML5, потому что данные должны быть в данных:
                            <div class="comment-text" data-semi-sarcasm="5" data-troll-weight="500">


                            А в CSS будет примерно так:
                            .comment-text {
                               font-weight: attr(data-troll-weight);
                            }

                            Или вообще устанавливать стили через jQuery, если требуются вычисления.
                            Ответить
                            • Кстати, а куда в таком режиме девать единицу измерения (px, mm, %, и т.п.)?
                              Ответить
                              • Варианты:
                                1. Сразу писать в атрибуте data, но это несемантично.
                                2. Использовать expression(), но это работает только в древних IE, которые не поддерживали HTML5, поэтому будет костыль на костыле.
                                3. Использовать препроцессоры CSS типа LESS/SASS для вычислений (но я не уверен, что они умеют извлекать атрибуты из HTML).
                                4. Использовать Жуквери для кроссбраузерности и энтерпрайзности.

                                P.S. Или так:
                                .comment-text[data-troll-weight="500"] {
                                  font-weight: 500;
                                }
                                Ответить
                                • ...
                                  .comment-text[data-troll-weight="499"] { ... }
                                  .comment-text[data-troll-weight="500"] { ... }
                                  .comment-text[data-troll-weight="501"] { ... }
                                  ...
                                  Ответить
                  • > А css обеспечивает великолепное повторное использование кода - можно поменять стиль половины сайта, добавить ховеры, градиент или затухание практически парой строк.

                    Для сгенерированного хтмл это тоже так.
                    Ответить
              • > А ведь можно сделать так, чтобы пэхэпэ сохранял html-файл на сервере и сервер отдавал клиенту готовый файл, не вызывая пэхэпэ на каждый чих.
                Если какой-нибудь varnish настроить и из пыхи правильные хедеры отдавать - так и будет.
                Ответить
            • ХТМЛ плохой формат для задачи, для которой его форсят уже много лет. Он не модульный, не самодостаточный, избыточный с одной стороны, и не достаточно выразительный с другой. Но что более интересно, на сегодняшний день вообще нет никакой теории о том, как разрабатывать, и, главное, оценивать качество DDL. Т.е. можно сколько угодно махать в воздухе руками рассказывая о том, какое ХТМЛ говно, но посчитать это нельзя. И, что интересно, исследований в этом направлении не происходит. Все ломанулись про монадотрансформеры писать.

              Как следствие, вся разработка вокруг ХТМЛ имеет привкус и запах интуиции, народных сказок, суеверий и т.д.

              Т.е. отвечая на вопрос "а не лучше ли было сгенерировать ХТМЛ?" - вообще-то нет, скорее всего. Но как лучше - никто не знает. Вполне возможно, что формат вроде ПостСкрипта или Инфо был бы лучше. А может быть принципиально не возможно создать универсальный хороший формат. Даже не понятно, как, концептуально, нужно передавать информацию. Не говоря уже о том, что в большинстве случаев имеет место быть абсолютное нежелание интеграции между форматами. Всякие коммерческие войны, которые делают развитие и исследование еще более сложным.

              Вобщем, хорошего в этой жизни, мы практически наверняка не увидим. Наш единственный шанс: создать поколение роботов с искусственным интеллектом качественно лучшим, чем человеческий. А потом лазерами сжечь остки человечества, для верности.
              Ответить
              • wvxvw плохого не посоветует!
                Ответить
                • >ХТМЛ плохой формат для задачи, для которой его форсят уже много лет. Он не модульный, не самодостаточный, избыточный с одной стороны, и не достаточно выразительный с другой.

                  Тут он прав.
                  Ответить
                • > Наш единственный шанс: создать поколение роботов с искусственным интеллектом качественно лучшим, чем человеческий.
                  > А потом лазерами сжечь остки человечества, для верности.

                  Тут он тоже прав.

                  wvxvw вообще был прав во всём.
                  Ответить
              • Постскрипт был бы лучше, потому что в нём программирование из коробки и не надо навешивать интерпретаторы сторонних языков (ecmascript, vbscript). Кроме того, он лучше с точки зрения типографики, да и графика в нём из коробки.
                Ответить
              • HTML используется не для того, для чего он был изначально предназначен. Отверткой пытаются забить шуруп и она плохо справляется с этой задачей.

                Кстати тоже самое можно сказать и про CSS и про HTTP и про JS и про Web в целом.
                Ответить
        • Видно, Вы из города с модемом от большой анальной тройки далеко не уезжаете.
          Ответить
          • Я сейчас именно за городом и именно с 3говно интернетом от большой анальной тройки. Как вы догадались, товарищ телепат?!
            Ответить
            • Я скорее про себя писал... Тут такая скорость и такие задержки, что можно можно отлаживать военный софт, использующий сеть после взрыва бомбы.
              Ответить
      • Иди уже работать, заработал и купи нормальный комп

        Хватит на селероне 600м сидеть который тебе предки в 2000м году купили
        Ответить
    • Нынче приблуда-люда всё на Си Решётке писать! И сайт, и под Unity в Гей(М)Деве.
      Ответить
      • И прилагухи под винду и под ноникевые телефоны) Сишарп становица универсальным языком (тм)! А!!
        Ответить
    • Бедняга жил в том мрачном мире где небыло ничего кроме PHP и C++.
      -----
      Особенно няшно использовать C++ как шаблонизатор. "Эй верстун, поправь верстку" / "я поправил уже, компилируется"
      Ответить
      • Зато работает быстрее чуть-чуть, ибо один хуй в базу и сеть упрётся.
        Ответить
      • > C++ как шаблонизатор
        http://govnokod.ru/11549
        Ответить
    • по этому ты сейчас за PHP?
      Ответить
    • > и не могу его залить на какой-нибудь бесплатный хостин,

      Это важно. Однажды меня пригласили в писать серьезное приложение, но я спросил их: "можно ли будет залить на какой-нибудь бесплатный хостин" и услышав отрицательный ответ, решил с ними не связываться


      Да-да, ребята! Ваше приложение никогда не выстрелит, если его нельзя залить на какой-нибудь бесплатный хостин
      Ответить

    Добавить комментарий