Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2012, 01:14   #1
M1zantr0p
 
Регистрация: 21.04.2012
Сообщений: 5
Радость Вычисление выражений на этапе компиляции

При создании исполняемого файла delphi вычислит значения выражений, содержащие только известные аргументы (например вместо x:=23*35-1 подставит x:=804) или вычисление будет происходить уже при исполнении программы?
M1zantr0p вне форума Ответить с цитированием
Старый 05.05.2012, 07:01   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

По-разному, в зависимости как составлено выражение. Иногда действительно компилятор при сборке программы способен упростить выражение до константы. Но я бы на это никогда не полагался и если есть возможность вычислить выражение заранее - делать это самому.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.05.2012, 07:04   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

При компиляции вычислит.

Цитата:
Но я бы на это никогда не полагался и если есть возможность вычислить выражение заранее - делать это самому.
Компиляторы давно это делают. А делать то, что может компилятор в ущерб читаемость, не камильфо.
p51x вне форума Ответить с цитированием
Старый 05.05.2012, 07:43   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
При компиляции вычислит.
Если запутать с переменными не вычислит.

Цитата:
А делать то, что может компилятор в ущерб читаемость, не камильфо.
А причем здесь ущерб читаемости? Пишите в комментах и все. Что Вы как робот только по книгам да по книгам? Компилятору вообще пофигу на Вашу читаемость - соблюли правила, он подготовит.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.05.2012, 09:19   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Если запутать с переменными не вычислит.
Если может вычислить - вычислит.
А если в выражение входят переменные, вычислить на этапе компиляции принципиально невозможно, поэтому вычисляться будет в процессе выполнения.
Цитата:

А причем здесь ущерб читаемости? Пишите в комментах и все. Что Вы как робот только по книгам да по книгам? Компилятору вообще пофигу на Вашу читаемость - соблюли правила, он подготовит.
Комментарии служат не для этого.
Что именно делается, должно быть видно из кода, а комментарии объясняют, зачем это делается.
А код оформляется не для компилятора, а для человека:
- когда работаешь в команде, важно, чтобы коллега мог легко прочитать твой код,
- когда просто много пишешь, на собственный код, написанный месяц назад, смотришь, как будто первый раз его видишь,
- серьезные программы живут и поддерживаются годами, а то и десятилетиями. Это не учебное задание - сдал и забыл.

Последний раз редактировалось s-andriano; 05.05.2012 в 09:45.
s-andriano вне форума Ответить с цитированием
Старый 05.05.2012, 13:07   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
А если в выражение входят переменные, вычислить на этапе компиляции принципиально невозможно, поэтому вычисляться будет в процессе выполнения.
Логика железная . Только к Дельфи не относится. Прежде чем утверждать посмотрите в бреакпоинтах, как проходят вычисления.

Цитата:
Комментарии служат не для этого.
А для чего?

Цитата:
А код оформляется не для компилятора, а для человека:
- когда работаешь в команде, важно, чтобы коллега мог легко прочитать твой код,
Опять книжные слова и ни грамма практики? Коллеге нужен интерфейс и только. Как метод решает задачу не его проблемы. Более того, он не должен соваться в мой код ни коим образом. Только в случае если он будет его переделывать - то есть раз в десятилетие и скорее всего это будет не мой коллега, а лицо меня замещающее. Иначе Вы утонете в исправлениях и никогда не закончите проект.

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

Цитата:
серьезные программы живут и поддерживаются годами, а то и десятилетиями. Это не учебное задание - сдал и забыл.
Угу, только там старого кода и нет совсем. Он пять раз переписывается если что. Это я про десятилетия.

Господа, я открою Вам малюсенький секрет - то что написано в книгах далеко не всегда соответствует практике.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 05.05.2012 в 13:14.
Utkin вне форума Ответить с цитированием
Старый 05.05.2012, 13:44   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
Если запутать с переменными не вычислит.
Цитата:
вычислит значения выражений, содержащие только известные аргументы (например вместо x:=23*35-1 подставит x:=804)
Может будем по теме отвечать, а не вообще?..
p51x вне форума Ответить с цитированием
Старый 05.05.2012, 15:04   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Гы, если смешивать утверждения двух различных авторов, то никто не ответит ничего стоящего....
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 05.05.2012 в 15:18.
Utkin вне форума Ответить с цитированием
Старый 05.05.2012, 15:18   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Я не смешиваю, а показываю явный овертопик.
p51x вне форума Ответить с цитированием
Старый 05.05.2012, 20:28   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Коллеге нужен интерфейс и только. Как метод решает задачу не его проблемы. Более того, он не должен соваться в мой код ни коим образом.
Особенно после того, как ты уволишься, а ему придется сопровождать твой код.
Цитата:
Только в случае если он будет его переделывать - то есть раз в десятилетие и скорее всего это будет не мой коллега, а лицо меня замещающее. Иначе Вы утонете в исправлениях и никогда не закончите проект.
Вот именно.
Если заранее не позаботиться о правильном оформлении кода, уход каждого сотрудника может сорвать сроки проекта.
Текучесть кадров - нормальное явление, и его необходимо читывать.
Цитата:
Господа, я открою Вам малюсенький секрет - то что написано в книгах далеко не всегда соответствует практике.
Я тоже открою секрет: я делюсь исключительно личным опытом. Если в книгах написано то же самое, значит, я в своих выводах не одинок.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поток. ввод-вывод. Ошибка на этапе компиляции. Дмитрий_Попов Общие вопросы C/C++ 1 15.12.2011 10:36
С. Задание с шаблоном функции. Ошибка на этапе компиляции. CofeIn Помощь студентам 2 18.02.2011 21:33
вычисление арифметических выражений на с++ Euforia_PZAS09_1 Помощь студентам 1 09.03.2010 17:40
Вычисление арифметических выражений.(delphi) КуДрЯ Помощь студентам 3 02.04.2009 02:54
вычисление выражений (pascal) вкусняшка Помощь студентам 4 14.03.2009 16:42