Интересует Ваше мнение о статье

Тема в разделе "WASM.HEAP", создана пользователем mathio, 7 окт 2007.

  1. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Есть вот такое творение http://bugtraq.ru/library/programming/badcode.html
    в котором автор сравнивает абстрактный процесс программирования с игрой в шахматы, т.е. по-сути с проблемой перебора возможных вариантов поведения на неких граничных(и не только) входных данных.
    Короче говоря, кто привил себе правильный рефлекс определенно-целенаправленного "брутфорса" во время созидания/реализации алгоритма, тот и в дамках.
    Ваше мнение ? :derisive:

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

    dbrain New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    197
    Алгоритмизация - это творческий процесс, а не перебор
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Просмотрел статью. Не понравилось опускание некоторых вещей, которые действительно иногда совсем мешают, но иногда бывают очень полезны, в частности ООП и венгерской нотации.

    Согласен с некоторыми вещами так же.. например, с ненужностью стиля if(0==x) и с громоздкостью некоторых реализаций типа реестра в Windows.

    Насчет технологии "шахмат"...
    Мое мнение - программирование не сводится к брутфорсу..
     
  4. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Шахматы сводятся к перебору только в машинном варианте, да и то не в передовых програмах. Для человека же шахматы - тактическая игра, требующая воображения и абстрактного мышления, хотя и в некоторм смысле переборов тактических приёмов, и когда ни один известный не подходит, прямым перебором. В какой-то мере можно наверное и в программировании говорить о переборе алгоритмов для данной задачи.
    Возможно метод полного перебора и применяется скажем в системах автоматизированного программирования (не знаю, как такое точно называется), но опять-таки перебор характерен для систем, в которых не заложено представление об особеностях решаемой задачи, или таковой не существует. (как в случае с шахматами)
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    про if(0==x) бред
     
  6. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    When in doubt use brute force (c) Ken Thompson
    ;)
    хотя, не могу не признать, что использование этой цитаты применительно к данной статье притянуто за уши, поскольку томпсон имел ввиду несколько иное, но, тем не менее, в данном контексте тоже в тему.

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

    ps. читаю и думаю: "кажется ещё один эрик раймонд родился"... а оказывается всё тривиально -- в конце ссылка на TAOUP. просто статью писал адепт-юниксоид, который твёрдым шагом идёт по Пути Юникс. отсюда и довольно-таки пренебрежительное отношение к ооп, и полное неприятие венгерской нотации, и восторги по поводу ограничения на размер функции в 24 строки, и неодолимое желание организовать обмен файлами между хостами в 10 строк скрипта, вместо 80k строк c++.
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    r90,dbrain
    +1
    нипанравелась стотья... особенно недовольство венгерской нотации. конешно перегибать палку не стОит, но и совсем без нотации - херово, всетаки удобно, когда видно хде строка, хде указатель, какая строка в юникоде, какая нет. без просмотра места её объявления
     
  8. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Нет автор имел в виду преоебор не при составлении алгоритма, а при поиске его НАИЛУЧШЕГО варианта(при стремлении кол/ва ошибок к 0), а это действительно перебор. В доказательство приведу цитатку
    И кстати кроме перебора сложно чтонибуть придумать, не считая индивидуальных качеств, опыт, геометрическое зрение, мат мышление, IQ :)
    Т.е. автор не аспаривает творчествость программирования, нормальная статья.
     
  9. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    я бы обозвал эту статью как "что делать прогеру, если писать код сразу без багов не получается".

    если не упускать такое название статьи из поля зрения, то все подобные измышления типа:
    начинают по другому восприниматься:)

    в общем, процентов на 70 согласен с автором.
     
  10. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    значит с юниксом лучше даже и не связывайся ;)
    хоть в *nix далеко не все читали раймонда, и есть деятели, которые не то что функции пишут длинною в 100-200 строк, но ещё и венгерскую нотацию используют (бывает и такое!). есть деятели которые ооп ни к месту используют: я уже три года плююсь на дизайн менагера пакетов gentoo, в работу которого осознанно вмешаться может лишь девелопер этого менагера, остальные нервно покуривают в сторонке. бывают всякие кодеры, но тем не менее есть тенденции к соблюдению перечисленных правил.
     
  11. matich

    matich New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    72
    студенты часто пишут
    Код (Text):
    1. if (x=0){
    2. ...
    3. }
    думаю не стоит пояснять чем это грозит =)
     
  12. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    пару раз найдут такую ошибку, будут внемательнее :)
     
  13. matich

    matich New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    72
    Видел бы ты как они её ищут... Цирк.
    Полпрограммы(если не больше) перепишут, понаделают таких конструкций...

    При кодинге на паскале.
    Код (Text):
    1. for i := 1 to 20 do[b];[/b]
    по теме:
    В эти строки можно и ОС поместить. =)
    Напомнило это:
    http://g60.livejournal.com/132521.html ([:]||[:])
     
  14. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    в начале статьи идет разбор поиска среднего значения.
    вот финальный код:
    int avg(int a, int b)
    {
    if (sign(a) != sign(b))
    return (a + b) / 2;
    else
    return a + (b - a) / 2;
    }

    хм, а нельзя ли считать вот так:

    int avg(int a, int b)
    {
    return a/2+b/2;
    }

    ?
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    нет. avg (1, 1) будет равным 0
     
  16. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    r90
    но ведь там int используется. он плохо делится пополам)) без погрешности
    в авторском решении avg(1,4)=2 avg(7,4)=6
    также неверно, но решение более громоздкое, хотя автор как раз и призывает к минимизации и упрощению.
     
  17. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    HuXTUS
    Вообще-то, X+Y=(X xor Y)+(X and Y)*2, где (X xor Y) - частичная сумма, а (X and Y) - переносы. Поэтому (X+Y)/2=(X xor Y)/2 + (X and Y), тогда нет переполнения, и при сложении нечетных чисел -- среднее получается без погрешности