Oberon space

General Category => Общий раздел => Тема начата: Jordan от Ноябрь 30, 2012, 04:43:04 pm

Название: Возможно ли исправить дефекты языка си?
Отправлено: Jordan от Ноябрь 30, 2012, 04:43:04 pm
В реализации компиляторов си, нет проверки границ массива, даже статического.

Данную проверку невозможно реализовать? К примеру размер статического массива вычислить можно. С динамическим массивом поможет функция msize. Почему в компиляторах не реализуют данные проверки?
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: valexey_u от Ноябрь 30, 2012, 04:44:37 pm
В реализации компиляторов си, нет проверки границ массива, даже статического.

Данную проверку невозможно реализовать? К примеру размер статического массива вычислить можно. С динамическим массивом поможет функция msize. Почему в компиляторах не реализуют данные проверки?
В тьюринг-полном языке невозможно на этапе компиляции в общем случае проверить выход за границу даже статического массива.
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: valexey_u от Ноябрь 30, 2012, 04:46:05 pm
В реализации компиляторов си, нет проверки границ массива, даже статического.
А динамические проверки в Си есть. По крайней мере в некоторых реализациях при некоторых опциях.

Вообще, зачем Си, если есть C++? ;-)
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: Jordan от Ноябрь 30, 2012, 04:58:29 pm
Так в книжках по языкам и пишут, язык си, с++ не проверяет границы массива, и далее будьте внимательны не допускайте такие ошибки, сразу становится спокойно. :o

А в каких компиляторах?

Я имею ввиду проверку как в паскале.
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: valexey_u от Ноябрь 30, 2012, 05:13:41 pm
Так в книжках по языкам и пишут, язык си, с++ не проверяет границы массива, и далее будьте внимательны не допускайте такие ошибки, сразу становится спокойно. :o
Если кто-то в С++ использует Сишные недомассивы, то он сам себе злобный буратин.

А в каких компиляторах?

Я имею ввиду проверку как в паскале.
Ну, как минимум я подобное помню в вижуал-штудии в debug-mode.

Кстати, а как в Паскале? В каком паскале? Скажем в Обероне проверок нет :-)
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: Jordan от Ноябрь 30, 2012, 05:22:41 pm
Так в книжках по языкам и пишут, язык си, с++ не проверяет границы массива, и далее будьте внимательны не допускайте такие ошибки, сразу становится спокойно. :o
Если кто-то в С++ использует Сишные недомассивы, то он сам себе злобный буратин.

А в каких компиляторах?

Я имею ввиду проверку как в паскале.
Ну, как минимум я подобное помню в вижуал-штудии в debug-mode.

Кстати, а как в Паскале? В каком паскале? Скажем в Обероне проверок нет :-)

турбо паскаль, фри паскаль, при ошибке выдаёт в каком файле в какой строке ошибка. Для скорости проверку можно отключить.
В конкретном компиляторе нет или в стандарте языка?

Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: valexey_u от Ноябрь 30, 2012, 05:25:19 pm
В конкретном компиляторе нет или в стандарте языка?
У Оберона нет стандарта :-) Есть сообщение о языке. Там про границы массивов нет ничего. Также как и про деление на ноль например.

Впрочем, в мире паскаля и производных (кроме Ады) довольно наплевательски к стандартам относятся даже если они есть :-) Вот какому стандарту соответствует турбо-паскаль? ;-)
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: DIzer от Ноябрь 30, 2012, 05:26:12 pm
В реализации компиляторов си, нет проверки границ массива, даже статического.

Данную проверку невозможно реализовать? К примеру размер статического массива вычислить можно. С динамическим массивом поможет функция msize. Почему в компиляторах не реализуют данные проверки?
В тьюринг-полном языке невозможно на этапе компиляции в общем случае проверить выход за границу даже статического массива.
  ;D ;D ;D ;D ;D
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: ilovb от Ноябрь 30, 2012, 05:56:42 pm
Выправленный Си существует. Очевидно же это Объерон!  ;D
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: Geniepro от Ноябрь 30, 2012, 09:04:09 pm
Выправленный Си существует. Очевидно же это Объерон!  ;D
о_О А разве это не Cyclone (http://cyclone.thelanguage.org/)?
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: valexey_u от Ноябрь 30, 2012, 09:06:27 pm
Выправленный Си существует. Очевидно же это Объерон!  ;D
о_О А разве это не Cyclone (http://cyclone.thelanguage.org/)?
Который умер :-)
Название: Re: Возможно ли исправить дефекты языка си?
Отправлено: Geniepro от Ноябрь 30, 2012, 09:20:32 pm
Выправленный Си существует. Очевидно же это Объерон!  ;D
о_О А разве это не Cyclone (http://cyclone.thelanguage.org/)?
Который умер :-)
И что с того? Что мешает кому-надо оживить его? ))