Форум: "Прочее";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизПочему компилятор Делфи так быстро работает? Найти похожие ветки
← →
Romkin © (2006-07-19 13:21) [40]Nic © (19.07.06 13:19) [38] По некоторым данным, это функция, принимающая на вход массив функций и возвращающая char. Но не уверен :)
← →
Verg © (2006-07-19 13:45) [41]char (*(*x2 ())[]) ()
Это функция не принимающая параметров, возвращающая массив функций, каждая из которых не принимает параметров, а возвращает char.
Угадал ?:))
← →
Romkin © (2006-07-19 13:49) [42]Verg © (19.07.06 13:45) [41] Э. Тогда уж массив фукнций :)))
← →
Verg © (2006-07-19 14:02) [43]
> Romkin © (19.07.06 13:49) [42]
Нет, именно ф-ция (одна).
Только там обманчик есть. Так как массив в сях функциям возвращать запрещено, то формально она возвращает указатель на массив. Что суть есть одно и то же. Можно было бы [] убрать и не морочить голову.
← →
DevilDevil © (2006-07-19 14:10) [44]Если выбирать при одинаковой [допустим] скорости C++ или Pascal, что вы выбирете? Несмотря на кучу недостатков С++, некоторых достоинств Паскаля, я бы выбрал С++. Ну есть там удобные фичи. Иными словами, мы [ну я и некоторые другие] выбираем Delphi больше из-за скорости компиляции. Так я к чему... Давайте подождём ещё пару десятков лет, когда скорость компьютеров будет стремиться к бесконечности, когда разница компиляции будет незаметна :). Всё равно не использовать мощный язык только из-за скорости компиляции - не есть прогресс!
P.S. Но я за объединение языков. Терпеть не могу #include политику, лучше uses. Отсутствие with раздражает. BuildWithRunTime... - УРОДСТВО
← →
Nic © (2006-07-19 14:26) [45]Просто области применения Delphi и MSVC++ разная, хотя кое-где и пересекаются.
← →
Bless © (2006-07-19 15:02) [46]мой вариант:
x2 - функция, возвращаются указатель на указатель на массив указателей на функции, возвращающие char
или иначе
x2 - функция, возвращаются массив указателей на массив указателей на функции, возвращающие char
или еще чуток расплывшись мыслею по древу
x2 - функция, возвращаются двумерный массив указателей на функции, возвращающие char
Я C++ почти не знаю, пусть сишники поправят :)
← →
Verg © (2006-07-19 15:33) [47]
> Bless © (19.07.06 15:02) [46]
Было быchar (*(*x2 ())[например,10]) ()
, мог бы быть двумерный
← →
Romkin © (2006-07-19 15:47) [48]Уточнил. Это действительно объявление функции x2 без параметров, которая возвращает указатель на массив указателей на функции без параметров, каждая из которых возвращает char :)))
ЫЫЫ!
← →
Bless © (2006-07-19 16:22) [49]
> Verg © (19.07.06 15:33) [47]
>
> Было бы
> char (*(*x2 ())[например,10]) ()
> , мог бы быть двумерный
Дык,указатель на массив тоже можно рассматривать как двумерный массив (при желании), что я и сделал.
Так что последняя трактовка из [46] - правильная, что подтверждается в [48].
Хотя справедливости ради надо отметить, что эта правильная третья трактовка получилась из неправильной второй (я ошибся, расшифровывая эту мантру, в результате чего получилась неправильная первая трактовка, а потом еще раз ошибся, преобразовывая вторую трактовку в третью, что привело к правильному результату) :)
← →
Verg © (2006-07-19 16:38) [50]
> Дык,указатель на массив тоже можно рассматривать как двумерный
> массив (при желании),
Тебе можно. Да хоть как 100-мерный.
Но, компилятору для этого одного желания мало. Чтобы он смог рассматирвать тот массив как двумерный, ему нужно ту [циферку] все же сообщить :)
← →
pasha_golub © (2006-07-19 16:57) [51]
> icWasya © (19.07.06 11:05) [28]
>
> про специфику http://www.pcmag.ru/archive/9705s/05s979.asp
ОГРОМНОЕ СПАСИБО ЗА СТАТЬЮ! Я оттуда почерпнул идею. И ведь, на самом-то деле, идея проста до безобразия. :0)
← →
аноним 3000 (2006-07-19 17:05) [52]
> Интересно было бы послушать про препроцессор в Delphi...
Стоп! компилятору на вход поступает строка в том виде в котором вы ее написали?
со всеми отступами, избыточными пробелами, комментариями, макросами условной компиляции?
Если это так, то да, в делфи нет препроцессора..
> Правда? D7 на Celeron 600 моментально компилирует весьма
> солидные проекты. Буквально 1-2-3 секунды, даже кофе не
> успеешь заварить :) VC7.1 компилирует даже небольшой проект
> ощутимо.
честно говоря, я за комп с процессором с частотой меньшей чем 2ГГц давно не садился 8-)
но не спорю, делфи работает быстрей..
но тем не менее в 2005-ой мелкомягким удалось значительно ускорить компиляцию..
по поводу
> char (*(*x2 ())[]) ()
имхо, ерунду написали.. это может быть только массивом указателей на функции, но это не так..
Воообще так никто не пишет. Не, конечно, проекты пишутся разными людьми, но если человек хочет чтоб его программа работала, он не будет так писать.
Я думаю, и на паскале можно не меньшую дурь написать..
а если хотите тяжелого кода на С++, посмотрите исходники Loki или Boost.
я думаю, удивления будет гораздо больше:)
← →
Bless © (2006-07-19 17:39) [53]
> имхо, ерунду написали.. это может быть только массивом указателей
> на функции, но это не так..
Гм...
MinGW скушал следующее определениеchar (*(*x2 ())[]) (){};
Так что это все-таки функция.
← →
Rouse_ © (2006-07-19 18:07) [54]Ну #define еще никто не отменял - так что так прямо сказать функция это или нет без полного листинга нельзя :)
← →
Romkin © (2006-07-19 18:17) [55]Rouse_ © (19.07.06 18:07) [54] Да он издевается над нами! (с)
← →
Verg © (2006-07-19 18:24) [56]
> аноним 3000 (19.07.06 17:05) [52]
> имхо, ерунду написали.. это может быть только массивом указателей
> на функции, но это не так..
а как?
"Истина где-то рядом"? (С) :))))
> Воообще так никто не пишет. Не, конечно, проекты пишутся
> разными людьми, но если человек хочет чтоб его программа
> работала, он не будет так писать.
> Я думаю, и на паскале можно не меньшую дурь написать..
Попробуй.
Думаешь Н.Вирт от нече делать Pascal разрабатывал?
> а если хотите тяжелого кода на С++, посмотрите исходники
> Loki или Boost.
> я думаю, удивления будет гораздо больше:)
УЖЕ страшшно удивительно :))
← →
Verg © (2006-07-19 18:32) [57]
> Гм...
> MinGW скушал следующее определение
> char (*(*x2 ())[]) (){};
А где же варнинг? Типа "функция обязана возвращать результат".
← →
Lamer@fools.ua © (2006-07-19 18:46) [58]>Типа "функция обязана возвращать результат".
Командир роты — обязян ©
:o)
← →
spotter (2006-07-19 18:51) [59]Должно быть так:
typedef char (*(*x2 ())[]) ();
← →
MeF Dei Corvi © (2006-07-19 19:03) [60]
> Попробуй.
Дурь написать можно везде ;)
Например:
if (a(.i] > Byte(^a)) or (a[i.) < a[i + 1]) then
(
if (str1 = #10#13) and (str1 > str2) then
str1 := ^(^П^Р^Е^В^Е^Д#32"МИР"^!^)
);
:)
← →
MeF Dei Corvi © (2006-07-19 19:06) [61]Кстати, компилятор C# работает довольно быстро ;)
← →
cyborg © (2006-07-19 19:12) [62]> [60] MeF Dei Corvi © (19.07.06 19:03)
Это не скомпилируется, даже если убрать опечатки.
← →
MeF Dei Corvi © (2006-07-19 19:14) [63]
> Это не скомпилируется, даже если убрать опечатки.
На D7 вот это:program Project1;
var a: Array[1..100] of Integer;
str1: String;
str2: String;
i: Byte;
begin
if (a(.i] > Byte(^a)) or (a[i.) < a[i + 1]) then
(
if (str1 = #10#13) and (str1 > str2) then
str1 := ^(^П^Р^Е^В^Е^Д#32"МИР"^!^)
);
end.
успешно компилиться и даже выполняется ;)
← →
Verg © (2006-07-19 19:17) [64]
> MeF Dei Corvi © (19.07.06 19:06) [61]
> Кстати, компилятор C# работает довольно быстро ;)
Компилятор PHP еще быстрее.
← →
cyborg © (2006-07-19 19:18) [65]Ничего себе, на шестёрке тоже компилируется :)
← →
cyborg © (2006-07-19 19:21) [66]Что зы бред, почему оно компилируется?
← →
Verg © (2006-07-19 19:23) [67]
> MeF Dei Corvi © (19.07.06 19:14) [63]
Знатный прикол.
← →
cyborg © (2006-07-19 19:25) [68]Я догадался, что (. равноценна [, но вот это str1 := ^(^П^Р^Е^В^Е^Д#32"МИР"^!^) первый раз вижу.
← →
аноним 3000 (2006-07-19 19:44) [69]пардон, ща проверил в студии
>char (*(*x2 ())[]) ()
это кушается...
скорее всего это определение указателя на функцию без параметров, которая возвращает указатель (=массив) на указатель на функцию типа char (*f) ();
я пытался разбить на typedefы
совершенно точно это эквивалентно
typedef char (*F1)();
F1 (*х2())[];
вот
← →
Piter © (2006-07-19 19:45) [70]Verg © (19.07.06 19:17) [64]
Компилятор PHP еще быстрее
а разве PHP - это компилятор? :)
← →
Verg © (2006-07-19 19:51) [71]
> аноним 3000 (19.07.06 19:44) [69]
Для начала очень неплохо.
← →
homm © (2006-07-19 21:50) [72]> ОГРОМНОЕ СПАСИБО ЗА СТАТЬЮ! Я оттуда почерпнул идею. И ведь,
> на самом-то деле, идея проста до безобразия. :0)
Хмм.. Еще один интузиаст взялся за написание компилятора? :)
← →
Verg © (2006-07-19 21:56) [73]
> homm © (19.07.06 21:50) [72]
Слава Богу, этого никогда не переведется... наверно, ХОТЕЛОЬСБЫ ;)
← →
Bless © (2006-07-20 09:29) [74]
> Verg © (19.07.06 18:32) [57]
> > Гм...
> > MinGW скушал следующее определение
> > char (*(*x2 ())[]) (){};
> А где же варнинг? Типа "функция обязана возвращать результат".
Я не в курсе дела, чукча пока только читатель c++, а не писатель:)
Варнинга не было. Но где-то в нете мне на глаза попадалось что-то по этом поводу. Кажись в какой-то статье со стонами по поводу низкого качества исходников, пришедших из Linux. Вроде как по умолчанию в gcc выключен вывод всех предупреждений. В смысле, выводятся не все, а только некоторые. Чтоб это отключить надо явно указать какой-то параметр компилятору в командной строке.
Может, поэтому?
← →
Verg © (2006-07-20 09:34) [75]-Wall
← →
Bless © (2006-07-20 09:55) [76]
> Verg © (20.07.06 09:34) [75]
> -Wall
>
main.cpp:2: warning: control reaches end of non-void function
← →
Verg © (2006-07-20 10:00) [77]
> Bless © (20.07.06 09:55) [76]
>
> > Verg © (20.07.06 09:34) [75]
> > -Wall
> >
>
>
> main.cpp:2: warning: control reaches end of non-void function
Да, это так gcc ругается.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.051 c