51

Re: Вышел №50

Это всё цитаты из книги - все претензии к авторам.  smile  По поводу уменьшения размера экзешника - это действительно так. Проверял сам.



52

Re: Вышел №50

september2489 пишет:

По поводу уменьшения размера экзешника - это действительно так. Проверял сам.

100%



53

Re: Вышел №50

По поводу отладочной информации - тоже подтверждаю. Частично её можно встраивать в EXE (символы), чтобы потом было проще отлаживать.
Соответственно, EXE получается больше размером.

Ну а остальное, вероятно, просто "трудности перевода". Например, по поводу "увидеть код во время его выполнения" - вероятно, имелось в виду в режиме отладки, так называемый режим анимации (или Auto Step), когда программа выполняется построчно с подсветкой текущей строки...
Скорость в таком режиме может зависеть от скорости компьютера, соответственно, где-то можно отслеживать процесс выполнения, а где-то всё будет проскакивать слишком быстро.

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



54

Re: Вышел №50

uav1606 пишет:

По поводу отладочной информации - тоже подтверждаю. Частично её можно встраивать в EXE (символы), чтобы потом было проще отлаживать.

Из текста статьи не до конца понятно, что имеется в виду.

В старых версиях Delphi (до Embarcadero) размер файла увеличивала отладочная информация для отладчика Microsoft (из Visual Studio или совместимого), его настройка неспроста находится на вкладке Linker. У меня в Delphi 6 есть «Include TD32 debug info» и «Include remote debug symbols» — какая-то из этих галок. Если обходиться отладчиком самого Delphi, встраиваемая в exe-шник отладочная информация не нужна. Для работы описываемого в статье Watch List отладочная информация берется из DCU/DCP-файлов, на размер exe-шника она не влияет. Справку цитировать?

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

uav1606 пишет:

так называемый режим анимации (или Auto Step), когда программа выполняется построчно с подсветкой текущей строки...

Где такой режим? yikes

uav1606 пишет:

(Вот насчёт case я тоже не понял - вроде этот оператор был ещё в первом виртовском описании 70-какого-то года.

Меня напрягло еще это:

9) Считается, что конструкция case работает быстрее, чем ifthen.

Считается кем?

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



55

Re: Вышел №50

Freeman пишет:

Где такой режим?

Мне попадался. В W32Dasm, например. В QBasic тоже есть нечто похожее - режим трассировки.
В тексте же нет про конкретный отладчик.

Freeman пишет:

В старых версиях Delphi (до Embarcadero) размер файла увеличивала отладочная информация для отладчика Microsoft

Ну так про это, наверное, в книге и речь. Не про родной, а про универсальные. Хотя сформулировано коряво, да.



56

Re: Вышел №50

Ну, книжка вообще вышла в 95-м году. Да еще и переводная, как написали выше. Насколько владел предметом переводчик книжки, включая терминологию - отдельный вопрос. Сам тут столкнулся с AutoLisp - скачал пару книжек - уже нулевых годов и написанных, а не переведенных. Казалось бы - уже и времена не дикие, и люди должны познакомиться с разными средами разработки.. Но фактически заставила биться головой об стол глава об интерфейсе VisualLisp - как обозвали окно Watch - сейчас даже не воспроизведу. Возможно, самим автокадом авторы неплохо владеют, языком, возможно, тоже, но главу по IDE лучше бы знакомым программистам или (вроде институтские преподаватели писали) ребятам с местной кафедры АСУ.



57

Re: Вышел №50

Andrei88 пишет:

Ну, книжка вообще вышла в 95-м году.

Это как знак качества или наоборот? big_smile

Уже подумалось, что хотели дать обзор на хорошую старую книжку, а получилась антиреклама некачественной компьютерной литературы тех лет. А тогда даже у меня интернета еще не было. И на Delphi я еще не писал, продолжая сидеть на Turbo Pascal под DOS. Это был период появления Pentium, когда компьютер устаревал чуть ли не дважды в год, а я еще не нашел способа это преодолеть. Поэтому начал сразу с Delphi 3 уже в 1998-м. И с интернетом.



58

Re: Вышел №50

По поводу case - существенное замечание, думаю, я тут даже внесу исправления в PDF (хотя обычно этого не делаю - возникают всякие неприятные побочные эффекты, PDF всё-таки формат не для множественных правок).
Я, правда, не нашёл описываемую книгу в электронном виде, но в английском издании нет про добавление оператора case, только про какие-то там его оптимизации.
Во всяком случае, я бы сменил формулировку (если september2489 не возражает) с "Добавился оператор case" на что-то вроде "Был улучшен оператор case".

Freeman, а поводу остального - мне кажется, что Вы чересчур придираетесь к формулировкам и отдельным словам (ещё и с достаточно оскорбительными формулировками "рука-лицо" и т.п.).
Всё-таки эта статья не про программирование для Delphi как таковое, а про книгу об этом.
Я соглашусь, что в указанных Вами случаях действительно написано как-то туманно (не считая отладочной информации в EXE - там, по-моему, вообще всё в порядке, а Вы не правы), но, IMHO, это всё мелочи.



59

Re: Вышел №50

uav1606 пишет:

Я, правда, не нашёл описываемую книгу в электронном виде, но в английском издании нет про добавление оператора case, только про какие-то там его оптимизации.

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

Мне трудно представить, что изменилось в case по сравнению с Turbo Pascal 7.1, и если что-то действительно было улучшено, — будет новая инфа в мою личную копилку.

Freeman пишет:

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

А где-то возможно? Чтоб прям во время выполнения? Рука-лицо!

uav1606 пишет:

Например, по поводу "увидеть код во время его выполнения" - вероятно, имелось в виду в режиме отладки, так называемый режим анимации (или Auto Step), когда программа выполняется построчно с подсветкой текущей строки...

uav1606 пишет:
Freeman пишет:

Где такой режим?

Мне попадался. В W32Dasm, например. В QBasic тоже есть нечто похожее - режим трассировки.

Про режим Auto Step не знал. Если он и правда позволяет увидеть код во время выполнения — беру свои слова назад. Однако в Delphi такого режима нет.

uav1606 пишет:

не считая отладочной информации в EXE - там, по-моему, вообще всё в порядке, а Вы не правы

Всё вместе читается как необоснованный переход от одного вида отладки/настроек к другому, что я трактую как введение в заблуждение:

Хорошо, что у нас есть инструменты, которые позволят проследить выполнение программы в любой момент времени. Использование контрольных точек – один из способов отладки. Также можно воспользоваться утилитой Watch List, показывающей значение всех переменных программы в процессе работы. Стоит сказать, что инструменты отладки имеют множество настроек¹⁵.
──────────────────
15) Служебные файлы отладчика немного увеличивают размер exe‐файла программы. Если вы хотите оптимизировать размер вашей программы, то непременно ознакомьтесь с настройками отладчика.

К слову, tregsvr.exe из дистрибутива Delphi 6 почему-то собран в отладочном режиме. Я использую его в качестве примера такой программы:

Headers and sections (file/RVA)
     {stub}  00000/00000        260 bytes    0.0%
  {headers}  00104/00104        608 bytes    0.1%
       CODE  00400/01000      61952 bytes    6.3%  ·C·········XR·
       DATA  0F600/11000       2048 bytes    0.2%  ··D·········RW
        BSS  0FE00/12000          0 bytes    0.0%  ············RW
     .idata  0FE00/13000       3072 bytes    0.3%  ··D·········RW
       .tls  10A00/14000          0 bytes    0.0%  ············RW
     .rdata  10A00/15000        512 bytes    0.1%  ··D·······S·R·
     .reloc  10C00/16000       5120 bytes    0.5%  ··D·······S·R·
      .rsrc  12000/18000       5632 bytes    0.6%  ··D·······S·R·
     .debug  13600/1A000     904704 bytes   92.0%  ··D·······S·R·

92% — нифига себе «немного» увеличивает! Это при том, что для пошаговой отладки в IDE эта информация не нужна, повторюсь:

Debug information

Type    Switch
Syntax  {$D+} or {$D-}
        {$DEBUGINFO ON} or {$DEBUGINFO OFF}

Default {$D+}
        {$DEBUGINFO ON}

Scope    Global

Remarks

The $D directive enables or disables the generation of debug information. This information consists of a line-number table for each procedure, which maps object-code addresses into source text line numbers.

For units, the debug information is recorded in the unit file along with the unit's object code. Debug information increases the size of unit file and takes up additional memory when compiling programs that use the unit, but it does not affect the size or speed of the executable program.

When a program or unit is compiled in the {$D+} state, the integrated debugger lets you single-step and set breakpoints in that module.

The Include debug info (Project|Options|Linker) and Map file (Project|Options|Linker) options produce complete line information for a given module only if you've compiled that module in the {$D+} state.

The $D switch is usually used in conjunction with the $L switch, which enables and disables the generation of local symbol information for debugging. See also "Generate Turbo Debugger debug info (-V) option" and "Symbol cross-reference information."

EXE and DLL options

Check box                 What it does
───────────────────────────────────────────────────────────────────────
...
Include TD32 debug info   Places debug information in your program's executable file. This makes the resulting .EXE
                          file larger, but it does not affect memory requirements or performance.

                          Use this option only if you are using an external debugger. Using this option increases the
                          length of time required to compile a project.

В чем именно я неправ?



60

Re: Вышел №50

Freeman пишет:

Всё вместе читается как необоснованный переход от одного вида отладки/настроек к другому, что я трактую как введение в заблуждение:

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

Freeman пишет:

Это неверно. Вся отладочная информация хранится в DCU-файлах для программ и DCP-файлах для пакетов.

Хотя в EXE-файле она тоже хранится, пусть и не для встроенного отладчика.

По поводу английского издания, вот оно:
https://archive.org/details/usingdelphi0000matc/
Про case там на стр. 68 книги (94 в PDF).

(Но перевод, конечно, может сильно отличаться, его в электронном виде не нашёл.)



61

Re: Вышел №50

uav1606 пишет:

если september2489 не возражает

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

Здорово, что Freeman так хорошо разбирается в Delphi. Может быть мы увидим в журнале и его статьи по этой теме.



62

Re: Вышел №50

Freeman пишет:
Andrei88 пишет:

Ну, книжка вообще вышла в 95-м году.

Это как знак качества или наоборот? big_smile

С нашим переводом - увы, наоборот. Как говорил начальник, в свое время - прекрасное сочетание, когда человек знает и предмет, и знает английский :-) Вот тогда действительно получается прекрасный продукт - и понятный, и полезный. Когда же человек может путаться и в выражениях, и в терминах, и, чем черт не шутит, видеть среду разработки только на картинке - такое оно :-) Мама рассказывала, что, в 90-е или начале (вроде, раньше 2003-го) "нулевых" они заказывали перевод документации. Рядом с переводчиком сидел представитель завода и, в случае чего, пытались переводить термин вместе. Порой и специалист буксовал - возможно, редко имел дело с англоязычными текстами по теме.



63

Re: Вышел №50

Вот, дочитал выпуск до конца! big_smile
«Игра в четыре руки» напомнила игру Конструктор, которая интриговала возможностью играть вчетвером через сеть, но этот режим так и не удалось опробовать: Компьютер - одна штука!

Мой очерк - выглядит как капля в море: Получился слишком маленьким и коротким. roll

P.S.: Всем спасибо за труд и работу! wink