Thu Mar 17 2005 01:23, Olga Nonova wrote to Alex Kouznetsov:
ON>>> Компилятор может и не "забывает" ноль. Зато в приходящих из канала ON>>> связи пакетах можно встретить и не такие чудеса забывчивости. И ON>>> последствия фатальны для скомпилированной на Си программы.
AK>> Чушь.
ON> Hет.
AK>> Hет никакой разницы на чем скомпилирована программа, принимающая AK>> z-строки. Что на ассемблере, что на паскале, что на сях - обрабатываться AK>> строки должны одинаково. Это не языком определяется, а разработчиком.
ON> Мне очень нравится слово "должны".
"должны" - в том смысле, что позаботиться об этом должен программист, язык к этому не имеет отношения
ON> А как на самом деле происходит? ON> Представьте, оказывается до сих пор программы, написанные на C++ и на ON> Pascal с очень большим трудом находят общий язык между собой. Это ON> замечание обычно хорошо понятно хоть раз писавшим DLL-ки.
в огороде бузина...
AK>> Также нет никакой разницы, на каком языке написана программа, выдающая AK>> строки в канал связи. Если разработчик решил передавать z-строки, он их AK>> передаст и на паскале, и на сях. Если же он решил использовать строки со AK>> счетчиком, он опять же сделает их и на си и на паскале.
ON> Пример в студию, как на Си реализовать паскалевскую строку со счетчиком.
Pукопашное преобразование: #include <string.h>
char zstr[] = "примерчик"; char cstr[strlen(zstr)]; /* строка со счетчиком cstr[0] = strlen(zstr); for (int i=0; i<strlen(zstr); i++) cstr[i+1] = zstr[i]; Результат можешь выдавать в канал связи, раз тебе этого хочется.
ON> Hа Паскале это делается просто в декларациях:
ON> Var ON> MyString : string[32];
ON> И все. Сразу есть переменная, сразу понятен размер ее контейнера, ON> мгновенно получаете автоматичекий контроль выхода за допустимый диапазон ON> и можно спокойно плевать на забывчивость кем-то "закрывающих нулей".
Шило на мыло. Теперь рассмотри вариант, когда канал с помехами меняет значение счетчика.
AK>> Что касается самого канала связи с потерями, то не видно принципиальной AK>> разницы между использованием строки со счетчиком или z-строки. И в том и AK>> в другом случае потери/изменения каких-то байтов/битов могут оказаться AK>> "фатальными" для принимающей программы, если у написавшего эту программу AK>> сильно кривые руки, а в голове опилки.
ON> Погубят Вас эмоции. Да, все _может_ оказаться фатальным. Hо у сишных ON> z-строк вероятность этого "может" значительно больше.
Обоснуй
ON> Если Вы ON> представите, что все в этих строках держится исключительно на одном ON> хиленьком нолике в конце, то наверняка поймете справедливость моих ON> доводов.
Бред. "Погубят Вас эмоции" (c). Bсе в строках со счетчиком держится исключительно на одном хиленьком счетчикe в начале ;-)
AK>> Тем не менее, даже если какая-то разница есть, си не ограничивает AK>> свободу разработчика и не навязывает ему z-строки как _обязательные_ к AK>> использованию.
ON> Я бы сказала - нагибает к использованию z-строк. Попробуйте сами на Си ON> реализовать операции с нормальными, а не z-строками.
AK>> Так же как паскаль не навязывает использования строк со счетчиком. AK>> Преобразовать z-строку в строку со счетчиком и обратно - пустяковая AK>> задача на любом языке.
ON> Ой!
Даже это для тебя открытие? Меняй профессию...
AK>> И, наконец, никто в здравом уме не будет передавать "голые" строки по AK>> каналу с ошибками. Передаются пакеты, где должны быть предусмотрены AK>> соответствующие средства обнаружения ошибок и защиты. Если разработчик AK>> не использует эти механизмы, а допускает дальнейшую обработку битых AK>> пакетов, то ему надо бы менять профессию. Язык си не виноват, что этот AK>> человек взялся не за свое дело.
ON> Про механизмы проверки целостности приходящих пакетов- очень разумно.
Тогдa не нeси ахинею про строки, это не имеет отношения к задаче: "Зато в приходящих из канала связи пакетах можно встретить и не такие чудеса забывчивости. И последствия фатальны для скомпилированной на Си программы." (c) Тебе сразу было сказано, что это чушь.
ON> Уважаемый Алексей! Давайте вернемся к началу разговора. Он начался с RTOS ON> в исходниках на Си для встраивания в маленькие однокристаллки. В этом ON> конкретном случае использование Си представляется совершенно пагубным ON> занятием, а не вообще-"он плохой!".
Тоже чушь.
ON> Есть и другие случаи, когда ON> использование Си плохо, я их, надеюсь, показала.
Ты не показала ничего, кроме своего дремучего невежества и зашоренности. Сон разума рождает чудовищ (c)
Пока, Алексей