LINUX.ORG.RU

Си с классами

 , ,


0

7

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

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

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

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

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

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

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

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

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

EXL ★★★★★
()

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

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

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

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

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

А чего не Rust-то, вот это всё?

Шило на мыло. Я как-то пробовал, меня еле на «hello world» строк на сотню хватило. Но и зависимости, конечно, тоже.

WitcherGeralt ★★
() автор топика

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

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

Плюсую!

Никто не мешает писать на плюсах не упарываясь. Бери да пиши простые классы.

deep-purple ★★★★★
()
Ответ на: комментарий от xaizek

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

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

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

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

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

Да я же не плюсовик, сложно сказать. Вот и спрашиваю.

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

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

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

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

А как ты хочешь?

Напиши что-нибудь в строк 200 в стиле C++98 и покажи нам, чего тебе не нравится.

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

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

И мы даже догадываемся, почему…

wandrien ★★
()

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

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

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

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

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

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

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

Words of wizdom – Write in C.

anonymous
()

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

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

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

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

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

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

Та не, загоняешься. Пиши на чистом си и все.

Анонимус плохого не посоветует )

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

ты ведь не собираешься юзать цлан

Не, не собираюсь.

WitcherGeralt ★★
() автор топика

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

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

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

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

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

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

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

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

anonymous
()

qt или boost и пиши, а вообще зависит от проекта, возможно хватит и обычного apr для твоих целей

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

в стиле C++98

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

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

WitcherGeralt ★★
() автор топика

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

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

За притвскивание буста в сишный код руки надо обрывать и кое-куда всовывать

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

ничего не писал

Ну так начни, а дальше само пойдёт, если твоё.

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

просто посмотри на степике курсы от csc они конечно не сильно актуальные, но и с++11/14 вполне сойдет для петпроекта

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

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

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

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

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

С компонентной моделью (см. «композиция vs наследование») оно вообще может быть не нужно (не в том виде уж точно, как его обычно понимают).

slackwarrior ★★★★★
()

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

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

Если я правильно понимаю о чём речь, то я даже на питоне так зачастую пишу.

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

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

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

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

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

LINUX-ORG-RU ★★★★★
()

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

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

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

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

сарказм под видом чистой монеты

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

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

LINUX-ORG-RU ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.