LINUX.ORG.RU

Си с классами

 , ,


0

7

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

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

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

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

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

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

Все нормальные люди только так на С++ и пишут, т.е. на си с классами, с минимумом фич вообще. Если вообще в принципе нужен C++, т.е. из-за легаси или плюсовых либ итд.

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

Да по-любому есть, но это как налитое в кружку пиво пить из соломинки.

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

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

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

Хочется же чтобы красиво, ну.

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

WitcherGeralt ★★
() автор топика
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

stoi, stof, vectors здорово упростят ему жизнь, а использовать printf_s с его более удобным форматированием чем в потоках ему никто не запрещает при этом

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

Звучит так, будто в крестах тебя демоны заставляют использовать наследование или виртуальные функции. Или STL. Нет же, хочешь – пиши на C-like языке, но плюс все те преимущества, что дают кресты – опционально. Этож супермножество, так что я не понимаю в чем у тебя с этим проблема, если ничего не теряешь.

anonymous
()

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

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

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

Вчера вечером начал, частично рабочий прототип уже сваял вчера же. Пока на голых сях. Очень хочется буст и пару классов написать мб.

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

extern "C" если очень-очень надо

anonymous
()

cpp14/17/20 это скорее фичи не для тебя, а для людей, которые пишут библиотеки. Есть немного синтаксического сахара, он конечно удобный, но не сказать чтобы прям вот необходим. Используй RAII, а синтаксический сахар подсветит CLion. C имеет смысл только в случае если нужно работать с байтами, например, что-то сетевое. Ибо всякие хэшмапы там не часто нужны. Последний проект вообще на Go писал, разницы с C/C++ не было, т.к. не используется GC, вся память аллоцируется на старте.

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

… Очень хочется буст и пару классов написать мб.

Все будет Ok!
Классы C++ - вовсе не «панацея» /все реже их использую/.

Владимир

anonymous
()

Сабсет - это хорошо, пока нет внешних зависимостей. А то потом окажется что нужная либа использует исключения и понеслась.

Поэтому в болоте под названием C++ всё так плохо.

С другой стороны, на Си жизни нет.

RazrFalcon ★★★★★
()

О, у меня лет 5 назад стояла такая же делема, решил учить плюсы, едва едва усвоил азы)) Какого то прям мега профита не заметил, кроме кросс платформености, там уже на уровне стандарта потоки, файлы, файловые системы и мать их СТРОКИ, что время всё же экономит, в довесок к этому идут килотонны пр плюх стандартной библиотеки, которые реально надо долго и планомерно расковыривать ещё и поглядывая на новшества которые придут в новом стандарте, так что думай)) но это будет долгим путешествием

sparks ★★★
()

если надумаешь попробовать плюсы, могу прям толковую литературу подкинуть, ток она на Английском

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

С другой стороны, на Си жизни нет.

Если не ошибаюсь, то Си разрабатывался так, чтобы его код легко могли бы портировать на другие процессора.
Он предоставляет возможность разработку алгоритма любой сложности.
И Си полагался на то, что разработчики понапишут всякого API, которые позволит эффективно на нем вести разработку.
Когда такое API есть, тогда все Ok иначе имеем «голого короля».

Владимир

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

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

А std::sort всё так же быстрее, ага. Знаем мы эти байки про простой и быстрый Си.

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

А std::sort всё так же быстрее, ага. Знаем мы эти байки про простой и быстрый Си.

И что, аналогичную реализацию невозможно в Си реализовать?
Плохой или не оптимизированный код в каком угодно языке программирования можно «на коленке» сбацать.

Владимир

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

Царь?

А при чем здесь Царь?
Или не «царское дело», кому-либо кроме Царя о Си говорить?

Владимир

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

Стыдно классику не знать.

Форум вздуется бурливо,
Закипит, подымет вой,
Хлынет на берег пустой,
Разольется в шумном беге,
И очутятся на бреге,
В чешуе, как жар горя,
Три Царя.

Владимир

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

А то потом окажется что нужная либа использует исключения и понеслась.

Ну да, куда лучше вручную стек отматывать кодами возвратов и бесконечной лапшой if-error-return. И ладно ещё, в расте хотябы сахарок добавили для этого.

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

Так что только C++.

Холивар на тему «Где лучше живется белым медведям» не буду поддерживать.

Владимир

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

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

Минуточку? С каких пор class и struct стали различаться? Вы ничего не путаете? У них единственная разница - это видимость полей по умолчанию.

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

exceptions же табу, ну. Труъ плюсовики не используют его для обработки ошибок.

Тем временем, std::expected всё та же «бесконечная лапша if-error-return». Ибо аналог Try из Rust не реализуем в C++.

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

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

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

Да шутан это. В детстве ни одной игры не написал, до сих пор свербит. Вот, руки дошли.

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

Я много видел холиваров про исключения, но на моей практике они использовались во всех проектах. Обычно стараются выделять два класса ошибок: локальные (используется код возврата в вызывающую функцию и предполагается, что оно не будет прокидываться выше) и «бизнес-ошибки», которые оборачиваются в исключение и будут обработаны где-то выше по стеку более или менее централизованно.

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

Конечно.

С другой стороны это некорректный вопрос. У класса тоже нет vtable, пока мы не используем дин. полиморфизм.

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

Я ни разу не работал на проекте с исключениями.

RazrFalcon ★★★★★
()

Ладно, тема такая:

Ремейк Wolfenstein 3D с Трампом в главной роли.

На панели состояния, где карта, патроны и вся фигня, он будет корчииь рожи, наподобие такого: 1, 2, 3. В качестве врагов сенаторы от демократов, леваки, CNN, BLM-щики и короновирус. Помежуточные боссы — Александра Оказио Кортес и Бен Аффлек, а финальный — Джо Байден (на самом деле нет. спойлеры). Надо ещё что-нибудь прикольное придумать с получением BFG у лоббистов NRA, вызова на подмогу Даны Уайта и Стивена Краудера, например. Идей полно, лишл бы хоть что-то до выборов успеть.

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

В качестве врагов … короновирус.

Ты только не торопись, там ещё не ясно кто победит.

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

Я за С, мое мнение таково: тут плюсам места нету, их преимущества не раскрыть (даже строки не поконкатить) , только завязнешь пока будешь писать обвязки, ну и С ты знаешь лучше, значит и код будет нормальным.

Хотя такую игру хоть на жаваскрипте пиши, не понимаю зачем ты ограничился этими язычками, чтоб как кармак типа?

paramon
()
Последнее исправление: paramon (всего исправлений: 3)

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

Дык очень большое количество «программ на C++» и представляют собой программы на C (printf, вот это всё) с добавлением очень небольшого количества C++. Я упаси боже не говорю, что это хорошо — но практика такая существует.

Но без хардкорного плюсового упорина от которого у одних глаза с первого взгляда вытекают, а другие в дурке после прочтения оказываются.

Это шаблоны. Можешь их просто не использовать (ну точнее, использовать стандартные контейнеры, а свои шаблоны не плодить). Ну раньше ещё итераторы славились вырвиглазием, но с появлением C++11 они стали нужны чуть поменьше.

Отмечу также, что C++ с применением библиотек Qt обычно выглядит менее вырвиглазным, чем «обычный» C++ с STL.

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

Зависит от задачи конечно. Если много действий над строками - второе

mittorn ★★★★★
()

Пиши на С с классами, полюсовой компилятор это отлично скомпилирует. Забудь про кошерно/некошерно.

Видишь, тебе уже понравились классы. Потом понравится string. Потом new и delete. Потом перегрузка операторов. Потом исключения. Потом vector. Потом auto. Ну ты понял.

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