Здравствуйте, IID, Вы писали:
IID>Это не только в линуксе. В NT тоже самое. И в любом микроконтроллере, где нету стандартного С++ стартапа. Надо стартап правильный написать. И никаких часов отладки с дизассемблером. Просто не надо быть [censored] и надо знять что для Ц/Ц++ есть инициализаторы и финализаторы которые исполняются до/после мэйна стартапом.
IID>Для чистого Си это тоже актуально, странно что ты не в курсе. Статики-то надо инитить, и в _atexit напиханные функции вызывать.
Если Вы про .init/.fini _start/_end, то не это проблемы создаёт.
Ядро, при сборке, линкуется в некоторое виртуальное адресное пространство.
И некоторая его часть, которая исполняется на старте, в которое управление
передаёт загрузчик, линкуется вне этого пространства, которое
работает в режиме реальных адресов, но которому должны быть доступны объекты,
слинкованные в простарнство виртульных адресов, для их инициализации.
И в этом пространстве многие объекты должны распологаться на строго
определённых участках, отмеряемых в смещениях между объектами, занимать
строго определённое местоположение относительно других.
Такая тонкая организация карты расположения объектов возможно только
на чистом С, и С++ с его служебными полями, которые компилятор помещает
в память, занимаемую объектами, так как ему захочется, здесь нарушит всю
структуру и карту пространства памяти в которое линкуется ядро. Поэтому
никаких классов, конструкторов, шаблонов, динамического полиморфизма
через виртуальные фукнции и прочие С++-змы.
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Здравствуйте, Abyx, Вы писали:
A>>нет, конечно они не совместимы на все 100%. A>>в С есть еще есть опасные вещи типа неявного каста void* в любой тип.
AWW>То есть для того что бы не делать ошибок на СИ нужна выскокая квалификация програмиста, а на С++ можно избежать ошибок и используя менее квалифицированную рабсилу.
Это заблуждение. В мире СИ нужно делать много специфической работы, которой нет в других ЯП. Безусловно, минусом это является только когда речь заходит о вполне конкретных задачах, типа "сделать за 2 часа и чтоб работало".
Здравствуйте, Abyx, Вы писали:
1>>Знаете, мне почему то кажется что так можно написать к любому отношению ххх/ххх+.
A>да, можно, и что?
То что это не конструктивно и довольно категорично. A>у тебя много таких пар ххх/ххх+ ?
А причем тут пары? Берите все что угодно вместо них.
Собственно в ваших собственных рассуждениях можно заменить С на С++, а С++ на С)))
Re[25]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, smeeld, Вы писали:
S>Ядро, при сборке, линкуется в некоторое виртуальное адресное пространство. S>И некоторая его часть, которая исполняется на старте... S> многие объекты должны распологаться на строго S>определённых участках... S>С++ с его служебными полями, которые компилятор помещает S>в память, занимаемую объектами, так как ему захочется
Наверное, в детерминированной программе, каковой является гипотетический компилятор C++ "как захочется" означает определённых набор правил?
S>структуру и карту пространства памяти в которое линкуется ядро. Поэтому S>никаких классов, конструкторов, шаблонов, динамического полиморфизма S>через виртуальные фукнции и прочие С++-змы.
Шаблоны-то тут при чём, раз всё линкуется статически?
Re[8]: Достаточно ли знать С без знания С++ для устройства н
Здравствуйте, andyag, Вы писали:
AWW>>То есть для того что бы не делать ошибок на СИ нужна выскокая квалификация програмиста, а на С++ можно избежать ошибок и используя менее квалифицированную рабсилу.
A>Это заблуждение. В мире СИ нужно делать много специфической работы, которой нет в других ЯП. Безусловно, минусом это является только когда речь заходит о вполне конкретных задачах, типа "сделать за 2 часа и чтоб работало".
Ну никакое это не заблуждение )).
В СИ очень много работы на прямую с памятью, в С++ это постарались убрать, точнее дали возможность этого избежать.
Прямая работа с помятью, (выделение, освобождение, инициализация ) всегда генерирует множество ошибок. То есть на СИ писать сложнее, но когда это необходимо то нужна более квалифицирванная рабсила.
То есть СИ более низкоуровневый язык, а чем ниже уровень, тем ближе к "железу", тем выше нужна квалификация. Ну что бы написать тоже самое на C# надо скажем 10 строчек, на СИ надо 100. C# даст кучу предупреждений которые в силу самого языка вожможно выявить и подсказать программисту.
В СИ есть у тебя указатель на буфер, это просто адрес, и крутись как хочешь — весь контроль тебе передали, в С++ уже есть ссылки, ошибок наделать можно меньше.
Если в языке много поводов сделать ошибок, это писать на нем без ошибок — нужна более высокая квалификация.
Мы сейчас говорим, я надеюсь все это понимают, что имеется ввиду что если С++, то уже без указателей. Ну просто так как СИ и С++ есть близкие языки, то можно естественно и на С++ делать так же как обычно принято на СИ. То есть грань этак "проще" "легче" почти не видна.
Но суть еще раз в том, что — чем ниже язык по уровню, тем выше нужна квалификация что бы делать качественный код. И в вопросе архитектуры кстати тоже.
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>То есть для того что бы не делать ошибок на СИ нужна выскокая квалификация програмиста, а на С++ можно избежать ошибок и используя менее квалифицированную рабсилу.
Ой как ты тут неправ.
Неквалифицированный кодер на С много не наломает — язык примитивный, можно разобрать. Но если его подпустить к С++ это будет полный ПЦ.
Ну и по факту, на С пишут такие обормоты, что просто за голову хватаешься.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Достаточно ли знать С без знания С++ для устройства н
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>То есть на СИ писать сложнее, но когда это необходимо то нужна более квалифицирванная рабсила.
Память это не самая большая беда когда пишется большая и сложная система. Куда более серьёзная проблема в том, что на С нет никаких способов писать безопасный код.
AWW>То есть СИ более низкоуровневый язык, а чем ниже уровень, тем ближе к "железу", тем выше нужна квалификация.
Чем сложнее инструмент тем выше нужна квалификация.
Те же самые индусы, что у нас пишут на С пишут кое какие части на С++. Туда просто без слёз не взглянуть: нагромождения буста в таких причудливых комбинациях что просто диву даёшься как они такое вообще придумали и как оно вообще умудряется работать. Там где можно сделать просто они делают сложно.
AWW>Если в языке много поводов сделать ошибок, это писать на нем без ошибок — нужна более высокая квалификация.
Печаль в том, что по факту на С говнокодят в стиле: скомпилировалось — значит ошибок нет.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, eskimo82, Вы писали:
E>>>1. В языке Си есть 3 непересекающихся (в отличии от C++) пространства имен — для struct, union, enum и глобальное для typedef. CC>>Всегда это бесило. Кошмарно неудобно. E>Ботинки жмут ?
Ваганыч, ты?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Andrew.W Worobow, Вы писали:
S>>>Осилить C++ -пара недель почитывания стандарта. CC>>Удачи! AWW>А что там такого сложного?
Получение опыта использования.
AWW>ИМХА указатели в СИ по уровню сложности понимания сложнее, чем все в С++.
Я встречал людей которые указатели не понимали, да.
AWW>То есть даже ссылки там придумали чтобы народу было проще. ))
Там ещё много чего есть кроме ссылок.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, smeeld, Вы писали:
S>Здравствуйте, CreatorCray, Вы писали: CC>>Удачи!
S>Себе пожелай. Мне на тщательное изучение стандарта не две недели, а четырёх дней хватило, лет пять S>назад. Имеенно тогда увидел его уродливость С++. С++-кривое, уродливое безобразие. Лучшие языки, по мне-это С и Lisp, perl.
Т.е. на С++ ты ничего серьёзного не писал.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Cyberax, Вы писали:
CC>>>>Причиной этому является ослиное упрямство ниасилившего Торвальдса. А мы в итоге сейчас в линуксячем кернеле жрём кактусы. Вбив бы! N>>>Не думаю, что торвальдс, ведущий разработчик линукса, не осилил с++. CC>>Ну он про С++ писал типичное для ниасиливших. C>Линус пробовал С++ для ядра в середине 90-х, когда все компиляторы сосали по полной. В итоге в ужасе сбежал, что было вполне разумно на тот момент.
Тем не менее он до сих пор воинствует.
C> Так что менять что-то сильного смысла нет (кроме того, в ядре куча структур с полями с именами типа "class" или "protected").
Так получилось что я щас пишу код в полулинуксячье ядро. И мне там очень не хватает возможностей С++. Огромное колво мест можно написать нормально, а не через задницу, как оно написано сейчас.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, -n1l-, Вы писали:
CC>>Ну он про С++ писал типичное для ниасиливших. N>Что например?
google linus c++ rant
CC>>На С — банально много гемору. N>Какого?
Рукопашка везде и во всём. Boilerplating. Принципиальная невозможность писать safe код.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Andrew.W Worobow, Вы писали:
N>>>К тому же всякие драйвера для линуксов не пишутся на С++. CC>>Причиной этому является ослиное упрямство ниасилившего Торвальдса. А мы в итоге сейчас в линуксячем кернеле жрём кактусы. Вбив бы! CC>>Под винду драйвера на С++ пишутся легко и приятно. С содроганием вспоминаю времена когда их по дурости пытались писать на С.
AWW>1)Не все, 2) не всегда можно использовать кучу вещей из С++.
Дайте мне в С:
классы с конструкторами, деструкторами, операторами и наследованием
перегрузка функций
templates (variadics included)
и я уже буду счастлив.
AWW>Ну дык эти как СИ с классами. Это не С++.
Даже С с классами уже помогает сократить объём кода раза эдак в 2-3 и облегчить жизнь разработчику за счёт автоматизации.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, smeeld, Вы писали:
N>>>К тому же всякие драйвера для линуксов не пишутся на С++. CC>>Причиной этому является ослиное упрямство ниасилившего Торвальдса. А мы в итоге сейчас в линуксячем кернеле жрём кактусы. Вбив бы! CC>>Под винду драйвера на С++ пишутся легко и приятно. С содроганием вспоминаю времена когда их по дурости пытались писать на С.
S>Похоже, Вы драйверы под линукс не то что не писали, но и уже написанные не видели.
Я пишу код в linux-based ядре. Нихрена там нет, спагетти и говнокод.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, smeeld, Вы писали:
S>А мне мнение и видение сотрудников Pupkin Inc. из РФ о профпригодности в кодотворстве параллельны.
Меня тоже, я от РФ нахожусь очень далеко.
S>Там, где приходится вращаться, о профпригодности судят по другим признакам, в которые желание оформлять S>код как цветочную клумбу, или букет для подарка женщинам, не входят.
Сколько было человек в самой большой команде где ты когда либо работал за деньги?
S>Вот когда сотрудники Pupkin Inc из Мск выкатят что-то, хоть отдалённо приближающееся, S>по степени распространённости и востребованности в мире, к опенсорсным проектам, тогда S>и смогут судить о опенсорсных проектах.
Классическое "Сперва добейся!" (С)
Тут давеча закончился VMworld, и если ты там был (в чём я сомневаюсь) ты мог посмотреть на то, что мы выкатываем.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Andrew.W Worobow, Вы писали:
A>>можно писать на подмножестве С++, которое не требует рантайма и каких-то фич которые плохо работают в ядре. A>>это будет очень большое подмножество со многими полезными фичами.
AWW>!!! Так это делает "это" уже не С++.
Т.е. чтобы писать на С++ надо обязательно использовать каждую фичу языка? Одну забыл и всё, программа уже не на С++?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Достаточно ли знать С без знания С++ для устройства н
Здравствуйте, eskimo82, Вы писали:
E>При этом возникает еще куча разного гемороя, как-то поддержка компиляторных хвостиков самого языка C++.
Это кстати не так уж сложно. Один раз собирается библиотека и на этом всё. МС кстати об этом сама позаботилась.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Достаточно ли знать С без знания С++ для устройства н
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Тут я как-то столкнулся — типа "пришлите пример кода драйвера". Я высылаю — .... бабаба.... Ответ: Ну это же все на СИ, а нам хотелось увидеть как вы на С++ пишете. AWW>Вот и это был ответ тех.спеца типа. )) Ну тимлидера из ядренной разработки. Я плакаль. ))
Всё правильно тебе ответили. Не надо писать на С когда есть возможность писать на С++.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[17]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, eskimo82, Вы писали:
C>>>>Оно скомпилируется и будет падать. E>>>Как мы видим, здесь указатель, а не int. Какой неприкрытый фейл... C>>Можно и int, не вопрос: C>>
C>>int mode;
C>>chmod("/some/file", mode); //Are you feeling lucky today?
C>>
E>1. Глобальная переменная в С и С++ инициализируется нулем. Балбес.
А с чего ты взял что это глобальная переменная?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока