AM>> Hе встречал разных компиляторов для одной платформы, чтобы у них AM>> были разные размеры одних и тех же типов,
GS>> Это не значит, что таких компиляторов не было. AM> Приведи примеры конкретных компиляторов.
GS> Сам поищи, точно были.
"Пойди туда - не знаю куда, принеси то - не знаю что". Впрочем, другого ответа от тебя и не следовало ожидать.
AM> Сишные программы пишутся сами по себе? А я думал стиль определяется AM> программистом.
GS> Программисты пишут сами по себе? А я думал, берут пример GS> с других программистов ;)
А я думал, придерживаются выбранного стиля, благо их и хороших много.
GS>> А человек, пытающийся понять сишную программу, не должен GS>> как минимум знать си? ;) M> Да, но один Си, а не 10 ассемблеров.
GS> Hет "одного Си", есть куча разных реализаций. И это не противоречит GS> стандарту этого языка. Классический "ярко выраженный" пример gnu-тый GS> компилятор Си, который существенно отличается от классического, но GS> несмотря на это, им активно пользуются, так что необходимость программы GS> читать и модифицировать вполне может возникнуть...
Почти у всех компиляторов, которые я встречал есть опция компиляции в режиме ANSI C. Для желающих.
GS>> В реальной жизни приходится разбираться не с учебными GS>> примерами, а с реальными исходниками.
AM> Мне как-то больше приходится писать свои.
GS> Понимаю. Hо не поверю, что ты _сразу_ начал писать свои программы GS> в грамотном стиле. Hаверняка, как и любой из нас, поначалу "прошёлся GS> по граблям" ;)
Ну и? Это, имхо, вообще не отностися к языку. Больше к приобретению опыта вообще, в любой области. Никогда ничего не получается сразу, вот так "по щучьему велению".
GS>> Hаиболее типичное GS>> занятие такого рода - ковыряние в исходниках Linux. AM> Я не ковыряюсь.
GS> Достаточно распространено мнение, что при серьёзной работе под Linux GS> без такого ковыряния обойтись почти невозможно...
Я не работаю под Linux. Он не ставится по 8 и 16 битные контроллеры. Работал бы на 32-битных, возможно и смотрел бы туда.
GS>> Ты считаешь, что все они выдержаны в "правильном" стиле? AM> Я их вообще в глаза не видел.
GS> Посмотри. Может поймёшь, о чём шла речь.
Зачем? Я не собираюсь рассуждать о том, что можно написать плохо. Я в этом и не сомневаюсь, применитьно к любому языку можно написать плохо.
AM> Зачем они мне в embedded?
GS> Если мне придётся делать достаточно сложную систему на базе встраиваемого GS> процессора, скорее всего я пойду по пути адаптации одного из "крошечных" GS> линуковских ядер к одному из "встраиваемых" процессоров семейства x86. GS> Это, IMHO, существенно ускорит работу. GS> Какие предложишь альтернативы?
Если бы да кабы. Должны быть поставлены исходные условия задачи. Я, возможно, для достаточно сложной системы (впрочем я считаю, что текущие мои разработки относятся к доcтаточно сложным системам по функциональности и объему кода) возьму uCOS-II
AM> Впрочем, я приведу контр пример, uCOS-II. Посмотри на сайте uCOS,
GS> Увы, у меня по-прежнему очень ограничен доступ к инету.
Могу лишь посочувствовать.
AM> под сколько процессоров портирована ОС, исходники ОС при этом не AM> меняются, то есть машинонезависимость соблюдается в полной мере.
GS> Исходники открыты?
Открыты, для образовательных целей. Официально приобретаются вместе с книгой по uCOS-II (стоимость где-то около $50). Неофициально можно найти во многих местах по и-нету.
GS>> С типичным. Который этот язык, к сожалению, провоцирует. AM> Чушь, подход определяется программистом,
GS> Да. Hо программисты существуют не на необитаемом острове и вырабатывают GS> свой стиль с учётом работы других программистов. По жизни.
Это отностися к любому языку.
AM> и может быть плох как на асм, так и на Си.
GS> Да, бесспорно.
Тогда и не надо приводить эти аргументы против Си. Не о том речь.
AM> Я реализую свои задачи, пользуясь определенным стилем, AM> какое мне дело до того, что кто-то делает по другому?
GS> Цирковые артисты показывают чудеса ловкости, разъезжая по арене GS> на одноколёсных велосипедах, при этом жонглируя разными предметами. GS> Hо это вовсе не значит, что так могут поступать все, потому подобная GS> езда в потоке уличного транспорта не считается приемлимой. Для GS> большинства "нормальных" водителей придумывают средства передвижения, GS> не требующие для вождения "цирковых" навыков.
Я отношу себя к нормальным водителям. Это ты любишь цирковые "трюки".
AM> Это определяется опять же стилем,
GS> Если язык намерено разработан с поддержкой "трюков", то такой стиль GS> в нём считается (как минимум) приемлимым. И на нём _будут_ программировать GS> в таком стиле, поскольку это даёт некоторые преимущества (уменьшение GS> исходника, повышенная эффективность и т.п.)
Не философствуй, приведи примеры.
AM> Си не обязывает использовать какие-то трюки.
GS> Он их _поощряет_.
Чушь. Приведи пример трюков. Только не надо опять сдвигать флоат.
AM> Для переменной цикла действительно часто i и j.
GS> Это уже уменьшение "самодокументированности" программы. Поскольку GS> переменная цикла тоже несёт вполне определённый _смысл_.
Мне решать, какой она смысл несет. И не о том речь. Речь о твоем утверждении об оверхеде кода после компилятора Си, на порядок по сравнению с асм. Не приведя никаких конкретных доказательств ты уiел от темы разговора в обсужение самодокументирования.
AM> Для других переменных - свои ясно читаемые имена. Hо это опять не AM> имеет отношения к языку Си, а зависит от программиста.
GS> Hет. Конструкции этого языка читабельны при компактной GS> записи, попытка "развернуть", к примеру, конструкцию GS> for (инициализация; проверка_завершения; изменения) тело_цикла, GS> используя "самодокументирующие" имена, приведёт к тому, GS> что отдельная команда "раздуется" и потеряет наглядность.
Мне интересно доказательство большого оверхеда Си, а не обсуждение самодокументированности конструкций языка.
GS>> Весьма существенная часть программистов так любит экономить на GS>> нажатии кнопок ;) AM> Давно пора приучиться говорить только за себя.
GS> А по существу что скажешь? ;-)
По существу я собираюсь отвечать только за себя, а не за среднестатического программиста. Разговариваешь со мной? Вот и говори со мной, а не с "существенной частью программистов". По существу твоего утверждения об огромном овержеде Си что можешь сказать?
GS>> Ибо строгое следование хорошему стилю программирования GS>> требует дополнительных усилий от программиста (как правило GS>> ленивого).
AM> Говори только за себя, а не оценивай среднестатистического AM> программиста.
GS> Hе идиализируй "среднестатистического программиста". Он обычный человек, GS> такой-же ленивый, склонный к ошибкам и "зевкам", как любой другой человек.
Я не идеализирую, я отвечаю от своего имени, а не от имени армии программиистов на Си. Но по существу вопроса я пока ничего не услышал, кроме утверждений о том, что ты сам не пробовал и не знаешь.
AM> Я могу также сказать, что среднестатистический программист AM> на асм делает куда более нечитаемый код, по сравнению с AM> аналогичным программистом на Си
GS> Да. Hо при программировании на ассемблере действует очень жёсткий GS> "естественный отбор",
А, то-то на асм все меньше программиистов, видать скоро все вымрут.
GS> "ламерские" программы не создают видимость GS> нормальной работы. Программист, который создаёт чётко работающие GS> ассемблерные программы, как правило, научился на собственном опыте GS> придерживаться хорошего стиля. Это даёт ему возможность отлаживать GS> и сопровождать программу. Что касается "хакеров", которые из принципа GS> лепят невразумительный код - они способны проделывать это на _любом_ GS> языке программирования.
Ну что тебе сказать. Ты ловко умеешь менять тему разговора в сторону, где можно налить много "воды" и поразводить руками.
AM>> памяти, но и килобайт, и мегабайт. А в эхотажных будет то, что я AM>> привел. GS>> В эхотажных я наблюдал разницу в разы на процах i51 и PIC...
AM> Каким компиялтором для х51 при этом пользовался?
GS> Понятия не имею, я не пишу на C для 51-го семейства и не интересовался GS> такими подробностями у создателей софта, который удавалось "ужать" GS> на порядок. И не думаю, что выбор более подходящего компилятора привёл GS> бы к чуду. Верю в улучшение на 10%, на 30%, но никак не на 90%...
Так может нужно не полагаться на веру, а убедиться самому. Хотя бы в своей правоте. Чтобы потом хотя бы приводить в доказательства конкретный код, созданный компилятором 1000% оверхед. А то руками водить в воздухе у всех получается хорошо.
GS>> Для человека, который знает C заметно лучше, чем ассемблер - да. GS>> Hо если привлечь специалиста по ассемблеру и грамотно GS>> сформулировать задачу - будет гораздо эффективнее... AM> Hа 15%
GS> Или в 15 раз! ;)
Только хи-хи да ха-ха. Пример приведи. Код на Си, листинг после компилятора, альтернативную реализацию на ассмеблере, в 15 раз меньшую.
AM>>> на асме возможно чуть более оптимально, но и то не везде. GS>>> Иногда можно написать эффективнее на порядок. Hа ассемблере. AM>> Эти иногда - не более 1% кода. GS>> А иногда - 99% ;) AM> Такого не бывает.
GS> В эхотажных приложениях - очень и очень часто.
Приведи пример конкретного кода. Здесь и сейчас.
GS>>> И то, постоянно выдумываются хитрые трюки... AM>> Что такое трюки? GS>> Побочные и нетривиальные действия.
AM> Hапример?
GS> k[j++] = x = (++i Кратко, но абсолютно невразумительно.
:)))) Георгий, ты же постоянно твердишь, что это ты выдумываешь хитрые трюки, позволяющие в разы уменьшать код программы на ассемблере. Я просил привести тебя пример таких трюков, потому что я не могу понять, что есть твои трюки. Ты же мне приводишь какой-то код Си.
GS> "Вменяемые" действия алгоритма желательно иметь возможность GS> достаточно просто описать на естественном языке.
Приведи пример своих трюков на ассемблере, которые магическим образом позволяют ужfть программу в разы. Надеюсь, это не ноу-хау.