Ada_Ru форум

Обсуждение языка Ада

Why no to use standart lib in production?

Оставить новое сообщение

Сообщения

Alexandre
Why no to use standart lib in production?
2005-04-16 12:50:47
Объясните, пожалуйста, почему в книге "Ada distilled" сказано, что в  
"production" никогда не надо использовать код стандартной библиотеки  
(для типа Float)?

Имеется ввиду страница 93, абзац:
======================================================================== 
============================
Warning: Do not use predefined Float from package Standard in your  
production programs. This type is useful for student programs but is  
not well-suited to portable software targeted to some actual production  
application.
======================================================================== 
============================

Что не так в стандартном Float?

Заранее спасибо,
Удачи,
/Александр.
Мазнёв Николай
Re: [ada_ru] Why no to use standart lib in production?
2005-04-16 18:38:12
Здравствуйте, Alexandre.

Вы писали 16 апреля 2005 г., 16:50:47:


> Объясните, пожалуйста, почему в книге "Ada distilled" сказано, что в
> "production" никогда не надо использовать код стандартной библиотеки
> (для типа Float)?

> Имеется ввиду страница 93, абзац:
> ========================================================================
> ============================
> Warning: Do not use predefined Float from package Standard in your  
> production programs. This type is useful for student programs but is
> not well-suited to portable software targeted to some actual production
> application.
> ========================================================================
> ============================

> Что не так в стандартном Float?

  Во-первых я здесь вижу не про всю стандартную библиотеку, а только про
Float.
  Во-вторых, по моему пониманию, это касается не только Float, но
и допустим Integer.
  Причина - открывая Reference Manual читаем, что:
  
type Integer is range implementation-defined;
type Float is digits implementation-defined;

т.е. перейдя на другую платформу или даже другой компилятор, можешь
вляпаться в несовпадения точности вычисления и нехватку разрядной
сетки.
  То же самое можно получить применяя тип int в С.

С уважением,
 Николай                          mailto:nmaznyov@...
Alexandre
Re: [ada_ru] Why no to use standart lib in production?
2005-04-16 19:34:03
On Apr 16, 2005, at 22:38, Николай Мазнёв wrote:

>   Во-первых я здесь вижу не про всю стандартную библиотеку, а только 
> про
> Float.

Именно это и имелось в виду.

>   Во-вторых, по моему пониманию, это касается не только Float, но
> и допустим Integer.
>   Причина - открывая Reference Manual читаем, что:
>
> type Integer is range implementation-defined;
> type Float is digits implementation-defined;
>
> т.е. перейдя на другую платформу или даже другой компилятор, можешь
> вляпаться в несовпадения точности вычисления и нехватку разрядной
> сетки.
>   То же самое можно получить применяя тип int в С.

Но тип int в C имеет некоторые гарантированные границы на которые можно 
рассчитывать и, если честно, я редко встречал переопределение этого 
типа  (хотя не могу, конечно, похвастаться большим опытом).

А как тогда надо делать в Ada (правильно)?


Удачи,
/Александр.
Cyril Sazonov
Re: [?? Probable Spam] Re: [ada_ru] Why no to use standart lib inproduction?
2005-04-16 23:52:03
Hello!

On Sat, 16 Apr 2005, Alexandre wrote:

> >   Причина - открывая Reference Manual читаем, что:
> >
> > type Integer is range implementation-defined;
> > type Float is digits implementation-defined;
> >
> > т.е. перейдя на другую платформу или даже другой компилятор, можешь
> > вляпаться в несовпадения точности вычисления и нехватку разрядной
> > сетки.
> >   То же самое можно получить применяя тип int в С.
> 
> Но тип int в C имеет некоторые гарантированные границы на которые можно 
> рассчитывать и, если честно, я редко встречал переопределение этого 
> типа  (хотя не могу, конечно, похвастаться большим опытом).
> 
> А как тогда надо делать в Ada (правильно)?

type REAL is new FLOAT digits 6 ;

И дальше только им и пользоваться.

                                       Sincerely yours Cyril Sazonov
Vadim Godunko
Re: [?? Probable Spam] Re: [ada_ru] Why no to use standart lib inproduction?
2005-04-17 04:45:36
Cyril Sazonov wrote:
> 
> type REAL is new FLOAT digits 6 ;
> 
Не совсем корректно. При этом никогда не удасться создать тип, имеющий
большую точность, чем Float. Ada предоставляет более гибкий механизм:

type Real is digits 6;

можно ещё и накладывать ограничения:

type Real is digits 6 range -1.0 .. 1.0;

А также использовать два других типа чисел:

type Fixed delta 0.01 range 0.0 .. 100.0;

type Decimal delta 0.01 digits 5;

type Decimal delta 0.01 digits 6 range 0.0 .. 100.0;


-- 
Vadim Godunko
Alexandre
Re: [?? Probable Spam] Re: [ada_ru] Why no to use standart lib in production?
2005-04-17 06:36:00
Спасибо за объяснения!


Удачи,
/Александр.

On Apr 17, 2005, at 08:45, Vadim Godunko wrote:
Maxim Reznik
Re: [ada_ru] Why no to use standart lib in production?
2005-04-17 15:23:29
On Sat, Apr 16, 2005 at 11:34:03PM +0400, Alexandre wrote:
> On Apr 16, 2005, at 22:38, Николай Мазнёв wrote:
> 
> >   Во-первых я здесь вижу не про всю стандартную библиотеку, а только 
> > про
> > Float.
> 
> Именно это и имелось в виду.
> 
> >   Во-вторых, по моему пониманию, это касается не только Float, но
> > и допустим Integer.
> >   Причина - открывая Reference Manual читаем, что:
> >
> > type Integer is range implementation-defined;
> > type Float is digits implementation-defined;
> >
> > т.е. перейдя на другую платформу или даже другой компилятор, можешь
> > вляпаться в несовпадения точности вычисления и нехватку разрядной
> > сетки.
> >   То же самое можно получить применяя тип int в С.
> 
> Но тип int в C имеет некоторые гарантированные границы на которые можно 
> рассчитывать и, если честно, я редко встречал переопределение этого 
> типа  (хотя не могу, конечно, похвастаться большим опытом).

Ага, типа минимуи 16 бит. А если хочешь гарантировать более точное
определение - пользуйся извращениями типа ./configure :-)

А переопределений нет от слабой типизации в языке. 
Хотя люди как-то живу с этим. Вспомнить хотя бы size_t.


> 
> А как тогда надо делать в Ada (правильно)?
> 

Правильно определить свои типы, точно задавая диапазоны и
точность. Это гарантирует не только переносимость, но и 
позволяет компилятору контролировать працильность операций,
чтоб случайно не сложить часы и километры.

> 
> Удачи,
> /Александр.
> 

-- 
Maxim Reznik
Alexandre
Re: [ada_ru] Why no to use standart lib in production?
2005-04-17 18:37:34
On Apr 17, 2005, at 19:23, Maxim Reznik wrote:
> Ага, типа минимуи 16 бит. А если хочешь гарантировать более точное
> определение - пользуйся извращениями типа ./configure :-)

Ну можно просто писать исходя из минимума... Хотя, про configure, 
конечно, верно... =)

> А переопределений нет от слабой типизации в языке.
> Хотя люди как-то живу с этим. Вспомнить хотя бы size_t.

Кошмар, по-моему...

>>
>> А как тогда надо делать в Ada (правильно)?
>>
>
> Правильно определить свои типы, точно задавая диапазоны и
> точность. Это гарантирует не только переносимость, но и
> позволяет компилятору контролировать працильность операций,
> чтоб случайно не сложить часы и километры.

Да, просто принципиально другой подход к процессу у Ада программистов 
(с небольшой белой завистью =) ).


Удачи,
/Александр.
Cyril Sazonov
Re: [?? Probable Spam] Re: [ada_ru] Why no to use standart lib inproduction?
2005-04-17 22:31:41
Hello!

On Sun, 17 Apr 2005, Vadim Godunko wrote:

> 
> Cyril Sazonov wrote:
> > 
> > type REAL is new FLOAT digits 6 ;
> > 
> Не совсем корректно. При этом никогда не удасться создать тип, имеющий
> большую точность, чем Float. Ada предоставляет более гибкий механизм:
> 
> type Real is digits 6;
> 
> можно ещё и накладывать ограничения:
> 
> type Real is digits 6 range -1.0 .. 1.0;
> 
> А также использовать два других типа чисел:
> 
> type Fixed delta 0.01 range 0.0 .. 100.0;
> 
> type Decimal delta 0.01 digits 5;
> 
> type Decimal delta 0.01 digits 6 range 0.0 .. 100.0;

Строго говоря, систему используемых типов надо проектировать в соответствие с
решаемой задачей начиная со скалярных типов, используя стандартные как печку, 
от которой пляшут.

                                       Sincerely yours Cyril Sazonov
Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти