[07:12:15] <landgraf> через переменные окружения
[08:32:38] <vgodunko> Ура!!! Собралось!!!
[10:20:28] <landgraf> надо это отметить
[10:24:30] <vgodunko> Это да, крови оно мне попило порядком
[10:47:21] <virtual_lark> /me почитал Ada95 RM :-) ещё раз убедился, что в книге А.Гаавы небольшая неточность.
[11:52:10] <Okasu> virtual_lark, какая неточность?
[11:53:29] <nordwind> а она еще актуалььна?
[11:53:40] <nordwind> вроде ж новый стандарт?
[11:54:16] <Okasu> nordwind, а новой книги А.Гаавы нет :)
[11:54:45] <Okasu> /me читал её, вполне ок для старта
[11:54:51] <Okasu> дальше только рм
[11:56:20] <nordwind> РМ? Refarence manual?
[11:56:31] <nordwind> *fe
[11:57:05] <virtual_lark> Okasu: в нижней границе типа Integer указано -2**31, а на самом деле -(2**31 - 1)
[11:59:01] <Okasu> это зависит от железки, не?
[11:59:03] <Okasu> >
[11:59:05] <Okasu> In an implementation, the range of Integer shall include the range –2**15+1 .. +2**15–1.
[11:59:23] <Okasu> так что пофиг, стандарту то соответствует
[12:02:26] <Okasu> nordwind, да
[12:22:55] <virtual_lark> Ну это понятно. В книге Гаввы оговорка про GNAT для 32бит.
[12:23:01] <virtual_lark> Вот здесь (http://www.ada-ru.org/V-0.4w/part_1/ch_02.html#s2.2) есть
неточность: "для реализации компилятора GNAT диапазон значений типа
Integer будет от
-(2 ** 31) до +(2 ** 31 - 1)). "
в действительности же нужно: "для реализации компилятора GNAT диапазон
значений типа Integer будет от
-(2 ** 31 - 1) до +(2 ** 31 - 1))."
[12:24:11] <virtual_lark> Вот пример http://pastebin.com/17esXu6v
[12:24:42] <virtual_lark> $ gnatmake integer_range.adb
gcc-4.6 -c integer_range.adb
integer_range.adb:11:11: warning: value not in range of type "Standard.Integer"
integer_range.adb:11:11: warning: "Constraint_Error" will be raised at run time
[12:27:43] <virtual_lark> В книге Ada distilled такая же опечатка )
[12:27:55] <virtual_lark> в Ada95 RM всё как надо.
[12:30:57] <gour> http://ideone.com/5jE2E
[12:31:16] <gour> raised CONSTRAINT_ERROR : prog.adb:11 overflow check failed
[12:31:34] <virtual_lark> ч.т.д.
[12:31:42] <gour> (gnat-4.3.2)
[12:31:52] <virtual_lark> да любой рабочий
[13:24:12] <virtual_lark> кстати, хехе в мегаязыке си/си++ при делении int на int в аналогичных обстоятельствах вообще ничего не происходит. при делении на 0 хоть типа прерывание валится.
[13:24:59] <virtual_lark> int a, b, c; a = INT_MIN; b = -1; c = a * b; или тоже самое что и для c = a / b;
[14:09:49] <gour> там нет проверки на переполнение. afair это в стандарте указано
[14:38:46] <Okasu> тем не менее куриосити на ц :/
[16:51:14] <vgodunko> virtual_lark: это устаревшие сведения, GNAT Pro сейчас работает по другому, у него в основе основ какая-то библиотека безразмерной арифметики