то есть паскальный код с асм вставками? =\ ну когда я учился программить, я изучал "творчество" кобана, у него как раз таки паскаль с асм вставками был, работало. хотя, если проект с vcl, то никакой асм его не спасёт)) будет "Г.Г." вобще, делфи может всё, что нужно на уровне апи для программера, а если твоя фантазия выходит за рамки пуш-коллов, то нафига тебе пасцал вобще?) пиши на асме и не парься. имхо: вобще что тема, что пост - бредовые какие то ¦))
Volt > Что вы думаете на этот счет? > Заметьте не АСМ,а все вместе(Delphi+ASM)! непортабельно. лет пять назад переносимость не требовалась, т.к. рулила винда и x86. сейчас же наблюдается движение как вглубь (Linux, BSD, Mac OS), так и вширь (x86-64, IA64), плюс в каждой версии процессора - свой набор векторных команд. поэтому, реально рулит Си/Си++ с векторными библиотеками от Intel (ну, не только от Intel). это в долговременных проектах. что же касается проектов в стиле "спихнул и забыл", то на хвоста там вообще асм? и оптимизация? главное - скорость кодирования, а не производительность и размер программы.
Всегда думал исследую чужие программы: почему бы не переписать код несколько иначе, ведь получится в 4 раза быстрее и компактнее и это не займет много времени. Теперь понятно... Но, не спорю, не спорю.
KeSqueer > почему бы не переписать код несколько иначе, > ведь получится в 4 раза быстрее и компактнее и это не займет много времени. потому что многие программисты ставят телегу впереди лошади. это как если бы строили строили дома, а потом чертили проекты давно проверено, что если (грубо говоря) один день потратить на обдумывание, не написав ни строчки кода, то можно закодировать все за три дня, а если "думать мы будем потом, главное начать кодить", то кодирование займет неделю (в лучшем случае) и еще неделя уйдет на отладку и все буде таким кривым, что "не трожь, а то развалится". в прицнипе, си провоцирует стиль "сначала кодим, потом думаем", плюсы _требуют_ обдумывания проекта и жестоко карают за просчеты, которые на поздних стадиях проектирования практически невозможно исправить. си в этом плане более гибок и пластичен... так что... мир не без недостатков...
leo > Т.е. либо заоблачные дали, либо однодневные поделки - среднего видимо не дано ? программировать на дальфи можно либо только от любви к нему, либо в силу исторических причин (чел. освоил дельфи и он его вполне устраивает, а на другие языки переучиваться лень). лично я начинал с паскаля, поскольку меня была одна книжка по нему и сам компилятор, освоил в общем-то неплохо. писал резидентные программы с асмовскими вставками, но си меня буквально очаровал своей лаконичностью, препроцессором и возможностью втыкнуть выражение там, где в паскале его втыкнуть нельзя. а оператор "?" это вообще... просто маленькое чудо так что я забросил паскаль и перешел на си, который по любому дает гораздо больше возможностей для кодирования, хотя бы в силу возможности написания переносимых программ (там где они, конечно, нужны). про дельфи тут говорилось уже неоднократно. качество кодогенератора и оптимизатора заметно отстает от си-компиляторов. писать компактные программы на нем можно, но за счет отказа от vcl, без которого дельфи - не дельфи. эдак я и на бейсике в машинных кодах могу шпарить. забить в массив кучу байт и передать на него управление только будет ли это бейсиком?! дельфи - это (концептуально) средство для быстрой разработки программ со скоростью и размером кода ниже среднего. использовать его для трансляции "чистых" паскалевских программ это все равно что кодить на Си без RTL. т.е. вроде бы как и можно, но... смысл?! все равно придется писать свою RTL. в небольших проектах эту RTL можно здорово заоптимизить и выиграть и в скорости, и размере, но чем больше строк содержит проект, тем билже наша RTL к обычной... еще можно поспорить о том как писать программы на Visual Studio - с MFC/NET или без таковой. но тут хотя бы есть оправдание. в студию входит хороший си/си++ компилер, а MFC/NET - это как бы сбоку бантик. что же касается Дельфи - то компилятор там довольно паршивенький и вся прелесть именно в IDE. про ассемблер: блин, ну головой думать надо. использование асма резко ударяет по портабельности, а оптимизация... ну, блин какая такая оптимизация, если мы не знаем набора команд проецессора, а все классическе мат. алгоритмы интел и так уже заоптимизировала весьма нехило. поэтому нормальный проект это все-таки Си + либы на асме от интел или других разработчиков. дельфи без асма в принципе можно перенести на линух. и это хорошо дельфи с асмом... а смысл?! даже если сейчас вы не собираетесь заниматься переносом, то добавление асма навряд ли радикально улучшит потребительские характеристики программы... мне вообще трудно представить ситуацию в которой асм мог бы реально помочь, а не навредить. речь, конечно, о прикладухе. системные программы непереносимы по определению. то есть, если я хочу написать программу, которая бы... ну, например, проверяла целостность таблицы системных вызовов в винде, то под линух можно перенести только интерфейс а все остальные придется переписывать заново. но даже здесь ассемблер сдается под натиском си, особенно если писать по уму а всякие хаки... ну вот например, все знают, что установить обработчик исключения через PUSH - самый простой метод, ага? и не нужно юзать API... только вот с SafeSEH он, увы, не совместим и если потребуется обеспечить такую совместмость - ох и долго же придется по всей программе лазить, переделывая ее на новый лад... короче, асм больше вредит, чем помогает...
Заметно... Конечно, можно написать ("Искусство дизассемблирования" (с) Крис Касперски, Ева Рокко, СПб.:БХВ-Петербург, 2008; глава 10): Код (Text): while(f<2 &&(f=0)) { // ... } или Код (Text): if ( strtol(buf,&z,16==x) && ( printf("%s",buf) | 1) ) break; Это, конечно, мощно и круто Только какой в этом смысл? Исходный текст программы должен быть легко читаемым и модифицируемым. И пишется он, в первую очередь, для человека. Для того и изобрели ЯВУ. А когда asm читать проще, чем такой "ЯВУ", значит куда-то не туда пошли. У дяди Никлауса Вирта есть статья одна неплохая. Только пара цитат: Каков глубинный смысл написания кода в таком стиле, как приведено выше? Поднять авторитет среди кулхацкеров? Несерьезно. Или такая оптимизация? Дык оптимизировать надо, в первую очередь, алгоритм (о чем, кстати, в твоей же книге и сказано). На том же C++/STL при использовании нормального алгоритма скорость программы будет на порядок выше. И на два порядка читабельнее. Иногда мне кажется, Крис, что ты думаешь как компилятор...
Вирт безусловно гений от программирования. Особенно его последние разроаботки. Но почему студенческая игрушка C со потомки имеет гораздо большую популярность и востребованость? Кроме того вас никто не заставляет использовать все возможности C. А вот то, что меньше раз на кнопки жать - это существенно. И тот же Вирт все ближе к этому.
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 - некоторый тип? стандарт не дает ответа на этот вопрос, хотя и отмечает, что да, есть такая проблема, поэтому избегайте подобных конструкций, если не хотите получить неожиданный эффект ) математические рассуждения - в студию ))
2 _basmp_: Кажется в момент своего зарождения язык С позиционировался всего то как высокоуровневый макроассемблер. За что его полюбили разработчики, непонятно. Видимо нечего было им выбирать в тот момент, вот и влюбились -))). Лаконичность языков С/С++ опять же иллюзорна. Так смысл алгоритма должен быть очевиден, а в языке С смысл алгоритма напрямую зависит от тонкостей реализации конкретного стандарта языка С (ANSI C89/C90/C99, GNU C и т.д.), т.е. фактически зависит от конкретного компилятора. Забавно поразмышлять о свойствах С и С++ подобных языков http://ru.wikipedia.org/wiki/INTERCAL
Так гораздо понятнее. И мне, и всем коллегам на работе, которым я показал этот пример. Общее ИМХО таково: в одной строке должно быть не больше одного-двух выражений. А уж оператор присваивания должен быть на отдельной строке (за исключением for(...) ). Иначе такой код становится трудно читаемым.
наиболее лучшим подходом является разбить код на модули: ф-ой части и интерфейсной. делфыч хорош в основном только, чтобы гую быстро нарисовать или соорудить эппик мелкий.
UbIvItS Неправда. Я на Дельфи не пишу, но если быть объективным, на Дельфи написано (и пишется) огромное количество программ. Вот несколько примеров (под рукой оказались): D4: Beyond Compare, MsgPopup, PEBrowserPro D5: Sql Monitor, CaseStudio2 D7: Gold Keeper, Web Vulnerability Scanner Список можно продолжить.
BreakPointMAN Смысл в этом существует лишь для тех, кто так пишет. Как правило, в процессе совместной работы после первого десятка вопросов: "что за муть ты в этой строчке родил?" объясняться за понты даже им надоедает.
crypto я написал с точки зрения качества кода, но по ряду причин, в первую очередь экономическим, качество кода нервно курит в сторонке. сейчас делфянка просто доживает, ибо дотнет вытесняет старые тех-гии.