Re[24]: Достаточно ли знать С без знания С++ для устройства
От: smeeld  
Дата: 05.09.14 14:45
Оценка: :)
Здравствуйте, IID, Вы писали:

IID>Это не только в линуксе. В NT тоже самое. И в любом микроконтроллере, где нету стандартного С++ стартапа. Надо стартап правильный написать. И никаких часов отладки с дизассемблером. Просто не надо быть [censored] и надо знять что для Ц/Ц++ есть инициализаторы и финализаторы которые исполняются до/после мэйна стартапом.


IID>Для чистого Си это тоже актуально, странно что ты не в курсе. Статики-то надо инитить, и в _atexit напиханные функции вызывать.


Если Вы про .init/.fini _start/_end, то не это проблемы создаёт.
Ядро, при сборке, линкуется в некоторое виртуальное адресное пространство.
И некоторая его часть, которая исполняется на старте, в которое управление
передаёт загрузчик, линкуется вне этого пространства, которое
работает в режиме реальных адресов, но которому должны быть доступны объекты,
слинкованные в простарнство виртульных адресов, для их инициализации.
И в этом пространстве многие объекты должны распологаться на строго
определённых участках, отмеряемых в смещениях между объектами, занимать
строго определённое местоположение относительно других.
Такая тонкая организация карты расположения объектов возможно только
на чистом С, и С++ с его служебными полями, которые компилятор помещает
в память, занимаемую объектами, так как ему захочется, здесь нарушит всю
структуру и карту пространства памяти в которое линкуется ядро. Поэтому
никаких классов, конструкторов, шаблонов, динамического полиморфизма
через виртуальные фукнции и прочие С++-змы.
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
От: andyag  
Дата: 05.09.14 14:48
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Здравствуйте, Abyx, Вы писали:


A>>нет, конечно они не совместимы на все 100%.

A>>в С есть еще есть опасные вещи типа неявного каста void* в любой тип.

AWW>То есть для того что бы не делать ошибок на СИ нужна выскокая квалификация програмиста, а на С++ можно избежать ошибок и используя менее квалифицированную рабсилу.


Это заблуждение. В мире СИ нужно делать много специфической работы, которой нет в других ЯП. Безусловно, минусом это является только когда речь заходит о вполне конкретных задачах, типа "сделать за 2 часа и чтоб работало".

На сайте есть совершенно замечательная статья — в ней вместо C++ можно подставить C.
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
От: 11molniev  
Дата: 05.09.14 15:34
Оценка:
Здравствуйте, Abyx, Вы писали:

1>>Знаете, мне почему то кажется что так можно написать к любому отношению ххх/ххх+.


A>да, можно, и что?

То что это не конструктивно и довольно категорично.
A>у тебя много таких пар ххх/ххх+ ?
А причем тут пары? Берите все что угодно вместо них.
Собственно в ваших собственных рассуждениях можно заменить С на С++, а С++ на С)))
Re[25]: Достаточно ли знать С без знания С++ для устройства
От: student__  
Дата: 05.09.14 15:44
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Ядро, при сборке, линкуется в некоторое виртуальное адресное пространство.

S>И некоторая его часть, которая исполняется на старте...
S> многие объекты должны распологаться на строго
S>определённых участках...
S>С++ с его служебными полями, которые компилятор помещает
S>в память, занимаемую объектами, так как ему захочется
Наверное, в детерминированной программе, каковой является гипотетический компилятор C++ "как захочется" означает определённых набор правил?

S>структуру и карту пространства памяти в которое линкуется ядро. Поэтому

S>никаких классов, конструкторов, шаблонов, динамического полиморфизма
S>через виртуальные фукнции и прочие С++-змы.
Шаблоны-то тут при чём, раз всё линкуется статически?
Re[8]: Достаточно ли знать С без знания С++ для устройства н
От: Andrew.W Worobow https://github.com/Worobow
Дата: 05.09.14 16:01
Оценка: -1 :)
Здравствуйте, andyag, Вы писали:

AWW>>То есть для того что бы не делать ошибок на СИ нужна выскокая квалификация програмиста, а на С++ можно избежать ошибок и используя менее квалифицированную рабсилу.


A>Это заблуждение. В мире СИ нужно делать много специфической работы, которой нет в других ЯП. Безусловно, минусом это является только когда речь заходит о вполне конкретных задачах, типа "сделать за 2 часа и чтоб работало".


Ну никакое это не заблуждение )).
В СИ очень много работы на прямую с памятью, в С++ это постарались убрать, точнее дали возможность этого избежать.
Прямая работа с помятью, (выделение, освобождение, инициализация ) всегда генерирует множество ошибок. То есть на СИ писать сложнее, но когда это необходимо то нужна более квалифицирванная рабсила.

То есть СИ более низкоуровневый язык, а чем ниже уровень, тем ближе к "железу", тем выше нужна квалификация. Ну что бы написать тоже самое на C# надо скажем 10 строчек, на СИ надо 100. C# даст кучу предупреждений которые в силу самого языка вожможно выявить и подсказать программисту.
В СИ есть у тебя указатель на буфер, это просто адрес, и крутись как хочешь — весь контроль тебе передали, в С++ уже есть ссылки, ошибок наделать можно меньше.

Если в языке много поводов сделать ошибок, это писать на нем без ошибок — нужна более высокая квалификация.

Мы сейчас говорим, я надеюсь все это понимают, что имеется ввиду что если С++, то уже без указателей. Ну просто так как СИ и С++ есть близкие языки, то можно естественно и на С++ делать так же как обычно принято на СИ. То есть грань этак "проще" "легче" почти не видна.
Но суть еще раз в том, что — чем ниже язык по уровню, тем выше нужна квалификация что бы делать качественный код. И в вопросе архитектуры кстати тоже.
Не все кто уехал, предал Россию.
Отредактировано 05.09.2014 16:03 Andrew.W Worobow . Предыдущая версия .
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>То есть для того что бы не делать ошибок на СИ нужна выскокая квалификация програмиста, а на С++ можно избежать ошибок и используя менее квалифицированную рабсилу.

Ой как ты тут неправ.
Неквалифицированный кодер на С много не наломает — язык примитивный, можно разобрать. Но если его подпустить к С++ это будет полный ПЦ.
Ну и по факту, на С пишут такие обормоты, что просто за голову хватаешься.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Достаточно ли знать С без знания С++ для устройства н
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>То есть на СИ писать сложнее, но когда это необходимо то нужна более квалифицирванная рабсила.

Память это не самая большая беда когда пишется большая и сложная система. Куда более серьёзная проблема в том, что на С нет никаких способов писать безопасный код.

AWW>То есть СИ более низкоуровневый язык, а чем ниже уровень, тем ближе к "железу", тем выше нужна квалификация.

Чем сложнее инструмент тем выше нужна квалификация.
Те же самые индусы, что у нас пишут на С пишут кое какие части на С++. Туда просто без слёз не взглянуть: нагромождения буста в таких причудливых комбинациях что просто диву даёшься как они такое вообще придумали и как оно вообще умудряется работать. Там где можно сделать просто они делают сложно.

AWW>Если в языке много поводов сделать ошибок, это писать на нем без ошибок — нужна более высокая квалификация.

Печаль в том, что по факту на С говнокодят в стиле: скомпилировалось — значит ошибок нет.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: Достаточно ли знать С без знания С++ для устройства
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>>>1. В языке Си есть 3 непересекающихся (в отличии от C++) пространства имен — для struct, union, enum и глобальное для typedef.

CC>>Всегда это бесило. Кошмарно неудобно.
E>Ботинки жмут ?

Ваганыч, ты?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

S>>>Осилить C++ -пара недель почитывания стандарта.

CC>>Удачи!
AWW>А что там такого сложного?
Получение опыта использования.

AWW>ИМХА указатели в СИ по уровню сложности понимания сложнее, чем все в С++.

Я встречал людей которые указатели не понимали, да.

AWW>То есть даже ссылки там придумали чтобы народу было проще. ))

Там ещё много чего есть кроме ссылок.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Здравствуйте, CreatorCray, Вы писали:

CC>>Удачи!

S>Себе пожелай. Мне на тщательное изучение стандарта не две недели, а четырёх дней хватило, лет пять

S>назад. Имеенно тогда увидел его уродливость С++. С++-кривое, уродливое безобразие. Лучшие языки, по мне-это С и Lisp, perl.

Т.е. на С++ ты ничего серьёзного не писал.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, Cyberax, Вы писали:

CC>>>>Причиной этому является ослиное упрямство ниасилившего Торвальдса. А мы в итоге сейчас в линуксячем кернеле жрём кактусы. Вбив бы!

N>>>Не думаю, что торвальдс, ведущий разработчик линукса, не осилил с++.
CC>>Ну он про С++ писал типичное для ниасиливших.
C>Линус пробовал С++ для ядра в середине 90-х, когда все компиляторы сосали по полной. В итоге в ужасе сбежал, что было вполне разумно на тот момент.
Тем не менее он до сих пор воинствует.

C> Так что менять что-то сильного смысла нет (кроме того, в ядре куча структур с полями с именами типа "class" или "protected").

Так получилось что я щас пишу код в полулинуксячье ядро. И мне там очень не хватает возможностей С++. Огромное колво мест можно написать нормально, а не через задницу, как оно написано сейчас.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка: +1
Здравствуйте, -n1l-, Вы писали:

CC>>Ну он про С++ писал типичное для ниасиливших.

N>Что например?
google linus c++ rant

CC>>На С — банально много гемору.

N>Какого?
Рукопашка везде и во всём. Boilerplating. Принципиальная невозможность писать safe код.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка: +2
Здравствуйте, Andrew.W Worobow, Вы писали:

N>>>К тому же всякие драйвера для линуксов не пишутся на С++.

CC>>Причиной этому является ослиное упрямство ниасилившего Торвальдса. А мы в итоге сейчас в линуксячем кернеле жрём кактусы. Вбив бы!
CC>>Под винду драйвера на С++ пишутся легко и приятно. С содроганием вспоминаю времена когда их по дурости пытались писать на С.

AWW>1)Не все, 2) не всегда можно использовать кучу вещей из С++.


Дайте мне в С:
классы с конструкторами, деструкторами, операторами и наследованием
перегрузка функций
templates (variadics included)

и я уже буду счастлив.

AWW>Ну дык эти как СИ с классами. Это не С++.

Даже С с классами уже помогает сократить объём кода раза эдак в 2-3 и облегчить жизнь разработчику за счёт автоматизации.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, smeeld, Вы писали:

N>>>К тому же всякие драйвера для линуксов не пишутся на С++.

CC>>Причиной этому является ослиное упрямство ниасилившего Торвальдса. А мы в итоге сейчас в линуксячем кернеле жрём кактусы. Вбив бы!
CC>>Под винду драйвера на С++ пишутся легко и приятно. С содроганием вспоминаю времена когда их по дурости пытались писать на С.

S>Похоже, Вы драйверы под линукс не то что не писали, но и уже написанные не видели.

Я пишу код в linux-based ядре. Нихрена там нет, спагетти и говнокод.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:20
Оценка:
Здравствуйте, smeeld, Вы писали:

S>А мне мнение и видение сотрудников Pupkin Inc. из РФ о профпригодности в кодотворстве параллельны.


Меня тоже, я от РФ нахожусь очень далеко.

S>Там, где приходится вращаться, о профпригодности судят по другим признакам, в которые желание оформлять

S>код как цветочную клумбу, или букет для подарка женщинам, не входят.

Сколько было человек в самой большой команде где ты когда либо работал за деньги?

S>Вот когда сотрудники Pupkin Inc из Мск выкатят что-то, хоть отдалённо приближающееся,

S>по степени распространённости и востребованности в мире, к опенсорсным проектам, тогда
S>и смогут судить о опенсорсных проектах.

Классическое "Сперва добейся!" (С)
Тут давеча закончился VMworld, и если ты там был (в чём я сомневаюсь) ты мог посмотреть на то, что мы выкатываем.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Достаточно ли знать С без знания С++ для устройства на работу?
От: CreatorCray  
Дата: 05.09.14 17:27
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

A>>можно писать на подмножестве С++, которое не требует рантайма и каких-то фич которые плохо работают в ядре.

A>>это будет очень большое подмножество со многими полезными фичами.

AWW>!!! Так это делает "это" уже не С++.

Т.е. чтобы писать на С++ надо обязательно использовать каждую фичу языка? Одну забыл и всё, программа уже не на С++?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Достаточно ли знать С без знания С++ для устройства н
От: CreatorCray  
Дата: 05.09.14 17:27
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>При этом возникает еще куча разного гемороя, как-то поддержка компиляторных хвостиков самого языка C++.

Это кстати не так уж сложно. Один раз собирается библиотека и на этом всё. МС кстати об этом сама позаботилась.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Достаточно ли знать С без знания С++ для устройства н
От: CreatorCray  
Дата: 05.09.14 17:27
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Тут я как-то столкнулся — типа "пришлите пример кода драйвера". Я высылаю — .... бабаба.... Ответ: Ну это же все на СИ, а нам хотелось увидеть как вы на С++ пишете.

AWW>Вот и это был ответ тех.спеца типа. )) Ну тимлидера из ядренной разработки. Я плакаль. ))

Всё правильно тебе ответили. Не надо писать на С когда есть возможность писать на С++.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[17]: Достаточно ли знать С без знания С++ для устройства
От: CreatorCray  
Дата: 05.09.14 17:27
Оценка:
Здравствуйте, eskimo82, Вы писали:

C>>>>Оно скомпилируется и будет падать.

E>>>Как мы видим, здесь указатель, а не int. Какой неприкрытый фейл...
C>>Можно и int, не вопрос:
C>>
C>>int mode;
C>>chmod("/some/file", mode); //Are you feeling lucky today?
C>>

E>1. Глобальная переменная в С и С++ инициализируется нулем. Балбес.
А с чего ты взял что это глобальная переменная?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: достаточно
От: -n1l-  
Дата: 05.09.14 17:30
Оценка:
Согласен. Когда нет озвученной ветки, это разговор ни о чем.
Причем яндекс и всякие лабы озвучивают минимум и максимум.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.