Недавние аблюдения: Под Windows в консоле вывод в stderr более чем в 10 раз медленнее, чем в stdout, если перенаправить поток вывода в файл. Но это не точно.
Функция ExitThread может вас удивить и обескуражить. Если вы создавали на стеке объект, а в конце вызвали ExitThread, то деструктор объекта не вызывается. Т.е. если вы были уверены что деструктор сработает, когда объект теряет область видимости, то в случае ExitThread этого не произойдёт.
это самое всратое, уродливое и дебильное, что только можно было придумать. Кстати тоже из той же серии "запихни с ноги в классы то, что по здравому смыслу функция".
>>2297818 То, что ты не создавал этот объект сам, не делает его не-объектом. Это обычный объект, у которого ты вызываешь нестатический метод operator<<()
>>2297827 Ты не просто функцию дёргаешь. У всего ввода-вывода одинаковый интерфейс стримов, с которыми можно работать вне зависимости от того, куда реально происходит вывод, а уже внутри объекта конкретный дескриптор. Этот объект потом можно передать в другие функции, которым без разницы, куда выводятся данные, в консоль, файл или вообще по сети отрправляются, они будут юзать объект с одним и тем же интерфейсом. Смысл что-то объяснять борщехлёбам? Они до последнего будут стоять на своём во имя Даннинга-Крюгера
>>2297819 Ты на printf свой анус-то не раскрывай. Это гениальная функция, которая смотрится гармонично абсолютно везде. И ассебмлерный код с её использование всяко красивее кода, генерируемого <<.
За puts такого не скажу - уж больно она проста и примитивна. Нет в ней изюминки.
Самое плохое, что есть в С++, это пидросы, типа тебя. Которые придумали себе мифологию и дрочат на неё. А по сути - используют С++ как интепретатор, реализуя максимально неоптимальный код. А зачастую и не знающие базовых алгоритмов. При том, что язык С++ всё же охуенный. Но в умелых руках.
>>2297847 Нет, такие как ты - которые используют инструмент через жопу (ибо даже инструкцию прочесть не осилили), а потом у них это нинужна, это лишнее, это говно и тд
>>2297847 В printf происходит ненужное копирование, а ещё нужно указывать типы переменных - это пережиток из C. В https://fmt.dev, который уже скоро будет std::format всё реализовано куда лучше. std::cout с отключенной синхронизацией с сишным вводом-выводом быстрее printf в среднем в полтора раза. И сейчас бы оценивать красоту ассемблерного кода, лул
Просто когда не жуёшь это говно за зарплату ежедневно, то нет биаса в эту сторону и можешь трезво видеть откровенную хуету.
Ну давай признаем, в крестах "по умолчанию" во многих местах чудовищно избыточный синтаксис. Машина могла бы понять всё абсолютно то же самое без такого количества мусорного кода. Объекты вбиваются с ноги просто как религия какая-то, где в них никакого смысла.
вообще воплощение анекдота про хеллоу-ворлд на крестах. Просто блядь два символа "\n" в класс запихнуть это уже даже не шиза, это рак мозга под наркотиками.
В пердоликсе заменил эндл на "\n" - схавало. printf в винде "\n" и так хавает корректно, прекрасно помню. Что там менять-то нужно?
И про переносимость крестов лучше не надо, всё равно любой мало-мальски код для переносимости надо обмазывать миллионом ифов. Разумеется, пока пишешь под голую соснольку. С гуём проще две софтины написать под две платформы или застрелиться.
Зачем мы сремся по хуйне? Давайте лучше обсудим почему индустрия языков и компиляторов застряла в 70-90х годах и почему все языки ЯП говно. За наш век не появилось ничего нового, ни одной новой философии и течения. Все пердит и свистит на наработках древних.
>>2297952 > почему индустрия языков и компиляторов застряла в 70-90х годах > За наш век не появилось ничего нового, ни одной новой философии и течения. Все пердит и свистит на наработках древних. Потому что этот фундамент идеален и продуман на сто лет вперёд. Проблема в говнореализациях. Каждый раз, когда пилят новое, что-то упрощают или не учитывают, потом это начинает вызывать проблемы, для решения которых впиливают ad hoc костыли, а потом поздно что-то переделывать из-за легаси.
>>2297871 >Где? Задумайся. Оно составляет строку, которую нужно вывести, из строки формата и вараргов в рантайме, а потом уже копирует её в буфер >Чем ты заменишь snprintf? sprintf и snprintf заменю на format_to и format_to_n
>>2297893 >>std::endl >вообще воплощение анекдота про хеллоу-ворлд на крестах. Просто блядь два символа "\n" в класс запихнуть это уже даже не шиза, это рак мозга под наркотиками. std::endl просто неудачно назван. Почитай документацию, там как раз рекомендуется использовать '\n' вместо std::endl почти во всех случаях. Потому что std::endl (о ужас) ещё и флашит буфер.
>>2297952 Никому это не нужно, блин. Common lisp как был в 90е самым продвинутым языком, так и по сей день и остался.
>>2297961 >Оно составляет строку, которую нужно вывести, из строки формата и вараргов в рантайме, а потом уже копирует её в буфер
Я не уверен в этом. Надо смотреть реализацию. Не вижу ни одной причины, зачем нужно дополнительное копирование.
>sprintf и snprintf заменю на format_to и format_to_n Хмм. C++20 is a version of the ISO/IEC 14882 standard for the C++ programming language. C++20 replaced the prior version of the C++ standard, called C++17. The standard was technically finalized by WG21 at the meeting in Prague in February 2020, approved on 4 September 2020, and published in December 2020.
Неговно есть, но там тормозной интерпретатор. Потому что зачем сложный компилятор писать, если и так для практических задач современные компы будут эту хуету ворочать с приемлемой скоростью?
>>2297975 >Я не уверен в этом. Надо смотреть реализацию. Не вижу ни одной причины, зачем нужно дополнительное копирование. Да, возможно я ошибаюсь. Надо смотреть >>sprintf и snprintf заменю на format_to и format_to_n >Хмм. Отсюда, пока https://fmt.dev/
Рубин хотя бы. Близкая к идеальной реализация ООП для людей, няшный синтаксис, настоящий VHLL. Но тормозной как пиздец. А прикинь оно нормально компилироваться будет и на нём, допустим, можно будет писать полноценно игоры. Кто после этого будет ебаться с крестами?
>>2297540 >Под Windows в консоле вывод в stderr более чем в 10 раз медленнее, чем в stdout, если перенаправить поток вывода в файл. Но это не точно. ну это и естественно, потому что буфер должен быть скинут в первом случае, потому что вообще то это поток ошибок понимаешь? все логично
Вот я разделяю логику по классам, вся хуйня. А как ей пользоваться лучше? Ну т.е. статику юзать норм там, где не нужны конструкторы/инстансы/поля? Какие тут бест практисы?
За вот этот "ООП ради ООП" я бы вешал за яйца. Это худшее явление в кодинге за всю историю.
Никогда не делай классы там, где тебе нужны обычные плоские процедуры. Вообще их никогда не делай там, где алгоритм вот прям очевидно их не "просит" - гуй, логика игр, какие-то сильно структурированные данные однотипные... Можно конечно запилить класс просто как коллекцию своих наработок, но это откровенное украшательство и перфекционизм.
>>2298848 Если мне нужно будет ФП то я пойду и напишу говнокод на тайпскрипте. Дай хотя бы несколько объективныхминусов того, чтобы писать всё в виде классов.
Мегабайты мусорного кода - объявления и инициализации занимают больше места, чем сам алгоритм. Усложнение себе же очевидных простых вещей. Сильно больше печатать, хуже читаемость. У си-подобных синтаксис и так не айс, а этим ты его ухудшишь ещё сильнее. По скорости разницы нет, классы как таковые "ничего не жрут".
>>2298939 У меня в ноде тоже тоже мегабайты мусорного кода, но кабан мне за это неплохо так платит и не жалуется. И это явно не повод отказываться от основной концепции языка и хуярить НЁХ с тоннами не связанных между собой функций, auto и прочим пиздецом.
>>2298936 Обычно дергается инфа с датчиков. Потом на основе них высчитывается примерная нагрузка на систему. Под винду, под линукс так. Под мобильные платформы проще, так как там есть готовые апи для вычисления энергопотребления. Если речь идет о некоей промышленной установке, то возможно забрать инфу напрямую с ибп либо спец контроллера прямо на кабеле, тогда будет не приблизительная оценка, а точная.
>>2298851 фп в крестах нужен был для метапрограммирования в 98 стандарте, потому что иначе и не сделать было, ну а метапрограммирование нужно было для кодогенерации собственно, хотя все равно на практике чаще всего использовали препроцессирование, комбинировали встроенный препроцессор с внешней кодогенерацией на скриптовых языках в новых стандартах фп для метапрограммирования не нужен, потому что в язык добавлены средства для императивного программирования (циклы, условные конструкции, константы) в компайл-тайм так же говорят что правильное программирование с использованием stl предполагает функциональный подход, но это не совсем так, речь скорее идет о принципе функциональной композиции, но с оговорками, проще говорить что правильное программирование на stl - это использование композиционного подхода, хотя опять же в новых стандартах добавили лямбды и прочие штуки, которые сделали ненужным bind и все семейство родственных ему функций, с учетом того что лямбды в крестах всего лишь синтаксический сахар, это сделало современное программирование на stl опять же императивным во многом по итогу фп в современном с++ не нужен фп это удел энтузиастов что хотят развлекаться ретро-программированием на крестах стандарта 98 года, занимаясь метапрограммированием на компайл тайм либо используя приемы фукнциональной композиции используя stl
>>2297529 (OP) Я объявляю класс A и класс B. У них есть такие методы: A::Example(B bvar); и B::Example(A avar); Когда A объявлен до объявления B, то ошибка что B ещё не объявлен, когда сначала B объявляю, то ругается уже что A не объявлен. Что с этим можно сделать?
Вот скачал я cereal https://github.com/USCiLab/cereal/blob/master/include/cereal/cereal.hpp Пробую инклудить хедер - и нихуя не билдится. Почему? Потому что эта хуета ссылается на инклуды других хедеров из ещё одной папки cereal которой в исходнике же нет. Что за хуйня и что с этим делать?
>>2299162 Ты скачал один файл cereal.hpp или всю папку include? Я только что скачал папку, положил рядом исходник, собрал через g++ -Iinclude sample.cpp -o sample, всё работает.
>>2299094 И кстати вот в такие методы надо передавать указатели или ссылки, т.к. при форвард декларации не известен размер объекта, в отличие от указателя на него.
>>2299276 string& если нужно изменять передаваемую строку const string& если надо работать со строкой которую функция или метод не должен менять string если нужна копия строки в функции или методе string&& если нужно передать собственно владение (но по сути это частный случай, способ оптимизации) это не рассматривая темплейтов функций или методов и не рассматривая универсальных ссылок "как лучше" зависит от того что тебе собственно надо.. нет универсального ответа "как лучше", зависит от ситуации
>>2299303 ах, да, еще ведь есть альтернативы возможно тебе нужно работать не со строками, а с потоками ввода-вывода, зачастую в коде встречаю эту проблему, когда с точки зрения красивого дизайна лучше передать буфер, а не строку ну или, к примеру, в новом стандарте теперь есть замечательный std::string_view, его тоже не стоит игнорировать, прекрасное дополнение в библиотеку языка
>>2299310 а, вот еще вспомнил зачастую строкой туда-сюда гоняют то что по сути в коде является отдельной сущьностью, и в принципе, раз кресты ооп язык должны бы быть завернуты в класс простейший пример - когда некий строковый идентификатор чего-либо в коде гоняют обычной строкой, когда вообще то нужно создать было класс идентификатора
Еще вопрос. Функция принимает ссылку на string. Когда я вызову ее, указав аргумент std::string(""), то этот временный объект помрет после вызова функции или сразу после передачи ссылки в функцию?
>>2299324 на самом деле интересный вопрос, на который, к примеру лично я не смогу слету ответить, тут нужны более опытные люди можно предположить, что момент уничтожения временного объекта определяется реализацией конкретного компилятора, и стандартом неопределен хотя для конкретного компилятора всегда можно проверить, написав небольшой проверочный код, добавив в тестовый класс логирование в деструктор, ну либо брекпойнт
>>2299348 Вроде бы ссылка продлевает время жизни, но я решил на всякий случай уточнить. Если я не ошибаюсь, то объект удалится когда функция завершится.
>>2298316 Ты просто не в курсе что за бугром творится на рынке айти. С++ разрабы получают в среднем в полтора раза выше веб-макак. Спрос бешеный, а вот предложение не очень, ибо большинство нормисов имеют IQ < 100 и пытаются вкатиться в веб-говно толпами, что и порождает увеличение зарплат вне "горячих" секторов. Америка, почти вся западная Европа, Израиль - там очень востребованы байтослесари из-за огромного количетва компаний, которым нужны разрабы встроенных систем, разный там хайлоуд в финтехе, автономные машины и т.п. мимо анон из забугра, получающий 150 тыс. $ в год за "мертвый" язык, не будучи даже синьором
>>2299500 Пишу софт для автономных машин. Помимо всяких мелочей, основной проект на данный момент - кастомная RTOS, написанная полностью на плюсах, в данный момент насчитывающая 2 миллиона LoC ясень пень пишу её не в одиночку
>>2299534 О, анонас, ты мне и нужен. Как вкатывался, что изучал, как докатился до такого? Я пока что студент старших курсов и мне интересна системная разработка, а в частности языки и компиляторы. Но если быть реалистом, то по такому направлению без PhD работу найти почти невозможно, поэтому придется заниматься чем-то другим я и не против. Во что из системной разработки можно вкатиться, чтобы найти работу и хотя бы хуй без соли не доедать? Какую литературу почитать(Кирпичи Танненбаума и Праты уже прочитал)?
>>2299617 Там же все написано. Правда ответ не совсем верный, 3 и 4 не скомпилируются с флагами по умолчанию, и в 4 будет копиэлизия, вызовется только обычный конструктор.
>>2299858 Так, ну допустим я немного раскурился. А в чём разница создавать инстанс на куче или стеке кроме того что во втором случае не нужно его явно удалять?
Как малой кровью найти путь к конкретной директории лежащей в текущей или директориях на n уровней выше? Сейчас реализация такая, что я инициирую directory_iterator как "./" и проверяю на соответствие, если его нет - то добавляю к пути "../" и бегу снова. В целом это работает но можно ли проще и чище?
А где Qt тред? Господа я в корне не понимаю как создать свое собственное событие в Qt, все видео и все статьи в интернете меня только лишь запутали. Есть книжка Макса Шлее, но там очень мало написано про создание собственных event'ов, в корне не понял, зачем нужно event(), как работает фильтр событий. Кто то может подсказать хорошую статью или сам расскажет.
>>2299420 Если хочешь денег быстро - учи JS и Vue/React или Java, или C# и .NET. Вакансий на С++ меньше, но они есть и никуда не пропадут. В Америке, Западной Европе работы больше, чем в СНГ - но там нужен английский. Вообще, смотри хедхантер и сравнивай вакансии по регионам.
>>матеша Матеша лишней не будет.
>>вышка На айтишных специальностях(Прикладная информатика, информатика и вычислительные сети и тд.) учат плюсы с первого семестра в течение двух лет. За эти два года студенты проходят весь базовый курс по плюсам. Это синтаксис, алгоритмы(могут быть на паскале, но не суть), ООП, STL. Далеко в ядро не залезают, но для джуна инфы достаточно. Например лекции в МФТИ : https://youtube.com/playlist?list=PLmSYEYYGhnBu1fFtnzKx-pycYbJnb0rOl
Качество преподавания и усвоение тем зависит от университета и студентов. В региональных вузах, где проходной балл низкий - результат обучения не очень хороший. В топ вузах(МФТИ, МГУ, СПБГУ и тд ) дела обстоят по другому.
Пишу по своей группе. Почти все списывали лабы. Кто списывал - ничего не изучили. Кто учил - к последнему курсу всё позабыли. Причины этому: в первом случае - отсутствие обучения, во втором нагрузка учебного плана(помимо плюсов было много других предметов, например матан, история, информатика, базы данных, веб программирование и тд.) В итоге их всех в группе, плюсами интересуюсь только я, а нас 20 человек. Один из группы работает на JS и Vue. Из всего потока всего несколько человек работает в IT, их можно по пальцам пересчитать.
Но вуз не будет лишним. Особенно при поиске работы за границей. Только вопрос себе задай, надо ли тебе на это обменять 4 года, со всеми вытекающими.
Вот прошёл я Страуструпа, ответственно повторял, сам писал код. Подкрепил всё ravesli + 3 поясами с курсейры. Ещё немного со стандартами ознакомился, правда совсем немного. Стоит ли сейчас почитать/поучить что-нибудь ещё или нет? Вообще сейчас сижу и пилю свой пет, подтянул в него asio, в остальном пока stl обхожусь. Что ещё освоить чтобы я со своих фуллстаковских 200к переехал хотя бы на 100к для начала?
>>2300038 Как тебе пояса с курсеры? Во время прохождения белого пояса, у меня возникла мысль, что некоторым задачам надо побольше вводных данных и объяснения. Например первая задача с квадратным уравнением. Там всё отлично, есть дополнительное объяснения в виде алгоритма. В дальнейших задачах я такого больше не видел. Я остановился на задаче про очередь в векторах. Кстати, в решение этой задачи используются методы, про которые в видео не говорили. Например поиск определенного значения в векторе.
Я так понял, что пояса именно для тех, кто уже более менее разбирается в плюсах.
Кстати, с такой же плохой постановкой задач, как в поясе, заметил и на курсе по плюсам от Яндекса на степике. Яндекс следит за курсами и обновляет их?
>>2300055 Фифти-фифти что говорится. На скорости х1.75 пойдёт. Большую часть задач я откровенно говоря скипал ибо много сложнее вещи решал в js`е. Про то, что прямо надо разбираться в плюсах - я бы не сказал. Всё очень даже недурно объясняется. Но я дропнул, не хочу заканчивать. Не люблю все эти курсы, видосики, я намного лучше информацию усваиваю когда читаю текст. Да и за те 10 минут которые идёт один видос я порой несколько тредов стака успеваю прошерстить.
>>2299904 Стек маленький, порядка 2мб для x64 и может переполниться довольно быстро (хотя зависит от конкретной OS и настроек компилятора). Ещё у каждого потока свой локальный стек. По сути куча это основная память программы управляемая программистом, а стек - вспомогательная автоматическая.
>>2300163 Выделение памяти через new медленное - среде выполнения надо найти подходящий по размерам блок памяти (которая фрагментирована). На стеке - считай мгновенно - надо увеличить адрес вершины стека на размер объекта. В итоге, если твои данные крупных размеров и с долгим сроком жизни, то new. Для всякой локальной мелочи - стек.
>>2300235 Этого не достаточно, чтобы принять решение. Если array так ограничен, а vector универсален, напрашивается вывод, что надо всегда юзать vector и не задумываться.
>>2300242 array это обёртка (сахар) вокруг сишного массива: T array[Size], чтобы его можно было использовать как и другие std контейнеры. Чем сишный массив лучше? Например тем, что он выделяется на стеке, в то время, как vector требует хотя бы одного вызова new.
>>2300250 Ещё vector должен хранить в себе переменную capacity размером size_t (для x64 8 байт), в то время как для array она static. Если массив маленький, то получается неплохая экономия.
>>2300411 >не интересно кстати по этой же причине терпеть не могу когда для языка есть один централизованный, анально привязанный пакетный менеджер. Плюсы + их инфраструктура это реально лучшее что есть на данный момент в этой грязной кабанчико-пориджевой индустрии
>>2300422 во-первых там про классы шла речь во-вторых можно(а может даже нужно) сделать геттеры и все в-третьих операторы это другое, там костыль через костыле
битовый сдвиг для вывода в iostream'ы, обожаю, лучше только деление для объединения времени и файлов
>>2300447 иногда выражения по типу ClassName() принимаются за вызов/объявление функции. {} эту проблему решает т.к это явный запрос на вызов конструктора
инициализация через равно аналогична вызову конструктора
>>2300449 Спасибо. А для скалярных переменных разница между допустим int a = 5 и int a{5} есть? Ну и вообще аффектит ли это как-будь производительность или ещё что-нибудь?
>>2300452 нет, влияет только на то что int a{1} это детектор, по типу auto main()->int насчет производительности : в таких случаях иди на godbolt и проверяй
>>2300455 в чем проблема? Вот сеттеры это да, в большинстве случаев ересь Ебал в рот ваши мантры про " инпуксуляция это скрытие", пишу так что бы было удобно пользоваться кодом
Как организовать инклуды когда необходимые либы повторяются? Вот у меня раз хедер - iostream, filesystem. Другой - тоже самое + ещё что-то. Это же неправильно? Как сделать правильно?
>>2300467 Это правильно, любой файл, который юзает определения из инклудов, должен включать все эти инклуды, даже если ты в данный момент уверен на 100%, что нужнвй инклуд косвенно включится. Иначе, если это когда-нибудь изменится, начнётся анальная ебля с определением, куда и что включать. Лучше об этом не задумываться и всегда включать всё нужное.
Кстати, это неебовое преимущество крестов перед VHLL. У тебя хотя бы есть опция взять примитивное быстрое решение, там, где его хватает. В рубях и пиздоне по сути только "вектора".
>>2300534 То есть ты хочешь сказать, что события тоже самое что и слоты и сигналы? А зачем мне тогда нужны события если я также могу соединить сигналами и слотами. Я думал события это такое глобальное действие, которое рассылается всем кто его ждет, и не надо указывать какому объекту отправить событие. а sendpos() только конкретному объекту отправляет сигнал-событие. А как сделать так что бы вся программа знала что что то произошло? Отсылать событие главному окну? а она пусть отсылает событие своим детям?
>>2299536 Для вката нужно понимать OS Internals и иметь навыки программирования на С/С++ по большому счету. Но скажу сразу - в пределах СНГ ловить нечего, рынок мёртвый, лучше быть веб-макакой. Если хочешь, чтобы за байтослесарство хорошо платили, строго нужен перекат в США/Канаду/страну западной Европы/Израиль/Сингапур.
C: int arr[] = {1 ,3 ,3, 7}; - стэк int *arr = malloc(4); - куча
С++: std::array<T, 4> - и сам объект и закулисный T arr[4] выделяются в стэке
std::vector<T> vec(4); - в куче, так как в вектор можно совать элементы и он в рантайме будет делать realloc каждый раз, когда будет заканчиваться память для новых элементов
>>2300723 >а на ОЗУ похуй, она ж бесконечная. this. Помню как у меня в яндекс дзене на протяжении 2ух месяцев память неумолимо утекала и спустя минут 15 в этой хуйне мои 32гб уже задыхались по полной.
>>2300748 Это в пределах одного .срр. В соседнем один хрен придется всё заново включать, парсить и конпелироватб. Прекомпилед хедеры это расширение и костыль который в цпп20 легализован через import <zalupa>
>>2300723 Так-то думать фактически не надо. Unique_ptr и shared_ptr с рефкаунтом когда надо, всё обёрнуто. Единственный момент когда надо думать - это cyclic reference, и знать что надо юзать weak_ptr дабы избавиться от него. Итог - сборка мусора by design с фактически нулевым оверхедом.
>>2300831 >И в чём я неправ? >Чем сишный массив лучше? Например тем, что он выделяется на стеке, в то время, как vector требует хотя бы одного вызова new.
Сишный массив, равно как и std::array<T, size> в плюсах, выделяются на стэке. Зачем ты сравнил сишный массив с плюсовым вектором, когда в плюсах есть прямой аналог сишного массива в лице std::array, яхз.
>>2300693 Спасибо за ответ, анонче. А не мог бы ты рассказать о самлм процессе переката? Понятно, что нужно учить языки, но не будешь же зеленым перекатываться? Все равно придется пару лет на отчизну поработать?
>>2300875 Я не он, но один из вариантов - работать в крупной галере с иностранным заказчиком (допустим epam, luxoft). Другой - пробиться в офис международной брендовой конторы (Intel, samsung. siemens и т.д.). Ещё вариант зааплаиться в контору, где уже есть русские, а в идеале твои знакомые (обычно это восточная европа, а потом перекат на запад). Самый простой вариант - уезжать по студенческой визе и там по месту искать работу на перспективу.
Общей рекомендации нет - надо траить все варианты.
>>2301037 >>2300885 Ну ничего, у самурая нет цели, есть только путь. А вообще хотелось бы в каком нибудь нейролинке импланты пилить. Но туда, наверное, без дополнительного надмозга и докторской степени не попадешь.
>>2301060 Удачи во всех начинаниях и продолжениях, анон. Дорогу осилит идущий, всё в твоих руках. Насчёт надмозга - да, в разработки такого уровня требуются люди с экстраординарным мышлением, типичным разрабам там не место. А вот по поводу докторской степени - не всегда истина, и не про все отрасли. Например, на данный момент в серьёзном ML без докторской степени делать нечего, а вот во многие другие отрасли, включая эмбеддед, в большинстве своём требуются опыт и мозги.
>>2301288 Всем плох. Потоки как канализация, ты тупо сливаешь данные в унитаз в надежде что они потом где-нибудь как-нибудь всплывут. Дерьмо как оно есть. А вот printf то что надо, тебе надо напечатать, оно и печатает.
Сап, первый день в плюсах так что мб тупой вопрос, но гугл мне не помог. В общем писал сериализацию и встала задача изменить часть бинарного файла. Есть хедер и его нужно переписывать иногда. Всё что мне нужно это встать в начале файла, затереть условно 16 байт и не трогать всё, что лежит дальше. По-разному пытался, такое чувство, что seek'и не работают. Попробовал открывать binary | in вообще файл не создаёт. Я уже даже думал со временным файлом какой-то костыль делать. Скорее всего потому что я еблан, но мб что-то подскажите?
>>2301461 Это нормально что я вкатыш ~1 месяц и понимаю только отдельные слова из этого? Как вникнуть в то, о чём этот пчёл пишет? Посоветуйте статей каких-нибудь что ли?
Ещё можно так сделать, причем если оффсет будет больше размера текущего файла, то он увеличится, совершив конкатенацию тех байтов, которые были за пределами предыдущего размера. Если это недопустимо в твоем случае, то просто добавь проверки величины перед тем, как передавать оффсет в функцию.
А на чем вообще делают интерфейс под всякие системы типо датчиков, фотиков там разных? Там крутится какая то условная бубунта, виндоус и кутовый код? Кто таким занимается можете пояснить за инструменты в общем, даже не обязательно плюсовым?
А как, чем и на предмет чего тестится постбилд код? Вот у меня сейчас в гите стоит стейдж в CI который после билда прогоняет файлик через valgrind. Всякие юнит-тесты и прочая хуйня это понятно, а ещё что-нибудь юзается?
>>2301697 Зависит от железа, зачастую ресурсы очень сильно ограничены, что приходится рисовать интерфейс попиксельно, если повезет, то в какой-нибудь из библиотек будут уже реализованы простые фигуры.
Можно использовать любой язык (с ограничениями), но только если найдешь для него компилятор, а так наиболее популярны C, C++, но имхо C++ там не нужен.
>>2301787 Ну а по конкретней можно про инструменты? Какие либы? Вот в тачках стоят какие то демшанские планшеты или фотики типо кэнона, как там вообще все устроено? На чем все это пишется и подо что
>>2301842 Какие инструменты? Берешь компилятор для мк и пак либ, которые с ним идут, посмотри, как код для всяких стмок или ардуинок пишется, иногда есть возможность отладки через компьютер, но не всегда, бывают ситуации, когда у тебя отладчиком является светодиод или осциллограф.
>>2301922 А он как то нарушает принцип строгой типизации? Нужон просто чтоб код не захламлять кучей мусора, потому что хоть в сколько то большом проекте довольно скоро все превращается в хуй::говно::жопа::моча::итд
>>2301926 >А он как то нарушает принцип строгой типизации? Выглядит именно так, что челику западло разбираться что оно там и чем является и он всё на волю самой проги/компилятора/императора отдаёт. >Нужон просто чтоб код не захламлять кучей мусора В чём проблема использовать using хуй = std::жопа<std::моча<...>>?
>>2301932 Ты можешь писать как хочешь, с авто это просто короче и нагляднее, чем городить кучу всякой херни. Никак строгой типизации это не противоречит, я хз что ты тут сказать пытаешься. Вообще подобное есть не только в плюсах, а еще и в других строго типизированных языках. Воспринимай это как просто сахарочек для удобства
>>2301932 >В чём проблема использовать using хуй = std::жопа<std::моча<...>>?
Сынок, вот хуярил бы ты метапрограммирование, тогда бы понял зачем auto в плюсах.
Домашнее задание - высри имплементацию struct.unpack как в пиздоне, чтобы функция возвращала tuple произвольного размера с произвольными типами с парсингом форматной строки в компайл-тайме, посмотрю на тебя. Если в плюсах что-то есть, значит так надо. Этот язык создавался гениями.
>>2301697 могут к примеру внутрь линукс запехать, и доступ к экранчику сделать через fbdev, а дальше уже прикрутят более высокоуровневую либу типа qtopia, либо сами сделают что-то похожее, ну а в конце прикладной программист уже будет делать экошки, кнопочки и прочее используя этот инструмент самая жесть когда железка совсем новая и есть только доступ к видеопамяти, когда сначала нужно будет сделать что-то типа fbdev, в общем кадровый видеобуфер с двойной буферизаци, и уже после этого делать библиотеку gui но во встраиваемых системах зоопарк, десятки решений, хотя принцип у всех похожий
>>2301922 Потому что есть анонимные сущности, например лямбды или анонимные классы, о типах которых знает только компилятор. Ещё в шаблонах надо как-то выводить тип конечного выражения.
Помнится где-то читал, что базовые типы можно передавать там, где не требуется иное по значению и ни о чём не сожалеть мол там всё внутри отлично организованно и от передачи ссылок профитов нет. Так ли это?
Как сделать метод с 1 единственным опциональным параметром? Юзаю std::optional с дефолтным значением но оно всё равно не компилируется если не передавать никакое значение в функцию. Не кидать же постоянно туда std::nullopt, это же тупо?
Давненько не писал ка плюсах, и подзабыл уже Вот есть у меня base.h class Base { virtual bool foo(int) = 0; }
impl.h class Impl: public Base { bool foo(int); }
impl.c bool Impl::foo(int x) { return x == 42; }
А почему линковщик ругается что не найдено Base::foo(int) Разве не в этом весь смысл =0? Из за этого непойми где приходится писать чушь типа Base::foo(i) { return false; } Подскажите как правильно
>>2302797 Она приватная, потомок ее не видит и не переопределяет своим объявлением. Если бы использовал override тебе бы сразу выдало что хрень пишешь.
>>2300875 Да, с отчизной наибольшие проблемы. В РФ на плюсы активно нанимает яндекс, но там предметная область бекенда, а не роботов, автономных машин и компиляторов. Еще есть касперский, хуавей, самсунг, мцст. Наверное сначала нужно туда пытаться попасть. Но в хуавее и самсунге все забито на несколько лет вперед разнообразными олимпиадниками из мфти, поэтому если ты один из них, то остается касперский и мцст. Хотя в мцст тоже очередь из мфтишников есть. А так в целом раз уж ты родился здесь, то смысла от переката за бугор много не будет. Будешь получать свои 150 килобаксов в США и платить там конскую сумму за ипотеку. В итоге уровень жизни будет гораздо меньше, чем у местной веб маньки.
Планирую перекатиться на линукс. Мне главное чтобы прогать можно было удобно. Я обычно прогаю в vs code + настроены компиляторы в vs либо через консоль компилирую. Иногда возвращаюсь на винду в vs когда надо что то отдебажить сложное. Все таки в vs с этим удобнее. + есть анализ участков кода на производительность и анализ памяти. На линуксе с этим либо не так просто, либо я не разобрался. Чем на линуксе vs заменить?
В плюсах можно сделать так? Вытащить из рандомной структуры список всех полей вида "type | var_name | address". Т.е я не знаю сколько полей и какие они.
>>2303598 Если у тебя задача распарсить какой-то протокол с данными, то есть либы наподобие http://kaitai.io/ Там ты конечно должен структуру сам ручками расписать, методом тыка.
>>2303742 Ну, если ты так говоришь... Кресты же у нас чисто про вертикальное мышление и Ctrl-C и Ctrl-V код. Есть Qt и больше нам ничего не надо, так ведь?
>>2303772 Использование HTML+CSS, когда есть Qt/Gtk избыточно и это лишняя нагрузка, переносимость/кастомизация у них большая, тащить с собой webkit на 30мб загружать в ОЗУ пару мегабайт, такое себе, что ты от этого получишь?
>>2303861 >своего энтузиазма Какого? Взять готовую библиотеку и написать никому ненужный и всеми ненавистный еще один локальный HTTP сервер, это по-твоему удовлетворение энтузиазма?
>неприятия мейнстрима Писать GUI на вебе - это мейнстрим уже пару лет, когда стали появляться различные редакторы кода на электронах.
>>2303940 >Какого? Взять готовую библиотеку и написать никому ненужный гуи для своей никому не нужной терминальной приложухи в данном случае. >неприятия мейнстрима Не, электрон это даунская хуйня, тут и так всё ясно.
>>2304140 >чел, сейчас у каждой домохозяйки как минимум 8гб рам, куда ты свои сэкономленные 30 мб пихать собрался на десктопе? Чел, назови 3 адекватные причины использовать вебкит при написании кода на C++.
>>2304140 Это просто вопрос чести и профессионализма, зачем делать тяп ляп, и вообще брать низкоуровневый язык с ручным управлением памятью, если тратить ее бездумно, а не только минимально на то, что надо? Это же, типа, основы computer science. Я вот хотел сделать браузер для двача, чтобы был крохотный как старая аська и висел в фоне не жрал ресурсы, там же нужно мизер ресурсов на тексты, так хуй там, капча требует подгузки целиком браузера с яваскриптом.
>>2303737 у майкрософт когда то давно была такая интересная технология: движок их браузера был по сути компонентом activex, поэтому ты мог просто создать приложение, и активировать в нем этот компонент, и таким образом у тебя был уже в приложении свой мини-браузер далее на любом языке, который мог в com, ты уже мог создавать активные странички в этом компоненте, отрисовывая там кнопочки, фреймы, таблички и все такое прочее у майрософт еще была на основе этого такая заготовка которая позволяла для скриптовых сценариев очень быстро рисовать гуй - ты там в скрипте на vbscript или jscript (ну и на других скриптовых языках типа active perl, active python, etc) мог быстренько сделать менюшки, кнопочки и все такое майкрософт, по сути пионеры такого подхода были потом подход к построению гуи при помощи html+css он в принципе более идеологически правильный, так как разделяет презентацию и представление (чего, к примеру не было в формочках дельфи)
>>2304308 Бля охуенная же идея, но снова всё проебали. Как и wsl 1.0 в пользу унылой виртуалки. Хотя там как раз понятно, что деды которые сделали мелкомягким ядро nt, давно ушли или померли от геморроя. И изначальный план - подсистема окружения с равноправными процессами - реализовать не осилили. А ведь линуксовые процессы уже были видны в диспетчере задач, им можно было устанавливать приоритеты и привязку к ядрам..
>>2304415 Практика всегда должна идти впереди теории. Если ты читаешь 300 страниц и пишешь 20 строк кода - ты явно не прав. Если ты пишешь 300 строк кода и при этом прочитываешь 20 страниц стака/референса - то уже спустя малое время ты будешь из себя что-нибудь представлять.
>>2304425 >полтора часа Охуеть, чем смотреть каких-то чуваков в свитерах и с синяками под глазами за это время можно примитивненький рейтрейсинг написать.
>>2304422 >ты читаешь 300 страниц и пишешь 20 строк кода Надо так. Я в детстве прочитал десяток книг по программированию когда у меня даже не было компьютера. Каждую главу вдумчиво.
>>2304600 >>2304603 спасибо, да я uefi-bios как одно имею в виду оно же как расширение над ним, мне и uefi очень даже норм. всё понял куда копать. спасибо
>>2304391 >И где эта технология сейчас? думаю даже в win11 ты все еще сможешь сделать gui-менюшку на html используя скрипт vbscript, майкрософт обычно держит свою обратную совместимость до последнего
>>2304387 ну смотри, ведь wsl это был преемник sfu (сервисы майкрософт для юникс), а sfu был преемником posix windows nt а ядро nt было интересно сделано - предполагалось что поверх него будут сделаны различные подсистемы, главная конечно же это была windows, но при этом сделали еще и posix слой, и вроде бы еще запиливали другие более специализированные системы, для ранних смарт-устройств например в общем, майкрософт, повторюсь, как ни странно зачастую являются пионерами, бегут впереди рынка
бля вы всегда так пугаете физтехами. Как будто 1) Это единственный нормальный вуз (есть еще МГТУ и МГУ как минимум) 2) Они реально такие жесткие. Они все там физики, которые идут в машин лергиниг, если денег хотят. Че вы то ссытесь, чмохи? 3) Да даже если они реально ТАК знают математику, то это не гарантирует, что они хорошие программисты. Мб Rnd или анатилики да, но прям прогеры - хз. Думаю что процент хороший прогеров оттуда не сильно выше чем у других топовых втузов 4) Был у меня знакомый физтеховец мощный. Прям стандарная история: топ школа -> физтех -> свой стартап в тех зрении. Так вот он утверждал что на мобилке нереально в риал тайме распознавать лица. Ну йопта. Не говорю, что он тупой - чел реально мощный. Но, как грится, также ошибаются как и все. Так что я совершенно не разделяю хуйни типа "ой там физтеховцы одни в очереди стоят, ик пук". Конечно, если ты заканчивал ЗалупкинГУ и тебе после рабочего дня интереснее пивас пососать, вместо того, чтобы почитать чего-нибудь по алгосам\линалу\терверу\любой другой математике, то да. Соре А если чел реально увлечен работой и имеет хорошую базу (или хотя бы поднимает ее в свободное время), то не нужно депрессовать Пысы. у меня знакомый из второсортного вуза в самсуге работает. Не скажу, что он мимокрок, но и не топ перформер. В свое время не смог с usb либками разобраться
>>2304669 Для начала я бы хотел просто запустить программу которая бы просто вывела один раз значение температуры цпу в консоль один раз и всё. я ещё заняться не могу этим недавно с одного компа на другой перешёл, пока данные по сети тащил с одного на другой, пока обратно, пока винду искал/драйвера пока на старом всё переделал я его же отдал другому человеку. ну ты понел как это геморно
>>2305012 Ну топ конторы, они же RnD занимаются, считай околонаучной деятельностью. Допустим тот же самсунг занимается параллельными вычислениями на кластерах GPU. Для этого нужны исследователи, которые родят концепт. Это выпускники МФТИ. В добавок к этим челикам нужны инженеры, которые переложат концепт в код. Это твой дружаня из второсортного вуза.
>>2305141 Ну, извини меня, rnd штат совсем небольшой. Тут я часто слышу тему, что даже инженером не устроишься в такие конторы. Ну а насчет того, что в рнд беркт одних физкеков тоже хз. Опчть же я не говорю, что рнд самсунга держится на МАИ, но думаю что и не только физтех
>>2305214 RnD вещи делают люди с учеными степенями, либо стремящиеся их получить - аспиранты, кадидаты и доктора наук. И там больше роляет чем ты занимался, кто ты по жизни и кто твой научник. Ну и так сложилось, что наукой в инженерных вузах у нас не занимаются от слова совсем, поэтому в RnD кроме физтехов ты вряд ли кого-нибудь встретишь (может только парочку челов из МГУ и ВШЭ).
>>2305214 >>2305234 Раз уж тут обсуждение рнд и физтехов, то внесу ясность, как физтех, прошедший 3 крупных рнд + успешную институтскую лабу с компьютерным зрением. 1. Физтехи есть, но немного. Где они все - хз. В основном работают не по специальности типа банковскими аналитиками или кодерами. 2. В компании, где был прямо максимальный рисеч, было много людей вообще не из московских вузов (удивительно много сибиряков) 3. Мода нанимать "не ниже кандидата" прошла году в 2015, когда стало понятно, что рисеч тоже может приносить бабло, а людей не хватает. 4. На физтехов при этом многие смотрели с восторгом, хотя мы особо не выделялись из общей толпы. хотя я все-таки смог придумать клевый успешный алгоритм для своего направления. Наверно сейчас хэдквотер во всю его себе на девайсы адаптирует
Как мне подключить библиотеку к QT, я не понимаю в корне. Почему все так не понятно. Вот есть https://github.com/signal11/hidapi библиотека, но там нет не lib, не dll, не а, ничего нет. Что мне подключать? Как? у меня голова уже болит просто пиздец. помогите пожалуйста я не смог найти ни одного адекватного гайда
>>2306026 Ну типо ты работал на агрессию, и вообще может быть шпион и хакер. Они даже после работы в касперском боятся брать. Но не говорят этого потому что на них можно подать в суд.
Я в полной фрустрации, как бы я не гуглил я ничего не нахожу дельного, о том как пользоваться ебаной библиотекой скачанной с git, как ее подключать если там нихуя нет, как ее собрать если нет нормального гайда, сидеть неделю изучать как работает Cmake, ради создания одного ебаного фаила .lib, сукааааааааааааа
>>2306017 Всем похуй, но на допуски смотрят когда думают, выдавать тебе визу или нет. Если второй-третий лвл был, то могут и отказать. На первый похуй обычно.
>>2306288 Ты уровни допуска перепутал. 3й наоборот самый поверхностный. Как на практикес визами работает. Лично я не в курсе. Мне кажется, что больше от предприятия зависит, на котором работал. Потому что 3й уровень допуска на военной кафедре вузика и работа непосредственно на министерство обороны с третьим уровнем допуска все-таки разные вещи.
>>2300537 События предназначены для хэндлинга внутренней жизни объекта, сигналы и слоты для общения объектов друг с другом. Иногда события пересылаются дочерним объектам конечно же, но в целом они не должны протекать наружу. Эвенты - часть приватной реализации, сигналы - публичный интерфейс класса. А потом кто-то придумал что было бы прикольно менять поведение класса композицией вместо наследования и вмешиваться в жизнь объекта пробиваясь шаловливыми ручонками к его эвентам. Так появился эвентфильтр. Эвентфильтр - это хак, вернув true вместо false можно сломать отрисовку объекта или его респонсивность нужным тебе образом. Это очень полезный и удобный хак, так что совершенно невозможно отказать себе в удовольствии им пользоваться. Не могу представить себе ситуацию когда тебе нужны какие-то ещё эвенты кроме уже реализованных, да ещё и публичные. Обрисуй идею.
>>2306347 Я хотел сделать drug and drop квадратиков как в windows phone, типо там будут квадратики и их можно будет перемещать по сетке, так вот я хотел с помощью события передавать другим квадратикам что я нажал на квадратик и собираюсь его перетащить. А когда другие объекты ловят евент о том что я сделал drag одного из квадратиков, то они уменьшались в размере бы, что бы можно было понять какой квадратик ты взял, а какие нет. Я просто на тот момент думал что евент, это что то глобальное, что можно послать в общий эфир и все услышат, но как оказалось это не так, это частный случай сигнала.
У кого какой рабочий инструмент? У всех коллег какие то полуигровые ноуты с видяхами хорошими, а я вот думаю простой хонор взять, ну максимум виртуалку запустить, да сервер. Должно же хватать? Кто новый ноут покупал недавно что вы там брали?
>>2306443 Дома станция на тредриппере стоит. Но я очень часто в постоянных переездах/перелётах так что беру с собой простенький ультрабук и не так давно новый хуйоми планшет взял. Когда как то с одним, то с другим. 95% работы делаю через ssh преспокойно. Если нужно какую-нибудь модельку быстро обучить - тупо арендую кластера. Брать ноут как основу == тупость.
>>2299453 Что-то твои свидетельства сильно расходсятся с тем, что аноны пишут в англоязычных интернетах - веб-макаки (бекендовые, по крайней мере) и востребованнее, и богаче.
аноны, кто работал с dds ? Хочу попробовать ради тренировки написать свой, но чет не совсем понимаю, как это все работает. Точнее концепция ясна, но вот реализация - хз . Я прочитал, что там не используются сокеры. Тогда вопрос: как передать данные в от устройства к устройству? или я все-таки не понимаю концепцию? Скиньте что-нибудь почитать плез на эту тему
>>2307128 нууууууууууу и да и нет. Представь что у тебя есть много устройств, например, робот с большим количеством сенсоров и систем типа СТЗ, локализации и тд. Вот драйвер каждого сенсора или камеры может срать сообщениями. Представил Так вот ддс это модель, при которой существуют публикаторы и подписчики на определенный топик. Например, топик называется 'camera_data'. В него публикует данные драйвер камеры. А, например, модуль object detection на этот топик подписан и эти данные оттуда забирает. так вот я мельком видел инфу, что вся такая архитектура сделана не на сокетах а как-то иначе. Как - я хуй его. Как я понял, ты , анон, сам не очень шаришь в этом. Однако взываю к анонам, которые понимают что происходит, чтобы чуть объяснили, а то я чет не совсем понимаю реализацию этого говнища
>>2307138 Ты же сам ответил на свой вопрос на чем, кроме сокетов, такое можно сделать, драйвера для устройств, взаимодействие через условный USB порт или через что-то еще.
>>2307138 >>2307163 В дополнение, подобное можно реализовать на каком-нибудь, более узком для такой задачи, микроконтроллере, чтобы не занимать целую машину для подобной задачи, к тому же более удобное подключение множества устройств через пины, как и в целом более гибкая структура может получиться, потому что не будет ограничений от ОС.
>>2303126 А разве это полностью заменит visual studio? Есть ли анализ участков кода на использование процессорного времени в вашей схесе есть? Мне иногда vs code + clang кидали странные ошибки, которые я потом только в visual stduio находил. Мне студия кидала heap corruption, а vs и clang просто "Вызвано исключение" и всё. А я голову ломал почему оно вызвано.
>>2307200 Он жирный шо пиздец. Разница между Clion и vs небольшая. Переходить с vs на clion особого желания нет. Я вообще не уверен, что clion получше vs будет
>>2307163 Нет. Точнее я не очень хорошо описал Но прикол в том, что в такой архитектуре нет сервера. Там идеология такая, что выход одного компонента не должен выводить из строя другие Это скорее шина, по которой гоняется словарь, где коючи - топик, а значение - очередь сообщений С микроконтроллером соглы, но это не только в микроконтроллерах применяется. А везде, где нужен риалтайм. В примерах применения часто фигурируют финансовые системы
>>2307223 Так у тебя устройства по сетке общаются или физически к одному хосту прицеплены? Если к одному хосту и на лялексе, то могут и через shared memory общаться или пайпы. Зачем тебе сокеты то?
В одной статье на хабре наткнулся на такую фразу, что постепенно все идет к полному удалению препроцессора и соответственно его директив. По многим понятно, но на что можно заменить те же директивы условий, когда например при одной битности нужно определить тип как 32 бита, а при другой как 64 бита и другие такие штуки И вроде как тоже препроцессор удаляет токены типа комментариев и тому подобное, как совсем без него-то?
>>2308060 Ну т.е. я так понял, что только include поменять на модули вместо define value использовать enum, а вместо define fn() использовать inline, а остальное также?
>>2308493 Если ты про sin_zero, так это для того, чтобы можно было кастовать эту структуру в другие структуры, например sockaddr. А вообще мог бы загуглить
Анончики, есть вопрос, немного связанный с WinAPI. Есть у меня канал (pipe) для IPC между службами, и я хочу передавать через него кастомные структуры размером до n байт. Вопрос состоит в том, как это правильно сделать? То есть, грубо говоря, один процесс посылает структуру struct1 второму, а тот лишь заполняет n байт (или меньше, в зависимости от размера struct1) в динамическом массиве. Я так понимаю, нужна шаблонная базовая структура, от которой будут наследоваться другие структуры?
>>2308884 А просто связка CRTP + std::typeid не пойдёт? Посмотрел про protobuf, он всё-таки больше подходит для больших данных, у меня канал данных небольшой, около 512-1024 байт. Да и скорость очень важна.
>>2308845 в протоколах обмена обычно делают заголовок фиксированной длины, в этом заголовке описывается что будет лежать в динамической части просто посмотри в интернете как проектируют протоколы обмена, если уж так хочется свое сделать
>>2308945 Ну тут я не знаю, я пользователь этого api, внутрь не заглядывал, для меня это чёрный ящик с простынями кода. Не забудь о версионировании и изменении структур в будущем
>>2307949 >когда например при одной битности нужно определить тип как 32 бита, а при другой как 64 бита и другие такие штуки КОНСТЭКСПР О Н С Т Э К С П Р
>>2309116 Я показал это лишь как пример того, как можно заменить препроцессорное определение средствами языка. Но именно для этого случая я бы, в зависимости от конкретной ситуации: 1) Обмазался бы ифдефами 2) Создал бы две структуры (FooBar32 и FooBar64) 3) Сделал бы два различных .cpp файла и выбирал бы нужный системой сборки
Сап аноны, есть один язык программирования, основанный на С, но с урезанными функциями. Дело в том что float здесь 8 байт. Я читаю из бинарного файла число с плавающей точкой 4 байта. Как мне преобразовать 4 байта в 8?
>>2309328 > Что за язык? Control > Почему float и double 8 байт? Зачем тогда в нем такое различие, на float и double, если у них одинаковые размеры? Я не знаю. Даже в мануале написано, что между ними никакой разницы.
>>2309345 >Control Первый раз слышу, как и поисковики.
Определись, в каких форматах у тебя представлены вещественные числа в языке и в каком формате они в файле. После чего преобразуй float из файла, в свой (язычный) float.
Хочу написать приложение, которое можно будет легко адаптировать для разных протоколов связи. То есть есть данные, их надо отправить одним из некоторых способов. Может быть как отправка через tcp/ip, tor, i2p, какой то свой произвольный формат, хоть по usb. И вот хочется сделать какой то единый интерфейс для всего этого. Можно ли как то это обобщить все, кроме использвания какой то функции send, которая внутри себя уже просто вызовет другую соответствующую выбранному протоколу?
>>2309482 >tcp/ip, tor, i2p >обобщить все, кроме использвания какой то функции send Как ты собрался реализовывать абстракцию между несовместимыми конечными адресами?
>>2309617 Ну ты же сделал, то о чем я и говорил выше. Есть одна функция, которая уже из себя вызывает нужные для конкретного протокола. А я спрашивал можно ли сделать это элегантнее и с минимумом дублирования кода.
>>2309627 Они могут быть похожи. Некий тор и i2p кажется можно вообще как прокси юзать, тогда интерфейс будет вообще одинаковым, а можно ручками api дергать.
>>2309633 >Некий тор и i2p кажется можно вообще как прокси юзать Если они у тебя установлены в системе, да. Тогда вообще никаких проблем с дублированием не будет, просто создай какую-нибудь функцию, типа connect_to_local_socks(port) и указывай порт для каждого локального прокси в зависимости от тора или айтупи. Дублирования нет.
Ребят, я по ravesli знаю, что говно, не кидайтесь камнями говном пытаюсь учить плюсы. Сайт сейчас отключили, есть у кого-нибудь их pdf-ка, или локально сохранённая копия сайта? Буду очень благодарен. С вебархива тоже выпилили, прям грусть-тоска.
Аноны, есть задача написать логгер обращений программ в реестр, для удаления созданных программами ключей при деинсталляции. Короче чтоб реестр не засорялся. Я в системном программировании вообще не шарю, поэтому пришёл к вам за советом. 1. Правильно ли я понимаю, что этот функционал стоит реализовать в виде драйвера? 2. Каким образом я могу отследить событие установки приложения (или его обращения в реестр)?
>>2309676 >Ты решил по тредам походить и сделать таким образом курсовую? А это запрещено? Я стараюсь самостоятельно разбираться и тут задавать конкретные вопросы там, где у меня проблемы.
Про хуки сейчас прочитаю, спасибо. Кстати, нашёл ещё такую вещь как RegistryCallback для драйверов, вроде то что нужно.
>>2309676 > 1. Правильно ли я понимаю, что этот функционал стоит реализовать в виде драйвера? Да, весь реестр ты не хуканешь.
> 2. Каким образом я могу отследить событие установки приложения (или его обращения в реестр)? Отслеживать записи от определенных приложений (у тебя будет PID в каждом коллбэке). Но глобально задача не решается. Т.е. можно логировать все, что сделает msiexec, допустим. А если софтина не юзает msiexec, и экзешник не называется setup.exe ? Только какие-то эвристики придумывать, типа создания ключения в HKCU\Software или HKLM\Software
Писал виртуализацию реестра, так что можешь задавать вопросы
>>2309678 Тебе нужны хуки на вызов функций и dll. Драйвер только усложнит эту задачу, тут пользовательских администраторских прав более чем достаточно.
>>2309682 >А если софтина не юзает msiexec, и экзешник не называется setup.exe Там изначально идея была в другом, чтобы удалить все созданные программой ключи, которые она создала, даже после установки. Определение является ли программа установщиком тут не нужно, просто чистка от мусора (неиспользуемых) ключей реестра.
Читаю из сети, соответственно после каждого чтения проверяю, что чтение успешно, поэтому приходится постоянно писать client >> req; if(!client){ break;} , что заебывает. Как это можно красиво обернуть во что то?
>>2309685 нет такого понятия, как "неиспользуемый ключ реестра". Если ты хочешь что-то почистить - надо записать то, что ты хочешь почистить, как, например, делает Ashampoo Uninstaller.
Просто рандомно хуярить ключи на основе каких-то эвристик - так работают все эти хуевые бесплатные чистильщики реестра, а потом после чистки винду переставляешь.
>>2309698 Ты не понял, да? Смысл в том, что многие программы под окнами, не удаляют созданные ключи в реестре после своей деинсталяции. Логгер записывает все созданные, удаляемой программой, ключи в базу данных, чтобы после деинсталяции удалить их самостоятельно.
>нет такого понятия, как "неиспользуемый ключ реестра". В итоге, получаем неиспользуемые ключи реестра.
>>2309701 > Ты не понял, да? Смысл в том, что многие программы под окнами, не удаляют созданные ключи в реестре после своей деинсталяции. Логгер записывает все созданные, удаляемой программой, ключи в базу данных, чтобы после деинсталяции удалить их самостоятельно. Чел, я тебе об этом и пишу - тебе надо тогда сканировать процесс установки, чтобы знать, какие ключи не удалились. Ровно так, как делает Ashampoo uninstaller.
>>2309702 Сканирование идет всех процессов, включая уже установленные, чтобы удалить еще и созданные на этапе работы ключи, таким образом определять, кто есть установщик не придется.
>>2309703 Типа навесить хук на любое обращение в реестр, и если обращение идёт в software на создание ключа, то логировать его? Потом хуком перехватывать деинсталляцию приложений?
>>2309710 >Типа навесить хук на любое обращение в реестр Не любое, а только создание ключей\параметров.
>и если обращение идёт в software на создание ключа, то логировать его Логгируй все.
>Потом хуком перехватывать деинсталляцию приложений? Такого хука нет, программа может быть вообще portable версии, но фактически удалить ее можно будет и ты никак это не отследишь без огромной аналитической работы.
>>2309717 Думаю, меня никто не побьет если я буду предполагать что у программы в реестре зареган unistall. В таком случае, как я могу определить момент деинсталляции? Может в реестре менять UnistallString на путь к моему деинсталлятора, который сначала удаляет мусорные ключи и затем вызывает оригинальный деинсталлятор?
>>2309723 Возможно сработает винду не видел уже несколько лет в живую, только сначала придется вызывать оригинальный деинсталятор, а потом твой, потому что оригинальный деинсталятор тоже может создавать ключи активности программы.
>>2309670 Выспался, вспомнил, что в гугле меня не забанили пока что и нашёл открытую раздачу. Если кому-то нужно, то вот ссыль. Сам сайт какой-то вонючий, нужна регистрация, но после неё качать можно сразу. s3. itor. be/viewtopic.php?t=77232
Почему это не компилится https://godbolt.org/z/f69dTMa7o а если вынести Inner из Outer наружу, то нормально компилится. Или ещё если явно прописать Outer(Inner const &inner = {-1}) { ... } то тоже компилится.
>>2310162 Понятия не имею, про что ты вообще, обожаю такие короткие бессодержательные ответы
В этом случае есть что ли какая-то существуенная разница между struct S1 { int x{-1}; }; и struct S2 { int x; S2() noexcept : x{-1} {} }; и struct S3 { int x{-1}; S3() noexcept {} } ?
Или тут >>2310129 с точки зрения языка есть фундаментальная разница между тем, что Inner находится внутри Outer или снаружи?
В Qt я собираю msvc2019. Пропробовал сделать самое простое: #include <liquid.h> (...) qDebug() << liquid_libversion_number();
Оно билдится без ошибок, но крашится в рантайме сразу же: The program has unexpectedly finished. Я забыл что-то важное? Библиотеку линковщику указал, ошибок линковки нет. DLLку рядом с бинарником положил. Разрядность проекта и библиотеки проверил (32).
В линуксе поставленный из репозитория .so подгрузился вообще без проблем и сделал то, что от него требовалось.
>>2310227 Тебе компилятор написал, что {} в твоём контексте это <brace-enclosed initializer list>. Открываешь гугл и смотришь что такое initializer list и какой у него приоритет при перегрузке. Как тебе раньше ответили - это база.
Inner в изначальном примере с ошибкой компиляции (без явно определённого конструктора) - это агрегатный тип, поэтому его должно быть можно инициализировать через braced-init-list. Можно хоть все конструкторы выпилить, но его всё равно можно будет инициализировать (24 строка). И std::initializer_list тут вообще ни при чём.
>>2310129 >>2310227 >Или тут >>2310129 с точки зрения языка есть фундаментальная разница между тем, что Inner находится внутри Outer или снаружи? В C++ традиционно сложные отношения между вложенными классами и complete class context внешнего.
>>2309896 чтоб не ебаться с инсталятором конпеляю сам, запускаю, ухожу на три часа, возвращаюсь и всё готово, могу плагины сконпелять какие хочу, могу раздебажить насколько угодно внутрь, поглядеть какие куски кода выполняются и какие переменные и шо куда, рекомендую.
>>2310910 >чтоб не ебаться с инсталятором конпеляю сам, запускаю, ухожу на три часа Сначала хотел посмеяться, а потом вспомнил гуи инсталяторы, так действительно лучше.
Хз куда писать, поэтому спрошу тут. На сколько плохо много раз открывать и закрывать tcp соединение для отправки маленьких пакетов? Дело в том, что я хочу периодически отправлять нескольким адресам (их может быть довольно много) текстовые сообщения. Держать 10000 постоянных соединений с каждым тупо. На сколько большой оверхет будет?
>>2311560 Тут ужечточился экспорт-контроль, точнее слежение за ним. То есть список технологий, который можно передавать заграницу, ограничен.
Мы в хуавее еще до этой заварухи сильно изучали этот список, и выяснили, что ИИ это прямо на грани. И даже некоторые проекты типа manifold learning пришлось не запускать от греха подальше.
>>2311415 этот заполнятель эксель табличек уже сьебал из рассеюшки и уже обустраивается на новом месте ничего, сейчас крыса придет в себя и отпишется через месяц-другой
>>2311583 Твой код, российского инженера, из Москвы за границу летит по проводу к китайцам. Вот в этот момент происходит экспорт. И вот какой конкретно код и для чего он написан определяет законность пересечения этой границы.
>>2311606 хз, не разбираюсь в таких тонкостях, но замечу, что, во-первых, если ты в инициализации b заменишь внешние фигурные скобки на круглые, то ошибка, которую ты ожидаешь, внезапно появится
во-вторых, если ты оставишь двойные фигурные скобки, но уберёшь из B конструктор, который принимает A, то увидишь ошибку, что типа no known conversion '<brace-enclosed initializer list>' to 'const B&'
>>2300158 Все там есть (для тех же кортекс М), просто без MMU использование может быстро привести к сильной фрагментации памяти. Дурной тон, конечно использовать, но если очень хочется - можно, нужно только о кастомных аллокаторах позаботиться.
>>2300158 Все там есть (для тех же кортекс М), просто без MMU использование может быстро привести к сильной фрагментации памяти. Дурной тон, конечно использовать, но если очень хочется - можно, нужно только о кастомных аллокаторах позаботиться.
Тред хоть и мёртвый, но пожалуй спрошу. Есть класс sf::Keyboard и в нём есть enum Key, в котором перечислены все клавиши. Я хочу создать класс EventManager, и "скопировать" этот enum себе в класс, т.е что бы EventManager::W равнялось sf::Keyboard::W. Как вариант нашёл добавить typedef в свой класс: typedef sf::Keyboard::Key Key, и теперь элементы enum будут доступны так: EventManager::Key::W. Есть ли вариант добавить этот enum, что бы он был виден в скопе самого класса? И насколько "легален" вариант который я нашёл с typedef'ом?
>>2311415 На момент последней коммуникации в четверг - Офис остается для всех желающих в нем работать. Все остальные желающие сьебать - имеют право сьебать в любой офис NV.
Собстно, у меня из команды сьебывают почти все, 1 человек остается в РФ только. Так что, как получу ворквизу - попрощаюсь с РФ навсегда.
>>2311962 Визы зависят от посольств и прочего. Еду я в европу, но весьма специфическую, так что диванон-лигивон. Дохера народу сьебывает в Амстер или там в Берлин, Лондон еще.
>>2311963 В других командах все всеьма похоже. Сьебывают почти все
>>2311963 > тот же вопрос анонам из яндекса, мейла и хуавея А нахер хуавею валить? Россия и Китай братья навек! Там даже мыслей об этом нет. Интел тоже весь остается. Пока вроде даже не рассматривается релокация.
>>2311996 >А нахер хуавею валить Не компания, а сотрудники. В мейле сотрудники массово выезжают зарубеж (как минимум на время), опасаясь закрытия границ. Работать продолжат на удаленке
>>2312547 Когда мой эксель и батники оплачиваются в несколько раз лучше, чем твой С++ - это лишь повод задуматься о собственной карьере, а не завидовать мне.
>>2313007 насколько я понял с тех пор как они выкатились в опенсорс они стали полностью бесплатными. Анон выше, судя по скрину, билдил под x64, у меня и под x86 ошибка вылетает.
>>2313041 сейчас попробую. Кстати, может мне надо какие-то дополнительные средства сборки накатить? Я когда vs ставил, оставил по дефолту все что качается для разработки на крестах
>>2313103 http://cpp.sh/4jz7l периодически может выдать проблемы при любом опрядочивании, ниже sequential consistency. Даже на x86 с его Total Store Order. У меня "BAD" появилось 1 раз на 3 запуска.
Аноны, кто шарит в API реестра винды? Если я хочу, скажем, залогировать создание ключей определенным процессом, хорошей ли идеей будет логировать дескриптор hkey и адрес подключа? Как из этого говна получить нормальный идентификатор только что созданного ключа?
>>2313275 Функции RegCreateKeyExAW и RegSetValueExAW принимают дескриптор ветки, и расположение до ключа, и имя значения, если это RegSetValueExAW. Получить строковое представление дескриптора можно через swicth-case.
>хорошей ли идеей будет логировать дескриптор hkey и адрес подключа Какой адрес ты собрался логгировать?
>>2313330 > Какой адрес ты собрался логгировать? Я про аргумент lpSubKey Короче говоря, вопрос был в том, можно ли парой hkey-lpSubKey однозначно определить ключ в реестре, чтоб потом читать эти пары из лога и совершать операции (удаления например)
>>2313330 Кажется я понял, что если буду использовать не Ex-версию функции, то она будет возвращать мне дескриптор созданного ключа. Если так, то наверное достаточно логировать его
>>2313408 >Кажется я понял, что если буду использовать не Ex-версию функции, то она будет возвращать мне дескриптор созданного ключа. Если так, то наверное достаточно логировать его Я просто надеюсь, что ты знаешь, как работают указатели и дескрипторы...
Есть курсы для людей с опытом, чтобы можно было относительно быстро пройти шелупонь типо массивов и циклов и перейти к практике чего-то достаточно узкоспециализированного?
>>2315444 >курсы >для людей с опытом >массивов и циклов >перейти к практике чего-то достаточно узкоспециализированного Тут много хуйни пишут, но такую хуйню первый раз вижу.
Прикол в том,что у меня почему-то в строку вместо букв записываются '\0' . Почему так? Новый проект создавал,в онлайн компилятор вставлял,везде одно и то же.
В бусте для отправки данных, подключений и тд и тп используются async connect, async write и подобное. Ну я так понимаю, что boost как то внутри себя решает когда данные отправлены, но ответ еще не пришел, что можно пока отправить что-то на другой сокет. Ну ок, а когда операция завершается и управление передается в мою функцию, то что происходит тогда? Каким образом выполнение идет в моей функции? Все кроме async'ов стопится или как?
>>2315606 То есть если у меня есть async_connect1, on_connect->f1(), то же самое с f2, где f1 и f2 долгие функции. Если начнет выполнятся f1, то f2 уже не сможет и будет ждать или как?
>>2315611 > Опять присвоение вместо равенства,которое не обрабатывается как исключение А почему оно должно обрабатываться как исключение? Это вполне себе нормальное выражение, которое имеет определённое значение.
>>2315637 Ну а если строго, то в языке просто есть expressions, statements и еще вроде что то. В стандарте написано, что на таком то месте в for может стоять такой тип. С точки зрения языка нет разницы там i++ или что то другое. Я так сходу и не приведу пример когда это прям гораздо удобнее
>>2315637 это не про возможность присвоение в условиях
просто operator= возвращает какое-то значение, которое в твоём случае можно неявно привести к bool, поэтому ты можешь присваивание написать внутри if, например
про использование этого на практике, в коде на си особенно часто встречается что-то вроде
>>2315650 >то есть переменным x и y присваивается значение z, потому что равно правоассоциативно вернее этот код эквивалентен y = z; x = y; проебался потому что из оператора = возвращается ссылка на то, к чему присваивается какое-то значение ("y = z" вернёт ссылку на y)
Короче такая тема: программа должна уметь соединяться с сервисом через i2p, либо же просто tcp. Я не знаю как лучше разбить программу на файлы. Хотел бы файлик в котором все функции за сеть отвечают. Начал так делать, но столкнулся с проблемой: для i2p нужкн конфиг с настройками, а где этот конфиг хранить не понятно. Как у дедов файлик и перезагружать приложение после каждого изменения чет такое)) А создать глобальный конфиг на всю программу тоже не понятно как. Да и как то странно
>>2315670 >для i2p нужкн конфиг с настройками, а где этот конфиг хранить не понятно Там же где их хранят все нормальные люди, "$HOME/.config/app", "/etc/app", "%APPDATA%/app", "Program FIles/app" и т. д..
>Как у дедов файлик и перезагружать приложение после каждого изменения чет такое)) Зачем перезагружать? А, как не деды делают?
>А создать глобальный конфиг на всю программу тоже не понятно как. Что такое глобальный конфиг?
>>2315943 vector, make_unique, make_shared Этого >>2315944 не слушай. New и delete нужны теперь только для реализации аллокаторов и умных указателей. Ну или если твой фреймворк принимает сырые указатели и дальше сам ими управляет
Дайте пожалуйста ссылку на объяснение действий, при которых вектор копируется, копируется только ссылка, или перемещается, и подводные камни всего этого
Есть проект пизженный с гитхаба. Там в одном файле инклудится другой, находящий вообще в хуй знает какой папке. Я в clang++ прописал --include-directory="...", но нихуя не помогло. Че делать?
Хелпаните, плез. Я целый день сижу, дрочусь с этим. Мне нужно https://github.com/PurpleI2P/i2pd отсюда использовать пару функций. Если точнее, то из файла SAM.h мосты создать. Там конечно, есть инструкция как собирать, но мне не надо весь проект собирать. Я пытался просто ручками поинклудить и компильнуть из консоли, но оно ругается на функции, которые используются в какой то там библиотеке и хз что делать дальше
>>2316203 >>2316205 А вот как? Я до этого всю жизнь в консоли писал cpp которые нужно компилировать вместе с проектом. Я же не могу руками все файлы из буста в параметры компиляции передать. Максимум папку для поиска инклудов
>>2316214 Спасибо > Ты собрался работать с криптографией и сетью, но даже не знаешь, что такое библиотеки? Может быть стоит бросить эту идею? Нет. Я просто до этого использовал vcpkg либо header-only библиотеки
>>2316222 Правильно, а нахуя мне читать шапку. Функция возвращает unsigned char⚹. Безопасно ли привести тип к (char⚹) и использовать этот указатель на строку?
>>2316214 Тогда еще вопрос. Это ебнуться можно ручками все это устанавливать, прописывать. Нет ли пакетного менеджера, чтобы я прописал install boost/openssl и у меня все работало?
>>2316278 >Нет ли пакетного менеджера, чтобы я прописал install boost/openssl и у меня все работало? Под окнами вроде нет, под линуксом любой дистр и из репов dev (если они есть, иначе обычные) версии тянешь.
>>2316286 > Под окнами вроде нет Есть. Ебанулись бы погромисты сами разыскивать зависимости, и ещё более ебанулись бы их искать обычные рядовые пользователи. Есть различные пакетные менеджеры, например, vcpkg, conan и т.д.
Начал я разбираться с i2pd. Надеюсь я все правильно понял. Так вот sambridgecreatesession() возвращает мне SamSession, у которого UDPEndpoint. Это что еще такое? Почему вдруг udp, а не tcp?
>>2316336 У меня просто все ломается. Я хотел подключиться к i2p устройству, получить tcp socket и дальше работать с ним как с обычным, а тут хуйня какая то
Ебать у меня код хуйня. Короче такое дело: у меня есть бустовый tcp сервер, а есть еще https://notabug.org/acetone/i2pSAM-Qt. У них и обертки над потоками разные, ваще пиздец. Я хз будет ли оно все вместе работать или нет
Привет ребята,я уже писала сюда,всем спасибо за помощь,но у меня новая проблемка с лабой. Вот условие:
Вам даны три неизвестных числа, обозначенных aaa, bbb, ccc, а также все попарные сравнения этих чисел друг с другом. Напишите программу, которая выведет эти числа в порядке возрастания (неубывания).
Формат входных данных
Вводятся три строки. В первой записан результат сравнения между собой чисел aaa и bbb. Во второй строке — результат сравнения aaa и ccc. В третьей строке — результат сравнения bbb и ccc. Результат сравнения выражается соответствующим знаком — символом "«<", "»>" или "===".
Формат выходных данных
Выведите символы aaa, bbb, ccc без разделителей в порядке возрастания (неубывания) соответствующих чисел, каждое следующее число должно быть не меньше предыдущего. Если возможных вариантов ответа несколько, выведите их все в лексикографическом порядке (порядок, использующийся для сравнения строк в словаре).
Я не понимаю как решить без огромного дерева ифов,буду благодарна за любую подсказку
Я хотел скомпилить через qt класс, чтобы затем его использовать в другой программе. Класс описал в h, в cpp фунции реализовал, собрал в qt creator, получил so файл. Затем в своей проге подключил инклуд, so файл, но при компиляции ошибка /usr/bin/ld: /tmp/main-92fde9.o: undefined reference to symbol 'qt_version_tag@@Qt_5.15' /usr/bin/ld: /home/.../Qt/5.15.2/gcc_64/lib/libQt5Core.so.5: error adding symbols: DSO missing from command line
Попытался прописать DEFINES += QT_NO_VERSION_TAGGING, но не помолго
Примерный алгоритм, но на Си ебал рот на крестах писать, насчет >Если возможных вариантов ответа несколько, выведите их все в лексикографическом порядке (порядок, использующийся для сравнения строк в словаре). нихуя не понятно, если >должно быть не меньше предыдущего
Не тестировал, могут быть баги, а может вообще работает не правильно.
>>2317232 Разные версии, программа не может найти библиотеку или еще что-то, попробуй собрать с -Wl,-rpath,path-to-lib, где path-to-lib - это путь до директории с библиотеками, с которыми ты собираешь, возможно проблема в том, что версия Qt установленная в системе и версия Qt, которую ты использовал для сборки не совместимы.
>>2317355 Проверь флаги компиляции, возможно в них какие-то конфликты происходят, например, в библиотеке один функционал имеется, которого нет в компилируемом с ней проекте, или наоборот.
qt5-base, qt-default и их -dev версии поставил из репозитория?
Как вообще на производных дебиана можно заниматься разработкой чего-либо?
>>2317153 Но к другим языкам так не тянет почему-то >>2317161 >Ознакомиться с зарплатами и рынком труда. Я на хедхантере находил вакансии джуном без опыта за 20-40т. Ну и сениор 3 года опыта за 200к. Наверное, в вебе вакансий больше и вкуснее, но там и конкуренции больше ведь, да и не так интересно. >Понять что ты на C++ делать собрался. Игоры же, анимации в игровых движках пилить, приложухи для ведроидов клепать.
>>2316955 По условию у тебя есть результат сравнения каждого вводимого элемента с каждым. Соответственно можно для каждого получить ранг - количество элементов меньше его. Допустим вводится: a > b (ранг а = 0 + 1, ранг b = 0), b > c (ранг b = 0 + 1, c = 0), a > c (ранг a = 1 + 1, c = 0). Далее сортируешь элементы по возрастанию ранга и лексикографически, если ранги совпадают.
Решение предполагает, что порядок действительно существует и нет ситуации, типа a = b, b > c, c = a.
Но.. пук.... Не может же язык быть таким говном, зачем вы сидите в треде про плюсы? Или вы всех вкатунов так отговариваете?
>>2317412 Про unreal и блюпринты тоже думал. Хули делать-то? Смотреть в сторону жабаскрипт, пихтон, C#? Что из этого имеет шансы на выживание? только не 1С
>>2317436 В крестах самое большое сборище токсичных пидорасов, ненавидящих друг друга и всех остальных. Всем индивидуальный подход нужен при вкате. Читай/смотри все материалы для начинающих подряд, пока не найдёшь такой, который понятен именно тебе. https://github.com/sosachbot/cppthreadhat#для-нюфань
>>2317439 > крестах самое большое сборище токсичных пидорасов, ненавидящих друг друга и всех остальных. Почему именно в крестах? Как так сложилось? >>2317439 >смотри все материалы Так-то hello world по учебнику Праты я уже написал, но есть ощущение, будто нужно было какое-то введение в кодинг прочитать, я про это и спросил тред, а аноны так и накинулись
>>2317446 >Так-то hello world по учебнику Праты я уже написал, но есть ощущение, будто нужно было какое-то введение в кодинг прочитать, я про это и спросил тред, а аноны так и накинулись C++ слишком огромный, чтобы его изучать по-методичке, в любом случае, на любом этапе своих знаний, ты столкнешься с тем, что задача требует большего, потому что язык говно, в которое пытаются засунуть всё и все, потому что понять логику чужого кода, на C++ невозможно, ты можешь знать все о программировании, но всегда найдется долбоеб, который придумал новый вариант решения примитивной задачи, в котором еще и какой-нибудь новый стандарт используется "для упрощения кода". Что такое программирование лучше начинать с другого языка, более примитивного и ясного для человека, а не имя_библиотеки::основные_функции::расширение::дополнения::пошел_нахуй().
>>2317454 > лучше начинать с другого языка, более примитивного и ясного для человека Получить разжижение мозга, привыкнуть, что все задачи решаются а одну волшебную строчку, и при первых реальных сложностях слиться.
>>2317454 >язык говно В чем это проявляется, помимо менеджмента памяти?
>понять логику чужого кода, на C++ невозможно Из-за того, что язык дает большую свободу? Действительно с этим все настолько плохо? Часто встречал такое по своему опыту, анон?
>лучше начинать с другого языка, более примитивного и ясного для человека Как я понял, начинать советуют везде с C, т.к. он более приближен к аппаратной части, почему бы тогда сразу не начать с плюсов? Если не С, какие еще варианты есть?
>>2317463 >В чем это проявляется, помимо менеджмента памяти? Это не проблема, проблема в том, что из языка делают псевдо-универсальный инструмент типа Си, но с кучей не самых удобных для использования оберток, реализаций, конструкций. Если кратко и более ясно, то стандарт C++, развивают по принципу, люди используют что-то из сторонних библиотек (или пишут что-то свое), а значит нам нужно добавить эту функциональность в стандартную библиотеку, вместо того, чтобы добавить удобный пакетный менеджер для языка, а от языка оставить только удобное представление логики и основных реализаций. В итоге, получается монолитное чудовище, которое невозможно знать всё и постоянно необходимо смотреть документацию для стандарта.
>Из-за того, что язык дает большую свободу? Действительно с этим все настолько плохо? Часто встречал такое по своему опыту, анон? Посмотри на Go и на C++, на Go, можно просто и понятно выразить то, что программист хотел сделать. 2 разных языка, с разными задачами, но учитывая, что C++ позиционирует себя, как универсальный системный язык, это сравнение имеет место.
>Как я понял, начинать советуют везде с C, т.к. он более приближен к аппаратной части, почему бы тогда сразу не начать с плюсов? Если не С, какие еще варианты есть? Go, но после него, ты не захочешь писать на C++. C и C++ не имеют никакой связи, у C++ есть небольшая обратная совместимость, но не более. Программирование на C, дает тебе понимание, как работает система и код, который ты пишешь, внутри.
>>2317473 >но с кучей не самых удобных для использования оберток, реализаций, конструкций Например? Вроде же наоборот плюсы идут в сторону упрощения жизни: концепты вместо сфинае, constexpr вместо метапрограмм, PMR вместо C++11 аллокаторов.
>>2317492 >Вроде же наоборот плюсы идут в сторону упрощения жизни: концепты вместо сфинае, constexpr вместо метапрограмм, PMR вместо C++11 аллокаторов. Даже в твоем уточнении видно, что C++ слишком перегруженный и выглядит, как вечный тестовый язык, в который добавляют что-то, если не нравится удаляют, но удаление заключается в создании новой версии. Такой пример подойдет?
>>2317492 Так оно не вместо, а вместе. c-array и std::array, union и std::variant, enum и class enum, struct и class, typedef и using, pragma once и ifdef, c-cast и std::cast<>, printf и iostream, FILE и fstream. Сюда ещё добавляем бесконечно плодящиеся since CXX, until CXX. Если бы они крупными патчами накатывали как c++-98 --> c++2011, то было бы норм. Но когда у тебя каждый год синтаксис лямбд меняется то ты сидишь и реально не вдупляешь как писать надо, а как не надо.
>>2317507 > c-array и std::array Всегда юзать std::array, потому что он не норовит декеиться к указателю, у него есть удобные методы и он буквально всем лучше, кроме того, что шаблонный параметр размера компилятором не выводится никак при определении массива?
> union и std::variant В моей голове тут по духу разница такая же, как и между raw и умными указателями. Ты можешь юзать обычный юнион, но тебе тогда нужно либо держать в голове, объект какого типа там внутри него находится, либо хранить тип, который сейчас внутри юниона, и писать адхок проверки.
Единственное тут ещё неоднозначный сильно момент с деструктором variant, его по-разному можно реализовать. https://youtu.be/va9I2qivBOA Да и сам variant от одной реализации к другой по производительности разнится вроде бы
Про синтаксис лямбд, не знаю... Ну там вроде сделали, что можно пустые круглые скобки скипать, раскрывать пачку параметров внутри [], юзать шаблонные параметры вместо auto... Но тут вроде же нет breaking changes никаких, просто добавили удобств
А в остальном просто, наверное, пишешь, как больше нравится, хз. Ну, и не знаю, в чём проблема, например, даже не знать обо всём этом наследии си, в частности вот о существовании каких-нибудь си-стайл кастов, и всегда просто юзать named касты.
Не знаю короче, я с плюсами не особо давно познакомился, но не вижу ничего плохого, что тут много всякого есть. Тебя не заставляют это всё использовать, можно хоть в стиле си писать, наоборот, тупо по-минимуму притрагиваться к плюсовым фичам.
>>2317514 Ну так типичный проект состоит из мешанины вот этого всего. И "можно не знать" обычно не прокатывает. С кодом на С линковаться надо, дорабатывать написанный код надо, последний стандарт принесут пориджи, ибо другого они просто не знают. Крупные конторы пытаются с этим бороться, составляя целые документы что можно, а что нельзя.
И параллельно более грамотный подход в питоне. Отдельно версия 2 и отдельно версия 3.
>Про синтаксис лямбд Ломается совместимость с предыдущей версией компилятора. Раз в два года. А нормальный с++ проект пишется года 4, не менее.
>>2317473 C++ позиционирует себя как системный язык. А Go - с гц. В C++ мешанина всякого, то что неудобно - добавляют в стд. А в Go - комплексные часть стд тк нет перегрузки операторов. (в спп тоже правда..) Си даёт полный контроль и понимание как работает система. А асм даёт ещё больше контроля и понимания.
>>2317492 И нет тут перегруженности. Метапрограмма не часть языка, sfinae тоже выходит само из шаблонов. Аллокаторы как полиморфные и нет - все же там, где нужен контроль, приходится иметь больше инструментов, друг другу они не мешают.
Конечно плюсы древние и долго вбирали в себя всякое, но вбирали не тк людям делать нехуй и это "тестовый язык", а потому что людям надо и используется в реальном коде. Не надо говорить что они хуже кастрированных Го и Си.
>>2317548 >>2317548 >C++ позиционирует себя как системный язык. В системном языке, не нужно ООП.
>Си даёт полный контроль и понимание как работает система. Задача Си - переносимая запись и чтение памяти, контроля над системой нет, даже системные вызовы в нем, реализованы через асм вставки.
>И нет тут перегруженности. Есть.
>Аллокаторы как полиморфные и нет - все же там, где нужен контроль, приходится иметь больше инструментов, друг другу они не мешают. Для контроля они не нужны. Мешают.
>Конечно плюсы древние и долго вбирали в себя всякое Си древнее, но его стандарт гораздо меньше, при этом реализовать на нем можно все тоже самое.
>что людям надо и используется в реальном коде. Что надо людям, реализуется с помощью самих людей, а не бесконечным расширением стандарта.
> >Аллокаторы как полиморфные и нет - все же там, где нужен контроль, приходится иметь больше инструментов, друг другу они не мешают. >Для контроля они не нужны. Мешают.
У меня либа использует сервер который написан на qt. И у него нет всяких функций типо wait new connection. Там просто слот, который при соединении вызывается. Какой есть хороший способ заставить эту всю хуйню ждать соединений без while(true). Только самому писать convar'ы с циклом?
Книга страуструпа 2014 года не слишком старая? в 2022 ее еще можно читать? Везде читаю как все носятся с переходом с 98 на 11 стандарт, я так понимаю с того времени каки-то охуеть измнений не было и если я почитаю того же страуструпа за 14 год, то потеряю не очень много?
И почему он с того времени больше ничего не написал?
>>2317446 >Почему именно в крестах? Как так сложилось? мало работы потому что высокая конкуренция ты либо пишешь ядро ос в майкрософт за 300ккккк в секунду либо отдыхаешь на помоечке нет средних вакансий
Хочу передать в функцию хендлер. Для этого хочу использовать лямбду. Можно ли как то определить функцию так, что лямбда которая будет одним из ее аргументов, должна обязательно иметь нужные мне параметры
>>2318706 А почему нет? Имхо, плюсы зачастую очень удобен, когда хочется получить больше контроля за программой. В другом языке вероятнее всего вместо красивой и аккуратной лямбды будет хуйня с оверхедом в 64 байта на функцию. Или как в питоне, где объекты имеет размет не суммы состовляющих как в c(за исключением паддинга), а какой то неебический
>>2318939 Альтернатив нету только в каком-нибудь кернеле и в диком хайлоаде\реалтайме, где ты сидишь с профайлером и считаешь миссы кэша.
Во всех остальных случаях С++ нахуй не сдался. Мы все хотим вообще весь наш код, кроме драйвера перевезти на С# или Go, но увы, пока нету капасити в команде
>>2319002 >Альтернатив нету только в каком-нибудь кернеле и в диком хайлоаде\реалтайме, где ты сидишь с профайлером и считаешь миссы кэша. В таких задачах, как раз есть альтернативы, но плюсам там делать нечего. >Мы все хотим вообще весь наш код, кроме драйвера перевезти на С# или Go Голанг не может в десктопы, у шарпа с переносимостью хуево.
Теперь представь что все программы запущенные сейчас у тебя, какой нибудь браузер, файловый менеджер, читалка книг, еще какая нибудь хуйня внезапно станут написаны на каком нибудь питоне
https://godbolt.org/z/7MKzznxEE У меня есть пикрил код, он работает в годболте, но когда пробую скомпилить локально у меня выдаёт код ошибки -1073741571 (винда, судя по ответам в интернете стак оверфлоу), я не понимаю, вроде mingw gcc 11.2 компилятором компилю тоже -O2, но стек переполняется, почему бля.. Как понять что не так без залезания в асемблер я слишком тупенький для этого
>>2319008 >Голанг не может в десктопы, у шарпа с переносимостью хуево. Так может у них вообще десктопа нет? Тогда зачем им С++, когда можно на говноланг или шарп все переписать? Писать код на шарпе в разы проще и приятнее, чем на плюсах.
>>2319224 Сборка проекта это сценарий, записанный в специальные файлы. В Linux есть свой собственный формат Makefile и утилита make, которая эти файлы исполняет. То есть она в процессе выполнения вызывает компилятор, линковщик и системные утилиты Linux (всё вместе - tool chain). В Windows нет ни make ни этих утилит, поэтому нужно ставить mingw или cygwin, чтобы они появились. Это работает и в обратную сторону - студийный проект .vcxproj это такой же Makefile, но написанный в терминах windows и в формате XML (а ещё есть формат для студийного nmake). Так как это полная ебанина, то дополнительно придумали CMake, который использует промежуточный формат сценариев - CMakeLists. Он конвертируется самой утилитой в Makefile или vcxproj и потом уже собирается tool chain'ом, который есть в OS.
>>2319230 Так не, я немного о другом. Пусть у меня есть просто файлы без зависимостей всяких. И вот как я понял я не могу будучи на линуксе получить на выходе exe, если не использую то что написал выше.
>>2319231 Не, ты можешь собрать, если напишешь makefile или через консольку последовательно команды введёшь. Проблема будет, если в коде есть вызовы системного API (WinApi или POSIX).
>>2319232 Я чет не нагуглил как с gcc под винду скомпилить. Да, имею ввиду случай, когда я ручками указываю все cpp и получаю исполняемый файл без всяких cmake и прочего. И в случае, когда я явно не использую api специфичное
>>2319231 А, я понял, ты хочешь под лялексом сделать exe и потом его запускать на win. Тогда тебе нужен не штатный gcc из linux, а кросс-компилятор (придётся поставить на линукс mingw-w64 и использовать компилятор из него).
>>2319239 Зачем тащить оверхед для разных ос? Почему именно ос есть же другие архитектуры, почему для них не надо тащить? Будет компилятор размером 20гб удобно.
>>2319239 В итоге получится компилятор огромных размеров. А ещё есть проблемы с лицензиями, интеллектуальной собственностью и банально конкуренцией. Microsoft и Apple не хотят раскрывать свои исходники и делают только под себя.
>>2319515 Потому поточный вывод неудобный? Что легче: написать форматную строку, а после неё просто расставить все объекты, или ебаться с переключением состояний обоссаного cout'а?
>>2319518 > в чем проблема В том, что я не могу имплементировать вывод произвольного объекта. > Какие ты состояния переключать собрался Всякие hex, oct, dec, fill, setw, не ебу как это называется, но суть понятна.
>>2319507 А в шапке именно первую для новичка советуют. Прошло правда 5 лет уже судя по надписи в начале фака, но на тот момент вроде уже тур был написан. Я думаю его бы там упомянули наверное будь он лучше.
Короче что читать если я хочу знать с++, опыта почти нет, немного на пайтоне писал, но ничего серьезного, просто хуйню типа разложения числа на простые множители и немного пайгейм ковырял. Есть небольшое представления о классах, объектах, функциях и подобном
>>2319554 питон поучи, епт. Прекрасный язык для админа, решает 100% всех задач в этой области. Будешь знать питухон, попрогай на чем-нибудь комплируемом вроде C#, Java, Kotlin, Scala (рекомендую скалу из-за прикосновения к fp) Потом попрогай на чем-то лоулевел с gc вроде раста или go Потом помацай сишку А вот теперь, если тебе вдруг захочется посидеть в мейнстримных проектах, завязанных на производительность, то вкатывайся и страдай в плюсы. Есть даже маленькая вероятность, что через 10 лет он будет представлять из себя нечто вменяемое на уровне языков нового поколения, которые появились на почве боли и страдания из-за C++
>>2319563 > решает 100% всех задач в этой области Я как раз в другую область хотел заглянуть. В серьезный язык, в разработку софта, даже выбрал программу опенсорс, которой пользуюсь часто и которая на с++, чтобы попозже копаться в ней > питон поучи > попрогай на чем-нибудь комплируемом вроде C#, Java, Kotlin, Scala > Потом попрогай на чем-то лоулевел с gc вроде раста или go > Потом помацай сишку Какой-то до охуения долгий путь, я думал как раз после плюсов если будет желания учить что-то другое, тем более говорят в плюсах всё есть, все парадигмы, и вся прочая хуйня, поэтому в другие языки будет легко переходить потом если знаешь с++
>>2319569 >тем более говорят в плюсах всё есть, все парадигмы лолнет. Там есть формально есть разные парадигмы, но они в урезанном виде. Возьмем, к примеру, haskell и c++. И там, и там есть функциональная парадигма, но есть нюанс. Кроме того решает еще качество реализации парадигмы и выставленные акценты. К примеру, асинхронное программирование в плюсах неплохое, а вот iostreams - параша ебаная. Причем даже если дизайн и тулинг неплохой в плюсах, это не означает, что нет такого же хорошего, но немного другого или что нет еще лучше. Чем больше пробуешь разного, тем лучше видишь ущербность и отсталость плюсов. Впрочем, в других языках тоже видишь ущербность. А также более толерантно начинаешь относиться к недостаткам, т.к. становится похуй на очередную N+1 реализацию одних и тех же принципов
Привет, аноны. Вопрос про MySQL + C++ через X DevAPI Я хочу написать функцию select для всех таблиц в бд и не использовать литералы в названии полей, но проблему с датой и переводом ее UnixTimeStamp решают через select с "UNIX_TIMESTAMP(имя поля)", что опять приводит к необходимости вбивать ебучие названия полей в код. Как можно решить эту проблему без литералов и как-то перекодировать то, что хранится в дате, в UnixTimeStamp?
>>2319569 >В серьезный язык, в разработку софта, даже выбрал программу опенсорс Куча оперсорса написано на Си, питоне и тд. Зачем нагружать голову крестами? >поэтому в другие языки будет легко переходить потом если знаешь с++ Да. Потому что понимаешь сколько в C++ говна и радуешься, что в других языках от этого уходят или ушли.
>>2319569 >Какой-то до охуения долгий путь, я думал как раз после плюсов если будет желания учить что-то другое, Так учить С++ еще дольше чем этот путь. И ты его не сможешь выучить, если только у тебя нет дара от природы хранить миллиард устаревших фактов.
Ребятки, с понедельника буду учиться в яндекс практикуме. С трудом осилил базовые понятия Си++, это 18 часов, а впереди 250 часов чего-то как я понимаю невообразимо сложного, я боюс.
>>2319685 > Куча оперсорса написано на Си > Зачем нагружать голову крестами? Может потому что в крестах есть много улучшений Си, и ты в принципе можешь писать в процедурном стиле, но это будет намного приятнее?
>>2319685 >Куча оперсорса написано на Си, питоне и тд. Зачем нагружать голову крестами? Есть ровно 3 (три) валидных причины писать на C в 2022 году. 1. FFI\extern "C" интерфейсы для других языков 2. Под твой некроконтроллер нет C++ компилятора. 3. Адовое сишное легаси, которое перевезти на С++ маловозможно (бизнес причины как минимум)
>>2319962 >потому что в крестах есть много улучшений Си, Какие? >и ты в принципе можешь писать в процедурном стиле Проблема не в стиле, а в том какой пиздец из себя представляют кресты. >но это будет намного приятнее? Нет.
>>2319975 > Какие? Из того, что в голову приходит сразу: 1. auto 2. Ссылки вместо б-гомерзких указателей (при передаче в фунцкию имеется в виду) 3. Исключения вместо передачи флажков через 10 циклов 4. Дженерики 5. Нормальные, по сравнению с C, строки
>>2319975 >Какие? Самое простое RAII без очищения ресурсов на каждый чих уже настолько улучшает код и избавляет от утечек, по сравнению с чистым С, что этого одного достаточно
>>2319977 >1. auto void * >2. Ссылки вместо б-гомерзких указателей (при передаче в фунцкию имеется в виду) Не ясно, что ты передаешь в функцию. >3. Исключения вместо передачи флажков через 10 циклов Отключены. >4. Дженерики _Generic >5. Нормальные, по сравнению с C, строки Обертка над сишными строками.
>>2319980 > void * > _Generic Я тебя понял. > Не ясно, что ты передаешь в функцию. Ссылку на объект передаю в функцию. > Обертка над сишными строками. И? Эта обёртка даст столько удобства, сколько ни один программист на Си в жизни не видел.
>>2319985 >Ссылку на объект передаю в функцию. В чем преимущество перед указателем, кроме экономии 1 символа? Почему все объекты обладающие размером больше размера указателя не преобразуются в ссылки\указатели автоматически? >И? Эта обёртка даст столько удобства, сколько ни один программист на Си в жизни не видел. Никакого.
>>2320011 Хотя бы потому что любой осмысленный кусок памяти в твоем компьютере имеет тот или иной формат, а лишая себя знаний о том что там хранится ты подвергаешь себя и других программистов разбирающих этот код возможности ошибиться на этот счет.
Самое смешное происходит тогда, когда через годы ты понимаешь что так писать не обязательно. И ты себя при этом ни в чем не ограничишь.
>>2320017 >Хотя бы потому что любой осмысленный кусок памяти в твоем компьютере имеет тот или иной формат, а лишая себя знаний о том что там хранится ты подвергаешь себя и других программистов разбирающих этот код возможности ошибиться на этот счет. Тип void , в Си можно преобразовать в указатель на любой тип, иначе тебе бы пришлось писать function((type )param) или отключать варнинги.
>>2319646 >У раста нет gc, не сравнивай его пожалуйста с GO. То что они одновременно на слуху не делает их под один класс задач. Базара нет, в расте нет рантаймового GC, с другой стороны направление языков похожее - "мы против ручного управления памятью, но мы не хотим превращать наш язык в очередного IR мастодонта, так что давайте придумаем какой-нибудь инструмент, чтобы памятью поменьше управлять". В Go запилили mark&sweep, в rust обычный reference counting + обязательный статический анализ на расшаривание мутабельных переменных. Собственно в плюсах без refcount тоже никто не пишет, а это так-то одна из форм GC
>>2319681 >Лик вообразили? Компилируемый язык без IR, без тяжелого рантайма, с gc. Если смотреть с точки зрения сферы применения, то он гораздо ближе к с/c++/rust, чем к IR языкам
>>2319742 Писали бы на чем-то другом, но мешает слишком большой объем кода на плюсах, который очень дорого переписать на другой язык и который неудобно использовать в других языках. Какой-то приличный FFI есть только с C, кто бы что не пытался с этим сделать.
>>2320022 Преобразование из одного типа в другой в нормальных языках реализуется одной строчкой.
А передача обобщенного типа реализуется указанием что тип поддерживает какую-то функциональность, или обладает какими-то общими свойствами. В С++ это реализуется (если не ошибаюсь) через наследование, абстрактные классы и шаблоны.
В Си же непонятно что такое находится за этим поинтером в момент где эта субстанция находится. Может они это комментариями к коду указывают, не знаю.
Зря я разглагольствую о Си и С++ когда банальных вещей про разработку на них не знаю. Сорян если чушь пишу. Просто самому интересно, неужели кто-то считает нетипизированный указатель чем-то что необходимо в современном мире и при этом не является рудиментом.
>>2320024 Тут хочется добавить про то что ты сказал о ГЦ > Собственно в плюсах без refcount тоже никто не пишет Пишут только там, где это нужно для реализации безопасной многопоточности а не как в языках с полноценным сборщиком мусора. Когда каждый объект, кроме может быть стековых, будет посчитан. >refcount одна из форм GC Самая самая нетребовательная по накладным расходам. Без разрешения циклических ссылок.
>>2320026 >А передача обобщенного типа реализуется указанием что тип поддерживает какую-то функциональность, или обладает какими-то общими свойствами. В С++ это реализуется (если не ошибаюсь) через наследование, абстрактные классы и шаблоны. https://0bin.net/paste/p8nuyOWh#+dwU6o0LINUvKPg+wHbwPE8hlaeLmjR++bXqkVX6m-s Например, вот это можно было бы сделать через void *, но сделали через указатель на структуру, в итоге постоянно приходится явно приводить к типу. Я не знаю почему, возможно я что-то не понимаю. https://www.opennet.ru/man.shtml?topic=connect
>В Си же непонятно что такое находится за этим поинтером в момент где эта субстанция находится. Может они это комментариями к коду указывают, не знаю. Да или самодокументированный код.
>>2319992 > >И? Эта обёртка даст столько удобства, сколько ни один программист на Си в жизни не видел. > Никакого. Сейчас ты присылаешь код в котором делаешь конкатенацию двух строк неопределенного размера в Си и при этом не обсираешь себе штаны. Я жду.
>>2320038 >Пишут только там, где это нужно для реализации безопасной многопоточности а не как в языках с полноценным сборщиком мусора. unique_ptr - это привязка вызова деструктора к фрейму стека. Т.е. частный случай reference counting
>>2319985 обёртка так-то говно, всякий кал типа find, starts/ends_with и прочее по хорошему должно быть реализовано как свободные функции, но в c++23 туда ещё и contains засунут
не вижу ни одной причины, по которой они должны быть именно мембер функциями, им же не надо знать о кишках строк, они могут пользоваться публичным интерфейсом
>>2320048 >Например, вот это можно было бы сделать через void *, но сделали через указатель на структуру, Используя такую древность можно было конечно и получше если бы в википедию заглянули (tagged union) https://0bin.net/paste/unJN41wX#ElXvFbqlytv3m4u5tEaJZYMkr3rB9yKUDcP45Ajs9VY https://en.wikipedia.org/wiki/Tagged_union >Работа с данными по указателю, как с областью памяти. Слава Богу 99% такой необходимости можно закопать в базовые типы вроде обобщенного массива. >>2320087 >unique_ptr - RC Но он без накладных расходов стадии исполнения. Такой же по накладным расходам как &. Ну, там есть в результирующем бинарнике небольшой оверхед, но он связан только с необходимости поддержки разных форматов вызовов. И концетпуально никаких ограничений не накладывает
>>2320024 > Писали бы на чем-то другом, но мешает слишком большой объем кода на плюсах, который очень дорого переписать на другой язык и который неудобно использовать в других языках. Какой-то приличный FFI есть только с C, кто бы что не пытался с этим сделать. Получается правда с++ лучше не учить сейчас?
>>2320112 Смотри, преобразование char * в std::string, скорее всего будет реализовано через выделение памяти + копирование. Существуют оптимизации стандартных библиотек, но стандарт такое поведение не определяет, насколько я знаю. Могу ошибаться. Уже 2 выделения и 2 копирования. Далее, если ты захочешь их "сумму" другой строке std::string = std::string + std::string, то произойдет еще 2 копирования и 1 выделение памяти. В итоге, 4 копирования и 3 выделения памяти, если повезет и строки будут вмещаться в заранее выделенную кучу, то всего 1 системный вызов будет, а если строки длинные, сколько системных вызовов будет? 3?
>про копирование бред какой-то Где тут бред?
>>2320113 Если про пример, то выход. Там же все ясно видно, проверка на NULL с последующим успешным выходом, потому что мне не интересна работа и код завершения, так как в случае успешного выполнения в stdout поступит вывод.
>>2320121 >преобразование char * в std::string Ты не показал что там 2 выделения и 2 копирования. Просто сказал бездоказательно. >Далее, если ты захочешь их "сумму" другой строке std::string = std::string + std::string, то произойдет еще 2 копирования и 1 выделение памяти А как тут должно быть? Если тут три строки в результате из двух то так и должно быть. Если ты хочешь к первой прибавить вторую. То есть у тебя всего две строки. То произойдет 1 реаллок первой и в нее 1 раз скопируется вторая.
>>2320121 >Смотри, преобразование char звёздочка в std::string если я внутри плюсов, то я, скорее всего, си-строки не юзаю и у меня на руках будут на руках два std::string, никаких преобразований не будет
если одна из строк char const звёздочка, то у операторов + и += для строк внезапно есть перегрузка под этот случай, а если обе строки сишные, то я просто создам строку сразу нужного размера и сделаю в неё += view на сишные строки (чтобы размер строк не пересчитывался лол)
в плюсах нет оператора+ для двух const char звёздочка, нельзя их просто приплюсовать короче, тут не будет никаких преобразований сишных строк в std::string
>Далее, если ты захочешь их "сумму" другой строке std::string = std::string + std::string, то произойдет еще 2 копирования и 1 выделение памяти. ну да, выделится память под строку, в которой уместятся две сконкатенированных, и туда эти две и скопируются, в твоей реализации ровно это и делается лол
>>2320135 >Ты не показал что там 2 выделения и 2 копирования. Просто сказал бездоказательно. Ты первый день программируешь? Смотри адреса. https://godbolt.org/z/7KKzWqKE4
>А как тут должно быть? Если тут три строки в результате из двух то так и должно быть. Если ты хочешь к первой прибавить вторую. То есть у тебя всего две строки. То произойдет 1 реаллок первой и в нее 1 раз скопируется вторая. Это был пример с 2-ойным преобразованием char ⚹ -> std::string, в этом случае будет 2 выделения памяти и 1 выделения для конечной строки. Можно сделать и через std::string(argv[1]) += char ⚹, тогда будет 2 выделения памяти для std::string = argv[1] и std::string += argv[2], но это не отменяет моих слов.
В реальности std::string резервирует на несколько байт больше памяти, поэтому при коротких строках будет 1 выделение, но при длинных будет 2 выделения и в худшем случае 2 системных вызова. Но количество копирований останется равно количеству преобразований.
>>2320127 >Там юнион в структуре занимает `sizeof(int) x 2` Что поделать, раньше не было никаких абстрактных классов, наследования и шаблонов. >а вообще пример не понятен. Хоть я и не программист на Си или С++, но даже я догадался https://godbolt.org/z/WxfY7zW1q Гораздо понятней чем непонятно что.
>>2320156 >Ты первый день программируешь? Смотри адреса. Но там все-таки не показано что два выделения и два копирования на одну строку. Зачем ты меня троллишь?
>>2320150 >если я внутри плюсов, то я, скорее всего, си-строки не юзаю и у меня на руках будут на руках два std::string, никаких преобразований не будет Параметры запуска передаются в виде "сишных" строк, у тебя нет выбора.
>если одна из строк char const звёздочка, то у операторов + и += для строк внезапно есть перегрузка под этот случай, а если обе строки сишные, то я просто создам строку сразу нужного размера и сделаю в неё += view на сишные строки (чтобы размер строк не пересчитывался лол) Удивительно, тогда разницы никакой не будет в исходном коде, но разница в производительности будет, кроме того, что будет если памяти не хватит исключение, аборт или ожидание, что случится внутри std::string?
>короче, тут не будет никаких преобразований сишных строк в std::string Копирование, выделение памяти внутри std::string уже является преобразованием "сишной" строки в std::string.
>>2320184 А где вообще этот выигрыш в скорости нужен? Я понимаю если это софт для пво, который должен ракету перехватить пока она не ебнет в цель, ну или когда ОС пишешь, но условным десктопным приложениям это нахуя
>>2320215 >но условным десктопным приложениям это нахуя Процессорное время у всего кода одно, если одна программа потребляет много, то на других это тоже сказывается.
на больших вроде примерно одинаково, сишные только самую малость быстрее, хз хз, я первый раз бенч делаю, не уверен, что всё правильно сделал https://quick-bench.com/q/0sU_YZEAMyFkRMRvn0miCWyIDaI (это который пикрил)
>>2320220 Хорошо, но в любом случае много всего пишется на каком нибудь питоне и подобном, который в десять раз медленнее, а вы тут своими с и с++ высчитываете у кого код на микросекунду быстрее
>>2320253 >мб проблемы libstdc++ а лол там в обоих случаях он выставлен ну я хз, я не могу асм читать энивей, и на си чистой в жизни писать никогда не собираюсь
>>2320225 Естественно, без оптимизаций конкретный код сильно быстрее абстрактного. Но, как уже было продемонстрировано тобой же, в любой хоть сколько-нибудь нетривиальной логике очень просто обосраться. Собственно, для снижения когнитивной нагрузки и пишется (a + b), вместо твоего шедевра. Вопрос с производительностью более тонкий. Простой ответ на него такой -- пока не доказал, что нужно оптимизировать, не делай этого. Иначе просто лишний раз жопу себе порвёшь. Нет, это, конечно, полезно, но когда учишься, а не работаешь.
>>2320258 ДРОЧЬБА на скорость - детектор студентика-дебила, или просто неуча. Потому-что скорость она не в слиянии двух строк, а в гораздо более сложных вещах.
Да и скорость почти нигде нахуй не сдалась в нашем шлепательном ремесле
>>2320346 если ты настолько тупой, что не можешь даже избежать лишнего преобразования сишной строки в std::string, то куда тебе до чего-то более сложного, ну камон, ты же не копируешь векторы по значению без необходимости, вот это то же самое
>>2320360 И в итоге получится так, что любое интерпертируемое говно со сборкой мусора трахнет твой говнокод тупо хотя бы из-за того, что ты насрал строками в память. Зачем вообще тогда писать на плюсах? И те самые сложные вещи, где ты находишь скорость, будут проявлять себя только на достаточно больших инпутах, когда оверхед копирования строк по кд и прочей "полнейшей хуйни" станет сравнительно малым по сравнению с основной работой.
>>2320253 >а на маленьких у меня почему-то сильно проигрывает мой вариант, но выигрывает наивный? Оптимизация std::string для коротких строк, в котором не происходит выделение памяти, а используется внутренний буфер.
>не знаю, но с твоим бенчем очевидно что-то не то, смотри, он сам себе проигрывает Все то, он сам у себя выигрывает.
>>2320376 Относительно общего объёма вычислений - да. Я же не текстовый процессор пишу. В большинстве проектов достаточно подцепить какой-нибудь spdlog и заниматься своими делами. Ну разве что поглядывать за количеством вызовов.
Сидишь, ковыряешь CUDA, тензорные ядра, векторизацию. Заходишь на двощ, а тут до сих пор строки оптимизируют, попадание в кэш и "шта garbage каллектар всё сам сделает".
>>2320121 смотри: если хочешь чтобы у тебя си-строка побыстрее конвертировалась в string, либо сделать конкатенацию сишных строк с преобразованием в string, то есть парочка приемов оптимизации: первый, это то что есть перегрузка конструктора string и член-функция append которые принимает не только сишную строку, но и количество копируемых символов вторым параметром, соответственно не надо там пробегать высчитывать длину сишной строки второй это то что в классе string есть члены-функции reserve и shrink_to_fit, в случае когда у тебя уже известны (либо примерно известны) размеры сишных строк из которых ты хочешь сделать объект string, используешь эту парочку функций по итогу если заранее знаешь размеры сишных строк, то у тебя будет 1 выделение памяти и 2 копирования
>>2320842 >Чтобы узнать длину сишной строки, нужно найти ее конец. зачастую ты уже знаешь длину сишной строки к примеру в реляционных субд строковые поля фиксированной длины, и когда ты пишешь с++ обертку для работы с интерфейсом этой субд это обычный прием оптимизации..
>>2320842 >Выделение для преобразования, выделение для копирования, минимум 2. используешь конструктор который принимает сишную строку, будет только одно копирование
Немного оффтоп, но как адекватно переводится "statement"? Я почему-то переводил его для себя всегда как "выражение" или типа того, но тут решил сунуть в переводчик и везде хрень какая-то, то оператор, то инструкция. В общем должно быть какое-то слово получше для "statement"
>>2320908 Да, инструкция или оператор (но не операция, которая operator). Никакое это не выражение, у выражения есть результат какого-то типа. его можно присвоить соответствующей переменной, либо сделать из выражения инструкцию добавлением ; в конец.
>>2320849 хорош маняврировать если надо смотрим ассемблерный листинг, если надо то влючаем флажек "заходить в код библиотек" и смотрим что там в потрохах stl никакой магии нет, это белый ящик
#include <iostream> using namespace std; void main() { long int x = 64310, y = 54, z = 0; z = x + y; cout << x << "+" << y << "=" << z; cin.get (); { Короче, помогите мне, пожалуйста. Для вас нихуя, а мне спасёте жизнь. Суть: препод сказал изменить код так, чтобы вычисления были в cout , как я понял. Напишите, пж.
Я не понял. Почему тред не закреплен на главной? С++ теперь единственный перспективный язык в нашей стране. Началась новая эпоха низкоуровневых и среднеуровневых языков, написание своих библиотек и фреймворков.
>>2321127 >С++ теперь единственный перспективный язык в нашей стране. Почему? >Началась новая эпоха низкоуровневых и среднеуровневых языков Нет. >написание своих библиотек и фреймворков. Зачем?
>>2320908 Если больная логика, то можно перевести, как "установка состояния", "изменение состояния", "смена (переход) состояния" или "шаг", хотя не отражает смысл исходного значения, но имхо наиболее ясный вариант для меня, слово "выражение" у меня в голове создает картину каких-то математических формул, а "утверждение" ассоциируется с assert, "операция" с Украиной.
>>2321256 Потому что она на сишке, с кучей макросов, кроссплатфооменных хаков, местами имитацией ооп (через struct с десятком указателей на функции), void× и size_t (а то и int) и это всё хер отследишь и даже статик анализаторы мало помогают. Читал её код и плакал.
>>2321277 Почему она самая популярная? Она кажется вообще даже одобрение от какой то американской криптоорганизации получила, лол. Разве не лучше использовать Crypto++ или что то подобное.
>>2321277 > size_t (а то и int) Как? Мне в вузе на первой паре сказали, что нигде кроме контестов так писать не надо, потому что потом заебешься искать ошибку
>>2321196 >>2321027 >>2320920 Короче постараюсь придать этому слову для себя смесь смыслов слов "утверждение, выражение, операция", и будут читать с++ книжки с таким настроем в голове
>>2321849 Там же просто сухая информация. Мне бы что-нибудь с примерами использования, объяснением каких-то неочевидных фич или спорными моментами, в которых легко обосраться. Неужели нет никаких статей/книг про это?
>>2321127 >написание своих библиотек и фреймворков А на какие деньги это все будет писаться и поддерживаться? Вон, яндекс тратит дохуиллиарды на поддержание своей самописной инфраструктуры в актуальном состоянии. Разработку своих велосипедов в основном только фаанги могут позволить. Либо какие-то узконаправленные стартапы.
Дефолтное ковыряение крудов в банке или гос энтерпрайзе не нуждается в собственных велосипедах, всегда можно взять старую джаву8 и спринг4 для больших проектов, а для тех, что поменьше пхп5 и битрикс с 1с, где еще нет или не было никаких закладок против злых русских, это проще и дешевле в разы.
>>2321848 страуструп "дизайн и эволюция с++" 15я глава страуструп "язык программирования с++, специальное издание" 13я глава и приложение в13 это чисто база, написанная еще тогда когда страус не был ленивой задницей Coplien, James O. "Curiously Recurring Template Patterns" - crtp одна из основ практической шаблонной магии на крестах Александреску "Современное программирование на с++" - ну это база метапрограммирования на с++, в сегодняшних стандартах языка ты будешь делать все то же самое, но просто с применением новых языковых расширений, а суть не поменяеться ну и есть толстая книжка вандевурд, джосаттис, грегор "шаблоны с++", где собственно попытались все запехать, и основы, и crtp, и метапрограммирование, неплохая как по мне, для новичков сойдет
На Qt нужно сделать так что бы в зависимость от введенных цифр на экране загорались нужные квадратики, квадратики это виджеты, цифры получаются в отдельном потоке, когда приходят нужные цифры загорается нужный квадратик. Планирую создать двумерный массив указателей на виджеты(квадратики), передать это в поток который читает цифры. В потоке который читает цифры создать также события которые будут отправляться нужному квадратику и иметь такой же индекс в двумерном массиве что и квадратик. То есть строка и столбец событие в массиве событий будут соотвествовать нужному указателю на виджет в массиве указателей на виджеты. Затем берется событие из массива событий, туда подставляется нужный указатель из массива указателей, и отсылается виджету событие измени цвет. Нормальная идея, или шиза? Лично меня не устраивает то что цифры приходящие в поток который читает цифры, так сказать не весь свой диапазон задействуют. Ну вот например пришли цифры 2 и 1 и значит во 2 строке и первом столбце должен зажечься квадратик, а 2 например 2 и 3, не должно существовать квадратика, а 2 и 4 должен. И так пропусков может быть много, и жалко память тратить. Хотя че эти жалкие байты экономить.
>>2323021 Или же связать все квадратики с сигналом из потока который читает цифры, пускай все квадратики получают сигнал в котором будут передаваться цифры, и если квадратик обнаружил свои цифры, то он загорается, а ну так то полегче и покрасивше будет.
Есть ли у меня гарантия того, что деструктор объекта сработает? Просто в шарпе, например, такой гарантии нет, и приходится использовать либо using, либо try-finally. Есть ли в плюсах какие-то такие заморочки?
>>2323084 Есть при удалении объекта из кучи, для стековых - при выходе из скоупа или исключении. Т.е.если ты создаёшь все на стеке и используешь умные указатели - всегда.
>>2323084 Всегда, но только при нормальной работе программы, нестандартное (системный вызов, сигнал завершения и т. д.) завершение программы или потока не гарантирует вызова деструктора.
К слову, это только язык. Дальше там на ФПМИ есть ещё куча курсов для C++, в которых учат писать качественное ПО. Ну и ещё есть курс где рассказывается БАЗА для программирования.
Если тебе не страшно, если ты на 100% уверен что тебе не интересен ВебДевелопмент, и никакие там C# с Java, то... Добро пожаловать..
Чуть не забыл, дальше ещё надо бы алгоритмы подучить, там тоже на ФПМИ есть. Но, если ты не учился на матфаке, будет тяжко вкатиться в эти дебри (манеру объяснения). Ну, на этот счёт есть курсы МГУ / МФТИ по матану и линалу, там по сути студентов подводят к этой философии изложения материала.
>>2323667 Для закрытого и коммерческого ПО стало проблемно использовать Qt, потому что оплатить и скачать оффициально нельзя из РФ, для открытого и некоммерческого можно использовать.
>>2323769 >>2323788 Нельзя же просто взять и начать писать код, нужен какой-то базовый набор знаний. Иначе я буду троллируем опытными C++-девелоперами.
>>2323875 Придумай. Почему у меня в вузе первокуры сами проекты придумывают и им потом на собесе говорят "Малаца"? Вы все спрашиваете блядь. Ладно книги, это нормально, но что тебе писать это странно. Неужели тебе самому не интересно что то сложное и большое написать? Вот это для себеса подойдет
>>2323971 Зависит от реализации, если просто возьмешь готовый движок, то ты написал игру на готовом движке, еще одну. А если ты напишешь свой движок (даже хуевый и примитивный), но на нем можно будет построить несколько игр, даже 2д, даже визуальных новелл, но это будет удобно, то имхо будет интереснее выглядить.
>>2323971 >>2323973 Фокусируйся на технических деталях. Для игрушки с точки зрения пользователя важен сюжет, персонажи, красивая рисовка и тд. Для проги это все абсолютно неважно. Для проги важно придумать какой нибудь интересный алгоритм, решить сложные технические задачи.
Ребят, читаю : "Программирование. Принципы и практика использования C++". Но там есть своя библиотека какая-то, а я не могу найти её целиком в интернете, получается только частями какие-то функции выискивать и вставлять себе(( Кто читал, помогите дурачку
>>2323414 Вопрос по теме. Какие вообще гуи есть годные кроме Qt, а то всегда как только заходит тема про гуи, то только про него говорят. Это такая прям годнота или конкурентов просто нет? Мимо
>>2323677 Как будто здесь кто-то пишет коммерческие проекты. Ну а если и пишет, то явно это не человек который что-то там решает и выбирает какие фреймворки/библиотеки использовать
>>2324054 Для крупных проектов GTK, для мелких xvWidgets. Qt лучшее, что есть на c++ и другого не будет. На данный момент на c++ GUI пишут скорее как исключение: чутка под эмбед, чутка под мобилки и чутка под десктоп. Типичный проект - это связка с web или C#/Java (React, WPF, Spring).
Привет, анон. Нашел у ФПМИ клевый курс по concurrency. https://www.youtube.com/watch?v=zw6V3SDsXDk&list=PL4_hYwCyhAvZLYM41IC4JMnrPpNLbAVL2&index=2 Однако лекций всего 6, а в первом же видосе есть список тем, и лекций там 15 Вопрос: никто не знает, где можно добыть полный набор лекций? Или это проприетарщина мфти? Или еще может просто не все выложили? И, может, кто проходил его. Насколько годный? Мне по вводной лекции показалось, что прям ок.
>>2324085 В целом - да. На c++ пишут десктоп для гос. нужд под всякие Astra Linux. Либо доделывают проекты с долгим жизненным циклом. Иногда бывает софт типа графических редакторов или для работы с видео и аудио (хотя многое уже на wpf переехало).
>>2324098 ага ага, поэтому яндекс переписали такси с питона на плюсы, все потому что только легаси осталось. Не позорься, а кому нужна производительность - пишут на плюсах, все. Плюс есть области где кроме плюсов пока никто ничего предложить не может - селф драфвинг, очень часто комп зрение, бэк реже, но есть Или ты просто 11 классник и наслушался неудачников на дваче?
>>2324127 На С++ переписывать такие произведения никто не собирается, посоветуют взять железо помощнее, если это клиентское ПО, или выделят еще пару серверов для микросервисов, если серверное.
>>2324127 Ну в целом gui стараются абстрагировать и отделить от остальных подсистем. Прогресс не стоит на месте и многие проекты хотя бы раз меняли фронт. Допустим раньше был MFC и с него перекатывали на Qt или WPF. Я видел немецкий enterprise, где фронт на Qt выкинули нахуй и заменили на Web (только выиграли).
Поэтому да, критическую по производительности внутрянку пишут на cpp, а остальное на том, на чём быстрее и с чем меньше ебаться при дальнейшей поддержке (фактически на c++ писать не выгодно по деньгам).
Бывает ещё в эмбед ситуация, когда ресурсов у железки мало и жабу с дотнеткорами не впихнуть - там страдают с Qt или библиотечками поменьше.
>>2324228 > стараются абстрагировать и отделить от остальных подсистем Я пока не сильно разбираюсь в этом. Что это вообще за процесс соединения условного кода на с++ с гуи на условном электроне? Есть какие-то библиотеки для этого или какая-то еще штука уже встроенная в электрон и другие фреймворки? Это вообще сложно делается или в два клика?
Портирование кода с питона это обычная практика. Например головастики пишут алгоритмы и proof of concept на нём, а потом его уже дрочат под конкретную платформу с avx, cuda, opencl, intrinsics на c++. Причём пилится либа с биндами для питона, а остальная бэкендовская часть на питоне же и остаётся.
По зрению ты тоже фантазируешь. Математика gbitncz на c, c++, fortran. Бэк бывает написан на Go/Rust/c++/java/python. Фронт - чаще встречается web.
>>2324234 Не знаю, как оно в JS устроено. Но вот например в жабе есть JNI. Там делается так - пишешь класс на java и помечаешь его методы как native. Отдаёшь его компилятору джавы javac с ключиком и он тебе генерирует c++ заголовок .h. Цепляешь его и либы jni из java sdk к своей библиотеке на c++ и реализуешь его методы. Компилируешь в dll. Дальше в коде Java загружаешь dll одним вызовом и используешь свой java класс. В итоге у тебя есть абстрактный java класс с набором методов без реализации (на java). Потом ты можешь выкинуть dll и запилить эти методы на чём-то другом.
>>2324127 "Требований к производительности" нет ни у Микрософт тимс, ни у слака (с миллиардами установок у каждого) - а у тебя есть, да?
Если разговор идет о программе, делающей что-то трудозатратное - числодробилке там, или видеоконвертере - то ГУЙ пишешь на электроне\шарпе\прочем.
И далее собираешь из гуя и числодробилки общий продукт, где они общаться могут хоть через пайпы, хоть через сеть, хоть через прости-господи http. Ну, или через нативные вызовы, любой язык умеет дергать сишный код.
>>2324234 Это не сложно, скорее муторно, но в долгую очень помогает. Реализация может быть разная - например вызовы библиотек Qt через JNI, как я описал выше, либо это общение с JS фронтом через отправку REST запросов.
>>2324252 > "Требований к производительности" нет ни у Микрософт тимс, ни у слака (с миллиардами установок у каждого) - а у тебя есть, да? А потом такие обезьяны начинают свое говно подчищать спустя годы и получается ситуация как с блендером, когда сайклс ускорился в 3-10 раз после одной обновы. Но производительность нам не нужна конечно, у нас таких требований нет, напишем говно хрен знает как, а потом понадеемся что через 15 лет кто-то исправит
>>2324238 > Портирование кода с питона не путай портатирование и переписывание в связи с тем, что питон не тянет нагрузку > По зрению ты тоже фантазируешь нет. Нейросети - питон. Деплой - плюсы. Не веришь - тот же хуавей набирет на зрение спецов со знанием с++. И не только хуевей > Бэк бывает написан на Go/Rust/c++/java/python согласен, бэк на плюсах себе позволяют только топ конторы типа яндекса и пр. В целом, я и написал бывает. И это не всегда легаси.
>Нейросети - питон. В моём проекте cети Кохонена, каскады Хаара, AdaBoost - всё на плюсах, avx и cuda. Но тебе ничего не мешает педалить на Python фреймворках типа PyTorch позади которых стоят всякие blas/lapack, писанные на c/c++/fortran.
>Деплой - плюсы. Вообще похуй на чём он.
>хуавей набирет Если позиция - researcher, то у них в требованиях Python, если sw developer, то c++. То есть там такой же процесс python --> cpp, как я и описал.
>>2324336 Если ты можешь бустить аккаунты на SO очень быстро - то тебе проще работать программистом на 100 баксов в час на удаленке, или онсайт в Гугле\ФБ L5+.
Если ты не можешь их бустить быстро - то раздавать листовки на улице будет выгоднее
Кто разбирается в создании собственных виджетов для QtDesigner, я вот виджет сделал, но не пойму как его добавить в QtDesigner, что бы он был как полноценный, а не как promoted. Что бы были видны все его свойства справа. Я гайд в интернете нашел, там сказано сделать его как плагин, патом собрать это все надо и положить библиотеку dll в папку с плагинами, я так делаю мне выдает ошибку не найден подключаемый модуль имявиджета.dll, хотя он лежит в папке plagins.
>>2324324 > чёт кекнул с этого бля да, тоже проорал
> Но тебе ничего не мешает педалить на Python фреймворках типа PyTorch Ну я соглашусь с тобой частично в том, что питон может в некритичных секциях прям в деплое вытеснять плюсы
> Вообще похуй на чём он Деплоить на сервере - похуй. На условной тачке ты го никуда не засунешь
насчет хуевея такое ощуещение. что мы достигли соглашения, потому что твой ответ, в целом, подтверждает мой
>>2324802 Деплой вообще не про языки программирования, это devops. Чем отличается "сервер" от "условной тачки"? Go без проблем тиражируется образами для запуска в контейнерах и оркестраторах.
>такое ощуещение что ты виляешь жопой, дав подливы
>>2324810 Ебанутый? > говорю, что большие конторы пишут на плюсах, говорю что он там, где нужна производительность, привожу пример с хуевеем > ХУАВАЙ ПЛЮСЫ НА СЕ ДА ДА > соглашаюсь > ЫЫЫ ОПОДЛИВИЛСЯ ВИЛЯЕШЬ ЖОПОЙ дебич
> Деплой вообще не про языки программирования, это devops. ой бляя. Ну давай, девопси в юпитере нейросети в докере своем. Я говорю, что как только нужно уйти за пределы маня ноутбуков с обучением и превратить то что нахуярили дата сентисты в производительный код с применением того же тензоррт, то тебе , нихуя себе, понадобится не девопсер, а прогер на плюсах
>>2324810 Чем сервер отличается от тачки? Ну, как минимум требованиями к скорости. У тачки они выше. Твои докеры в связке с го идут нахуй. Мы у себя паримся над количеством копирований, и том, как в памяти выровнять точки траектории робота, а ты все еще думаешь, что твои контейнеры с го туда можно впилить
>>2324868 Ну то есть ты думаешь, что твоя прога, помещённая в контейнер, сразу начинает потреблять x2 по памяти и замедляется в два раза? Или что контейнер сам жрёт х10 оперативки? Или ты не понимаешь, что на Go пишется не алгоритм робота, а бэкенд, в котором твой робот это лишь часть пайплайна или многокомпонентной системы?
А есть какой-то учебник с практикой, но легче страустропа? Там просто не могу врубиться с калькулятором в 6 главе, а остальные учебники будто просто теорию подают и в конце глав вопросики лёгкие.
>>2297529 (OP) Сап. Что я делаю не так? Решаю сейчас задачку, в которой необходимо впихнуть в словарь "базу данных" из тхт, связку логин/пароль и потом сравнить с вводимым в консоль. Столкнулся с проблемой, что, после слэша чтение файла тупо прекращается, и все, что ниже первой строки в словарь уже не входит. Как это пофиксить?
Аноны, можете объяснить смысл ООП и классов в частности? Полистал книги, посмотрел ютуб. Везде используются довольно странные примеры, смысл которых не понятен, ибо эту хуйню можно спокойно запихнуть в функции.
>>2326022 >Аноны, можете объяснить смысл ООП и классов в частности? Определение функциональности, каких-либо данных. >Везде используются довольно странные примеры Возможно они используют ООП, как "Все используют и вообще современно!". >ибо эту хуйню можно спокойно запихнуть в функции. Да, но данные и функции условного списка удобнее представить в виде класса, чтобы было удобнее и яснее List.Length, List.ValueBy, вместо list_length(struct list list), list_value_by(struct list list, ...).
>>2326028 >Возможно они используют ООП, как "Все используют и вообще современно!". Ну а мог бы привести пример, где классы необходимы? Просто до этого я видел только то, как долбаебы умудряются написать 80 строчек класса, когда это можно запихнуть в 10 в функции или вообще в мейне.
>>2326063 >>2326028 >Да, но данные и функции условного списка удобнее представить в виде класса, чтобы было удобнее и яснее List.Length, List.ValueBy, вместо list_length(struct list list), list_value_by(struct list list, ...).
>>2326063 > долбаебы умудряются написать 80 строчек класса Тебе за код построчно платят что-ли? Эти 80 строк могут тебе упростить взаимодействие с данными в разы. И чет слишком сильный перевес, есть конкретный код?
>>2326075 > могут тебе упростить взаимодействие с данными в разы. Как минимум не у тех, кого я приводил выше. Один додик создал класс, в полях определил две переменные, унаследовал их в другой класс, в одном методе их перемножил, во-втором вывел. Вместо того, чтобы написать: int a,b; cout << a*b; И ВСЕ
>>2326092 Ты думаешь, в реальном софте всё происходит так? > Один додик создал класс, в полях определил две переменные, унаследовал их в другой класс, в одном методе их перемножил, во-втором вывел. Если он сделал это не в демонстративных целях, то его мотивация действительно не ясна, но вдруг он просто хотел показать тебе, как можно делать?
>>2326022 возможно тебе стоит посмотреть с другой стороны на классы в с++ как на возможность создания в языке пользовательских типов данных, с правилами конструирования объектов этих классов за счет предоставления пары конструктор-деструктор, с правилами взаимоотношений между типами за счет предоставления специализированных конструкторов и возможности перегрузки оператора приведения типа, с возможностью создать иерархию пользовательских типов (в том числе и гомогенную) через наследование.. механизмы наследования классов и виртуальные функции предоставляют динамический полиморфизм, механизм шаблонов дает возможность статического полиморфизма, перегрузку свободных функций можно рассматривать как случай ad-hoc полиморфизма.. ну и опять же классы предоставляют банальную инкапсуляцию данных и кода что их обрабатывает, с разграничением доступа.. с++ не концептуальный язык, скорее это такая солянка из необходимых семантических и синтаксических механизмов, добавленных поверх языка си..
>>2326194 Я так понимаю, что внутри вектора должен быть вызван realloc в таком случае. >>2326200 Так вектор гарантирует, что данные внутри него идут подряд. Если ему не получится довыделить память для новых элементов, то нужно переаллоцировать.
>>2326771 >Так вектор гарантирует, что данные внутри него идут подряд. Да. >Если ему не получится довыделить память для новых элементов, то нужно переаллоцировать. Да.
>>2326809 Вектор внутри это как структура struct vector { int size; int allocted; void⚹ data; } В ней объекты по указателю data лежат последовательно в памяти. Всего их size, а allocated это сколько может влезть без реаллокации. Как только место заканчивается - выделяется новый блок побольше, в него копируется старый и адрес нового блока ставится в data.
А вектор векторов это такая же структура, только data указывает на список структур vector и ведёт она себя также.
Какой-то тупой пример, я его с первого раза правильно решил и на 10 вопрос ответил что деструктор здесь нахуй не на что не влияет. Запустил проверил, все правильно. В чем подвох такого задания?
Для проекта нужно сделать обработку картинок на OpenCV и 3д визуализацию в Viz, но у меня не получается собрать проект OpenCV со всеми модулями. Анон, предоставь пожалуйста ссылку на целиком собранный OpenCV с Viz или толковый не устаревший гайд по сборке.
Как устроен bitset? Вряд ли есть способ хранить отдельный бит. Я думаю, там используются обычные байты, в которых упаковыны эти биты. Выигрыша в памяти тогда никакого нет, вопрос в удобстве?
>>2328002 >Вряд ли есть способ хранить отдельный бит. Есть, но память будет выделяться побайтово, поэтому <8 бит будут размером 1 байт. >Я думаю, там используются обычные байты, в которых упаковыны эти биты. 1 байт = 8 бит. >Выигрыша в памяти тогда никакого нет, вопрос в удобстве? Говно без задач.
>>2327775 Кстати, без шуток, как-то разбирался с винапи, в частности с перехватом и отправкой событий клавиатуры. Нажимаю билд (не запуск даже) - что там началось... Я думал мне сейчас спецназ дверь вынесет. Такой визг из антивируса стоял, как будто его все китайские хакеры одновременно вскрывают.
>>2328135 Мне ебаная винда не дала не давала запускать простейшее клиент-серверное приложение с сокетами, хотя я это приложение написал и собрал в MVS под бдительным надзором большого брата. Не заработало, пока не отключил виндоус дефендер и брандмауэр. Вот так вот нашим миром управляет глупость.
>>2326831 все же не стоит так упрощено объяснять внутреннее устройство контейнеров стандартной библиотеки, в которых управление памятью вынесено в аллокаторы, являющимися по сути менеджерами ресурсов
>>2326152 ответ на этот вопрос ты найдешь загуглив по теме "валидность итератора" ну опять же проблема эта не нова, и в си был тот же самый подводный камень, валидность указателей
Сап. Я первокурсник, который до поступления на Айти не выводил даже Хеллоу ворлд в Паскале. У нас сейчас идёт программирование на Си, скоро должны перейти на С++. Я начал вкатываться с Си, как идет по программе, но т.к на С++ нашел больше понятных видосиков и курс на Stepik, сейчас решил писать на нём: Си считается более удобным для вката, в факе написано, что при вкате с С++ анона ждёт разочарование, но я не вижу между Си и С++ какой-то разницы, а учебная программа вынуждает кодить на них. Че, реально всё тлен? Потом, кстати, пойдет С# и JavaScript. Последний я планирую изучать, т.к хочу попробовать себя во фронте, ибо не думаю, что достаточно способный, чтобы осилить какое-то более тяжелое программирование на высоком уровне
Сейчас у меня возникают большие трудности с выполнением лабораторных работ для универа: даже посмотрев какие-то гайды по теме в Ютубе, как подступиться в решению задачи — мне непонятно, и я бесконечно далёк от того, чтобы писать что-то за пределами элементарщины. Как это фиксить — мне пока не особо понятно
Не знаю, как преодолеть этот барьер, когда вроде познакомился с темой, а написать ничерта не можешь — у других в моем окружении такого нет, и они продвинулись гораздо дальше меня, хотя кроме Гоши Дударя на Ютубе ничего не смотрели. Так же плохо у меня со всеми математическими предметами, должно быть, в целом слабые способности аукаются мне и в этом деле
Сейчас я стал решать задачи из курса Stepik и тупо заниматься больше. Скачал книжку Трупа Страуса, стал смотреть канал Simple Code на Ютубе. На Си кодить потерял смысл — скоро переход на С++ Может, будут какие-то советы? Какие-то ошибки в том, как я занимаюсь
Как стал заниматься больше, вроде бы, стал получать удовольствие от процесса. Может, когда-нибудь я напишу какую-нибудь интересную программку для себя. Я также стал задумываться о том, какие алгоритмы имеют разные штуки из повседневности, те же турникеты на входе в универ. Но когда вижу более способных в окружении, а более способные в нём вообще все, ловлю дизморать. Так же, как и тогда, когда осознаю, как я далек от того, чтобы сделать какую-нибудь лабораторную работу, которую остальные легко делают. Приходится покупать работы, иначе будут проблемы после сессии
>>2328535 Сейчас, например, мне нужно выполнить работы по темам "бинарные деревья" и "односвязные списки" Каков мой порядок действий для изучения данной темы, чтобы я мог решать по ним задачи? При чем достаточно быстрые, чтобы я укладывался в университетские сроки: срок даётся в пару недель.
>>2328535 >>2328541 У тебя все очень плохо. Каналы на ютубе почти все говно, а не говно я не видел, кроме пары записей лекций из шараг, курсы такое же говно, как каналы на ютубе, дрочи всякие литкоды и кодварсы, общее понимание реализаций алгоритмов будет. Односвязные списки и бинарные деревья база, просто пойми их.
Хуйня этот С, на плюсах уже все вопросики обкашлены, где надо добавлена move-семантика, RVO, NRVO, поэтому можно без задней мысли возвращать по значению. А если я вдруг перейду на С, я как в темном подземелье буду боятся лишний шаг сделать: а вдруг неэффективно, а вдруг утечка?
>>2328541 > работы по темам "бинарные деревья" и "односвязные списки" Симпл код хорошо разобрал списки, посмотри его видео и повторяя за ним напиши свою реализацию листа.
>>2328545 >дрочи всякие литкоды и кодварсы Посмотрел, что это. Да, полезно. В том курсе, который я прохожу, ты тоже пишешь задачи, и они проверяются аналогично Литкоду и Кодеварсу. А в конце еще курсовой проект, который будет преподом проверяться. Курс 10 баксов мне стоил, знакомый очень рекомендовал. У него с программированием лучше моего, так что я прислушался. А в моем окружении программирование как-то иначе, чем через видосики на ютубе не изучают, и при этом как-то справляются с задачами учебного курса
Перед тем, как решать задачи по какой-либо теме на том же LeedCode, нужно ведь изучить темы, которые будут нужны для решения задачи. Если я сейчас сходу зайду туда и выберу задачи на темы, которые еще не изучал — в чем будет профит? Я просто посмотрю на задачу и не напишу и строчки кода, не зная темы. В курсе перед тем, как отправить своё решение задачи, тебе объясняют тему, показывают на примерах других задач, как надо решать задачи по этой теме, и только потом дают задачу. А сразу идти на Кодеварс или Литкод... Что-то я не врубился.
>>2328697 >на плюсах уже все вопросики обкашлены это не так стандартизованного abi так и не сделали, стандартизованной динамической загрузки классов нету, как следствие любые системы с расширяемостью через плагины приходиться писать используя тот же олдскульный сишный компонентный подход (com в винде самый известный пример), правда можно сверху для удобства шаблончиками обмазать используя crtp, ну и то что абстрактный класс взаимозаменяем со структурами из указателей на функции, что дает синтаксические плюшки, но суть не меняет из-за этого к примеру весь энтерпрайз в начале нулевых дружно пересел на явку и шарпик
>>2329024 Я слышал про библиотеки, в редактор кода она тоже должны быть загружены? Мне кажется это не удобно, если постоянно ctrl+c - ctrl-v делать, из редактора в компилятор. Тогда какой выбрать? Под линукс.
>>2329043 Если серьёзно, то почитай первый том Столярова. Он хоть и шиз, который фреймбуфер в ядре отключает и ищет CMS, написанную на чистом C/C++, но в плане dev-набора расписал всё +- нормально.
>>2328535 Список и деревья - это алгоритмы и структуры данных. Для меня порядок для понимания темы такой: 1. Успокоился и расслабился. 2. Настроился на занятие 3. Гуглю базу по теме 4. Смотрю примеры 5.а. Решаю задачи, начиная с несложной 5.б .Решаю лабу по универу
Забей на успехи окружающих - смотри на себя. Реализовывай свои цели. Если ты учишься и не забросил - значит победил.
университетские лабы гуглятся, да и к тому же можно у старшекурсников глянуть или к преподу обратиться
>Гуглю базу по теме Ну я вот в Ютубе забиваю обычно, но как-то решать это не помогало мне, разве что что-то очень простое. Попробую теперь LeetCode, Codewars юзать и начинать с простых и переходить к сложным задачам, смотреть решения, мб учебник читать перед сном для закрепления
>университетские лабы гуглятся Ни одна не гуглилась. Бывают похожие задания, разумеется, но один в один — никогда. А когда похожие, там код так надо переделывать, что работу не особо облегчает
>можно у старшекурсников глянуть Реалии таковы, что всем друг на друга похуй. А еще я социализацию проебал, такие дела. Лабы у нас делаются в командах на 3 человека, но я делаю их один. По физике аналогично. На этом фоне началась социофобия (до того, как всрал социализцию, ее не было) и теперь вообще пиздец с башкой
хочу в файле (фб2) находить данные, и в соответствии с ними переименовывать (std::filesystem::rename) этот самый файл. все норм, кроме того, что при считывании гетлайном русские символы читаются как кракозябры (смотрю при отладке, ну и до конца так остается). при этом в файле есть данные "encoding="UTF-8"". НО, если попробовать эти кракозябры декодировать (например http://foxtools.ru/Text ) читабельный вариант имеет данные "Исходная кодировка Кириллица шиндовс1251, Конечная - юникод ЮТФ8". и что в итоге мне надо? сразу считывать ютф8? считывать как сейчас, потом декодировать? или м.б. просто нахуй пойти еще что-то? подскажите плес, куда копать, а то совсем в этих соснах запутался.
К сожалению сейчас нет времени полноценно засесть за учебник, так что учу этот ваш си плюс плюс "на ходу", экспериментируя в процессе написания программ. В следствие этого возник дурацкий вопрос:
Прога
const int RAW = 5; const int COL = 3;
int arr[][COL] {{1,2,3}, {1,2,3} };
cout << RAW << ' ' << COL << endl;
for (int r = 0; r < RAW; r++) { cout << "r = " << r << "\t\t";
for (int c = 0; c < COL; c++) { //cout << arr[r][c] << "\t\t"; }
cout << "RAW = " << RAW << endl; }
выводит ожидаемый результат с первой пикчи, но стоит раскоментить строку с массивом, как начинается полный пиздец как на второй пикче. Я осознаю, что вопрос, скорее всего, дурацкий, и посидев пол часа за учебником я мб нашел бы на него ответ. Но мб кто в двух словах ответит, почему цикл фор игнорит условие r < RAW?
>>2332366 Ладно, чтобы меня совсем сходу нахуй не послали просто спрошу: Как видно из второго скрина, переменные r и RAW не херятся ни чем, занчит херится условие цикла, так ведь? Хериться оно может только массивом, который мог что-то перезаписать в коде проги, но в строчке /cout << arr[r][c] << "\t\t" мы его лишь считываем, так что каким образом эта строчка может что-то поменять - я не ебу.Ну, либо я чего-то не понимаю.
>>2332376 В чем?)))))))) Я, считай, за исключением полуформальной дефолтной хуйни весь код выложил. Если это играет роль, компилю на код блоке вроде MinGW (если не путаю)
>>2332378 >код блоке >MinGW Значит в этом. >Я, считай, за исключением полуформальной дефолтной хуйни весь код выложил. При условии, что ты в этом ничего не сломал.
>>2332386 >>2332389 Хмм... Я сейчас попробовал тоже в другом онлайн компиляторе откомпилить, но получилось то же самое, что и в код блоке: https://ideone.com/CR59Ta (работает через впн)
Это так после изучения плюсов в дурку и попадают, да?
>>2332386 >>2332383 >>2332378 >>2332376 >>2332392 Вы ебанутые? Лезут за пределы массива, да еще и на стеке, а потом удивляются "чо ето нечего не роботает, баг в конпеляторе наверно".
Вопрос по Visual Studio: когда сохраняю проект, а потом снова открываю его, запуск становится недоступной. Поэтому я, открыв проект, чтобы запустить его, копирую весь код, создаю новый проект и уже потом запускаю А как сделать, чтобы я мог открыть файл сходного кода формата .cpp и сразу компилировать его, а не делать такие идиотские кульбиты? Нигде в ютубе, гугле не нашел решение этой проблемы. Поэтому и я, и люди в моем окружении тоже занимаются такой хуйней. Но на нервы действует уже.
Вопрос по Visual Studio: когда сохраняю проект, а потом снова открываю его, запуск становится недоступной. Поэтому я, открыв проект, чтобы запустить его, копирую весь код, создаю новый проект и уже потом запускаю А как сделать, чтобы я мог открыть файл сходного кода формата .cpp и сразу компилировать его, а не делать такие идиотские кульбиты? Нигде в ютубе, гугле не нашел решение этой проблемы. Поэтому и я, и люди в моем окружении тоже занимаются такой хуйней. Но на нервы действует уже.
>>2332839 >>2332840 > А как сделать, чтобы я мог открыть файл сходного кода формата .cpp и сразу компилировать его, а не делать такие идиотские кульбиты? Можно просто воспользоваться компилятором напрямую через консоль А вообще тебе нужна система сборки
>>2332366 >цикл фор игнорит условие r < RAW Он как раз не игнорит, у тебя вывод raw соптимизировался на вывод постоянного значения, а не того, что ты наворотил на стеке. Замени const на volatile.
Сегодня выходные, после подня ебалм на русте, узнал от колеги о библиотеке буст на плюсах, на плюсах последний раз я писал два года назад даже классов и стл не продвинулся, и решил потратить этот день на изучение этой библиотеки, ибо она мне показалось интересной
Вообще, какие есть подводные? Стойт ли оно того вообще? Сейчас она испольузетьс хоть где-то?
>>2333029 те денег что ли уже платят, щеня? как так то блядь че за тупые вопросы? скажи, плиз, чем занимаешься, если ты такой тупой но при этом на работе работаешь?
>>2332733 >Лезут за пределы массива Как "запредельное" чтение может изменить поведение цикла? >>2332863 >а не того, что ты наворотил на стеке Что он натворил на стеке?
>>2333042 Как стать учителем по программированию? Мне кажется это изи, приходишь и на каждом занятии пытаешься разъяснить бездарям концепцию полиморфизма. Потом даешь им самостоятельно простенькую задачу, а сам сидишь чиллишь.
Привет, анончики. Только не бейте сразу ссаными тряпками, хочу спросить насколько сложно к вам закатиться из Java на серверную разработку, по типу написание софта для форекс, там где задержки по GC недопустиы? Опыта 3 года.
Ещё можете разъяснить чем сейчас qt-шники занимаются? Легаси? Или есть так много десктопного софта, который требует взаимодействия с системными API?
>>2333294 >Почему так? free totalram freeram sharedram bufferram >как линукс работает с памятью? Так же, как и все. >как это будет работать на винде? sysinfo даже не posix, чтобы там работать. >>2333333 Ахуеть.
Сап плюсач, есть вопрос по организации IPC с помощью каналов на Win API. Суть такая: есть канал-сервер, сначала он ждёт подключения клиента с помощью ConnectNamedPipe, клиент подключается с помощью связки функций CreateFileA и SetPipeState. После обмена информации клиент отключается посредством CloseHandle (закрывает свой дескриптор), сервер вызывает связку функций FlushFileBuffers и DisconnectNamedPipe, после чего опять вызывает функцию ConnectNamedPipe и начинается вторая итерация цикла. Только второй клиент при подключении падает, GetLastError() возвращает ERROR_PIPE_BUSY, хотя по идее канал свободен. В чём могут быть траблы, анонче? Могу также код на пастебин скинуть, если это поможет лучше понять проблему.
>>2333333 >закатиться из Java на серверную разработку тебе это не надо 100% не знаю ни одного человека который ушел бы с явки на кресты, но с кресты на явку - полно
>>2333547 >Смотрю, по моему вопросу к консенсусу еще не пришли? консенсус в распределенных системах невозможен есть только частные решения, а общего решения этой проблемы нет!
Какой из двух стульев выбрать ньюфагу: codelite или code::blocks? Visual studio не очень хочу ставить, и даже не спрашивайте почему - на это нет рациональных причин.
>>2333707 Заодно спрошу: я попробовал накатить на codelite CMake, но, такое чувство, что я сделал что-то не так. Я правильно понимаю, что если все сделано верно, то достаточно в IDE прожать билд прожект и он автоматически запустит CMake на нужном этапе компиляции? Или там нужно каждый раз что-то делать вручную? (Прост при нажатии ПКМ на проект есть пункт меню Run CMake, вот я и думаю)
>>2333721 Блин, забыл сказать (но по контексту и так мб понятно): проекты на codelite + CMake + MinGW упорно не билдятся, или я что-то не понимаю. После нажатия Run CMake появляются только два экзешника разных папках - оба с именами a.exe. А если просто билдить проект, то, похоже, экзешники даже не создаются.
>>2333707 >Visual studio не очень хочу ставить ты можешь его не юзать, но ставить в 99% на винде скорее всего придется
> codelite или code::blocks Сорта говна как говориться, можешь хоть в виме программировать Тебе главное научиться Cmake пользоваться и сможешь где угодно свои проэкты писать ну и еще language server тебе скорее всего пригодиться тогда, я знаю только clangd - мбы в виме\емаксе какие то свои приколы еще есть
Я так понял, в первом случае нам в функцию приходит ссылка на HDC, а во втором содержимое HDC. Так, собственно, нахуя нам в первом случае приходит ссылка на HDC, если мы везде в теле функции используем hDC? Можно же было сразу в функцию слать содержимое HDC или нет? Просто интересно, чому сделали именно так?
>>2333037 >Что он натворил на стеке? Трудно сказать, зависит от компилятора. Но стек растет вниз, а адресация массива вверх, так что он точно залазит на свои константные переменные когда выходит за пределы массива.
>>2333943 >дорога приключений Сук, аж вспомнил как к codeblocks прикручивал новый питон и скрипты для нормального отображения в дебаге содержимого контейнеров std. Это была неделя жесточайшего пердолинга, я со сборкой буста так не ебался.
Зачем в стек сохранять локальные переменные? Единственное логичное объяснение, которое я нашел - рекурсивные функции. Только для этого? Ведь если у нас не рекурсивная функция, то мы можешь напрямую грузить переменные в регистры процессора прямо из блока кода и хранить их там же. Просто в регистр ebp записать адрес не из стека, а из блока кода. Это же по сути идет просто лишнее копирование. Понятно, что основная задача стека вызовов - это хранение адреса возврата из функции. Я прав?
Вопрос по VS Community 2019, решил через полгода покодить а на моей учётке пишет что лицензия устарела, нажал обновить и всё работает. А теперь вопрос есть ли какая ни-будь версия той же самой программы, только без раздражающих учёток, напоминаний об обновлении? Тем более кто знает обновится ли завтра она или нет!
Так оказывается точка входа точкой входа не является. Можно запустить другую функцию до входа в main(), и об этом могут спросить на собеседовании. Тогда зачем было называть это точкой входа, сишный архаизм? Правильней назвать точка входа после инициализации глобальных переменных.
>>2334847 > error: variable has incomplete type 'const MyClass' у меня тоже почему то компилятор тупит ну как очевидное решение вынести эту переменную вне класса
>>2334870 Какая разница что он пишет, я спрашиваю как нужно сделать чтобы работало.
>>2334874 >вынести эту переменную вне класса У меня инлайновый класс в заголовке. Мне не нравится из-за пары констант новый файл добавлять. Да и вообще не нравится когда эти константы торчат из каждого угла, а не упорядочены по месту
>>2335062 То что ты пытаешься использовать ещё не созданный класс тебя не смущает? Ты должен сделать его объявление перед определением, а внутрь пихать указатель на него, тк размер указателей всегда известен. В том виде как ты пишешь прокатит в языках типа Шарпа и джавы, т к там все переменные объекты - указатели.
>>2335091 Инлайн добавили в 17 стандарте чтобы не морочится с статик переменными в срр файлах. В принципе это слово означает что определение переменной или функции может по несколько раз инклудится и компилятор не будет ругаться, а собственно инлайном функций компилятор сам занимается без подсказок при оптимизации.
>>2335094 как статик переменная влияет на использование класса? я могу свой класс и как параметры функции легко передавать, так и преспокойно как указатели на него вертеть статик переменная никак на размер класса не влияет, так что не вижу ни одной причины почему компилятор не может выполнить тот код, у него достаточно информации для выполнения этого функционала
>>2335118 Но все равно класс ещё не определен на тот момент, попробуй сделать его объявление заранее и то я сомневаюсь что прокатит, компилятору же все равно надо знать сколько памяти выделять для статиков.
>>2335132 > компилятору же все равно надо знать сколько памяти выделять для статиков столько же сколько и классу или компилятор глупенький и не умеет чуть дальше просмотреть?
Учу плюсы. Разбираюсь с указателями на функции. Имеется функция
int func1(void) { return 555; }
Вызывается так:
void pointerplay() { int (*fp1) (void); fp1 = func1; cout << "fp1 = " << fp1() << endl; // куда копируется 555 перед выводом? }
Возникает ли в этом коде повреждение памяти, ведь указателю не выделена память? Несмотря на то, что в mingw компилируется и выводится 555, у меня сомнения.
>>2335232 upd inb4 только опыт байтоебства с микроконтроллерами, где все указатели либо на глобал переменную буфера, либо на фиксированный адрес. Там таких вопросов не было.
>>2335281 Да, хуйню сказал насчет памяти. Хорошо, указатель хранит адрес. В данном случае - адрес возвращаемого значения функции. Оно что, блять всегда по одному и тому же адресу находится?
Вопрос 1) Стоит ли обновлять VS2019 на новый? 2) Периодически он подвисает когда кликаешь куда-то или переходить, висит где-то 5 секунд, как от этого избавиться?
>>2336727 Не знаю, что за профилировщик, но можешь посмотреть на граф вызова функций из этой функции (в VS точно есть), где больше всего self time. А вообще прямо процентикам около строчек не стоит верить, часто это значит "где-то тут тратится время, может строчкой выше или ниже"
Надо написать серверное приложение, которое будет обрабатывать поступающие запросы. Клиентское приложение на qt, так что наверное буду использовать qt network. Хотя boost asio кажется легче. С чего начать?
>>2334847 Зачем вы вообще инлайны пишите, самые умные чтоле? В учебнике по c++ написано, что инлайн для петухов, мол компилятор сам решит, когда инлайнить функцию, когда нет, а не когда кодер своими корявыми ручками впишет этот устаревший спецификатор.
>>2337014 >самые умные чтоле? Да. >A static data member may be declared inline. An inline static data member can be defined in the class definition and may specify an initializer. It does not need an out-of-class definition: https://en.cppreference.com/w/cpp/language/static
Изучаю с++ после питона и не могу понять как в одну структуру запихать массив других, заполнить ее и обратиться к ней после? Не отправляйте в гугл, пожалуйста) struct Children { string name; int age; } struct User { string name; int age; vector<Address> address; }
>>2337625 а тебе надо в реализации коллекции перед каждым методом писать template<typename T>? и ты про функции спрашивал, что не так с auto аргументами...
Вопрос насчет p2p приложения. Какое максимальное количество сокетов я могу позволить себе открыть? Теоритически 2^48, но на практике компьютер охуеет столько держать. Какой максимум лучше поставить? 10? 20? 100?
Бля аноны, помогите, для перемножения матриц скачал библиотеку http://mathenglish.ru/dmatrix/ Но она внутри юзает StdCtrls.hpp Которой у меня нет, гуглю, но найти ее не могу, типа должна быть встроенная, что делать?
А что, так можно чтоли? перегрузка функций в классе. Я думал что можно только когда разные аргументы.
Но как обычно - хуй оно работает без коленодробления. Если класс или ссылка на него константы - то да, он вызывает константый метод. А вот если класс не константен, но принимающая ссылка константна - то хуй, вызывает неконстантный
const WindowSystem& e = engine.GetWindowSystem(); // думаете константная ссылка вернется? А вот хуй. Вызовет WindowSystem& GetWindowSystem(), несмотря на то что e - константая ссылка
А вот тут все норм: void goo(const EngineSystem& engine) { auto& e = engine.GetWindowSystem(); } goo(engine);
>>2338764 >Но она внутри юзает StdCtrls.hpp Которой у меня нет, гуглю, но найти ее не могу, типа должна быть встроенная, что делать? Взять любую другую библиотеку для матриц. Они все одинаково считаются.
Единственное - что возможно результирующую матрицу нужно будет транспонировать(Transpose) (так как одни библиотеки хранят построчно, другие по рядам. Transpose меняет туда-обратно)
ну еще различия в лево-сторонней и правосторонней.. Но в нормальных библах все это есть из коробки, бери как надо
Либо руками удаляй весь болрадский код (то есть удали StdCtrls.hpp и все что там тянется.. __fastcall тоже удаляй), так как работа матриц - это тупо базовые операции по умножению, сложению. Плюс синус-косинус
>>2338764 Сам напиши. Чего там писать-то. На CUDA напиши.
>>2338883 >const WindowSystem& e = engine.GetWindowSystem(); Ну так здесь выбор метода GetWindowSystem зависит от того, константен engine или нет. Константность e тут ни при чём.
>>2338883 Ой, я тут недавно разбирал стандарт сишки, и по его грамматике получилось что вот эти выражения норм: ++x = 0; x++ = 0; но компилятор проглотил только первое. Пути си языков неисповедимы.
>>2329481 >4. Смотрю примеры >5.а. Решаю задачи, начиная с несложной Где смотреть примеры и где решать задачи? У меня тоже проблемы с выполнением лабораторных работ по программированию: в Ютубе смотрю уроки по теме, повторяю их код, читаю в учебнике базу по теме, а как до решения задач доходит — жидко пукаю и не знаю, как решать.
>>2339195 >Где смотреть примеры и где решать задачи?
Примеры есть на сайтах(cppstduio, purecode например), учебниках по теме. Оттуда и задачи можно порешать.
>не знаю, как решать
Если не знаешь синтаксис - учишь язык и std Не знаешь алгоритмы - учишь алгоритмы и структуры данных Не знаешь вообще ничего - проходишь курс, параллельно смотришь дополнительные материалы(видосы, задачи и тд)
Учебники неплохо закрепляют программирование. На cyberforum есть темы для новичков и тд., там тоже много чего интересного могут предложить почитать\прорешать.
Кстати, лабы с вузов бывают плохо структурированы по уровню знания студента, что создает барьер. Гугл и ресурсы в свободном доступе помогают этот барьер преодолеть.
Хочу вкатиться в эти ваши кресты, дабы в будущем делать какие-нибудь мелкие игры на ПК мечта с детства.
Мне в 17-18 лет это показалось чем-то невероятно сложным, дошёл в С++ до раздела функций и дропнул, хоть и сдал ЕГЭ по информатике на 88 баллов, поэтому я забил, отложил мечту на потом и поступил в говновуз чтобы зацепиться за Москву.
Сейчас мне 23, отучился по профессии которая совершенно не интересует, и вот уже около четырёх месяцев потихоньку вкатываюсь в IT сферу - чутка поговнокодил на Петухоне, выучил основы HTML и CSS и стараюсь в целом "вариться" в этой тематике.
И вроде всё идёт нормально, мне очень нравится копаться во всём этом, но проблема в том, что я вообще нихуя не уверен, за что стоит полноценно зацепиться и где стоит прокачивать хард скилы. Как не почитаю очередную статью / мнение с двачей / рандом комментарий про то что языкнейм говно без задач, куча минусов, работы нет, конкуренция 5000 человек на место, и даже если и возьмут, то за бесплатно учиться будешь ещё полгода, я вот учил этот язык и 2 года работу не могу найти потому что не берут - сразу накатывает паника и желание дропнуть всё к хуям и пересесть на что-то более актуальное, потому что есть ощущение, что я в итоге буду ненужным и безработным. Короче пугалки на меня пиздец сильно действуют, и я вместо того чтобы ПРОСТО сидеть и ебашить - начинаю паниковать и постоянно думаю "а надо ли оно мне вообще бля? а вдруг реально нет работы? а что если работа будет скучной и унылой?", и всё в таком духе.
В общем хочу быть уверен в том, что если я выдрочу кресты и программирование в целом - я почти что гарантированно найду себе местечко в нашей великой стране, мне даже в целом похуй на зп, я просто хочу хоть что-то зарабатывать и как-то развиваться, дабы в будущем всё же попробовать осуществить свою детскую мечту.
>>2339948 >мелкие игры на ПК C#. >языкнейм говно без задач Да. >куча минусов Да. >работы нет Без опыта - скорее всего. >конкуренция 5000 человек на место Да. >я в итоге буду ненужным и безработным Сейчас ты нужный? >В общем хочу быть уверен в том, что если я выдрочу кресты и программирование в целом - я почти что гарантированно найду себе местечко в нашей великой стране, мне даже в целом похуй на зп, я просто хочу хоть что-то зарабатывать и как-то развиваться, дабы в будущем всё же попробовать осуществить свою детскую мечту. Возможно, но ты скорее всего дропнешь кресты.
>>2339965 >>Сейчас ты нужный? Сижу без работы и без опыта на мамкиной шее стыдно. Нужна уверенность в том, что моя "нужность" заметно возрастёт после дроча крестов.
>>но ты скорее всего дропнешь кресты. Хуй там, плюсы пока что самый привлекательный язык из всех, да и книга из шапки треда уж очень нравится тоже пока что. Если я на чём то и зациклюсь - то только на них. Единственное что раздражает - вышеперечисленные сомнения.
>>C# Судя по треду он больше на веб нацелен, а меня от веба слегка подёргивает. Всё же хотелось бы в сторону софта двигаться но если что могу и веб потерпеть.
Понюхал тут Go. Какой же прекрасный язык. Всё просто, понятно, красиво. В иде есть прекрасная встроенная документация, стоит только навести на название функции. Таким и должно быть программирование в 21 веке, а не ошибки на 2 листа А4, которые невозможно прочесть.
>>2340060 Пикрил в принципе полностью передает суть крестов. И ладно бы платили много, так в среднем по больнице язык используется только в легаси и платят немного. К слову, помню тут был кун из нвидии с за 600к, интересно, что с ним.
>>2340060 >В иде есть прекрасная встроенная документация, стоит только навести на название функции. Таким и должно быть программирование в 21 веке, а не ошибки на 2 листа А4, которые невозможно прочесть. Причем тут язык?
Аноны, а есть ли шизы, пишущие код прямо противоположно букве О в СОЛИД? Вот чтоб код потом можно было легко модифицировать или переписать. Как вообще такое проворачивать? Если ООП не принципиален, то может есть какой-то уже изобретённый приём вне этой парадигмы для подобного извращения? Причём главное требование — без потери производительности, т.е. рефлексировать или оборачивать код в тонны абстракций — не вариант. Единственное рабочее, что мне приходит в голову — это писать в процедурном стиле, по сути выкинуть весь ООП и писать как на Си с сахаром. Посоветуйте что-то адекватнее.
>>2340831 Да, переписывать функционал без добавления нового. В том числе и сам интерфейс менять, по необходимости. В процедурном стиле оно уже разбито на минимальные элементы — минимум правок надо делать при переписывании, нет интерфейсов — нет проблем. А как быть, если хочется оставаться с классами? Или я хочу невозможного от ООП?
>>2340841 Это секретная информация, среди разработчиков на C++, но ты можешь просто изменять класс, то есть, прямо из `class a { void m1(); void m2() };`, можешь сделать `class a { int m1(int, int); int m2(int, int); };`, плавающий интерфейс есть, возможность расширения только через наследование, что неизбежно, насколько я знаю.
>>2340851 > Это секретная информация, среди разработчиков на C++, но ты можешь просто изменять класс Но ведь мне тогда придётся править всё что зависело от этого интерфейса, в том числе и сломанную архитектуру. А если, например, я сделаю это с процедурой, то мне надо будет только в другой процедуре использование этой процедуры поправить.
>>2340821 >пишущие код прямо противоположно букве О в СОЛИД >>2340841 >Да, переписывать функционал без добавления нового >>2340855 >Но ведь мне тогда придётся править всё что зависело от этого интерфейса, в том числе и сломанную архитектуру.
>>2341222 pos = 0 while (pos < array.size - 1) { 1. среди элементов с позиции pos находишь максимальный; меняешь его местами с array[pos]; сдвигаешь pos на 1; 2. среди элементов с позиции pos находишь минимальный; меняешь его местами с array[pos]; сдвигаешь pos на 1; }
>>2342157 Чел, в Шинде всегда используй _tmain и TCHAR. Юникод выключи, нахуй! > setlocale(LC_ALL, "ru") Чё, блять? > в тхт на месте букв кракозябры Блокнот любит cp1251.
>>2340061 >Пикрил в принципе полностью передает суть крестов Не суть крестов, а суть вкатывальщиков, которые нихуя не знают, а уже программисты
Нет ничего сложного в С++.
Да, есть наркоманская STL где и выкатывает полотна невнятного бреда... ну это наркомания и придумал ее наркоман в наркобреду (и это даже не шутка, он сам об этом писал)
А говорят что в институтах не учат нормальному программированию... эх, жаль я был слишком туп чтобы поступить очно (поступил заочно на программиста, кстати тоже норм лекторы были - финальной лабой года например была полностью законченная программа управления школьным расписанием со всякими там базами данных, работой по сети и т.д.)
>>2342636 проблема не с зарплатами, как никак многие крестобояре из городских семей, зачастую с родителями инженерами, и как следсвие с наследной бабкиной хатой, и поэтому крестобояре всегда были готовы трудиться за копеечку но проблема с количеством вакансий, а вот оно за последние пару месяцев просто рухнуло к примеру, геймдев в россии (даже унылые мобилки) просто перестал существовать, его сейчас нет можно скзаать
>>2341264 Я что то не совсем понял, что именно ты предлагаешь сделать. Типо ты предлагаешь мне создать цикл, в котором я уже сделаю: >среди элементов с позиции pos находишь максимальный; меняешь его местами с array[pos]; сдвигаешь pos на 1; >среди элементов с позиции pos находишь минимальный; меняешь его местами с array[pos]; сдвигаешь pos на 1; Но как мне это сделать? Я просто в с++ совсем ньюфаг
>>2341264 Я что то не совсем понял, что именно ты предлагаешь сделать. Типо ты предлагаешь мне создать цикл, в котором я уже сделаю: >среди элементов с позиции pos находишь максимальный; меняешь его местами с array[pos]; сдвигаешь pos на 1; >среди элементов с позиции pos находишь минимальный; меняешь его местами с array[pos]; сдвигаешь pos на 1; Но как мне это сделать? Я просто в с++ совсем ньюфаг
>>2342716 >поэтому крестобояре всегда были готовы трудиться за копеечку Ну не, опция релокейта всегда существует. В Грузию например?
>но проблема с количеством вакансий, а вот оно за последние пару месяцев просто рухнуло >к примеру, геймдев в россии (даже унылые мобилки) просто перестал существовать, его сейчас нет можно скзаать У остальных должны были упасть рейты, не?
>>2342716 Да не сказать, чтобы рухнуло. Сократилось где-то на 25%, ну максимум на 30. При этом изменилась структура, да. Гейдев ушёл, пришли телекомы, эмбед, нагруженный бэк и сервисы. Зепки в принципе остались довоенными. В некоторых местах апнули, потому что вакухи по полгода висели.
>>2342764 А что тебе релокейт в Грузию даст? За переезд и хату мало никому доплачивают, зарплаты - остаются те же, а кому-то предлагают идти на меньший прайс. Паспорт Грузии - хуйня полная. Сама Грузия маленькая, работы там нет, делать там нехуй.
>>2342764 Так а почему рейты должны были упасть? Посыпались прежде всего аутсорсные направления. А кресты в аутсорсе занимают малую долю. Кто может в кресты перекатиться из безработных? Да в общем-то никто (джависты и шарписты зарабатывают больше сидя в сытных офисах).
>>2342772 > У нас с проектов кастомеры выпиздили всех разрабов кто в рашке или белорашке А нехуй работать на галере. Пойди устройся в нормальную компанию, которая пилит свои разработки или хотя бы не для западных куколдов. В чём проблема? Сейчас наоборот все фрилансеры-трактористы нахуй пошли и в рашке можно без проблем найти работу.
>>2342778 > Я не нищееб Но очень похож, раз выбираешь между бомжеванием и укатыванием в недострану. > Ой дурак Азиаты уже давно платят больше, чем любители шестицветных флагов.
>>2342772 Возможность работать, она ускользающая. Если джон боар через пол года скажет всё, то что ты дальше делать будешь? В Грузии работы нету, а искать ты будешь удалёнку как руссо программисто.
В качестве нормальной альтернативы есть Кипр. Там и ойти развито и фин сектор и русскоговорящих масса и проблем с местными нет. Но как туда сейчас попасть - я хз.
>>2342780 >укатыванием в недострану Я не в рашке です
>Азиаты уже давно платят больше, чем любители шестицветных флагов Это сколько?
>>2342781 >а искать ты будешь удалёнку как руссо программисто. Не, стоит искать как человек из Грузии, в нормальных странах всё понимают
>В качестве нормальной альтернативы есть Кипр. Там и ойти развито Айти развито в штатах и в штатах только. Остальное - это всего лишь место комфортной работы на нормальных клиентов
>>2342778 >20 штыков Так а чё они от тебя не уходят? Зачем жить в стране, где с неба падает хуета и президент говорит, что будем воевать ещё 10 лет (пока всех не призовём)?
>>2342782 В нормальных странах считают, что Georgia это ламповый американский штат, а не горы с чебуреками. Хотя в целом всем поебать откуда кодер, главное не попасть под санкции.
>>2342778 >Меньше вакансий = больше кандидатов на место = меньшие рейты Так вакансий сильно меньше не стало и основной удар пришёлся по вкатунцам. Ушёл Luxoft (хотя они продолжают мониторить рынок). Вместо него активизировался VK.
>>2342824 Лучше я опишу проблему, а вы может подскажите че. Может есть какие то другие протоколы с нормальной реализацией, но на основе udp. Мне нужно почти всё, что есть в tcp, но при этом мне не подходит формат соединений. Мне нужно отправлять данные без установления соединения
>>2342828 Пишешь P2P? Считается, что если пытаться достичь такой же надёжности, как в TCP, в итоге и получится такой же оверхед. Так что можно либо снизить требования, либо устанавливать соединение, передавать ланные и разъединяться, как в HTTP без keep-alive.
> Пишешь P2P? Да > Так что можно либо снизить требования, либо устанавливать соединение, передавать данные и разъединяться Тогда мне придется очень часто соединяться, разъединяться, что при большом количестве человек может быть очень критично. Я очень слабо представляю как это будет выглядеть в чате на 1000 человек, например.
Здравствуйте. Вы моя последняя надежда. Дело в том что я совершенно не понимаю алгоритм ханойских башен и для решения задачи использу код, который пытаюсь переводить с джавы (мне нужен именно такой принцип), но, ожидаемо, у меня ничего не получается.
>>2342927 >>Айти развито в штатах и в штатах только >а под айти ты подразумеваешь сайто-клепательство? Именно что не вебмакакинг. Все самые advanced поделки делаются там, а остальные - копируют
>>2342775 >Кто может в кресты перекатиться из безработных? Да в общем-то никто всегда есть приток свежего мяса: умных дурачков из вузов что решили специализироваться на си/си++
>>2342835 > чате на 1000 человек, например. чел, сейчас решают проблемы C10M на сервак, для протоколов http и websocket а ты бля хочешь уходить на udp потому что у тебя http 1k не держит ха ха
>>2343109 Ну так то величина постоянная. Вузы выпускают примерно одинаковое количество народу ежегодно (это без учёта демографической ямы). \r\n \r\n \r\n
>>2342636 уже давно не плюсовик, но по java/scala бек все оки доки, рейты даже растут, т.к. всякие нервные пориджи судорожно ищут релокейт. nvidia офис не закрыла, хуавей не закрыл, сименс не закрыл, ебучих размеров яндекс и vk остались. Банки никуда не делись, но там плюсовых вакансий мало
>Сейчас лучше оказаться по эту сторону железного занавеса, чем по рашкинскую tell me about it У нас тут по сравнению с Украиной сейчас либеральный рай. У нас тут на подвалы не увозят за неправильное мнение в отличие от. Все мои родственники из Харькова со вторника боятся звонить мне по телеге, т.к. у знакомых устроили обыск за то, что звонили родственникам в РФ по сотовой связи. Железный занавес, да?
>>2343400 Так а чё ты в Европу то не уехал? Даже всякие Сергеи Немчинские укатились, ибо нахуя жизнью рисковать, если ты хорошо зарабатываешь и можешь получать от жизни удовольствие? Уровень жизни упадёт по обе стороны границы. Какой смысл жить среди бедных и вских махновцев с разноцветными повязками?
>>2342716 >геймдев в россии (даже унылые мобилки) А тут вообще после нулевых вообще было что-то кроме мобилок, браузерок и ммо? Все нормальные студии позакрывались. Только ледорубы вспоминаются но это творцы, не умеющие в проджект менеджмент и работающие только лишь на энтузиазме Дыбовского, да симуляторы самолётов для аутистов.
>>2343424 >московская вакансия без релокейта >Armenia, Remote Смекаешь, да?
>Ахаха, ясно >Просто тебя уже выписали из родственников, но этого еще не понял >А вот и нет. Бумага, прокладки, памперсы и сахар у меня в магазе как раз есть.
Всегда думал, что в /po такой низкий, отбитый уровень контента, т.к. там срут работники ботоферм на зарплате. Но оказывается, что ровно так же пишут вполне себе образованные ребята - программисты. Просто пиздец.
>>2343428 >>московская вакансия без релокейта >>Armenia, Remote >Смекаешь, да? Смекаю что конкретных подробностей нет, но на всякий случай стоит поднять вой по этому вопросу. Сейчас еще и армянскому офису пизда будет
>Всегда думал, что в /po такой низкий, отбитый уровень контента В Харькове последние ватаны уже ненавидят рашку, после пережитых обстрелов, пожаров и прочего пиздеца. Выписывание из родственников - довольно распространенная тема
>>2343430 >В Харькове последние ватаны уже ненавидят рашку Мне интересен алгоритм поиска ватанов, если за любой неотрицательный сентимент в сторону РФ неиллюзорно могут прийти пообщаться, а то и чего похуже.
>Выписывание из родственников - довольно распространенная тема Во-первых, это твой личный опыт, опыт ближайшего окружения? Если нет - нехуй распространять не личный опыт. Во-вторых нехуй свои фантазии проецировать на меня - у меня с родственниками охуительнейшие отношения и они стали со мной очень осторожно контактировать сразу после некоторых событий неделю назад
>>2343437 >Мне интересен алгоритм поиска ватанов, если за любой неотрицательный сентимент в сторону РФ неиллюзорно могут прийти пообщаться, а то и чего похуже. С соседями никогда не общался? Не знаешь их настроений?
>у меня с родственниками охуительнейшие отношения Можешь верить. Но родственников у тебя больше нет
Двощ, хуле рандом не рандомный? По логике хеш должен пересчитываться каждое срабатывание функции, но по факту во время всего выполнения выходит одно и то же число. https://pastebin.com/QR4JzZkW
Проблема с определением длины файла в режиме "rb" Почему при загрузке функции для определения длины файла вида (1-й пик) не соответствуют (2-й пик) Получается что в текстовом режиме каждую новую строку в первом случае прибавляется два символа, во втором только один.
бля, как упростить себе жизнь будучи плюсовиком, создал папку приходится блять запихивать в нее CMakeList и так в каждую.... добавить бибилиотеку с гитхаба это вообще горе. Как упростить все это? Можно конечно взять vcpkg но у меня CLion с ним не дружит абсолютно, а через mingw приходится постоянно врубить их консольку и искать (а там иногда все устарело)
Ну почему в раст есть богоподобный единственный toml файлик и все
>>2344766 что это за средства среды в данном случае для Clion >>2344770 Да, спасибо новой фишечке, но указывать прямо юрл адресс в файле эстеттически не комильфо, а также проблема с тем что в каждую папку надо сувать этот сраный файл
Всем добрый вечер. Начал недавно изучать плюсы по самоучителям, получается без подсказок решить простые примеры из тех же самоучителей, но я считаю, что этого очень мало. Подскажите, как и где можно начать реальную практику плюсов, какие задачи решать? Есть ли смысл пробоваться в какие-нибудь пулл-реквесты на гитхаб? Те, кто шарят, пожалуйста, подскажите.
>>2344543 >Получается что в текстовом режиме каждую новую строку в первом случае прибавляется два символа, во втором только один. Все так. Под виндой перевод строки кодируется двумя символами.