LINUX.ORG.RU

Си с классами

 , ,


0

6

Тупнячка принёс, извиняйте.

Начинаю проект (личный), выбираю на чём писать: C или C++.

Ситуация такая: с плюсами возиться не хочется, да и не знаю я их толком, учил ещё в школе, до сих пор не выучил, но и на чистой сишечке, с другой стороны, писать как-то лениво.

Хотелось бы какой-то сабсет C++ или суперсет над C. Чтобы библиотеки плюсовые можно было при необходимости заюзать, класс-другой написать, а то и во все тяжкие пуститься, обмазавшись строками. Но без хардкорного плюсового упорина от которого у одних глаза с первого взгляда вытекают, а другие в дурке после прочтения оказываются.

Насколько такой суперсет C / сабсет C++ ака «Си с классами» может быть кошерен?

Объясните почему так делать не стоит, либо даже наоборот, предложите уже существующие сабсеты плюсов, которые можно перенять.

Хотелось бы какой-то сабсет C++ или суперсет над C.

Кошерным проектом в таком стиле могла бы стать Vala с её транспиляцией в C. Но похоже она никому так не пригодилась.

А чего не Rust-то, вот это всё? Из-за плюсовой зависимости?

EXL ★★★★★ ()

Хотелось бы какой-то сабсет C++ или суперсет над C

бери С++11(++) и пользуйся. Упоринума никакого — напротив, развесистые иерархии классов не нужны :) Можно без него — с «функциональными объектами» (но там ты (пере)изобретешь биндинги и замыкания).

Объясните почему так делать не стоит

напишешь STL-велосипед и подопрешь бусто-подобными костылями :)

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

Как раз сегодня листал Джосаттис «Стандартная библиотек С++: справочное руководство» (2014). Довольно дельно и кратко описаны основные фичи стандарта C++11, рекомендую к прочтению.

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

Так я в основном в процедурном стиле хочу писать, на плюсах так не кошерно

почему не кошерно? Плюсы — язык общего назначения, так что ещё как кошерно. Юзай STL и будет тебе счастие :)

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

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

Я видел код, который перловики, джависты и пхпшники на питоне писали, не хочу так же. В каждом языке свои правила хорошего тона.

WitcherGeralt ★★ ()

Чтобы библиотеки плюсовые можно было при необходимости заюзать

Единственная зацепка на чем писать. Всё остальное - вкусовщина.

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

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

Сорцы движков типа id-Tech 4+ смотри и просветляйся, а кукаретиков не слушай :) (UE4 можешь еще посмотреть — «как не надо» :))

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

Та не, загоняешься. Пиши на чистом си и все. Это тебе щас «хочется» плюсов, а когда будешь сидеть в куче лапши и ловить непонятные ошибки (ты ведь не собираешься юзать цланг, правда?), переплюешься сто раз и будешь клять труп страуса на чем свет стоит.

Words of wizdom – Write in C.

anonymous ()

Если проект не на пару месяцев - бери кресты. Простота и минимализм C - это заманчиво, но обманчиво.

Вангую комменты про руст.

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

Так я в основном в процедурном стиле хочу писать, на плюсах так не кошерно. И 99% фичей языка юзать не планирую. Не идиоматично получится, говнокод.

Ясно. Можешь просто не писать и всё. Эффект строго тот же будет.

anonymous ()

Да пиши как хочешь, plain С тоже живёт, просто чем новее версия С++ тем больше фич и тем короче код…

просто не забудь включить предупреждения, вот минимальный набор:

-Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Werror

в 10 gcc ещё есть: -fanalyzer

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

Каких-то вменяемых аргументов при этом мне ни разу никто не привёл

ПОтому что зачем страдать, если есть нормальные ОО языки? С полиморфизмом, неймспейсами и вот этим всем. В Си же очень_длинные_префиксы_чтобы_понимать_к_какой_структуре_относится_функция.

А по теме – GLib в помощь с его GObject. Чуть упрощает боль.

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

в стиле C++98

Почему ты решил, что я знаю как это?

По сути единственный мой скилл связанный с плюсами, это притаскивание буста в сишный код. Ещё прочёл какую-то книжку с крокодилом (не факт) на обложке и через пару месяцев всё напочь забыл, ибо ничего не писал.

WitcherGeralt ★★ ()

Отказыввешься от STL - прфит. Классы тоже не особо нужны - полиморфизм и у структур есть. Разве что когда нужно наследование и vtable

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

Ну ты собирался использовать «С с классами» — вот тебе пример, что можно делать, и почему это не всегда мрак. Поймешь по мере накопления/«освежевания» знаний :)

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

ну так возьми молодежный golang и минимум мозготни с памятью и простой как табуретка С, и реализовывать надо все самому как в С, ну ты понял.

anonymous ()

Си с классами — валидный и удобный набор возможностей С++, еще и иинтуитивно понятный любому, кто знаком с C-like синтаксисом и хоть что-то слышал о классическом ООП. И по моему опыту на этом подмножестве пишется большинство продакшен кода.

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

это не совсем так, шаблоны и немспейсы юзай и все, остальное можешь говнякать как на С, и в принципе жить можно, проблема лишь в том что это не сильно лучше простого С, но по крайне мере без макроадочка и препроцессорных говн. Ну и да нет убогого снейк именования 1000 одинаковых функций только разных по типу.

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

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

У тебя вопрос скорее эмм по поводу внутреннего конфликта интересов, нравится одно, но чуть проще другое.

LINUX-ORG-RU ★★ ()

Немного неожиданный тред о_О

Не понимаю в чём проблема - если хочется писать на Си, то берёшь и пишешь, используя Си++, особенно, если дело касается строк. И тащишь нужные библиотеки по мере надобности.

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

Проект личный, поэтому тут стоит в первую очередь вопрос красоты, как решения так и в целом подхода. Внутренние трения могут быть сильными даже по поводу какие отступы будут в проекте или тип того. Ну, это как я понял.

LINUX-ORG-RU ★★ ()