Текущий архив: 2011.11.06;
Скачать: CL | DM;
Вниз
if или case Найти похожие ветки
← →
SQLEXPRESS (2011-07-14 17:28) [40]
> Что-то там не заметно, что он генерировал собственные исключения.
> "Ошибка! Обратитесь разработчику"
except
тут что-то проверяет, пытается выкрутится
и если не выкрутились то ShowMessage
end;
← →
Dennis I. Komarov © (2011-07-14 18:02) [41]
> SQLEXPRESS (14.07.11 17:28) [40]
И что? Исключение то не его (скорее всего), он его только обрабатывает...
← →
Игорь Шевченко © (2011-07-14 18:42) [42]Rouse_ © (14.07.11 16:07) [35]
VCL и без меня найдется, кому лечить, а вот местных - уж извини
← →
Rouse_ © (2011-07-14 18:58) [43]Дык вот тоже времени нет :)
← →
_Юрий (2011-07-16 00:46) [44]
> SQLEXPRESS (14.07.11 11:25) [29]
> Дэн, читай все. Стрелять за
> except
> on E: Exception do
> begin
> ToLog(E);
> ToBuffer(E);
> ToXXX(E);
> end;
> без перевозбуждения если. :)
> начинающий2 (13.07.11 16:15) [19]
> все функции должны возвращать целочисленный результат при
> успешном выполнении и при ошибке
Читайте все, SQLEXPRESS
← →
Германн © (2011-07-16 02:49) [45]Для Enumerated всегда предпочитаю case, если есть выбор из трех и более.
Ей-богу гораздо нагляднее (по крайней мере при моем типе форматирования кода). Да и комментарии для вариантов удобно вставлять.
← →
sniknik © (2011-07-16 14:02) [46]> Это правила предметной области, он тут спец.
а... ну, видел как математик пишет... (бывший препод), при полной уверенности в, и "пропаганде" лозунга - "только хороший математик может быть хорошим программистом".
уравнения переведенные в код буквально... на пять страниц, никакой оптимизации, разделения на блоки, или использования одного пред рассчитанного результата в нескольких местах если нужно.
он как то нам дал задание "сделать хоть чуть лучше" за автомат по предмету (исходя из лозунга), я то как раз считаю "главное программистское мышление, и способность разбираться в том, что нужно для задачи... если она не математическая, то хоть всю жизнь пиши не зная математики".
ну вот тогда то и увидел, когда взялся... автомат тогда не получил, наоборот... не, если бы сделал "на чуть лучше" получил бы, и даже если просто "покаялся, типа не могу, у вас идеал" то получил бы четыре. но я сделал лучше на порядок (у него массив считался 15 на 15, у меня 255 на 255, у него ~5 мин, у меня ~3 сек, результаты расчета в реальном времени, а он любил об этом поговорить типа "вот когда компы станут мощнее, мы все это будем видеть наглядно"). он в общем обиделся, сказал что надо быть математиком лучше него чтобы так сделать, я не лучше, и значит это не я делал... в общем вместо автомата пришлось сдавать на комиссии (экзамен и пересдача у своего препода, а он сразу ставил 2 едва я входил в аудиторию, сильно видать обиделся, а вот на комиссии преподы чужие, могут быть даже с другого института. и вот другие поставили 4, ну как же комиссия, 5 нельзя. хотя и удивлялись как это студент с такими хорошими знаниями умудрился попасть на комиссию).
← →
SQLEXPRESS (2011-07-16 22:19) [47]
> sniknik © (16.07.11 14:02) [46]
гордыня, сударь :)
И, хоть и, как по-моему, заслуженная. Но все таки
А в моем случае что то с деньгами связано. Что-то с законом, что-то с бизнес логикой.
т.е. человек подошел конкретно, взял закон, взял бух.пособие и накатал.
там такие if if if if - чтоо 100% можно оптимальнее, но надо понять!!! прежде все это..
> _Юрий (16.07.11 00:46) [44]
Вы считаете, что один программист(группа) за короткий срок напишут обертку не уступающую исходному обработчику?
← →
Sha © (2011-07-16 23:48) [48]> sniknik
Также примерно было, только в школе.
В 9й класс пришлось уйти в мат. школу.
← →
Юрий Зотов © (2011-07-17 08:42) [49]У студента, с которым я когда-то занимался, тоже было подобное. В паскалевской программе под DOS было объявление массива с максимально возможным размером, что-то вроде этого:
type
TMyReal = real;
TMyRealArray = array[0..(65535 div SizeOf(TMyReal)] of TMyReal;
Препод начал возмущаться, что программа жрет огромную лишнюю память (хотя реально ни одной переменной такого типа в программе, конечно же, не было, этот тип использовался лишь для передачи параметра в подпрограмму). Студент начал ему доказывать, что никакой лишней памяти программе не жрет. Тот не верит. Тогда студент открывает книжку и тычет в нее пальцем - а в книжке показан этот самый прием с полным разжевыванием всей сути. Пришлось преподу согласиться, но на экзамене он отыгрался по полной. Трижды парень сдавал (хотя знал все на отлично, это уж можете мне поверить) - пока не упомянул, что придется ему идти к завкафедрой.
← →
DiamondShark © (2011-07-18 11:30) [50]
> уравнения переведенные в код буквально... на пять страниц,
> никакой оптимизации, разделения на блоки, или использования
> одного пред рассчитанного результата в нескольких местах
> если нужно.
Оптимизация, в том числе выделение и предрасчёт инвариантов -- это задача компилятора.
Программисты очень любят побить себя пяткой в грудь на тему, как они доблестно сражались с деталями реализации компилятора, но нормальных оптимизирующих компиляторов как не было 50 лет назад, так и нет до сих пор. И никогда не будет. Потому что тогда 95% "квалифицированных" программистов должны будут пойти в дворники, потому что их т.н. "квалификация" и заключается в умении бороться с кривыми инструментами, созданными другими такими же "квалифицированными".
На программистов должен распространяться принцип коллективной ответственности, как на евреев в Риме. И если какой-то программист что-то там возвякнёт про то, как он героически побеждал реаллоки массивов и кеширование инвариантов, ему надлежит бить кованным самогом в хрюпло, потому что он хочет в этот момент получить второй раз бабло за то, что ниасилил его такой же наглый, ленивый и "квалифицированный" собрат -- автор компилятора.
← →
DiamondShark © (2011-07-18 11:38) [51]Ну а преподы -- да. Это такая же коррумпированная гнилая каста упырей, как и программисты.
← →
Юрий Зотов © (2011-07-18 13:03) [52]Другими словами, весь цирк в ... - и тут выхожу я в белом фраке.
var
N: integer;
procedure P;
begin
N := 1; // Больше N нигде не используется
end;
...
for i := 0 to 1000000 do P;
Особо умным предлагается написать компилятор, который распознает инвариант и вынесет вызов P из цикла, а сам цикл удалит. Хотя бы в этом, самом наипростейшем случае.
Фишка здесь в том, что компилятор не имеет права выносить вызовы подпрограмм из циклов, потому что он не искусственный интелллект и не может распознать, что эти подпрограммы делают. А делать они могут что угодно.
И подобных фишек - сколько хошь. Так что никакой компилятор не может оптимизировать программу так же, как это может сделать программист.
← →
Rouse_ © (2011-07-18 13:49) [53]
> И если какой-то программист что-то там возвякнёт про то,
> как он героически побеждал реаллоки массивов и кеширование
> инвариантов, ему надлежит бить кованным самогом в хрюпло,
> потому что он хочет в этот момент получить второй раз бабло
> за то, что ниасилил его такой же наглый, ленивый и "квалифицированный"
> собрат -- автор компилятора.
Т.е. ты, стало быть, пишешь корявый и не оптимизированный код и при этом за эту лабуду мало того что получаешь деньги, так еще и как истину в последней инстанции толкаешь в массы?
← →
sniknik © (2011-07-18 14:12) [54]> как он героически побеждал реаллоки массивов и кеширование инвариантов
как всегда читаем одно понимаем то что хотим?
никаких "побежданий", просто приведен в порядок, убран дублирующийся и т.д код. часть формул вообще заменена на константы, формулы тоже были переделаны (но это я себе в заслугу не ставил, т.к. база все одно была его).
но никаких "тонких настроек", разве при них что-то говорилось.
а вот сказанное открытым текстом - профи в одном не обязательно профи, и даже скорее всего дилетант, если занимается этим любительски, в другом. это конечно лучше проигнорировать... ну ведь если понять написанное то гневных рецензий не получится, так ведь? и потролить не удастся... уже наркотик?
← →
Юрий Зотов © (2011-07-18 14:58) [55]Удалено модератором
← →
DiamondShark © (2011-07-18 15:11) [56]
> Юрий Зотов © (18.07.11 13:03) [52]
Вот так:
for i := 0 to 1000000 do;
Круче.
И потом сказать, что компилятор не имеет права выкинуть цикл, потому что, возможно, программист был не пьян, а просто так временную задержку отмеряет.
А в чём, собственно, проблема определить, что "// Больше N нигде не используется", выкинуть присваивание и заменить вызов пустой процедуры на пустой оператор? Сейчас даже не самые крутые компиляторы умеют так делать.
А в исполняющей среде с динамической кодогенерацией сквозная оптимизация возможна даже через границы импорта/экспорта.
← →
SQLEXPRESS (2011-07-18 15:23) [57]не-не, не надо умного компилятора :)
я вот писал программу для 3.11
repeat
until false;
ставил ей максимальный приоритет! Зачем? Чтоб ЦП загрузить :)
В другой очень удобно работать сразу становилось,
а иначе все летало, не успеваешь заметить
← →
DiamondShark © (2011-07-18 15:23) [58]Удалено модератором
Примечание: Правила читаем...
← →
Rouse_ © (2011-07-18 15:26) [59]Удалено модератором
Страницы: 1 2 вся ветка
Текущий архив: 2011.11.06;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.009 c