Igor
Это тоже можно записать в разное поведение?)
Snusmumriken
Ты как будто удивлён что сишка и плюсы это разные языки.
Hello, World! 🎄
А почему 2 языка программирования должны быть равны?
Snusmumriken
У меня такое ощущение, что Ви сидит в режиме энергосбережения.
Igor
А ещё смотри какая весёлая штука, ты можешь полностью C++ класс описать на Си. Безо всяких проблем. Но получится слишком длинно)
Snusmumriken
Из серии, мы тут думаем, метаем бисер направо-налево, делимся вселенской мудростью, а нас слушают в пол уха и такие "да-да".
Snusmumriken
Ви, тебе внимания не хватает? Или дефицит?
Re
вы контекст держите хуже чем чат гпт. "ну и почему код на C ведет себя иначе в плюсах." "Это какой такой код на C ведёт себя иначе в плюсах?" Ну и?Я не понимаю. Я не понимаю. Но мне и все равно.
Re
Внимания? наверное да. Хз. Тебе виднее)
Igor
Ты сравниваешь конкретно сейчас жопу с пальцем
Re
Вы же мне отвечаете значит мы в равных условиях. Значит можешь по себе посудить
Hello, World! 🎄
Втроём тут пишем с помощью продвинутой ИИ модели ответы тебе
Re
нет это не жопа с пальцем. потому что в одном случае у меня будет деструктор вызван из либы. в в другом нет
Re
И это детская ошибка которая часто чекается каким нибудь PVS-studio
Hello, World! 🎄
Ты сравниваешь конкретно сейчас жопу с пальцем
А ещё пробует соединить их вместе
Re
Что из за экстерна си. там чел забывает сделать вещи.
Igor
Что из за экстерна си. там чел забывает сделать вещи.
extern "C" ` нужен для того чтобы символы твои не манглились и их можно было вызывать из чистого Си
Re
вот ты еще одно различие нашел.
Igor
Если человек забывает прописать этот блок, то это уже его проблемы и такой код до линковки не дойдёт)
Igor
Тебе компилятор скажет, что нет такого символа
Re
и таких много. вероятно некоторые инклюды ты без такого экстерна и не вызовешь
Igor
вот ты еще одно различие нашел.
Не, это реально троллинг какой-то
Hello, World! 🎄
Не сдержался
Re
потому что код на С и поведение С в С++ не гарантированно. В ряде моментов. Стандартом.
Re
Я устал правда. пишите на С++.
Snusmumriken
Я устал правда. пишите на С++.
В луашке вообще есть поведение, зависящее от интерпретатора. На разных реализациях луашки, обход элементов одной и той же хешмапы будет в разном порядке. Офигеть, да? В го тоже полно таких моментов.
Hello, World! 🎄
Выкинете этот Си и С++ и пишите на другом языке
Hello, World! 🎄
Если что-то не нравится
Igor
Я устал правда. пишите на С++.
Ты ни капли ни в одном, ни в другом языке не разобрался и сравниваешь сейчас несравнимое
UtoECat
хорошо. может ты мне подскажешь как быстро обвязать объект для сериализации / десериализации. в чем разница в С++ string и почему юзнают c_str() ну и почему код на C ведет себя иначе в плюсах.
1. уже отвечали. либы. Есть либы где это делается оффсетом на менеберы структуры. Есть где двумя функциями. 2. c_str() возвраащет гарантированно нуль терминируемую строку. data() такое не гарантирует
Igor
Именно поэтому знающие люди сейчас считают, что ты троллишь)
Сергей
То викари, то просто ви
викари это который vikari honest?
Snusmumriken
Ага, оно
Сергей
он меня впервые привел в про.луа :D
Snusmumriken
Я вот время от времени сижу в чатиках, и в голове прокручивается вот этот видосик (он мегахорош) https://youtu.be/e6h-YB70p3o
Hello, World! 🎄
Короче тратьте дальше свое время на споры, я пошел отдыхать
Hello, World! 🎄
защитил свой проект?
Ещё не было защиты
Сергей
а скоро?
Hello, World! 🎄
Да, на этой неделе
Hello, World! 🎄
Я потом могу написать суда как и что
Сергей
давай
UtoECat
Это какой такой код на C ведёт себя иначе в плюсах? C++ string это обвязка вокруг const char*, с помощью c_str() ты получаешь прямой доступ к памяти этой строки)
> Это какой такой код на C ведёт себя иначе в плюсах? struct something* o = malloc(sizeof(o)); не скомпилится в плюсах 😁 но это такой себе пример
Snusmumriken
Щяс вспомню про int v = i++ + ++i;
Сергей
Ты ни капли ни в одном, ни в другом языке не разобрался и сравниваешь сейчас несравнимое
я вот не понял по треду, поднимался ли вопрос о проектировании системы? Обычно проекты создаются с учётом особенностей языка, используется то, что обычно и используется для подобных задач в этом языке. А вот переписывать с одного на другое без переработки структуры приложения, тогда любой язык может любого другого выиграть
Igor
Если ты начал писать проект на C++, то очевидно он будет затачиваться под фишки C++, не C. Это не один и тот же язык и C++ уже давно перестал быть просто "расширением" для Сишки.
Snusmumriken
Ну я сделал концептуальное заявление, что (если воспользоваться сетом фундаментального функционала) и написать приложение на одном яп, его можно без проблем и даже примерно так же переписать на практически любой другой яп с минимальными изменениями. И на плюсах можно писать в целом так же как на го, со сборкой мусора и прочей ерундой. И в целом, плюсы покрывают практически весь функционал го примерно в той же форме.
Igor
И если, так уж вышло, тебе нужны фишки C в C++, какой-нибудь там SDL подключить, допустим, тебе никто не помешает. Код на C++ и C может спокойно сосуществовать в пределах одного приложения, НО если ты соблюдаешь определенные структурные правила.
Igor
И очевидно, что правила эти необходимы, так как C++ более продвинутый язык в сравнении с чистым C.
Сергей
И если, так уж вышло, тебе нужны фишки C в C++, какой-нибудь там SDL подключить, допустим, тебе никто не помешает. Код на C++ и C может спокойно сосуществовать в пределах одного приложения, НО если ты соблюдаешь определенные структурные правила.
Больше скажу, если в твоём языке нельзя подключать Сишные библиотеки, то это очень пагубно может на него повлиять, ибо переписывать многотонную кодовую базу сишных либ на твой язык мало кто захочет. Ну только если ты не многомиллиардная корпорация, стоящая за ним, да и то не факт
Snusmumriken
Благо сишка всё ещё база для системщины/железок/хайлоада/утилити.
Igor
А вот эти заявления, что код работает иначе, это всё равно что возмущаться, что void SomeClass::some_threaded_function() { std::unique_lock lock(m_mutex); // ... if (errcode == 1337) { printf("Omg error!!!!\n"); return; } if (!megaFunction()) { return; } afterMegaFunctionSucceeded(); } и ВИЗУАЛЬНО аналогичный на C: void SomeClass__some_threaded_function(SomeClass* this) { this->m_mutex->lock(); // ... if (errcode == 1337) { printf("Omg error!!!!\n"); return; } if (!megaFunction()) { return; } afterMegaFunctionSucceeded(); } вызовет у тебя дедлок потому что в C нет скоуп-локов и ты перед каждым return не разлочивал мьютекс
Igor
Если программист считает подобные вещи "не одинаковым поведением", то ну бля, он КЭП. Видно это всё невооружённым взглядом и это вполне себе очевидные кейсы.
Snusmumriken
Да можно банально вспомнить отсутствие в плюсах неявного int'а, от чего тот может не прожевать валидный сишный код даже с extern(C).
Igor
И кстати да, основной твой тейк был "С код на С++ работает иначе" и ты привёл в пример деструкторы... А? Ну во-первых, как уже было озвучено, в C отсутствуют деструкторы как таковые. А это значит, что код уже был написан без подразумевания существования деструкторов. Соответственно и работать он будет ТОЧНО ТАК ЖЕ на крестах, как и на чистой сишке. Просто программист выполнил ручками ту работу, которую за него бы сделал ЯП, если бы использовались фишки более продвинутого языка.
Сергей
Да можно банально вспомнить отсутствие в плюсах неявного int'а, от чего тот может не прожевать валидный сишный код даже с extern(C).
я уже можно сказать коллекционирую "валидный сишный код, который не компилится в плюсах" и, скажу, его много
Igor
я уже можно сказать коллекционирую "валидный сишный код, который не компилится в плюсах" и, скажу, его много
Вот кстати да, тот, который НЕ КОМПИЛИТСЯ, да, найти очень легко. (Прикол именно в синтаксической разности между языками, на то они и разные. Если в названиях обоих языков есть букова C, это ещё не значит, что они одинаковые. Никто ж не пытается C# код завести на C++, удивляясь, почему не выходит.) А вот тот сишный код, который СКОМПИЛИЛСЯ, но РАБОТАЕТ ИНАЧЕ в крестах... Удивите меня примерами, я бы на них посмотрел.
Сергей
Таких я не встречал)
Snusmumriken
А вот тут как правило проблем нет, это очень долго отлаживали в плюсовых компиляторах, чтобы можно было инклюдить величайший запас сишных либ. А если вдруг что-то не собиралось плюсами — как правило изменяли именно сишные либы для совместимости. Внезапно.
Igor
Таких я не встречал)
Ну вот потому что такого и не существует в природе))
Snusmumriken
И то, это в основном для того чтобы воспользоваться плюсовыми фишечками, плюсовым аллокатором, кусочком плюсового std или ещё чем. Обычно не нужно.
Hello, World! 🎄
Какую NoSQL базу данных использовали? Я хочу онлайн приложение сделать и нужно выбрать между MongoDB и Redis.
Hello, World! 🎄
Возможно по собственному опыту подскажите, что лучше взять.
Hello, World! 🎄
До этого sqlite использовал, но насколько я понимаю с многопользовательским доступом там не всё гладко.
Сергей
при больших данных она не подходит
Hello, World! 🎄
Вот я думаю, что MongoDB подойдет
Hello, World! 🎄
Или всё же лучше смотреть в сторону бд с SQL-запросами? Для простых бд, где есть пользователи и практически без связей (просто когда нужно list'ы сохранить) думаю, что noSQL лучше будет.