LINUX.ORG.RU
ФорумTalks

Интересные книги, оказывается, выходят

 ,


0

2

Object Oriented Programming with C++, Second Edition by Richard Johnsonbaugh

1.4 C++ AS A SUPERSET OF C PROGRAMMING LANGUAGE C++ has inherited all the strong points of C. It has tried to remove certain weaknesses. Object orientation has added a totally new dimension to the language. You can make use of code and reuse it to the hilt. C++ is a superset of C. All your C programs will work without any modification in this environment. However, we recommend that you get accustomed to new styles and techniques of C++ from day one.

2012

А потом к нам на должность С-программиста стучатся люди, которые никогда не кодили на си, но зато чо-то там делали на Qt/boost

★★★★

Ну знаешь ли наоборот тоже не айс, я с диким скрипом с Сей на Плюсы переходил. Qt с их MoC так вообще боль и садомия

sparks ★★ ()
Последнее исправление: sparks (всего исправлений: 1)

Richard Johnsonbaugh

Первый раз слышу о таком авторе. Мало ли плохих книг о популярных вещах…

А потом к нам на должность С-программиста стучатся люди, которые

А как по-вашему получают рабочие места скубенты с нулевым опытом работы, которые кроме лаб и курсачей ничего не разрабатывали? Выбирать надо толкового, и за пару тренингов об’яснять ключевые моменты отличий в ЯП и парадигме.

seiken ★★★★★ ()
Ответ на: комментарий от sparks

Ну знаешь ли наоборот тоже не айс, я с диким скрипом с Сей на Плюсы переходил. Qt с их MoC так вообще боль и садомия

При чем тут кресты? Qt — это само по себе боль и содомия, кресты тут не особо роляют.

byko3y ★★★ ()
Ответ на: комментарий от PPP328

А я не про студентов, с них спроса нет. Я про 35+ дядь

Речь не просто про 35+ дядь, речь про 35+ дядь, которые согласны работать за посредственную ЗП. У меня контора наняла такого, так потом два раза переплатили за пролюбленные дедлайны.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

У меня контора наняла такого, так потом два раза переплатили за пролюбленные дедлайны.

А как же испытательный срок?

tiinn ★★★★ ()

А потом к нам на должность С-программиста стучатся люди, которые никогда не кодили на си, но зато чо-то там делали на Qt/boost

Откуда взяться опыту - на рынке сейчас почти нет вакансий С-программистов. В лучшем случае микроконтроллеры, но там больше инженерии, чем кодинга.

snizovtsev ★★★★ ()
Ответ на: комментарий от imul

Русскоговорящий статью писал?

судя по имени - всё-же немец или типа того. Но явно рос в русско-говорящих проектах/коллективах. «oryol», «sokol»

MKuznetsov ★★★★★ ()
Ответ на: комментарий от snizovtsev

Микроконтроллеры давно на питоне программируют, нафиг там С?

MicroPython offers some very exciting possibilities for hardware-programming experts and beginners alike. That’s because, unlike regular Python, MicroPython can seamlessly integrate with circuits, buttons, sensors, LCD displays, and various other electronics.

Djanik ()
Ответ на: комментарий от Djanik

Микроконтроллеры давно на питоне программируют, нафиг там С?

Ок.

aiqu6Ait ★★★ ()

Объективно говоря, плюсы именно так создавались. Другое дело, что с момента их создания прошло 30+ лет и они сильно изменились.

Всякие Qt/boost отдельные сущности, живущие по своим правилам.

Писать надо в соответствии с принятой внутри средств разработки парадигмой, тогда будет небольно.

aiqu6Ait ★★★ ()
Ответ на: комментарий от MKuznetsov

Различия были как минимум с того момента, как в C++ появилось зарезервированное слово class. Код на C, который использовал class для имени, сразу стал неправильным кодом на C++.

i-rinat ★★★★★ ()
Ответ на: комментарий от Djanik

http сервер с поддержкой ssl. Всего 100 строк на микропитоне.

Реализацию TCP/IP, SSL и парсера HTTP на сишке забыл, которые под капотом у микропистона.

Meyer ★★★★★ ()
Ответ на: комментарий от tiinn

Значит, плохо испытывали

Да. Я сразу сказал, что это обмудок, а мне такие «никто вроде не жаловался». Я чо и подумал «неужели я один вижу квалификацию кодера? Не податся ли мне в набор персонала». Конечно, больше хоцца набирать в свою команду, чем дяде.

byko3y ★★★ ()
Ответ на: комментарий от Meyer

Да пофиг. Сам сервер написан на питоне. Поэтому это и называется «программирование на питоне микроконтроллеров». Про С можно ничего не знать вообще, как программисты на большом питоне ничего не знают про libc.

Djanik ()
Ответ на: комментарий от Djanik

http сервер с поддержкой ssl. Всего 100 строк на микропитоне.

на С примерно столько-же..библиотеки же мы не считаем ?

MKuznetsov ★★★★★ ()
Ответ на: комментарий от Djanik

Про С можно ничего не знать вообще, как программисты на большом питоне ничего не знают про libc.

Это не программисты, а пользователи программы Python.

Reset ★★★★★ ()
Ответ на: комментарий от Djanik

И о чем это говорит? Что контроллер можно программировать на С? Ну надо же.

это говорит что питон излишен для таких задач.

MKuznetsov ★★★★★ ()

И в чём драма? Что автор назвал C++ надмножеством Сей? Вы будете смеяться, но сам Страуструп писал, что за вычетом каких-то очень экзотических ситуаций C++ можно считать надмножеством С.

Это, разумеется, не означает, что на C++ надо писать в стиле «C с плюшками». Это, как правило, плохой стиль.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Это, разумеется, не означает, что на C++ надо писать в стиле «C с плюшками». Это, как правило, плохой стиль.

а на C надо писать как на асме с лейблами и гоутушками.

все Ъ-железячники так делают.

n_play ()
Ответ на: комментарий от n_play

Уууххх, как хочется лишние выпирающие органы таким прохраммистам отрезать.

PPP328 ★★★★ ()
Ответ на: комментарий от Reset

Получается, что С++ не программисты, а пользователи программы g++? Они про libc тоже не знают, y виндовс ее нет, а программы работают.

Djanik ()
Ответ на: комментарий от Djanik

Если не знают, то пользователи программы g++. И такое бывает.

Reset ★★★★★ ()
Ответ на: комментарий от James_Holden

Аххххахахахаха

Нууу насмешииил

Правильно было написать, что все хорошо написанные программы будут работать и с С++ компилятором? Да, согласен, на С много говнокодеров…

fsb4000 ★★★★★ ()
Ответ на: комментарий от James_Holden

как решить проблему

не использовать ключевые слова С++.

Очевидно, это плохой код на С, раз разработчик не проверяет на совместимость с С++.

для С/С++ необходимы лишь в нескольких местах ifdef, вроде https://en.cppreference.com/w/c/language/generic

Это совсем нетрудно. И то лишь пока не приняли http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2644.pdf

fsb4000 ★★★★★ ()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от fsb4000

Очевидно, это плохой код на С, раз разработчик не проверяет на совместимость с С++.

А с какого перепуга разработчик на С должен думать о том, что его код не соответствует синтаксису ДРУГОГО языка? Что за бред? Может еще сидеть и страдать на Си так, чтобы код был хаскель-френдли?

PPP328 ★★★★ ()
Ответ на: комментарий от PPP328

А с какого перепуга разработчик на С должен думать о том, что его код не соответствует синтаксису ДРУГОГО языка?

Безопасность.

Вот простейший пример:

https://gcc.godbolt.org/z/MxWev6b3E

и

https://gcc.godbolt.org/z/n5cjGYc7x

Именно поэтому gcc компилировался g++ даже пока был на С и не перешёл на С++, как сейчас.

Именно это советует Бьярне Страуструп: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cpl2-if-you-must-use-c-use-the-common-subset-of-c-and-c-and-compile-the-c-code-as-c

If you must use C, use the common subset of C and C++, and compile the C code as C++

Reason:That subset can be compiled with both C and C++ compilers, and when compiled as C++ is better type checked than “pure C.” 
fsb4000 ★★★★★ ()
Ответ на: комментарий от fsb4000

Именно это советует Бьярне Страуструп

А вы вообще на источник внимания не обратили, да? «C++ Core Guidelines» - это мануал для написания С++ кода, а выдержка про С относится к С-коду который будет линковаться с С++.

Если писать на С в режиме «совместимо с С++», и потом компилить через плюсовый компилятор, то получите ооох, как много побочных эффектов и ограничений, потому что С++ и С это разные языки!

Удачи скомпилировать non-trivial designated initializers в С++. А тех, кто постоянно кастует результат malloc к указателю на таргет вообще надо отлучать от С.

Плюс получите разный размер пустых структур; разные типы enum; невозможность применить int к enum-типам; обход инициализаторов с помощью goto (хотя так лучше и в С не делать); С и С++ имеют разное поведение механизмов long jump, из-за чего поведение стека разительно отличается; различие поведения с одинаковыми именами struct N и N (потомушта труп страуса сказал что ему лень писать struct каждый раз, поэтому не пишите struct); (моё любимое) - func() - означает совершенно разные вещи в С и С++; разная область видимости типа вложенной структуры; наличие в С механизма объявления сложного типа (struct/union/enum) в прототипах функций; C11/99 вообще принес дофига того, до чего в С++ еще не додумались: комплексные числа, VLA, flexible array memebers, restrict, compound literals; квалификатор параметра массива; разный размер ‘a’-заданных символов; разное поведение экспорта символов модуля по-умолчанию; разный тип bool; и прочая, и прочая. Мы на некоторых собеседованиях просим соискателя назвать как можно больше отличий С++ от С. Некоторые доходили до 50.

Вот простейший пример:

Ага, и gcc даже выругался, сказав что кастуется несовместимый тип. Тех, кто игнорирует предупреждения компилятора надо сжигать на кострах. Иногда, кстати, хоть это и не по стандарту, такой каст нужен. И в с++ вы его физически не сделаете быстро, только через какие-то костыли или долгий memcpy.

PPP328 ★★★★ ()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от PPP328

это мануал для написания С++ кода, а выдержка про С относится к С-коду который будет линковаться с С++.

Нет конечно же. Изучай английский раз не понимаешь.

Плюс получите разный размер пустых структур

Говнокодер детектед.

Пустые структуры запрещены в С. Сюрприз. Читай стандарт.

Удачи скомпилировать non-trivial designated initializers в С++

Поддерживается в С++. Нечего желать удачи.

разные типы enum

Говнокодер детектед #2.

Тип enum implementation-defined.

различие поведения с одинаковыми именами struct N и N

Пиши всегда typedef и не будет отличаться. Все твои примеры это признак того что ты не знаешь С и не умеешь мыслить.

func() - означает совершенно разные вещи в С и С++

Пиши void всегда, не будет отличаться. Будет хоть один реальный пример несовместимости?

разный размер ‘a’-заданных символов

Очередной пример говнокода который зависит от типа символьных литералов.

VLA

Говнокодер детектед #2.

Запрещён во многих гайдланах, так как причина множества CVE. В gcc и clang и прочих компиляторах есть даже предупреждение при использовании VLA так же как и alloca.

restrict

Не нужен, но есть в виде расширений во всех C++ компиляторах. Опять мимо. Пока всё совместимо. Как же так?

Пара случаев когда понадобится ifdef в остальном приведён говнокод которому не место в С.

Ч.Т.Д.

fsb4000 ★★★★★ ()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от PPP328

Тех, кто игнорирует предупреждения компилятора надо сжигать на кострах.

Присоединяюсь!

anc ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)