Программисты, поясните что это

User avatar
SVK
Уже с Приветом
Posts: 8255
Joined: 23 Jul 2003 03:53
Location: SPb - KW - NY - CT - MD

Post by SVK »

-del
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

SVK wrote:При этом их рассуждения о функциях языка C и "пропущенных символах конца строки" [...] Или по крайней мере почитать про стандарты языка C... Иначе такого бы тут не написали... [...]


LOL. Эк вас колбасит! И повернулся же язык стандарты упомянуть ("про стандарты" - это 5).

Приведенные мною утверждения "о функциях языка C" и "пропущенных символах конца строки" являются прямыми цитатами из стандарта языка.
Last edited by AndreyT on 12 Sep 2006 19:30, edited 1 time in total.
Best regards,
Андрей
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

Ryzhusya wrote:Как вас всех унесло:-) ответ задачки дал/а Фигли. Всем огрoмное спасибo :fr:


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

Правильный ответ на данную задачу состоит из трех частей :umnik1: :

1) Сначала указать на некорректности постановки, которые я описал в своем сообщении выше (не претендуя на полноту). Чем больше некорректностей указано, тем полнее ответ.

2) Условно допустив некоторые "натяжки", адресующие проблемы из пункта 1, привести варианты "решений", типа тех, которые привел Фигли. Чем больше вариантов приведено, тем полнее ответ.

3) Глубокомысленно промурлыкать, что могут сущестовать и другие варианты решений. :mrgreen:
Best regards,
Андрей
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

Хорошее слово, "головолoмка". Отражает семантику. При ломании головы мозги обычно не выживают :)

SVK wrote:1) Все варианты Fig Lee (как и сама исходная задача, впрочем) производят бесконечный цикл с i от 0, -1, -2, -3, ....


Не все, только первые 3. Давайте тренировать внимание тогда может еще на нашем веку появится софт который не будет глючить :)

AndreyT wrote:..как настоящий anal retentive педант :umnik1: сообщу, что если расценивать это именно как программу, а не как фрагмент кода, то решения не существует ..


Kак не существует ядро линукс и 99% софта написанного не в соответствии со стандартом (которым из??) языка C
User avatar
vm__
Уже с Приветом
Posts: 11756
Joined: 10 Feb 2005 16:08
Location: CMH

Post by vm__ »

SVK wrote:... бесконечный цикл с i от 0, -1, -2, -3, .... (Точнее - цикл до переполнения с фиксированной точкой, обычно около 2^31 повторений, если кто доживет до этого счастливого момента)....

Теперь знаем, что такое "бесконечность" :mrgreen: :mrgreen: :mrgreen:
Подозреваю, что 2^31 - это где-то чуть больше двух миллиардов. Если в цикл много чего не напихивать, и крутить на двух-гигагерцевом процессоре - то есть шансы дожить :mrgreen: :mrgreen: :mrgreen:
Вот если бы 64 бита было, тогда совсем другое дело...
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

AndreyT wrote:Ситуация, когда автор постановки задачи сам толком не знает правильного ответа, не является какой-то необычной, как прекрасно понимают все участники технических дискуссий.



.. кроме автора постановки задачи :)
User avatar
venco
Уже с Приветом
Posts: 2001
Joined: 10 Nov 2004 00:34
Location: MD

Post by venco »

SVK wrote:бесконечный цикл с i от 0, -1, -2, -3, .... (Точнее - цикл до переполнения с фиксированной точкой, обычно около 2^31 повторений, если кто доживет до этого счастливого момента).

Ждать в наше время придётся не так уж и долго.
Даже на cygwin с довольно медленным выводом у меня этот цикл завершился за <5 минут.
Анекдот про быстрые процессоры Интел не на пустом месте возник. В то время действительно подобный "бесконечный" пустой цикл исполнялся за 7 секунд. Сейчас - за 1 секунду.
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

starkiller wrote:
AndreyT wrote:..как настоящий anal retentive педант :umnik1: сообщу, что если расценивать это именно как программу, а не как фрагмент кода, то решения не существует ..


Kак не существует ядро линукс и 99% софта написанного не в соответствии со стандартом (которым из??) языка C


В реальной жизни и треугольники бывают, у которых сумма уголов не 180 градусов. Сам мерял. Это, тем не менее, никак не влияет на школьный курс геометрии. Не надо мешать в одну кучу абстрактные задачи на языке С и грязноватые эксперименты из гаража дядюшки Линуса.
Best regards,
Андрей
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

starkiller wrote:
AndreyT wrote:Ситуация, когда автор постановки задачи сам толком не знает правильного ответа, не является какой-то необычной, как прекрасно понимают все участники технических дискуссий.


.. кроме автора постановки задачи :)


В данном случае автор, похоже, прекрасно это понимал,что несложно увидеть из заголовка сообщения: "Программисты, поясните что это". Но потом понимание, как мне показалось, как будто куда-то выветрилось...
Best regards,
Андрей
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

AndreyT wrote:Не надо мешать в одну кучу абстрактные задачи на языке С и грязноватые эксперименты из гаража дядюшки Линуса.


Что же по вашему такое "язык C"? K&R?
Только официальных стандартов существует с десяток.
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

starkiller wrote:
AndreyT wrote:Не надо мешать в одну кучу абстрактные задачи на языке С и грязноватые эксперименты из гаража дядюшки Линуса.


Что же по вашему такое "язык C"? K&R?
Только официальных стандартов существует с десяток.


Официальных станадартов у С существует ровно два: C89/90 и С99. Никаких других стандартов у С нет.

Мир, программирующий на С, сегодня программирует в подавляющем большинстве на C89/90. Какие-либо местечковые диалекты C89/90 являются не более чем недоделанным/урезанными/расширенными и т.п. реализациями C89/90 и именно так себя и позиционируют.

K&R стандартом не является. K&R, как книга, - это "рассуждения у камина по следам конкретной реализации".
Best regards,
Андрей
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

AndreyT wrote:K&R стандартом не является. K&R, как книга, - это "рассуждения у камина по следам конкретной реализации".


http://ru.wikipedia.org/wiki/%D0%A1%D0% ... 0%B8%D1%8F)
K&R ввёл следующие следующие особенности языка:

* записи (тип данных struct);
* длинное целое (тип данных long int);
* целое без знака (тип данных unsigned int);
* оператор += и подобные ему (старые операторы =+ вводили анализатор лексики компилятора Си в заблуждение, например, при сравнении выражений i =+ 10 и i = +10).

K&R C часто считают самой главной частью языка, которую должен поддерживать компилятор Си. Многие годы даже после выхода ANSI C, он считался минимальным уровнем, которого следовало придерживаться программистам, желающим добиться от своих программ максимальной портативности, потому что не все компиляторы тогда поддерживали ANSI C, а хороший код на K&R C был верен и для ANSI C.

8O
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

KP580BE51 wrote:...


И? Все равно K&R - не более чем описание языка "на пальцах" с элементами устного народного творчества. Существует определенный консенсус по поводу того, как должен работать K&R C и это можно назвать "де факто стандартом", но тем не менее настоящих стандартов у С только два.

Отдельно стоит заметить, что на "истинный" K&R в реальном программировании практически не встречается. То, что обычно называют "K&R", является на самом деле более поздним и более продвинутым AT&T развитием идей K&R с заимствованиями чуть ли не из зарождающегося C++.

В чистом K&R, например, имена полей структур должны быть уникальны среди всех структур в программе, ибо имя поля являлось глобальным идентификаторм смещения этого поля от некоей базовой точки в памяти. (Точнее, совпадение имен полей в разных структурах разрешалось, но только если совпадают и смещения). При этом разрешалось писать следующий код

Code: Select all

struct S { int t; };
...
0x123->t = 5;


Кто-нибудь из присутствующих программировал на таком C? А это и есть настоящий K&R.
Best regards,
Андрей
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

AndreyT wrote:
Мир, программирующий на С, сегодня программирует в подавляющем большинстве на C89/90. Какие-либо местечковые диалекты C89/90 являются не более чем недоделанным/урезанными/расширенными и т.п. реализациями C89/90 и именно так себя и позиционируют.


Вы о каком мире говорите? Такое ощущение что вы где то работаете в академических кругах или на консалтерскую контору. У них популярно программирование на "стандартном" С. Мир в основном пишет под GCC (что уж стандартным в вашем понимании C никак не назовешь) и других "местечковых диалектах".
Last edited by starkiller on 13 Sep 2006 18:44, edited 2 times in total.
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

AndreyT wrote:Кто-нибудь из присутствующих программировал на таком C? А это и есть настоящий K&R.


Кто-нибудь из присутствующих использует коаксиальный кабель Ethernet (10BASE2)? Нет? Тогда это уже в вашем понимании не стандарт? А стандарт остался "ровно один" - тот который вы используете.

Return to “Вопросы и новости IT”