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

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    // Playground - noun: a place where people can play
    
    import Cocoa
    
    // Изначальный массив и ссылка на него
    var originalArray: Int[] = [1, 2, 3];   // [1, 2, 3]
    var extraArray = originalArray          // [1, 2, 3]
    
    // Поменяем во втором массиве элемент
    extraArray[0] = 666
    
    // Оппа изменился и в первом
    extraArray                              // [666, 2, 3]
    originalArray                           // [666, 2, 3] O_o
    
    // Не делись!
    extraArray.unshare()
    
    // Теперь они живут своей жизнью
    extraArray[0] = 333
    
    extraArray                              // [333, 2, 3] okay
    originalArray                           // [666, 2, 3]
    
    // А вот тут будет наоборот
    var anotherArray = originalArray        // [666, 2, 3]
    
    // auto unshare
    anotherArray.append(-1)
    anotherArray.removeLast()
    
    anotherArray[0] = 777
    
    anotherArray                            // [777, 2, 3]
    originalArray                           // [666, 2, 3]
    
    // Словари вообще не так себя ведут, всегда копирование
    
    var originalDictionary = [ 1: "hello", 2: "world"]
    var extraDictionary = originalDictionary
    extraDictionary[1] = "no way"
    
    originalDictionary      // [ 1: "hello", 2: "world"]
    extraDictionary         // [ 1: "no way", 2: "world"]

    Я восхвалял Свифт, а же его и обосру.
    В Свифте есть массивы и словари. Так вот словари при присваивании или передаче как аргумента копируются. Окей. Теперь массивы. Они, оказывается, не копируются, а разделяют значения между собой! Т. е. передал массив в ф-цию, она там что-то испортила, массив испортился везде, где засветился.
    Чтобы эту фигню остановить, нужно вызывать спец. функцию unshare
    Но это еще не все. При некоторых операциях с массивами (потенциально меняющих их длину) unshare делается автоматически!

    Предвижу классическую ошибку свифтокодеров: ожидал, что массив поменяется, а он не поменялся снаружи; или передал массив, поюзал, а он снаружи неожиданно испортился. Плюс путаница, что базовые типы ведут себя по-разному.
    Оправдание Apple: мы хотели перформанс С-массивов в Свифте, поэтому сделали эту хрень.

    Запостил: tirinox, 04 Июня 2014

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

    • > мы хотели перформанс С-массивов, поэтому сделали эту хрень.
      В прошлый раз так сказал Страуструп. Мы знаем что из этого получилось.
      Ответить
      • > Мы знаем что из этого получилось.
        С++ стал успешен.
        Ответить
        • Успешен как 11летная шлюха с вашего района
          Ответить
          • Почему у тебя так горит от упоминания о крестах? Поди какая-нибудь преподша-крестоблядь завалила на лабах/экзамене?
            Ответить
    • > import Cocoa
      Гы, ввоз какавы облагается налогом

      а import antigravity имеется?
      Ответить
      • не, антигравитацию только в понедельник завезут
        Ответить
        • думаю, все, кто пробовал её импортировать, больше не могут дотянуться до клавиатуры
          Ответить
    • > Я восхвалял Свифт, а же его и обосру.

      Я восхвалял свифт, а потом до меня дошло, что сначала надо его потрогать

      ffixed
      Ответить
      • Дык трогаю уже два дня. В целом, по-прежнему, доволен. Наматываю на ус сомнительные моменты, как этот.
        Ответить
        • Два дня? Ну все, теперь познал до костей.
          Ответить
          • Ты про WWDC видимо не в курсе.
            Ответить
            • Нет, я же не макоеб. А что, это какая-то хуйня, где сразу рассказывали про все говно в языке?
              Ответить
              • > А что, это какая-то хуйня, где сразу рассказывали про все говно в языке?
                Мы рады представить вам новый язык - swift. Вы, наверное, думаете, что мы будем рассказывать вам о замечательных фишках и удобстве нового языка? А вот и не угадали! Мы расскажем только о говне и косяках!
                Ответить
                • А что, годная стратегия. Чтобы их творение выглядело лучше на фоне других, создателям языка приходится исправлять в новых версиях самые жопошные баги, а не клепать супермодные фичи.
                  Ответить
              • Не стоит возводить свое невежество в достоинства.
                Ответить
                • Ну ты еще скажи что не знать с кем манька после работы обжимается - это невежество, и не надо переводить его в достоинства.
                  Ответить
    • >При некоторых операциях с массивами (потенциально меняющих их длину) unshare делается автоматически!
      Ну это кстати логично, с точки зрения low-level кодера. Может того кто не знает как выделяется память это и удивит.
      А проблема в другом - вроде делали выскоуровевый язык, а опять абсракция потекла из-за банального байтоебства. Никуда от него не деться.
      Вроде хотели упростить жизнь сделав операции выделения нового куска памяти и копирования неявными, а только всех запутали.
      Ответить
      • Байтолюбство тут не при чём, в крестах с векторами такой херни нет.
        Не понимаю, куда смотрел Sean Parent с его любимой value-семантикой.

        Опять же, можно было копирование сделать явным (как в жабе), тогда бы ни у кого вопросов не возникало.
        Ответить
        • Ну .copy() есть, конечно.
          Ответить
          • Ну вот и надо было его сделать обязательно явным, объекты передавать только по ссылке, а модификаторы все сделать деструктивными.
            Ответить
            • >надо было его сделать обязательно явным, объекты передавать только по ссылке
              Фуууу. Это ж надо руками копировать, пусть тупые байтоебы этим занимаются. Хотим чтоб язык сам всё делал и при этом имел расшаренные массивы.
              Ответить
              • Ой не... тогда возникают другие непонятки, такие, как в Яве / ж.скрипте со строками: можно случайно создать два массива с одинаковым содержанием - а как потом их считать: копиями друг друга, или независимыми объектами? Может даже быть еще более интересный вариант, типа как в Си и Лиспе - если намекнуть компилятору на то, что содержание массива не меняется, то он посчитает массивы копиями, а если не намекнуть - то нет. Тогда можно очень сильно пролететь, если кто-то пообещал компилятору, и обещание не сдержал.
                Ответить
            • Складывается впечатление, что товарищи идут неверной дорогой: ведь ограничение возможностей разработчика (т.е упрощение языка) работает только на первых парах, когда надо с наскоку познать азы. Конечно в сопутствии получаются приятные плюшки в виде низкого порога вхождения, (сомнительная) читаемость. НО всё таки лучше perl/ruby/c++ way, когда язык перед тобой раскрывается практически всё время пользования. Тогда можно более лаконично выражать мысли. А читаемость, чистый код и прочее должно приходить не с языком, а с опытом. Я видел отличный код на perl, который был полон различных ухищрений, недоступных в других языках, но при этом всё было понятно и читать код было приятно.
              Ответить
              • Реквестирую код на Перле.
                Ответить
              • Лисп очень простой язык. Гораздо проще Свифта или ПХП / ж.скрипта. Но как-то на ограничения особенных жалоб нет.
                Ответить
                • А как в лиспе с выразительностью-то? Много кода надо для имплементации нерегулярных вещей?
                  Ответить
                  • В лиспах с макросами можно без особых усилий сделать нерегулярные вещи регулярными...
                    Ответить
                    • Да, видимо прав был товарищ: http://lorquotes.ru/quotes-autor.php?id=1086
                      Ответить
                  • Что такое нерегулярные вещи? Объем кода - это функция от объема задачи. На очень маленьких задачах может иногда даже Яве проиграть, на больших задачах может быть короче Хаскеля или J.
                    Ответить
                    • Нерегулярные вещи == имплементация редко встречающихся задач (речь не идёт о задачах, которые не входят в специфику языка (как например программирование web на asm).

                      Лично у меня есть опыт только с лиспоподобным CLIPS. По тому опыту я бы на назвал лиспы лаконичными, но я не знаком с теми самыми макросами с поста выше.
                      Ответить
                      • Макрос в лишпе - это функция, выполняемая в компайл-тайме и генерирующая код (в виде s-выражений). Там, где в типичных языках нужна фича компилятора, в лиспе достаточно написать макрос.
                        Например, макросами можно автоматически вставлять try-finally вокруг блока кода для освобождения ресурсов, генерировать структуры данных/функции по небольшому набору данных (актуально для всяческих ORM), генерировать парсеры, компилировать шаблоны веб-страниц в компайл-тайме, написать универсальный умный ассёрт для юнит-тестов, етц.

                        За это приходится платить раздутым рантаймом и либо мириться с написанием программы в виде АСТ, либо каждый раз изучать семантику каждого конкретного макроса.
                        Ответить
                        • Мириться с квазицитированием и прочей ахинеей, и как следствие с адом из стремных апострофов и запятых (последние особо нелепо смотрятся).
                          Ответить
                          • > Мириться с квазицитированием и прочей ахинеей, и как следствие с адом из стремных апострофов и запятых
                            Скажи это php'шникам с их адовым квазицитированием из стремных <?php и ?>
                            Ответить
                        • Мирится с написанием програм в виде АСТ? - Я бы сказал наоборот, приходится мирится с мудаками, которые хотят писать програмы клинописью. Ради которых система образования и особенно изучение языка (не обязательно программирования) сводится к палеонтологии.

                          К комментарию ниже: запятые писать не обязательно. Запятая - это ридер-макро, которое вызывает функцию quote. С типографской точки зрения - да, нелепо, но если мы посмотрим на Фортраноподобных, то там кромешный пиздец по сравнению, что делает такие жалобы бессмысленными.
                          Ответить
                          • При всей моей лояльности к лиспу, мне всё же тяжело читать лиспоисходники из-за однотипности конструкций.

                            Когда разные конструкции выглядят по-разному, они распознаются быстрее.

                            Всякую математику мне гораздо удобней в инфиксной записи распознавать.

                            Тут каждый для себя решает сам.
                            Ответить
                            • Это т.называемый "эффект Матвея", того который Евангелие написал. Там есть такие строчки, не дословно: тем, у кого все есть, достанется еще больше, у тех, у кого ничего нет, и последнее отнимется. Другими словами, Zipf law, Power law, network effect и т.д. Смысл в том, что не зависимо от качества, если достаточное количество людей в обществе научить, что способ Х правильный, то после определенного момента происходит массовый переход к использованию способа Х. Так происходит потому, что что привычно, то правильно, и что правильно, то привычно. Наступает монополия и застой. Интересным моментом является еще и тот факт, что такие моменты обычно сопровождаются овациями и повсеместный ощущением неминуемого семимильного шага в светлое будущее, как правило вызваные наблюдением, что лидирующая технология собирает все больше и больше адептов.

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

                              Вот, недавний пример: корпорации типа Эппла, распространяющие заплесневевшее старье, под лозунгом продвинутых технологий.

                              Современная математическая запись - точно такая же ничем не мотивированая монополия, которой учат, не давая выбора. Ну а потом получаем - идиотскую бессвязную систему записи, которую, тем не менее все так замечательно выучили, что что-то более вменяемое не может развиться, не получая достаточного внимания.
                              Ответить
                              • Я не особо интересуюсь алтернативными математическими нотациями (мне обычно интереснее сами математические теории, в частности, "альтернативные"), но ссылки работы по "принципиально новым, универсальным и выразительным нотациям" приветствуются.
                                Ответить
                                • К сожалению, ничего стандартизированого нет. Есть только верстальшики, которые за верстку математических формул скорее либо не возьмутся, либо возьмут в десять раз дороже. И ни один корректор не возьмется вычитывать, потому что язык УГ. Но ситуация обоюдо острая. Математики не разбираются в типографии и потребностях человека, как читающей "машины", а те, кто разбираются, не хотят даже минимально разбираться в математикие (по причине уебищного языка, который в свою очередь уебищный, потому что те, кто его придумал не разбирались в языках, а те кто разбирались...)
                                  Ответить
                              • > не дословно: тем, у кого все есть, достанется еще больше, у тех, у кого ничего нет, и последнее отнимется.
                                Это про банковскую систему, а не про Евангелие.
                                Ответить
                                • For whoever has, to him more shall be given, and he will have an abundance; but whoever does not have, even what he has shall be taken away from him.Mat, 13:12
                                  Опять же желающие наверное смогут найти перевод на интересующих их язык. Я цитирую на том, на котором учил / знаю.
                                  Ответить
                                  • А я то думал wvxvw еврей. Или его на иврит не перевели?
                                    Ответить
                                    • Далеко не все, кто живут в Израиле - евреи, может даже не большинство, мне влом статистику искать. Переводили ли Евангелие на иврит? - да, на современный, вобщем как и Бхагаватгиту или Коран. Исходники первых евангелий традиционно считаются написаными на арамейском или иврите, но их так и не нашли вроде. Было бы очень странным если бы они были изначально написаны на иврите. К тому времени на этом языке никто не разговаривал и не писал. Вся существующая литература того времени - на арамейском. С созданием Израиля из политических соображений иврит решили восстановить (но только лексику, а письменность взяли арамейскую). Ну и как обычно в таких ситуациях, когда решения принимаются на основании соображений не имеющих отношения к предмету, получили идиотский продукт.
                                      Поэтому читать что-либо на современном иврите - это только для патриотов, которым нечем время занять. В повседневной жизни этот язык не нужен, и, я надеюсь, скоро исчезнет.

                                      Я агностик, если так интересует. Я учился в католической школе одно время, с обязательными занятиями по Катехизису, потом в протестанской миссианской воскресной школе, поэтому Библию читал чаще на английском.
                                      Ответить
                                      • Языки оригиналов - арамейский и греческий, в основном. Это так, к слову.
                                        Ответить
                            • >При всей моей лояльности к лиспу, мне всё же тяжело читать лиспоисходники из-за однотипности конструкций.
                              Плюс. Лисп хорош своей простотой, но читать тяжело.
                              Ответить
                              • cleaned
                                Ответить
                                • > Разве это не изживший себя древний язык?

                                  Лишп - это не конкретный язык, это семейство языков, обладающих определёнными свойствами буйством скобок например

                                  Лишпы перерождаются из поколения в поколение, они, похоже, никогда не помрут
                                  http://xkcd.com/297/
                                  http://clojure.org/
                                  Ответить
                              • Был такой известный разработчик шрифтов Алберт Капр. Практически у любого советского студента занимавшегося типографией его монография была настольной книгой. Я могу похвастаться тем, что мой преподаватель у него учился. Так вот, подступили к нему однажды схоласты и фарисеи, и спрашивают, а как же отличить хорошо читаемый шрифт от плохо читаемого. На что Капр им и отвечает: хорошо читается тот шрифт, который читается часто.

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

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

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

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

                                        Я всего лишь выразил своё мнение. О принятии каких решений идёт речь? Где именно написано, что нужно руководствоваться моим мнением?

                                        > на личном опыте, который, прям скажем, не отражает даже 0.000000001%?

                                        У меня университет был профильный, математический дисциплин преподавали десятки, всех мастей, читать (и формул писать) много приходилось.
                                        Диплом писал в ИПФ РАН, там формулы на полстраницы А4 - это норма.
                                        Имхо при изучении вещей вроде групп вращений экосаэдра или топологии нотация является наименьшей из сложностей.

                                        Про то, как бедным наборщикам тяжело понять формулы я уже говорил - это не проблема математиков. Главное, чтобы самим математикам было удобно.
                                        Кнут когда-то уже наслушался нытья и сделал нормальную систему вёрстки для математиков, которой они сами могут пользоваться.

                                        > в одном месте ошибся заменив букву цифрой

                                        В других системах нотации, разумеется, наборщик не смог бы перепутать букву с цифрой?

                                        Ну и продолжая в вашем стиле:

                                        Математическая нотация говно по субъективному мнению некого Олега Сивоконя, нашедшего опечатку в одной из сотен книг по статистике? Этим определённо следует "руководствоваться в принятии решений".
                                        Ответить
                                        • Конечно смог бы перепутать, но есть такие вещи как избыточность и устойчивость против ошибок. Мы все опечатываемся, или просто не знаем как правильно написать, и тем не менее ошибок в естесственном языке нужно сделать очень много для того, чтобы текст стал совсем непонятным.

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

                                          Греки, например, писали все формулы словами (типа как в Паскале или Бейсике, даже хуже).
                                          Ответить
                                          • > Естесственно, что мое мнение по этому вопросу имеет вес, а ваше нет.

                                            Ух, я будто в средневековье попал на мгновенье - схоластика и вес авторитетов.
                                            Ваше мнение в этом вопросе имеет ровно такой же ничтожный вес, как и моё.

                                            > Греки, например, писали все формулы словами (типа как в Паскале или Бейсике, даже хуже).

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

                                              Я не говорил, что такая запись началась с Греции - бессмысленно с этим спорить. Терш - потому что вы плохо разбираетесь в языках. Если бы вы были профессионалом в чтении формул на естесственном языке, а "универсальный" математический язык вам впервые показали, ну, скажем лет в 17, вы бы скорее всего даже не попытались его понять, ну или по крайней мере не на столько, чтобы заменить им такую привычную и удобную систему записи.
                                              Ответить
                                      • > даже владея языком в очень хорошей степени, при наличии совершенно незначительной ошибки, можно не понять смысла
                                        А это как-нибудь решается/может быть решено? Скажем, обычном языке ашипги часта лихко лофятца. Можно, конечно, записывать формулы словами или подробно расписывать каждое равенство, но это не совсем верный путь.
                                        Ответить
                                        • > Скажем, обычном языке ашипги часта лихко лофятца

                                          казнить нельзя помиловать
                                          Ответить
                                          • И даже не смотря на то, что таких предложений очень-очень мало, тем не менее из этого предложения можно:
                                            1. Легко установить, что в нем присутствует неоднозначность.
                                            2. Легко обнаружить все возможные варианты интерпретации.
                                            Легко - значит, что у любого носителя языка это предложение не вызовет практических затруднений. Есть другие, худшие варианты, известные как garden path: это когда одно и то же слово повторяется, но используется в разных качествах, например "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo". И тем не менее, статистически, таких предложений исчезающе мало. Ни один человек, только если не ради курьеза всерьез не создаст такое предложение.

                                            А теперь, внимание, попробуйте ради курьеза создать формулу, которую тяжело понять. Что так никак не получается? :)
                                            Ответить
                                            • > попробуйте ради курьеза создать формулу, которую тяжело понять
                                              e^(i*x) = cos(x) + i*sin(x)
                                              Чтобы осознать и понять эту формулу, нужны долгие годы обучения математике. Но проблема тут, разумеется, в уёбищной математической нотации. Если эту формулу описать словами, она будет очевидна даже ребёнку.
                                              Ответить
                                              • >Чтобы осознать и понять эту формулу, нужны долгие годы обучения математике.
                                                Вроде Гаусс говорил, если студенту неочевидна эта формула - из него не выйдет первоклассного математика.

                                                >Если эту формулу описать словами, она будет очевидна даже ребёнку.
                                                Это как?
                                                Ответить
                                                • > студенту

                                                  ну до студента ещё дорасти надо, школу там окончить, алгебру осилить, научиться абстрагироваться от чисел, узнать про функции, про e, про i, про косинусы с синусами и экспонентами.

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

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

                                                  Это был сарказм.

                                                  По моему нерепрезентативному и неавторитетному опыту формирование представления о математических сущностях - гораздо более ресурсоёмкая задача, нежели парсинг мат.формул.

                                                  Нерепрезентативный и неавторитетный опыт в оптимизации подстказывает мне, что ресурсы имеет смысл тратить только на оптимизацию наиболее затратных операций.

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

                                                  Т.е. с моей быдлоточки быдлозрения "Квант" и Я. Перельман необходимы, Сивоконь - нет.
                                                  Ответить
                                              • А пациент-то идет на поправку! Не прошло и минуты, а формулу накатал. Теперь рассмотрим сходства и различия:
                                                * казнить нельзя помиловать (1)
                                                e^(i*x) = cos(x) + i*sin(x) (2)

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

                                                Выражение (2) изобилует идиотизмом. Мы не знаем значения всех его компонентов и не можем вычленить правила их использования, и вот почему:
                                                - в выражении отсутствует последовательность в использовании типографических элементов - инфиксных операторов. Они то обрамляются пробелами, то нет. Читатель не сможет понять несет ли этот факт семантическую нагрузку, или это неопрятность автора.
                                                - последовательность выполнения действий не понятна. Читатель не сможет понять, нужно ли сначала применить операцию *, операцию (, или операцию cos.
                                                - зная о некоторых подводных камнях, читатель может предположить, что интерпретация cos(x) это на самом деле умножение переменной cos на переменную x.
                                                - ни место ни роль в предложении никак не определяют семантическую роль его компонентов. e - константная функция, для которой не был использован синтаксис вызова функции, а cos - это унарная динамическая функция - но кто ж об этом знает?
                                                На самом деле этих пунктов можно дописать еще много, но место скоро закончится.
                                                Ответить
                                                • > казнить нельзя помиловать

                                                  Выражение изобилует идиотизмом.

                                                  Мы ничего не знаем о символах, из которых оно состоит. Они то обрамляются пробелами, то нет. Читатель не сможет понять несет ли этот факт семантическую нагрузку, или это неопрятность автора.

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

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

                                                  На самом деле этих пунктов можно дописать еще много, но место скоро закончится.
                                                  Ответить
                                                  • >Есть другие, худшие варианты, известные как garden path: это когда одно и то же слово повторяется, но используется в разных качествах, например "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo".
                                                    Да даже и без них. Известный пример с более чем 1000 смыслов:
                                                    "Письма знакомой из Киева не заменят фотографии его любимой и милой дочери Марии."
                                                    Ответить
                                                    • Никто не отрицал, что сложные случаи есть, более того, я намерено продемонстрировал, что такие случаи есть, и так же заметил, что такие случаи пользователь языка может создать либо по ошибке, либо ради курьеза. В то время как формулы все идиотские. Вы же понимаете, что даже найдя тысячу таких выражений, вы ничего не докажете, т.как нужно сделать репрезентативную выборку и о ней судить. (Нет никакой проблемы сконструировать миллиарды предложений с двузначностями, но это не доказывает, что такими предложениями часто пользуются - более того, существует традиция и специальные правила против использования таких предложений, есть даже целый факультет человеческих знаний называющийся редакторское дело, функция которого предотвращать появление таких предложений в печати.)
                                                      Есть ли что-то подобное для математических формул? - Нет и близко, никто даже не пытается внести хоть каплю здравого смысла в то, что происходит в типографии в математике.
                                                      Ответить
                                                      • > Есть ли что-то подобное для математических формул? - Нет и близко

                                                        Есть. Научные руководители, соавторы статей, рецензенты. Вычитывают формулы, причёсывают, подстраивают под принятые соглашения. Ни один нормальный научник не даст обозначить целое число буквой Дзета, рациональную дробь - буквой n, или переменную многочлена - плюсом.

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

                                                            И что, шахматные диаграммы тоже какие-то дебилы умудрились сделать более неоднозначными чем естественный язык? Может проблема все-таки не в формулах, а в недостатке специалистов по математике\шахматным диаграммам в издательстве?
                                                            Ответить
                                                            • > И что, шахматные диаграммы тоже какие-то дебилы умудрились сделать более неоднозначными чем естественный язык?

                                                              Очевидно же, что шахматисты и математики - беспросветно унылые и тупые люди, и лишь Типографы достаточно умны, образованны и авторитетны, чтобы сделать всё правильно (т.е. так, чтобы им было удобнее печатать).
                                                              Ответить
                                                            • Нет, проблема шахматных диаграм в том, что их описание, так же, как и мат. формул требует:
                                                              - экзотической верстки (нельзя просто набрать текст подряд, нужно набирать или по колонкам, или по строкам, ссылки на фигуры находятся в исходнике не там, где они находятся на странице).
                                                              - нет возможности минимально ошибиться и итеративно исправлять. Очень просто совершить новую ошибку исправляя старую. По доисторическим совковым гостам печатная страница вычитывалась максимум три раза (т.как новые ошибки очень редко появляются врезультате правки). Шахматы можно править десятки раз.
                                                              - шахматы в принципе не возможно вычитать с исходника. Исходник шахматной диаграмы абсолютно не похож на саму диаграму, и представить где стоят фигуры опираясь нa это нет никакой возможности. Есть профи шахматисты, которые могут держать в памяти всю доску, и им не обязательно видеть диаграму / реальную доску, но пересечений между профи шахматистами и верстальщиками на диаграме Вен не существует.
                                                              Ответить
                                                              • что мешает шахматную диаграмму описать наглядно?
                                                                http://goo.gl/H2Ks6
                                                                Ответить
                                                                • Типографам меньше работы будет, меньше зарплата будет. И вообще верстать начнёт каждый школьник, это же провал.
                                                                  Ответить
                                                                • У вестки есть своя специфика. Этот текст заверстаный в тот же Кварк Х-пресс потеряет всю свою наглядность, и расползется кто куда. Кроме того, есть определенные требования к тому, что может технически быть на странице подготовленной в печать. Есть куча дополнительных печатных элементов которые могут встретистся в тексте вместе с таблицей. Для корректуры необходим специальный набор разных линий и стрелочек, чтобы обозначать правки, и т.д.
                                                                  Опять же, из этого рисунка корректору не понятно, стоит ли фигура на черном или на белом поле. Очень лего ошибиться на одну клетку в любую сторону. Вобщем, все как уже и было сказано. Латексовы шахматные диаграмы не сильно отличаются от того, что есть по ссылке. И тем не менее, это ад.
                                                                  Ответить
                                                              • Нахрена вычитывать исходник? Разве PDF'ка для предпросмотра так долго рендерится?
                                                                Ответить
                                                                • Шахматные диаграмы даются не сами по себе. Они, как правило сопровождаются текстом, который описывает что должно происходить на диаграме. Этот текст надо понять, понять, что же должно быть на диаграме, и если не так, то исправить. Время генерации ПДФа не важно, но вычитывать нужно в каком бы формате оно ни было.

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

                                                                    Наверное потому что оно никого кроме корректоров не волнует.
                                                                    Ответить
                                                                  • > На диаграму, которая занимает, в зависимости от извращенного вкуса наборщика от примерно 30 до 80 символов корректор может потратить полчаса а то и час.
                                                                    Ну дык, смотря какая задачка попадется... Некоторые и за полчаса не решишь :)
                                                                    Ответить
                                                                    • Так не нужно решать, всего-то нужно понять, вообще та ли эта диаграма, действительно ли конь угрожает пешке противника и т.д. Точно таким же образом (только гораздо быстрее) вычитываются кулинарные рецепты. Никто не будет готовить по рецепту, чтобы проверить, что рецепт правильный, но если там десять чайных ложек соли на стакан молока, в рецепте для мороженного, то корректор должен это обнаружить.
                                                                      Ответить
                                                  • > это на самом деле имя собственное - существо с фамилией "казнить" и именем "нельзя".
                                                    - Фамилия Ваша?
                                                    - Горидзе
                                                    - А зовут Вас как?
                                                    - Авас.
                                                    Ответить
                                                  • Еще как знаем! Мы же не сомневаемся в том, что мы знаем значения отельных элементов в формуле. Мы знаем, что такое синус, косинус, или константа эулера. Не надо нас обманывать.
                                                    Ответить
                                                    • более того, существует традиция и специальные правила против использования таких предложений, есть даже целый факультет человеческих знаний называющийся редакторское дело, функция которого предотвращать появление таких предложений в печати.)
                                                      Есть ли что-то подобное для математических формул? - Нет и близко, потому что они не настолько неоднозначные и костыльные как естественные языки.

                                                      fixed
                                                      Ответить
                                                      • Да, математические формулы гораздо более неоднозначные, чем даже естесственные языки. И это парадоксально, т.как естесственные языки и по структуре и по содержанию относятся к классу языков более сложному чем формальные контекстно-независимые, а в большинстве случаев вообще даже регулярные языки необходимые для описания мат. формул.
                                                        Другми словами: это каким же дибилом нужно быть, чтобы так испортить язык, не смотря на то, что перед глазами всегда был нормальный пример.
                                                        Ответить
    • Почему в Аде можно передавать массив без дополнительных модификаторов и ничего не копируется, и нет порчи массива через обращение через другой массив?
      Ответить
      • > Почему в Аде можно
        Потому что Аду проектировала не низкоуровневая сишкоблядь.
        Ответить
        • Я не понимаю, ну какого хуя зарезали идею передавать параметры по умолчанию как const&? Я понимаю, что они там тупые, но не настолько же, чтобы не додуматься до такой простой идеи.
          Ответить
      • >и ничего не копируется и нет порчи массива
        Как это так выходит? И ничего не копируется и никто не наводит порчу?
        http://ideone.com/SPaHHf
        Ответить
        • > for i in 1..2 loop

          чё это за хуйня? к тому же в параноидальном режиме она тормозит
          надо for i in a'Range loop
          разница в том, что такая запись делает ненужной проверку индекса

          если просто скопировать один массив в другой, то конечно создаётся копия
          а если передать массив в функцию, то ничё не копируется
          Ответить

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