Delphi+ASM рулят?

Тема в разделе "WASM.HEAP", создана пользователем Volt, 1 апр 2008.

  1. Volt

    Volt New Member

    Публикаций:
    0
    Регистрация:
    7 фев 2008
    Сообщения:
    32
    Что вы думаете на этот счет?
    Заметьте не АСМ,а все вместе(Delphi+ASM)!
     
  2. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    то есть паскальный код с асм вставками?
    =\ ну когда я учился программить, я изучал "творчество" кобана,
    у него как раз таки паскаль с асм вставками был, работало.
    хотя, если проект с vcl, то никакой асм его не спасёт)) будет "Г.Г."

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

    имхо: вобще что тема, что пост - бредовые какие то ¦))
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Volt
    асм даже с QBasic рулит :)
     
  4. Volt

    Volt New Member

    Публикаций:
    0
    Регистрация:
    7 фев 2008
    Сообщения:
    32
    ага))
    Код (Text):
    1. асм даже с QBasic рулит :)
    Улыбнуло!
     
  5. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    ... заметили !
     
  6. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Volt
    > Что вы думаете на этот счет?
    > Заметьте не АСМ,а все вместе(Delphi+ASM)!
    непортабельно. лет пять назад переносимость не требовалась,
    т.к. рулила винда и x86. сейчас же наблюдается движение как
    вглубь (Linux, BSD, Mac OS), так и вширь (x86-64, IA64), плюс
    в каждой версии процессора - свой набор векторных команд.
    поэтому, реально рулит Си/Си++ с векторными библиотеками
    от Intel (ну, не только от Intel). это в долговременных проектах.

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

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Всегда думал исследую чужие программы: почему бы не переписать код несколько иначе, ведь получится в 4 раза быстрее и компактнее и это не займет много времени. Теперь понятно...
    Но, не спорю, не спорю.
     
  8. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    угу. рулили как-то, пока масштабируемость Delphi не сошла на нет.
     
  9. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    KeSqueer
    > почему бы не переписать код несколько иначе,
    > ведь получится в 4 раза быстрее и компактнее и это не займет много времени.
    потому что многие программисты ставят телегу впереди лошади.
    это как если бы строили строили дома, а потом чертили проекты ;)
    давно проверено, что если (грубо говоря) один день потратить
    на обдумывание, не написав ни строчки кода, то можно закодировать
    все за три дня, а если "думать мы будем потом, главное начать кодить",
    то кодирование займет неделю (в лучшем случае) и еще неделя уйдет
    на отладку и все буде таким кривым, что "не трожь, а то развалится".

    в прицнипе, си провоцирует стиль "сначала кодим, потом думаем",
    плюсы _требуют_ обдумывания проекта и жестоко карают за просчеты,
    которые на поздних стадиях проектирования практически невозможно исправить.
    си в этом плане более гибок и пластичен... так что... мир не без недостатков...
     
  10. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    kaspersky
    Т.е. либо заоблачные дали, либо однодневные поделки - среднего видимо не дано ? :)
     
  11. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    leo
    > Т.е. либо заоблачные дали, либо однодневные поделки - среднего видимо не дано ? :)
    программировать на дальфи можно либо только от любви к нему, либо в силу исторических причин (чел. освоил дельфи и он его вполне устраивает, а на другие языки переучиваться лень). лично я начинал с паскаля, поскольку меня была одна книжка по нему и сам компилятор, освоил в общем-то неплохо. писал резидентные программы с асмовскими вставками, но си меня буквально очаровал своей лаконичностью, препроцессором и возможностью втыкнуть выражение там, где в паскале его втыкнуть нельзя. а оператор "?" это вообще... просто маленькое чудо ;) так что я забросил паскаль и перешел на си, который по любому дает гораздо больше возможностей для кодирования, хотя бы в силу возможности написания переносимых программ (там где они, конечно, нужны).

    про дельфи тут говорилось уже неоднократно. качество кодогенератора и оптимизатора заметно отстает от си-компиляторов. писать компактные программы на нем можно, но за счет отказа от vcl, без которого дельфи - не дельфи. эдак я и на бейсике в машинных кодах могу шпарить. забить в массив кучу байт и передать на него управление ;) только будет ли это бейсиком?!

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

    еще можно поспорить о том как писать программы на Visual Studio - с MFC/NET или без таковой. но тут хотя бы есть оправдание. в студию входит хороший си/си++ компилер, а MFC/NET - это как бы сбоку бантик. что же касается Дельфи - то компилятор там довольно паршивенький и вся прелесть именно в IDE.

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

    дельфи без асма в принципе можно перенести на линух. и это хорошо ;) дельфи с асмом... а смысл?! даже если сейчас вы не собираетесь заниматься переносом, то добавление асма навряд ли радикально улучшит потребительские характеристики программы... мне вообще трудно представить ситуацию в которой асм мог бы реально помочь, а не навредить. речь, конечно, о прикладухе. системные программы непереносимы по определению. то есть, если я хочу написать программу, которая бы... ну, например, проверяла целостность таблицы системных вызовов в винде, то под линух можно перенести только интерфейс ;) а все остальные придется переписывать заново. но даже здесь ассемблер сдается под натиском си, особенно если писать по уму ;) а всякие хаки... ну вот например, все знают, что установить обработчик исключения через PUSH - самый простой метод, ага? и не нужно юзать API... только вот с SafeSEH он, увы, не совместим и если потребуется обеспечить такую совместмость - ох и долго же придется по всей программе лазить, переделывая ее на новый лад... короче, асм больше вредит, чем помогает...
     
  12. BreakPointMAN

    BreakPointMAN New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2005
    Сообщения:
    42
    Адрес:
    Russia
    Заметно... ;) Конечно, можно написать ("Искусство дизассемблирования" (с) Крис Касперски, Ева Рокко, СПб.:БХВ-Петербург, 2008; глава 10):
    Код (Text):
    1. while(f<2 &&(f=0))
    2. {
    3.   // ...
    4. }
    или
    Код (Text):
    1. if ( strtol(buf,&z,16==x) && ( printf("%s",buf) | 1) ) break;
    Это, конечно, мощно и круто :) Только какой в этом смысл? Исходный текст программы должен быть легко читаемым и модифицируемым. И пишется он, в первую очередь, для человека. Для того и изобрели ЯВУ. А когда asm читать проще, чем такой "ЯВУ", значит куда-то не туда пошли. У дяди Никлауса Вирта есть статья одна неплохая. Только пара цитат:
    Каков глубинный смысл написания кода в таком стиле, как приведено выше? Поднять авторитет среди кулхацкеров? Несерьезно. Или такая оптимизация? ;) Дык оптимизировать надо, в первую очередь, алгоритм (о чем, кстати, в твоей же книге и сказано). На том же C++/STL при использовании нормального алгоритма скорость программы будет на порядок выше. И на два порядка читабельнее. Иногда мне кажется, Крис, что ты думаешь как компилятор...
     
  13. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Вирт безусловно гений от программирования. Особенно его последние разроаботки. Но почему студенческая игрушка C со потомки имеет гораздо большую популярность и востребованость?

    Кроме того вас никто не заставляет использовать все возможности C. А вот то, что меньше раз на кнопки жать - это существенно. И тот же Вирт все ближе к этому.
     
  14. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    BreakPointMAN
    > while(f<2 &&(f=0))
    в книге while(f<2 && !(f=0)),
    иницилизация переменной внутри заголовка цикла, чем тебе не нравится?
    кстати, я писал в попыхах. если это записать как while (!(f=0) && f < 2),
    то не нужно писать int f = 0;
    можно, конечено, это переписать как
    while(f<2)
    {
    f = 0;
    if (x) ...; else f++;
    if (y) ...; else f++;
    }

    но добавит ли жто ясности? спорный вопрос...

    > if (strtol(buf,&z,16==x) && ( printf("%s",buf) | 1) ) break;
    в книге "(strtol(buf,&z,16)==x)"
    ты это - не пугай товарищей ;)

    "&& ( printf("%s",buf) | 1) ) break;"
    поналобилось, чтобы избавиться от фигурных скобок ;)

    > Иногда мне кажется, Крис, что ты думаешь как компилятор...
    "язык определяет мышление" (с)
    по мне так if .... break; нагляднее, чем
    if .... {......; break;} <- тут break теряется за закрывающей скобкой,
    а если верить штирлицу, то в разговоре запоминантся последнее слово ;)

    > Исходный текст программы должен быть легко читаемым
    > и модифицируемым. И пишется он, в первую очередь, для человека.
    never far from - может быть и головоломкой и расхожим выражением.
    и будь добр перефразируй "never far from power" на классический вриант ;)
    вот так и с языками программирования. что для одного "хак" и "трюк",
    для другого норма и читается она очень легко и страхует от ошибок.

    > Однако язык программирования - это модель вычислений,
    > а программы - это формальные тексты, к которым применимы
    > математические рассуждения.
    плюсы знаешь? тогда ответь на вопрос:
    что такое T(a); если T - некоторый тип?
    стандарт не дает ответа на этот вопрос,
    хотя и отмечает, что да, есть такая проблема,
    поэтому избегайте подобных конструкций, если
    не хотите получить неожиданный эффект ;))
    математические рассуждения - в студию ;)))
     
  15. 4apa

    4apa Neo (Thomas Anderson)

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    304
    Адрес:
    Matrix has u....
    2 _basmp_:
    Кажется в момент своего зарождения язык С позиционировался всего то как высокоуровневый макроассемблер.

    За что его полюбили разработчики, непонятно. Видимо нечего было им выбирать в тот момент, вот и влюбились -))).

    Лаконичность языков С/С++ опять же иллюзорна.
    Так смысл алгоритма должен быть очевиден,
    а в языке С смысл алгоритма напрямую зависит от тонкостей реализации конкретного стандарта языка С (ANSI C89/C90/C99, GNU C и т.д.),
    т.е. фактически зависит от конкретного компилятора.

    Забавно поразмышлять о свойствах С и С++ подобных языков :)
    http://ru.wikipedia.org/wiki/INTERCAL
     
  16. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Так гораздо понятнее. И мне, и всем коллегам на работе, которым я показал этот пример. Общее ИМХО таково: в одной строке должно быть не больше одного-двух выражений. А уж оператор присваивания должен быть на отдельной строке (за исключением for(...) ). Иначе такой код становится трудно читаемым.
     
  17. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    наиболее лучшим подходом является разбить код на модули: ф-ой части и интерфейсной. делфыч хорош в основном только, чтобы гую быстро нарисовать или соорудить эппик мелкий.
     
  18. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    UbIvItS
    Неправда. Я на Дельфи не пишу, но если быть объективным, на Дельфи написано (и пишется) огромное количество программ. Вот несколько примеров (под рукой оказались):
    D4: Beyond Compare, MsgPopup, PEBrowserPro
    D5: Sql Monitor, CaseStudio2
    D7: Gold Keeper, Web Vulnerability Scanner

    Список можно продолжить.
     
  19. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    BreakPointMAN
    Смысл в этом существует лишь для тех, кто так пишет. Как правило, в процессе совместной работы после первого десятка вопросов: "что за муть ты в этой строчке родил?" объясняться за понты даже им надоедает.
     
  20. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    crypto
    я написал с точки зрения качества кода, но по ряду причин, в первую очередь экономическим, качество кода нервно курит в сторонке. сейчас делфянка просто доживает, ибо дотнет вытесняет старые тех-гии.