Re: Вышел №50
Это всё цитаты из книги - все претензии к авторам. По поводу уменьшения размера экзешника - это действительно так. Проверял сам.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
27.04.2025
Стартовал приём статей в №51
Тема - "IBM и всё с ней связанное".
Сроки - до 15 июня.
Обсудить работу над номером можно тут.
24.04.2025
Вышел № 50 журнала
Скачать его можно здесь:
http://dgmag.in/N50/DowngradeN50.pdf
(20 МБ.)
Обсудить номер можно тут.
Также подведены итоги конкурса.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Это всё цитаты из книги - все претензии к авторам. По поводу уменьшения размера экзешника - это действительно так. Проверял сам.
По поводу уменьшения размера экзешника - это действительно так. Проверял сам.
100%
По поводу отладочной информации - тоже подтверждаю. Частично её можно встраивать в EXE (символы), чтобы потом было проще отлаживать.
Соответственно, EXE получается больше размером.
Ну а остальное, вероятно, просто "трудности перевода". Например, по поводу "увидеть код во время его выполнения" - вероятно, имелось в виду в режиме отладки, так называемый режим анимации (или Auto Step), когда программа выполняется построчно с подсветкой текущей строки...
Скорость в таком режиме может зависеть от скорости компьютера, соответственно, где-то можно отслеживать процесс выполнения, а где-то всё будет проскакивать слишком быстро.
(Вот насчёт case я тоже не понял - вроде этот оператор был ещё в первом виртовском описании 70-какого-то года. Возможно, речь про какие-то нюансы реализации? То есть что-то поменяли, а не добавили сам оператор? Тут действительно похоже на какую-то ошибку.)
По поводу отладочной информации - тоже подтверждаю. Частично её можно встраивать в 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-шники могут отличаться на десятки мегабайт по размеру.
так называемый режим анимации (или Auto Step), когда программа выполняется построчно с подсветкой текущей строки...
Где такой режим?
(Вот насчёт case я тоже не понял - вроде этот оператор был ещё в первом виртовском описании 70-какого-то года.
Меня напрягло еще это:
9) Считается, что конструкция case работает быстрее, чем if…then.
Считается кем?
А раньше журнал казался авторитетным — по крайней мере, без совсем уж явных косяков.
Где такой режим?
Мне попадался. В W32Dasm, например. В QBasic тоже есть нечто похожее - режим трассировки.
В тексте же нет про конкретный отладчик.
В старых версиях Delphi (до Embarcadero) размер файла увеличивала отладочная информация для отладчика Microsoft
Ну так про это, наверное, в книге и речь. Не про родной, а про универсальные. Хотя сформулировано коряво, да.
Ну, книжка вообще вышла в 95-м году. Да еще и переводная, как написали выше. Насколько владел предметом переводчик книжки, включая терминологию - отдельный вопрос. Сам тут столкнулся с AutoLisp - скачал пару книжек - уже нулевых годов и написанных, а не переведенных. Казалось бы - уже и времена не дикие, и люди должны познакомиться с разными средами разработки.. Но фактически заставила биться головой об стол глава об интерфейсе VisualLisp - как обозвали окно Watch - сейчас даже не воспроизведу. Возможно, самим автокадом авторы неплохо владеют, языком, возможно, тоже, но главу по IDE лучше бы знакомым программистам или (вроде институтские преподаватели писали) ребятам с местной кафедры АСУ.
Ну, книжка вообще вышла в 95-м году.
Это как знак качества или наоборот?
Уже подумалось, что хотели дать обзор на хорошую старую книжку, а получилась антиреклама некачественной компьютерной литературы тех лет. А тогда даже у меня интернета еще не было. И на Delphi я еще не писал, продолжая сидеть на Turbo Pascal под DOS. Это был период появления Pentium, когда компьютер устаревал чуть ли не дважды в год, а я еще не нашел способа это преодолеть. Поэтому начал сразу с Delphi 3 уже в 1998-м. И с интернетом.
По поводу case - существенное замечание, думаю, я тут даже внесу исправления в PDF (хотя обычно этого не делаю - возникают всякие неприятные побочные эффекты, PDF всё-таки формат не для множественных правок).
Я, правда, не нашёл описываемую книгу в электронном виде, но в английском издании нет про добавление оператора case, только про какие-то там его оптимизации.
Во всяком случае, я бы сменил формулировку (если september2489 не возражает) с "Добавился оператор case" на что-то вроде "Был улучшен оператор case".
Freeman, а поводу остального - мне кажется, что Вы чересчур придираетесь к формулировкам и отдельным словам (ещё и с достаточно оскорбительными формулировками "рука-лицо" и т.п.).
Всё-таки эта статья не про программирование для Delphi как таковое, а про книгу об этом.
Я соглашусь, что в указанных Вами случаях действительно написано как-то туманно (не считая отладочной информации в EXE - там, по-моему, вообще всё в порядке, а Вы не правы), но, IMHO, это всё мелочи.
Я, правда, не нашёл описываемую книгу в электронном виде, но в английском издании нет про добавление оператора case, только про какие-то там его оптимизации.
А можно и мне английское издание? Тоже искал описываемую книгу, чтобы своими глазами почитать, и тоже не нашел, везде предлагают или в библиотеку прийти, или купить.
Мне трудно представить, что изменилось в case по сравнению с Turbo Pascal 7.1, и если что-то действительно было улучшено, — будет новая инфа в мою личную копилку.
Как уже отмечалось, Delphi создаёт на выходе скомпилированные файлы. Такие программы работают очень быстро – настолько, что увидеть код во время его выполнения невозможно.
А где-то возможно? Чтоб прям во время выполнения? Рука-лицо!
Например, по поводу "увидеть код во время его выполнения" - вероятно, имелось в виду в режиме отладки, так называемый режим анимации (или Auto Step), когда программа выполняется построчно с подсветкой текущей строки...
Freeman пишет:Где такой режим?
Мне попадался. В W32Dasm, например. В QBasic тоже есть нечто похожее - режим трассировки.
Про режим Auto Step не знал. Если он и правда позволяет увидеть код во время выполнения — беру свои слова назад. Однако в Delphi такого режима нет.
не считая отладочной информации в 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.
В чем именно я неправ?
Всё вместе читается как необоснованный переход от одного вида отладки/настроек к другому, что я трактую как введение в заблуждение:
Простите, но это уже казуистика. Там нигде явно не написано, что используется только встроенный отладчик.
В примечании даже версия самого Delphi не указана - если это примечание от автора статьи, то речь уже может вполне идти не про ту, что в книге, а про более поздние.
Вы же изначально написали вообще вот это:
Это неверно. Вся отладочная информация хранится в DCU-файлах для программ и DCP-файлах для пакетов.
Хотя в EXE-файле она тоже хранится, пусть и не для встроенного отладчика.
По поводу английского издания, вот оно:
https://archive.org/details/usingdelphi0000matc/
Про case там на стр. 68 книги (94 в PDF).
(Но перевод, конечно, может сильно отличаться, его в электронном виде не нашёл.)
если september2489 не возражает
Я совершенно не против. Наоборот, даже рад, что статья вызвала такую дискуссию. Лишний раз вспомнить старушку-делфи всегда приятно.
Здорово, что Freeman так хорошо разбирается в Delphi. Может быть мы увидим в журнале и его статьи по этой теме.
Andrei88 пишет:Ну, книжка вообще вышла в 95-м году.
Это как знак качества или наоборот?
С нашим переводом - увы, наоборот. Как говорил начальник, в свое время - прекрасное сочетание, когда человек знает и предмет, и знает английский :-) Вот тогда действительно получается прекрасный продукт - и понятный, и полезный. Когда же человек может путаться и в выражениях, и в терминах, и, чем черт не шутит, видеть среду разработки только на картинке - такое оно :-) Мама рассказывала, что, в 90-е или начале (вроде, раньше 2003-го) "нулевых" они заказывали перевод документации. Рядом с переводчиком сидел представитель завода и, в случае чего, пытались переводить термин вместе. Порой и специалист буксовал - возможно, редко имел дело с англоязычными текстами по теме.
Вот, дочитал выпуск до конца!
«Игра в четыре руки» напомнила игру Конструктор, которая интриговала возможностью играть вчетвером через сеть, но этот режим так и не удалось опробовать: Компьютер - одна штука!
Мой очерк - выглядит как капля в море: Получился слишком маленьким и коротким.
P.S.: Всем спасибо за труд и работу!
Чтобы отправить ответ, вы должны войти или зарегистрироваться
На основе PunBB, при поддержке Informer Technologies, Inc.
Currently installed 6 official extensions. Copyright © 2003–2009 PunBB.