Программисты, поясните что это
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
SVK wrote:При этом их рассуждения о функциях языка C и "пропущенных символах конца строки" [...] Или по крайней мере почитать про стандарты языка C... Иначе такого бы тут не написали... [...]
LOL. Эк вас колбасит! И повернулся же язык стандарты упомянуть ("про стандарты" - это 5).
Приведенные мною утверждения "о функциях языка C" и "пропущенных символах конца строки" являются прямыми цитатами из стандарта языка.
Last edited by AndreyT on 12 Sep 2006 19:30, edited 1 time in total.
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Ryzhusya wrote:Как вас всех унесло:-) ответ задачки дал/а Фигли. Всем огрoмное спасибo
Ситуация, когда автор постановки задачи сам толком не знает правильного ответа, не является какой-то необычной, как прекрасно понимают все участники технических дискуссий.
Правильный ответ на данную задачу состоит из трех частей
![Mentor :umnik1:](./images/smilies/umnik.gif)
1) Сначала указать на некорректности постановки, которые я описал в своем сообщении выше (не претендуя на полноту). Чем больше некорректностей указано, тем полнее ответ.
2) Условно допустив некоторые "натяжки", адресующие проблемы из пункта 1, привести варианты "решений", типа тех, которые привел Фигли. Чем больше вариантов приведено, тем полнее ответ.
3) Глубокомысленно промурлыкать, что могут сущестовать и другие варианты решений.
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 891
- Joined: 21 Mar 2005 21:18
- Location: California
Хорошее слово, "головолoмка". Отражает семантику. При ломании головы мозги обычно не выживают
Не все, только первые 3. Давайте тренировать внимание тогда может еще на нашем веку появится софт который не будет глючить![Smile :)](./images/smilies/icon_smile.gif)
Kак не существует ядро линукс и 99% софта написанного не в соответствии со стандартом (которым из??) языка C
![Smile :)](./images/smilies/icon_smile.gif)
SVK wrote:1) Все варианты Fig Lee (как и сама исходная задача, впрочем) производят бесконечный цикл с i от 0, -1, -2, -3, ....
Не все, только первые 3. Давайте тренировать внимание тогда может еще на нашем веку появится софт который не будет глючить
![Smile :)](./images/smilies/icon_smile.gif)
AndreyT wrote:..как настоящий anal retentive педантсообщу, что если расценивать это именно как программу, а не как фрагмент кода, то решения не существует ..
Kак не существует ядро линукс и 99% софта написанного не в соответствии со стандартом (которым из??) языка C
-
- Уже с Приветом
- Posts: 11756
- Joined: 10 Feb 2005 16:08
- Location: CMH
SVK wrote:... бесконечный цикл с i от 0, -1, -2, -3, .... (Точнее - цикл до переполнения с фиксированной точкой, обычно около 2^31 повторений, если кто доживет до этого счастливого момента)....
Теперь знаем, что такое "бесконечность"
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Подозреваю, что 2^31 - это где-то чуть больше двух миллиардов. Если в цикл много чего не напихивать, и крутить на двух-гигагерцевом процессоре - то есть шансы дожить
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Вот если бы 64 бита было, тогда совсем другое дело...
-
- Уже с Приветом
- Posts: 891
- Joined: 21 Mar 2005 21:18
- Location: California
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
SVK wrote:бесконечный цикл с i от 0, -1, -2, -3, .... (Точнее - цикл до переполнения с фиксированной точкой, обычно около 2^31 повторений, если кто доживет до этого счастливого момента).
Ждать в наше время придётся не так уж и долго.
Даже на cygwin с довольно медленным выводом у меня этот цикл завершился за <5 минут.
Анекдот про быстрые процессоры Интел не на пустом месте возник. В то время действительно подобный "бесконечный" пустой цикл исполнялся за 7 секунд. Сейчас - за 1 секунду.
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
starkiller wrote:AndreyT wrote:..как настоящий anal retentive педантсообщу, что если расценивать это именно как программу, а не как фрагмент кода, то решения не существует ..
Kак не существует ядро линукс и 99% софта написанного не в соответствии со стандартом (которым из??) языка C
В реальной жизни и треугольники бывают, у которых сумма уголов не 180 градусов. Сам мерял. Это, тем не менее, никак не влияет на школьный курс геометрии. Не надо мешать в одну кучу абстрактные задачи на языке С и грязноватые эксперименты из гаража дядюшки Линуса.
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
starkiller wrote:AndreyT wrote:Ситуация, когда автор постановки задачи сам толком не знает правильного ответа, не является какой-то необычной, как прекрасно понимают все участники технических дискуссий.
.. кроме автора постановки задачи
В данном случае автор, похоже, прекрасно это понимал,что несложно увидеть из заголовка сообщения: "Программисты, поясните что это". Но потом понимание, как мне показалось, как будто куда-то выветрилось...
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 891
- Joined: 21 Mar 2005 21:18
- Location: California
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
starkiller wrote:AndreyT wrote:Не надо мешать в одну кучу абстрактные задачи на языке С и грязноватые эксперименты из гаража дядюшки Линуса.
Что же по вашему такое "язык C"? K&R?
Только официальных стандартов существует с десяток.
Официальных станадартов у С существует ровно два: C89/90 и С99. Никаких других стандартов у С нет.
Мир, программирующий на С, сегодня программирует в подавляющем большинстве на C89/90. Какие-либо местечковые диалекты C89/90 являются не более чем недоделанным/урезанными/расширенными и т.п. реализациями C89/90 и именно так себя и позиционируют.
K&R стандартом не является. K&R, как книга, - это "рассуждения у камина по следам конкретной реализации".
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
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.
![Shocked 8O](./images/smilies/icon_eek.gif)
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
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,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 891
- Joined: 21 Mar 2005 21:18
- Location: California
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.
-
- Уже с Приветом
- Posts: 891
- Joined: 21 Mar 2005 21:18
- Location: California