А я перекатываю свой вопрос из прошлого треда сюда. Какую ide предпочитаете для разработки? Алсо: а что думаете насчёт юзания vim? Clion живет у параши вместе со своим high usage CPU
Начал читать Принципы и практика использования и просто охуел на моменте с калькулятором. Что за пиздец? Откуда столько непонятных терминов? Какие-то термы, грамматика. Охуеть можно, стоит ли продолжать?
>>1657438 Раньше чтобы программировать надо было разбираться в нескольких околоматематических областях знаний, гугли Computer Science. Сегодня уже не актуально.
>>1657470 Нет, не тупой, просто нужно время на понятие грамматики парсера, это проходит, не парься, если не можешь понять эту грамматику, то почитай аналогичные вещи в интернете, грамматику рекурсивного спуска например. а еще лучше никуда не гнаться и взять дня 3 перерыва и просто подумать самому, а потом перечитать главу, обычно помогает
Пацаны, а как в крестах объявить аналог классовой функции или классовой переменной из Паскаля? То есть такую которую я могу выполнить или обратиться не создавая объект и при этом не получить AV. И можно ли писать хелперы для базовых типов (int, string)?
>>1657102 (OP) Анон, есть ли предпочтение static методам класса (если возможно) const? решарпер такой совет дает. Какие плюсы от этого, если метод например private?
>>1657520 Что значит предпочтение? Если метод можно объявить константным и ты готов ебаться с константностью то объявляй как константный. Если уже какой-то код есть то лучше чукнуть как в нем все сделано. Если там забивали на константность то лучше все так и оставить. Ну или рефакторить все. Хотя от константных методов неудобства минимальные - можно и всегда их объявлять.
>>1657524 Я выразился не так. Предпочтение к статик, а не к конст, решарпер тоже предлагает статики. >>1657534 В нормально дизайне ебли не будет. У меня уйма математики, и много хорошо изолированных классов.
Мне больше интересует выгода по какой-нибудь потокобезопасности, скорости и тп
>>1657558 >Мне больше интересует выгода по какой-нибудь потокобезопасности, скорости и тп По скорости — нужно идти в дизасемблер и смотреть конкретные случаи. По потокобезопасности — тут только уменьшать кол-во shared стейта, это главный камень преткновения и const/static тут не поможет ничем. Короче, пиши всё по семантике и не еби голову.
>>1657558 В вызов любого не статичного метода передается скрытый параметр (ссылка на объект у которого вызван метод). Соответственно у статических методов такого параметра нет и они должны давать какой-то мизерный прирост скорости. Но особо хитрожопые компиляторы вполне могут и оптимизировать такое. Также статические методы более удобные - их можно в любой момент вызвать. Для вызова нестатического тебе нужно где-то достать объект класса. Если у метода статическая суть то лучше его статическим и объявлять.
Наткнулся на какую то дичь. Почему при выполнении: tempValue = 1280; buf = (char*)&tempValue; buf остается пустым? Если другие числа, то все нормально.
>>1657808 Блин, а как тогда длину переменной в байтах получать? Я делал так: tempValue = var; buf = (char*)&tempValue; int length = strlen(buf); Но теперь оказывается это пидорасится спецсимволом.
>>1657812 Неправильно выразился. Не длину переменной, а сколько байт она занимает в данный момент времени. Ну то есть var = 1, то 1 байт, var = 640, то 2 байта. Причем var может быть не только int, но и string или float.
>>1657816 Если это int или float, то да. Но у меня QVariant. Тогда другой вопрос. Вот мне надо записать в файл значение без лишних нулей. Ну понял да, чтобы 1 не записывалось в файл, как 00 00 00 01. И потом к нему пришпилить еще длину в байтах. Ну например, для var = 1, записывать 01 01, для var = 1280, записывать 02 05 00, или для var = "TEST" записывать 04 54 45 53 54. Как мне вытаскивать длину в байтах, как нибудь попроще?
>>1657823 QVariant тоже. Там указатель и какой-нибудь тэг внутри. Sizeof его всегда одинаковый, если типы одинаковые.
То, что ты спрашиваешь в п2 - это тебе нужно просто написать сериализацию.
Что в духе ТИП, ДЛИНА, данные. И предусмотреть возможность того, что оно не нулл паддинг. В случае конкретно интов - ты всегда можешь проверять, больше оно в 2^8, 2^16 и тд для ансайнедов.
>>1657823 > Как мне вытаскивать длину в байтах Считай логарифм по основанию 256. В >>1657811 у тебя пидорасило не из-за спецсимвола и из-за того что strlen ожидает терминированую нулем строку. Если ты хочешь считать так как ты считал то тебе нужно число конверить в строку с помощью itoa по основанию 32 и полученую длину делить на 2.
>>1657824 Как в QByteArray записать без лишних нулей? Пишу QByteArray data; QDataStream in(&data, QIODevice::WriteOnly); in << var; А он все равно нули пишет. Блин, раньше как то делал, сейчас не помню уже.
Хочу сказать спасибо тому анону, который мне посоветовал решарпер. Производительность возрасла в разы. Алсо, ещё я научился с маркетплейса вс качать полезные штучки, например, построитель графиков по данным, что для меня просто мастхев
>>1657893 Спиздил после триала. Ещё не вырос пока до покупки софта, извините. Ещё и vs community edition. Если вдруг будет закупка, то решарпер включу туда
>>1657755 >В С++ один, а в русском языке нет Когда будешь на русском языке программировать, тогда и пользуйся смыслами терминов из русского языка. А это тред про программирование на C++.
аноны хочу вкатиться в программирование с нуля,возраст 25 лет,подскажите с какого языка лучше начать и для начала админом на удалёнке,есть ли смысл для опыта посидеть годик,вообщем у кого опыт есть,дайте пожалуйста почту свою или телегу,пообщаться на эту тему
>>1658023 Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
>>1658036 кинь телегу или почту,буду советы спрашивать хотя бы,как вкачусь полноценно и буду нормально получать,отблагодарю а то я щас прочитаю,азы освою и хуй с маслом сосать буду
>>1658135 >Программирую только на православном. На нем сам перевод стандарта написан Так в переводе у "сущности" остался тот же смысл, что у entity в оригинале.
>>1658142 Это шутейка, долбаеб Когда тебя твой парень тебя в жопу ебет, ты ему тоже ноешь "Вазген, трахай под 69 градусов, а не 45, у меня геморой вываливается"?
Думаю тебе в ПТУ несладко приходится. Каждый день водолаза в тубзике заставляют играть? Или перерыв на карантнин все таки дали, потому что там сейчас не во что мокать?
Проверь в словаре значения всех использованных в твоем следующем ответе слов, лалка, а то вдруг кто доебется. И точку в конце не забудь
>>1658412 Все распространенные (MS, gcc, clang) вроде как умеют но стандарт не требует обязательно оптимизировать, поэтому там могут быть нюансы - компилятор может передумать ее оптимизировать если ему что-то не понравится. Ну и нужны более жесткие режимы оптимизации (типа О2/О3). >>1658415 > Что ты под этим подразумеваешь? То что метод использует только статические члены класса (или не использует вообще).
>>1657130 >Алсо: а что думаете насчёт юзания vim? если умеешь печатать в слепую десятью пальцами и умеешь пользоваться шеллом, то норм по сути все дела делаешь в консоли, а в вим тупо редактируешь код
>>1658667 Пфф мне доставляет удовольствие обсирать тебя, так что разорвало тут разве что твое маленькое нежное колечко от огромной чурчхеллы Вазгена Точку поставил, красавчик
Сука, как же у меня полыхает. Как же я люблю cppшники на 7к строк и больше, где дохерища ifdef, часть из которых проваливается на компиляции, а часть вообще неизвестно что включает и зачем нужна. Где половина значений из функций возвращается через ссылки и ты хуй поймёшь, модифицируется ли оно где-то внутри или нет и приходится лезть в 100500 функций и осознавать это, и в итоге где-то в куске кода, который выключен макросом, это херня таки модифицируется и ты идёшь осознавать, когда этот макрос включается и что он делает А какая ляпота когда всё вынесено в глобальные переменные.. Мммм..... Как же это ахуенно, когда можно получить доступ по всему и отовсюду. Даже из методов isCheckSomething можно менять эти самые переменные! Разве это не ахуенно!? И как же здорово копипастить код! Зачем же выносить его в отдельные методы, если можно просто скопипастить! Ведь его же никогда не придётся менять!! И файл с 10к строками не придётся открывать, наверное А лямбды в лямбдах которые в других лямбдах какая красота! Зачем задумывать о том, что и как и куда вынести, если можно просто нахерачить 100500 лямбд? Вот и не зачем!
>>1658975 Ну так сделай рефакторинг, это же самая мякотка. Мужики потом руку жать будут, хрюши перед тобой будут жопами крутить, а начальник лично премию выпишет.
>>1659468 > Пердолите легаси под винду или делаете йоба-проекты под Linux со всеми новыми фишками плюсов? Делаем йоба-проект под три платформы со всеми новыми фишками плюсов, параллельно пердолим легаси, внедряя эти самые фишки (легаси старше половины анонов итт)
>>1659468 >Пердолите легаси под винду или делаете йоба-проекты под Linux со всеми новыми фишками плюсов? Кек всё. Легаси и не под винду, полуэмбеддед линукс (бортовое оборудование), десктоп с "фронтом" под винду "беком" на ртос на параллельных ядрах. Использую фишки когда это возможно. Сфера авиация, больше не расскажу, NDA.
>>1658036 Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что-то не отпускало меня - я пошёл на python.org и стал изучать стандартную библиотеку, старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про PEP8. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту конвенцию по написанию питоньего кода. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.
Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.
>>1659541 Судя по коду, species хранит указатель на массив part размером np_alloc элементов. В нём "активных" элементов species->np. Если места под ещё один активный элемент нет, то бросается ошибка. Иначе код добавляет ещё один активный элемент.
int n = species->np; species->part[n].x = x; species->part[n].v = v;
Аноны, смотрите что я могу сделать на C#. Суть токова: есть 2 класса (Class1 и Class2), каждый в своём файле (Class1.cs и Class2.cs). Класс Class1 содержит ссылку на Class2, а класс Class2 содержит ссылку на Class1. Всё что мне надо было сделать, это просто написать объявления этих классов в разных файлах. Вопрос: как сделать такое в C++?
>>1659575 Пишешь объявление (не определение) класса в ашнике одного из них, ссылки на неопределенные классы разрешены, ибо одного размера, шарп это спиздил из сишки ещё. Но правильнее делать однонаправленные ссылки на интерфейсы, и в реальном коде по другому не получится.
>>1659575 Я тебе может секрет открою, но в c# твоя хуйня типа Class1 a; не равносильна Class1 a; из c++. Грубо говоря это больше похоже на std::shared_ptr<Class1> a; с неявным вызовом make_shared в консрукторе в конструкторе. А для такой хуйни достаточно forward declaration
>>1659607 Да, в шарпе это ссылка по факту. Значит в C++ объявление с виду будет другое, что-то вроде Class1* class1; Но тут главное чтобы суть была той же - первый класс содержал ссылку на второй, второй на первый, и чтобы они были в разных файлах. (то что это можно сделать в одном файле я знаю, это у меня получалось). Собственно проблема у меня сделать так чтобы они были в разных файлах.
>>1659779 Конкретно эту проблему удалось убрать написав: #include "Class1.cpp" Но в самом файле Class1.cpp есть такая же проблема, и таким способом её убрать не получилось, потому что взаимные инклуды, насколько я понимаю, невозможны.
>>1659768 PDWORD - это указатель на беззнаковое целое. >>1659779 У тебя говно сорокалетней давности вместо языка циклическая зависимость. Ее можно разрулить только выносом реализации методов в отдельный файл куда инклюдить хедеры с нужными классами. В В.срр инклюдишь А.h, в А.срр инклюдишь В.h
Эй, сишники, расскажите как вы выживаете в мире с куцей документацией по библам. ежу понятно что язык это в первую очередь его инфраструктура, а не синтаксис Решил вкатиться в libevent (простенький CRUD запилить с веб мордой) стоковая документация ищет только по LIKE% и причем только на функции (структуры приходится искать на этом же сайте через гугл, лол), гайды уровня как нарисовать сову. Смотрю, http модуль libevent по ходу сам выставляет куки, опять же в документации на эту тему по запросу cookie ничег не выдает, а гугл выдает все страницы где есть просто libevent, угадайте почему?потому что на каждой странице снизу есть плашка предупреждающая что "мы используем cookie" лол Кароч здоровья вам и терпения (ну и мне). К слову сказать у sqlite все достаточно понятно, и документация годная.
>>1659790 Вроде получилось сделать как хотел. Классы в разных файлах (правда каждый класс в двух файлах - в .h и в .cpp, но это не проблема, меня это тоже устраивает), ссылаются друг на друга, могут использовать функции друг друга, интеллисенс есть. Спасибо.
>>1659787 > #include "Class1.cpp" Пиздец, батенька. >>1659880 > каждый класс в двух файлах - в .h и в .cpp Это стандартная практика для c++, в h объявление, в cpp реализация. Когда придут модули, сможешь писать как на сисярпе.
>>1659834 На гитхабе поищи проекты, где эта либа используется. Обычно там можно подпиздить куски годного кода. Я так в одной либе буста разбирался, хотя там на весь интернет две строки документации
Пиздос, оказалось, что я совершенно не знал, как работает friend. Был класс A, я захотел сделать функцию, принимающую A, вычисляющую всякую хуйню, используя protected const методы класса A, думал, ебану friend и все будет норм, но хуй там блядь! Автор A почему-то не сделал этот важный функционал public, не предусмотрел, и мне теперь либо копипастить тот код (что плохо, так как дублирование), либо наследоваться. Да, почему-то сделал class B : public A, там float f(const A&a) const { return a.protectedfunc()++; }, но такое тоже не хочет работать.
Есть ли нормальный вариант? Как быть, если автор либы в чем-то ошибся?
По дефолту вектор создается на стэке (если юзать new, то в куче, естественно), как работает механизм динамического массива (вектора) без кучи? В стэке могут быть только статические массивы, длина которых известна во время компиляции, как тогда вектор может динамически изменять свою длину, не будучи в куче?
>>1659993 А как освобождаются ресурсы, аллоцированные вектором? У него есть scope как у локальной переменной и при возврате вектора из функции нужно возвращать его копию, дабы не возвращать адрес на мертвые данные?
>>1660008 то есть std::vector<int> vec; vec это указатель на кучу, где была выеделена память? Другого объяснения у меня нет, так как массив не может быть динамическим в стэке.
>>1660018 > vec это указатель на кучу vec это сруктура, один из элементов которой - указатель на динамически выделеную память для хранения элементов вектора.
>>1660018 В стэке есть адрес на кучу, где был аллоцирован вектор. Ты прав, данные вектора хранятся в куче, ибо стэк не может хэндлить динамические массивы. Если ты хочешь создать вектор в функции - возвращай его копию. Но это плохая привычка, лучше в вызывающую функцию запердолить пустой вектор и передать его в вызываему функцию как ссылку и там заполнять всем чем надо. Скоуп у вектора как у обычной локальной переменной, ибо деструктор там работает как в умных указателях. Вызод за скоуп - вызов деструктора.
>>1660312 Я лично подозреваю что винда зовёт все обработчики исключений поочерёдно и показывает им задницу эксепшона, пока одному из хэндлеров она не нравится. Прикольный механизм. То есть по итогу я задаю приоритет хэндлингу исключения.
Вопрос остаётся в том, компилируется ли for(;;); во что-то жрущее ресурсы. Здесь я подозреваю, что на ассемблере это просто nop с безусловным прыжком. Но я не знаю, отжирает ли это ресурсы. Менять указатель на инструкцию IP - это тратит время процессура.
>>1660331 Ну так чтобы его обработать средством __try __except ты должен вызвать его в блоке __try, а не где-то там в другом потоке. Для того чтобы ловить все исключения есть VEH
>>1660339 ★(int★)0 = 228; только так поймать можно. Либо в настройках компилятора шаманить чтобы через try(...) ловить, но тогда типо исключения уже не определить
>>1660331 Сам синтаксис ловли в виде таких штук как EXCEPTION_CONTINUE_EXECUTION и EXCEPTION_CONTINUE_SEARCH намекает мне что механизмами исключений в винде ловится что угодно, как бы намекая про VEH
>Vectored exception handlers are an extension to structured exception handling. An application can register a function to watch or handle all exceptions for the application. Vectored handlers are not frame-based, therefore, you can add a handler that will be called regardless of where you are in a call frame. Vectored handlers are called in the order that they were added, after the debugger gets a first chance notification, but before the system begins unwinding the stack.
>>1660351 Схуяли это неопределенное поведение? Если память присутствует и доступна для чтения, она считается. Иначе процессор создаст исключение которое можно обработать. Вполне себе определенное поведение.
>>1660366 В __try нельзя юзать объекты требующие уничтожения. >>1660354 На пикриле visual studio позволяет это корректно обработать используя параметр /EHa, даже деструкторы все вызывает.
>>1660376 > В __try нельзя юзать объекты требующие уничтожения. Память не освободится? Можно же в __finally это сделать (правда, оно быдлокодится через вложенные __try, это вам не питон)
>>1660635 http://habrahabr.ru/post/229963/ >стандарт C++ объявляет «неопределённым действием» бесконечный цикл без изменения внешнего состояния — поэтому компиляторы C++ вправе считать любой такой цикл конечным. Ну охуеть. Почему возврат переменного значения нельзя условно считать изменением внешнего состояния? Интересно, что если всунуть укорачиваемую часть после бесконечных циклов в отдельную функцию, скорее всего она не укоротится.
>>1660312 Так, сделал исключение через VEH, не проверял ещё как работает, дофига всего надо поделать. Тред хочется чтобы всё равно висел, даже если пока не надо. Можно использовать прибамбасы крестов: https://stackoverflow.com/questions/36711131/how-to-sleep-forever-only-using-c11 Но всё ещё хочу узнать, не за тормозит ли подобный >>1660694 ассемблер систему, т.к. это простая реализация сна без стандартных библиотек, а я свистелки не люблю
>>1660739 Так этот тред с бесконечным циклом не вызывает исключений и не триггерит вех. Для вечного ожидания есть WaitForSingleObject или SuspendThread
>>1660741 Так я это уже осознал. После того как система вызывает мой обработчик на событие, обработчик заставляет основной тред подпрыгнуть кабанчиком и благополучно завершается.
>>1660722 >не за тормозит ли подобный >>1660694 ассемблер систему Попробуй PAUSE использовать, если для x86 делаешь. Вроде как тогда система не будет с полной силой делать НИЧЕГО.
>>1660761 >зиродеи Во первых, как что-то плохое. Джава уродлива, поэтому создаёт много рабочих мест. На сях легко говнокодить, поэтому они создают много рабочих мест. Кресты невозможно знать полностью, поэтому они создают много рабочих мест. Индусы рентабельны, поэтому для белых багтестеров тоже есть рабочие места. Боинг 737 падает, разбивается и убивает людей, так что теперь кто-то решает эту проблему за деньги. Раст не создаёт рабочих мест.
Во вторых, нужно всё-таки определиться, низкоуровневый ли это язык, или администрирующий криворукого индуса, потому что выбирать меж 5 типами указателей никто нахуй не хочет, а терять производительность ради безопасности - для этого уже есть жаба, там это оправдывается либо банковским сектором, либо тем что каждому оленю надо дать право писать приложухи к андрюше.
>>1660783 >Раст не создаёт рабочих мест. Возможность писать полностью безопасный софт на уровне ОС, дровти прошивок, не теряя при этом производительность (Раст по скоростью равен С++, а в некоторых моментах и быстрее) - не создает рабочих мест? Интересно
>>1660807 Безопасность раста обеспечивается: 1. встроенным статическим анализатором, которые есть и для сей 2. прищемлением яиц программисту, которого в дизайне языка быть не должно fn _merge(left_slice: &mut [u32], right_slice: &mut [u32]) -> u64 vs fn _merge(vec: &mut [u32], left: usize, mid: usize, right: usize) -> u64 3. тысячей реализаций одной фичи, чтобы каждая была безопасной и уникальной
>>1660869 Возможно что чтобы общаться с оборудованием, вообще по итогам нужен заветный unsafe, ибо там отсылки к кастомным адресам (вроде). Спрашивается, почему не писать сразу на сях?
Сап, анон. Нормально ли использовать enum как параметр шаблона, чтобы класс специализировать, но не плодить бесящие меня наследования? Например, есть класс с координатой в полярных, и enum CoordType ={deg, rad};
А класс уже template<CoordType ct> class Coord { }
Отличия градусов от радиан в поведении класса только в том, что для тригонометрических функций будет перевод в радианы. Да, я знаю, что лучше хранить все в радианах и перевод выполнять только при выводе
Давно на C++ не программировал. В цикле "(auto i = vector.begin(); i != vector.end(); i++)" удаляю элемент массива "i = vector.erase(i)", но если это последний элемент, то будет краш т.к. can't increment vector iterator past end. Что делать надо? Неужели "if (i == vector.end()) break"? Или что поприличнее есть?
Какой есть роадмап для изучения плюсов в 2020 году? И вообще, я так понимаю, что компьютерное зрение - это одна из самых популярных сфер, где С++ используется?
Вообще посоветуйте с чего закатываться в компьютерное зрение? Можно ли вкатиться человеку с техническим (не математическим) образованием? Базовые матан, линал знаю. Теоревер стоит подтянуть. И вообще, насколько перспективный рынок компьютерного зрения? Вижу много вакансий связанных с разработкой систем видеонаблюдения, в России это наверное будет популярно в ближайшие годы.
>>1661125 Это зависит от контекста. Если вне класса, то это значит, что её можно вызвать только из того же файла, она может быть скомпилирована только в соответствующем объектном файле. Если в классе, то это значит, что она как бы глобальная для всего класса и в то же время этому классу не принадлежит, от неё нельзя наследоваться и в ней доступны только такие же статические методы и переменные класса. Но из нестатических методов её можно вызвать.
>>1661098 >>роадмап для джавы 2020 >>spring в стороне на побочной ветке вместо орма/микрносервисов/веба/тестов/баз данных вместе взятых. Про аналоги спринга вообще ни слова. Вам точно нужен такой же устаревший на 10-15 лет роадмап?
Вопрос от полнейшего ньюфага. Есть исходники кода,из них нужно собрать программу(проект, хуй его знает как это в вашей терминологии). В общем мне нужен экзешник, чтобы я его тыкнул и всё заработало. Реально ли это сделать человеку ранее не знакомому ни с C ни с программированием? И где можно найти того кто может это сделать?
>>1661092 Да там много всего, и c++ далеко не один аспект. Сначала советую в целом начать изучать тему, чем доступнее будет инфа и инструмент (питон, матлаб, возможно R), тем лучше. В компьютерном зрении а далее в моей трековой обработке много относительно типовой математики, хотя тема очень обширная. На c++ предполагается конечная реализация продукта (хотя это тоже далеко не так, питон имеет либы, написанные на крестах и сопоставимые по скорости с с++), хотя также есть связка xilinx + matlab, что иногда ставят в камеры. Короче, математика - основа, язык - инструмент, дерзай.
Алсо, изучая сабж, ты столкнешься с уймой схожих и крайне сейчас полезных задач, типа обработки изображений, линал в прикладных задачах (декомпозиции, eigen, вот это всё), нейросети, которые стоит вписать в резюме.
>>1661180 Там он как web фреймворк, а спринг это целая пачка фреймворков и в первую очередь dependency injection. Потом идет бут (всего понемногу чтоб сразу изкаропки все работало). Есть спринги для микросервисов, для тестирования, для работы с данными (включает в себя тот же самый хибернейт, но знать хибернейт для использования не обязательно). Его надо или в главную линию включать или в каждую ветку вписывать по спрингу. Разве что захочется написать десктопное приложение, там спринг не нужен. Андроид тоже отдельная тема.
А что делать на плюсах, если я не хочу идти в геймдев и не хочу заниматься нейронными сетями/машобом/etc? Микроконтроллеры хоть и не совсем С++, но тоже не интересны.
>>1661417 Спасибо, но в нвидию как правило нужны только сениоры. Где можно начать карьеру и какие для этого есть возможности? >>1661413 Ну это вроде выглядит интересно, правда непонятно, как получить хоть какой-то опыт в этой отрасли.
>>1661403 В последнее время видел много плюсов в сторону мк на с++. Действительно, c++ строже си, имеет прекрасный стл, стд::аррай, вектор и шаблоны, почему бы этим не пользоваться? А вся работа с регистрами прекрасно оборачивается в сишечный код, хотя касты тоже никто не отменял.
>>1661417 Ну вот тут написано, что должен делать человек на такой вакансии, но лично я не вижу ничего конкретного. Написано, что ты должен делать какой-то йоба-софт.
Проблема в том, что я хоть и нахожусь в ДС, не могу найти начать карьеру на плюсах. Пока мои одногруппники весело вкатываются на джава стажировки в сбер и тинькоф, я дрочу какую-то хуиту - писал пет проджекты на Qt, пару раз делал что-то довольно простое с комп. зрением, один раз ковырялся в ядре линукса и пытался написать свой кернел модуль для своего сетевого стека.
В яндексе я обосрался, в хуавее меня послали нахуй, в мейл не подавался, но там вроде бы и нет открытых стажек или вакансий джуна для таких дебилов как я.
>>1661440 >Ну так вперед задрачивать. Просто так в мире ничего не бывает.
Я уже довольно долго решаю литкод, но по словам многих знакомых, попасть на вакансию джуна как правило легче, чем на стажировку к ним - челики, которые со школы дрочили кодефорсес рейт 1800-1900 и тимус, были призерами олимпиад, и те не осилили.
Правда вот джуны и миддлы им сейчас не особо нужны.
>>1661447 Так-то понятно, но там был онлайн контест именно на алгоритмы и задачки с сюжетом. Причем на время. Без онлайн контеста на стажировку бекенд разраба не брали.
>>1661451 >Через 5-10 лет весь рынок будет забит вакансиями на раст А что на нем будут писать? Так кстати говорили про многие языки, вот только далеко не на всех есть огромные количества вакансий.
>>1661453 Критический софт в плане безопасности. Блокчейн там разный, браузера потизоньку на него начнут переписывать, новые ОС писать, новые либы - работы непочтаый край, надо же как-то дырявый Си заменить.
>>1661726 Мне кажется, что c++ тоже безопасный. Компилятору ничего не мешает по-умолчанию считать за ошибки сырые указатели например, или си-подобные массивы
>>1661751 C++ не безопасный, так как в нем есть возможность выходить за границы массивов, как и в Си. Если бы С++ был бы безопасным языком, то в таких продуктах как, допустим, Хром не было бы уязвимостей, связанных с порчей памяти (memory corruption), а на деле там каждый год что-то находят. Ну и в гугле далеко не дебилы работают, засим подобные ошибки в языках типа С и С++, да еще и в огромный кодовых базах, неизбежны, даже если код пишет профессионал высокой квалификации.
>>1661756 >Ну и в гугле далеко не дебилы работают Rob Pike, по опыту, считает иначе:
“The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.”
>>1661765 Цитата ни разу не говорит о том, что они некомпетентные, так что к чему ты цитировал Роба Пайка яхз. Учти, что Хром 24/7 находится под фаззингом, а фаззит его кластер с 15000 процессорами. И все равно независимые исследователи, не связанные с гуглом, находят там дыры в памяти, можно даже открыть CVE, начиная даже с прошлого года, и посмотреть. С++ небезопасный язык и никогда таковым не будет, ибо безопасность влечет за собой потерю перформанса, причем ощутимую, как ни крути. И рыбку съесть, и на хуй сесть - такого не бывает в этой теме. Всегда за что-то платят чем-то.
>>1661782 Лол, не знал. А какая там разница в перформансе? Когда выдрачивают из софта на крестах все соки в плане скорости - избегают? Или для таких целей уже лучше не ебать мозги и писать на чистом Си? мимо другой анон-крестовик
Допустим я хочу использовать библу https://bitbucket.org/tunnuz/json/src/default/ ее нужно качать и скомпилировать? Есть какие-то пакетные менеджеры? У нас в питоне requirements.txt в нем прописывается пакет и версия, или ссылка на гит, если пакет тащится с гита, и pip по большей части сам все резольвит, как дела с этим обостоят в плюсах? Спасибо за ответыДобра и здоровья в это нелегкое время
Двач, дайте образец шаблонной функции с шаблонными возвращаемыми значениями, пожалуйста. Я что-то пытаюсь смотреть и не могу понять, это вообще возможно?
>>1661936 В общем понял в чём была проблема, шаблоны нельзя разделять на .h и .cpp, но уже C++20, разве ещё не ввели какую-нибудь фичу что-бы это было возможно?
Есть большой набор строк и есть словарик из неповторяющихся количества строк. Нужно используя словарик сделать новый файл, состоящий из номера строки в словарике или -1, если такой строки в словаре нет. Как оптимально решить такую задачу? Не хочется пилить велосипед.
>>1662034 Ну не совсем уж без документации. Обычно есть документация уровня "int sum(int, int); // сложение двух чисел", из которой примерно понятно как это использовать, но иногда появляется по десять перегрузок и хуй пойми какую выбрать, приходится копаться в логах коммитов.
>>1662223 test создается на стеке и просто указывает на местоположение объекта в куче. Если его не инициализировать то никакой памятью он не владеет и ты просто дерефнеш нулптр вызвав краш.
>>1662238 Ну так то я понимаю, в простом случае Test* test ; test->func() дерефернс разумеется тут же приведет к крашу, но в данном случае unique_ptr работает! Т.е. там не мусор и не NULL. При чем конструктор/деструктор которые я определил не вызываются, что логично. Только почему все равно работает - непонятно. А вот как только я в func пытаюсь получить значение внутренней переменной класса - тогда segmentation fault. То есть создается какой-то кривой объект, память аллоцируется, но конструктор не вызывается. Не хочется время тратить на этот бред, но все равно интересно, что там по умолчанию в unique_ptr происходит.
>>1662353 Если у тебя func не юзает переменные внутри класса и она не виртуальная тогда все логично. Она просто преобразуется в func(Test* this) и вместо this нулевой указатель, соответственно дереференса не происходит и все нормально. Так же будет и с сырым указателем.
Читаю память, получаю строку в char массиве, присваиваю этот массив строке std::string, добавляется какой-то символ (в данном примере -`(`), в чём проблема? Не понимаю...
>>1662353 Пару тредов назад был спор по такому поводу и выяснили, что это все же UB. Не делай так, анон. Нужна функция без определения объекта класса - сделай ее статической, например.
Пчелы, а как вы приобрели опыт в сборке проектов? (Make, Cmake, Grandle) Ввиду того, что пишу на vim'е встал острый вопрос с быстрым получением знаний в этой сфере, раньше молодой был, зеленый и ide все делало за меня, а тепень столкнулся с суровыми реалиями и статьями: "делаем йоба-аллах сборку", где нахуярено миллиард всего и непонятно че как зачем. Есть какие-нибудь факи проверенные, книжки? Просто советы? Че лучше юзать? У кого был опыт с Grandle?
>>1662687 но ведь небезопасен не весь код, а только ансейф блоки. Что увеличивает вероятность не пропустить баш в прод вообще, ибо проверки на безопасность концентрируются в определенных местах в коде
>>1662353 > Только почему все равно работает - непонятно. Один из вариантов это то что так как вызов operator-> у неинициализированого каким-то объектом unique_ptr это UB то компилятор в таком случае может делать что хочет, в том числе просто игнорировать этот вызов в рамках оптимизации.
>>1662353 >дерефернс разумеется тут же приведет к крашу, и с обычным птром ptr->hui() сработает, если нет обращения к внутренностям, те дереференса this
Либа, которую я использую, кидает эксепшены в функциях, которые я использую в адаптере между функционалом либы и своим собственным.
Можно ли как-то поймать эксепшен, находясь на уровень выше? То есть не там, где я вызываю функцию, бросающую эксепшен, на на один call выше? Делать re-throw в каждой функции адаптера не хочется
>>1663130 > эксепшен, находясь на уровень выше Должно быть возможно. Обработка ошибки на любом уровне без ручного пробрасывания - единственный профит эксепшенов. Уточни что у тебя за ситуация и почему не получается. Может там какие нюансы у тебя.
. Класс Автомобиль (марка, год выпуска, цвет, пробег, мощность, КПП, тип кузова). Метод класса: вывести информацию, большой пробег у машины или нет. Функция: Вывести машины годом выпуска не старше 2000 года с механической коробкой передач.
Ананасы, вопрос по иде Собираю примитивную многопоточную программу в консоли и всё ок, выполняется как нужно Но в qt creator'e почему-то программа падает От чего может быть такое?
Ананасы, как найти первую работу на ебучих крестах? Нужно было искать летнюю практику, отправил резюме в пару контор, выслали тестовое. Кое-как сделал, получил отказ, написали, что слабовато (хз, какие требования для ебучей ЛЕТНЕЙ ПРАКТИКИ в ебучих конторах, писал аккуратно, STL, потоки, классы везде). Недавно было онлайн-интервью, это был пиздец. Вопросы задавал чел, у которого был пиздец какой микрофон, постоянно приходилось переспрашивать, потому что слышал только ебучий шорох. Ответил почти на все вопросы (не ответил на вопрос "как сбалансировать бинарное дерево", хотя и говорил, что можно выбрать в качестве корня другой элемент, но т.к. не прозвучало "поворот дерева", ответ не засчитан), написали, что "не хватает теоретических знаний для них. Как попасть хоть куда-то? Я уже и не понимаю, что учить
>>1663191 Ты в QT собираешь или отдельно сам через cl/mingw? Судя по гуглу первое, и QT требует своих бинарей в зависимостях. Попробуй одно из: 1) Подложить исполняемый файл в папку, где лежат все dll от кутей и запустить оттуда 2) Проверить через depends.exe, какие либы исполняемый файл требует
>>1663201 Пока что есть только одно задание. FTP-сервер. Вводишь будь директория для хоста, клиенты подключаются, видят список файлов, вводят id и скачивают. Здесь код для одного клиента, на другом ПК прикручена функция Select. https://pastebin.com/013akARv
Не знаю в чём была беда, но скопировал dll'ки из папки компилятора к бинарнику и всё ок запустилось Хотя раньше такого не было, да и из консоли всё запустилось сразу же
>>1663189 > Ананасы, как найти первую работу на ебучих крестах? Я вот тоже пытался, в ДС. Так и не смог найти. Конечно, можно было податься писать десктоп приложения под винду в какое-нибудь НИИ, но я решил для себя, что уж лучше вкачусь в другой стек, все равно пока студент и родители содержат меня.
>>1663216 На каком курсе это было? Я сейчас на предпоследнем, после лета учусь полгода, потом практика, диплом и все. Летом думаю выучить Django и HTML/CSS))0
>>1663218 Я сейчас на втором, вот недавно совсем пытался попасть на плюсы и понял, что а) Бек разработки на плюсах мало, даже в столицах. Я пытался попасть в яндекс на стажировку, но требования по алгоритмам для стажеров выше, чем для джунов. Но джуны им сейчас не нужны. б) Я нихуя не умею. Для успешного вката в плюсы нужно знать предметную область. Нужно быть прошаренным в низкоуровневой разработке под железки, хорошо знать как работают оси, знать устройство ядра линукса, уметь прогать под ARM. Либо нужно уметь в компьютерную графику, если хочешь в геймдев. Еще есть датасаенс, но там помимо самих плюсов, нужно хорошо знать питон и все библиотеки для него. Ну и математика само собой.
В железки я не умею, учиться долго и сложно, геймдев абсолютно неинтересен, датасаенс как-то не зашел. Решил вот переквалифицироваться в бекенд макаку, сейчас досдам текущие долги по учебе и примусь за js наверное.
Аноны, вопрос по блядской студии. Что делать, чтоб потом без проблем переезжать на новые версии? Очень часто вижу, что собирать проект из 2017 надо с лютым пердолингом в 2019 буквально недавно где-то в репах нвидии нашел что-то под 2017 и не смог собрать, миллион ошибок, в ужасе стер с диска эти файлы, такое же говно помню было с 2012->2015. Cmake не хочу по религиозным соображениям использовать спермосектант.
>>1663189 Попробуй на завод практикантом, срсли. >>1663216 В НИИ ты наименее вероятно будешь писать десктоп на крестах, вероятнее какой-нибудь клёвый матан или управление на си
>>1663360 Сужу по своему заводу: студентов берут отлично, особенно если есть связь с институтом. Работа для меня турбоинтересная и уйма возможностей, правда, в основном саморазвитие, нет гуру рядом со мной. В итоге, за 5 лет, я сейчас неплохо (субъективно) знаю кресты, qt, программирование для мк, си, схемоту, немного цос, линал/тервер с питоном и матлабом, даже как-то линуксы собирал. Почему такой разброс тем? Детская организация работы программистов, никто меня не ебет за сроки и методы, на интересные для меня проекты я вызываюсь сам, в итоге имея неплохой (надеюсь, востребованный) багаж знаний
>>1663335 Открыл солюшн, сделал ретаргет и собрал, попутно решая возникшие ошибки, которые в основном будут связаны с two-phase name lookup, который там наконец-то починили.
Господа крестовики, подскажите нахуя в плюсах в свое время присобачили возможность инициализировать переменную с фигурными скобками? В чем соль? Пример:
int yobaint {};
Это типа чтобы точно быть уверенным, что в инициализированной переменной нет мусора или как?
>>1663457 Потому что наследие си: то, что может быть декларацией функции - декларация функции, была проблема с дефолтными конструкторами из пустых скобок.
>>1663452 Я в конструкторском отделе сижу, поэтому занимаюсь разработкой всяких новых вещей. Матан активно используется в инженерии, представь себе, сколько математики присутствует в какой-нибудь стиральной машине (теория автоматического управления), или в радаре машины (там различная нейросетевая обработка + приемы вычмата + линейная алгебра). И это все нужно разрабатывать, тестировать, моделировать и внедрять. Если делать как-то по-простому, или хз взять либку для ардуины, то вероятно будет работать ненадежно, не говоря про то, что опенсорс проекты далеко не самый топовый матан используют. >>1663466 У меня в среднем за месяц около 70-80, не ДС.
Насколько сильный оверхэд у исключений? И являются ли они предпочитаемым способом эррор хэндлинга в С++? Или когда важен рантайм - хэндлят ошибки через условия, как в Си?
>>1663649 > Насколько сильный оверхэд у исключений? Большой. Зависит от количества исключений которое будет генерироваться. Если пару десятков в секунду то похер. Если сотни/тысячи то скорее всего будет заметное падение производительности - там уже нужно профилировать и смотреть подходит такое или нет. Плюс еще важна глубина на которой ловится исключение. Если на каждом исключении стек раскручивается на несколько десятков вызовов - понятно что быстро это не будет. Просто чтобы приблизительно понимать вот две равноценных программы https://ideone.com/6PmOavhttps://ideone.com/EzHI0F (одна с исключениями, одна нет). ideone нивкоей мере не подходит для оценки производительности - отличия в скорости между несколькими выполнениями одной и той же программы могут отличатся в разы. Но он позволяет приблизительно оценить порядок отличий - блок с исключениями медленней на два порядка (приблизительно в 100 раз). Обрати внимание что важен не факт использования исключений, а именно количество выброшеных исключений. https://ideone.com/Cl0BMk - тут ideone уже не позволит оценить производительность. Я примерно чувствую что должно быть падение процентов на 30% в скорости.
>>1663649 Бросать эксепшены дорого. Активное бросание эксепшенов сильно влияет на производительность. Наличие эксепшенов в коде, который условно никогда не бросает эксепшены - тоже влияет на производительность, так как препятствует code-reordering, а значит и другим оптимизациями
>>1663508 >не говоря про то, что опенсорс проекты далеко не самый топовый матан используют. неужто для линейной алгебры, вычмата и нейросетей вы пилите велосипеды, т.к. ваш код качественнее, чем в TensorFlow и lapack?
>>1663902 а крестики так умеют? > out = 0x100000000000000000000001000000000000000000000000000000 ^ 0xffffffffffffffffffffffffffffffffffffffffffffffffffff > "%x" % out '10fffffffffffffffffffffeffffffffffffffffffffffffffffff'
Анон, нормально ли то, что если я вижу Си-подобный код, то мне всё более-менее понятно, но если я, например, не вижу в некоем программном коде фигурных скобок в значении областей видимости, типов данных при объявлении переменных, то я моментально выходу за пределы зоны комфорта? Как это называется?
>>1663956 >Как это называется? Псевдокод? Живучесть си в том что он лёгок для интерпретации, а препроцессор может как сильно сокращать размер кода, так и менять его просто риздец как - никаких скобок может не быть.
>>1663769 Например, фильтр Калмана. Годные современные его вариации, которые описаны в статьях, не лежат на гитхабе, и даже в матлабе нет. И мне не нравится твой предвзятый тон, иди нахуй >>1663934 ))))
>>1657102 (OP) Посоны, помогите нюфагу-пизданизду-веб-макаке. Хочется пощупать программирование так как оно есть, а не так, как я делаю сейчас на бэкэнде. Решил вкатиться в плюсы, хотя бы чисто для себя. И обнаружил что у меня дикие пробелы в CS (если можно так назвать). Работа с потоками, памятью, вот это вот всё - не понимаю. Что почитать для совсем нюфагов? Может даже не про язык, а про то как всё работает
>>1664141 Ну собственно вопрос так и звучит: > почему оно собралось вообще? >>1664150 Ничего не поменяется >>1664155 Смысл резать эти 30 строчек в тестовом примере?
>>1664177 Колбек вызвался успешно потому что там нет разницы с каким количесвтом агрументов ты его вызываешь, до тех пор пока их хватает - потому чт оагрументы не передаются напрямую в колбек, а вызывается std::invoke (который получается все переданые аргументы) - и из них выбираются нужные в соответсвии с std::placeholders которые ты передал при вызове std::bind. А так как ты ничего не передавал то все агрументы просто игнорируются. Почему пройден статический контроль неясно. Скорее всего результат std::bind неявно приводится к любому callable. Наверное это из-за того что у результата std::bind нет как таковой сигнатуры - его можно вызывать с любыми аргументами, ошибка будет только если std::invoke не найдет всех нужных агрументов.
>>1663351 >В НИИ ты наименее вероятно будешь писать десктоп на крестах, вероятнее какой-нибудь клёвый матан или управление на си А как такое искать в ДС? Типа есть какие-то НИИ, которые выставляют вакансии на хх, но то видимо нормальные заведения, куда нужны нормальные кадры
>>1665084 >Сейчас не знают как программировать, но знают, как не надо. Всё верно, программисты остались в 90-х, сейчас макаки которым программирование не надо.
>>1664912 Тащемта вулкан лютая хуйня. После него DX12 выглядит как годнота для людей. Писать под вулкан на Винде - себя не уважать. Тем более технологически вулкан всегда в позиции догоняющего. Майки переработанную версию DXR выкатывают, а в вулкане только первую версию трассировки выкатили, на которой только хэллоуворлды есть.
>>1665142 DX12 чето пиздец как переусложнен. Тредсейф убрали, контекст убрали, и самый пиздец это то, что теперь ты САМ должен контролировать все дескрипторы ЦПУ и ГПУ т.е. писать свой диспетчер этих дескрипторов.
>>1665183 Ну в вулкане ещё хуже. DX12 под многопоточных рендеринг заточен, если разобраться, то ничего сложного. Просто куча шаблонного кода для синхронизации и управления памятью.
Привет, аноны. Я вкатывающийся ньюфаг, прошел примерно половину курса на stepik, все зашибись. Но прямо сейчас в заданиях стали появляться многочлены, квадратные уравнения, системы уравнений и вот это все. Я вроде не полный гуманитарий и понимаю, что это все на самом деле средняя школа, но у меня подгорает это действительно нужно для изучения языка?
>>1665780 >The handle must have the PROCESS_TERMINATE access right. For more information, see Process Security and Access Rights. Наверняка кто-то доки плохо читает.
>>1665920 В чем переход заключался? Я переводил около двухсот проектов, тоже где-то месяц заняло. Пересобирал штук 15 библиотек, исправлял сборку, выпиливал некрокод (в т.ч. части буста, которые вошли в стандарт), фиксил шаблонные конструкции и всякие ошибки, которые раньше не проявлялись
>>1664955 А если нужна графика с 2д примитивами, нарисовать там линии, квадратики, битмап вывести, без сильной динамики. Кроссплатформенное и без qt? другой анон
>>1666093 >Designated initializers are indeed very useful as you point out, if only they could be used in code-bases that are supposed to be portable. If your code needs to be compiled with the Microsoft C compiler – tough luck! Microsoft still stubbornly refuses to support C99, and as a result, designated initializers as are not supported. Лямбды есть, а вот этого нет.
Анон, есть ли реальный шанс, что с++ вытеснит си и займет его нишу, в частности микроконтроллеры? Я для них пишу, естественно использую hal производителя, и я не вижу каких-то сильных проблем переноса кода на кресты. Плюсы: c++ безопаснее, 80% дефайнов меняются на енумы, шаблоны-шаблончики, стл, вектора и карты, и миллиард написанных библиотек.
>>1666098 >шаблоны-шаблончики https://en.wikipedia.org/wiki/FLTK >It also avoids complex macros, separate code preprocessors, and use of some advanced C++ features: templates, exceptions, and run-time type information (RTTI) or, for FLTK 1.x, namespaces.
>>1666098 Для этого ему нужно приблизиться по скорости к Си. Что в свою очередь ведет к отказу от фишечек Си++ так как они ведут к дополнительным тратам ресурсов, т. е. ты на плюсах будешь писать как на сях.
>>1666119 Сам создатель, который с гим работает всю жизнь, не умеет на нем писать. В этом нет ничего зазорного. А то что ооп это компромисс между производительностью и структурированнностью кода - давно известный факт.
>>1666122 Хотел попробовать переводить в sleep_for обычное сишное значение, а не std::chrono::seconds. Дожно конструироваться же. Посмотрел в заголовок и нихуя не понял.
>>1666104 Как я понимаю, ява разрабатывалась с идеей создания унивирсального байт-кода для любой платформы с использованием какой-то ебаной ява-машины, но мир на самом деле родил не так уж и много разных аппаратных платформ, арм везде пустил свои щупальца, а гцц/цланг позволяет генерить код под все популярные (и не очень) архитектуры. ИМХО, ява обречена, ее популярность сугубо из-за легаси. Да и c++ родной с си, без проблем один в другой можно включить, что хорошо для плавного перехода HAL. >>1666114 Многие мои коллеги не компилируют под мк с -O3, типа что-нибудь отвалится, изменятся тайминги и не будет работать. Да, люди игнорируют варнинги.
>>1666133 >Да, люди игнорируют варнинги. Я тоже игнорирую их т.к. приходится просто. Вот взял ты либу какую-нибудь с гитхаба, подключил и сразу получил 100+ варнингов. И что мне блять с этим делать, самому их фиксить? Мне проще вырубить их нахуй и все.
>>1666148 О, что тут у нас, долбоеб пишущий говнокод, который думает, что этот код крут потому что написан на плюсах? Может перестанешь на бьерна дрочить и собой займешься?
>>1666205 Скажи, ты тот же ебалдяй, который с пеной у рта доказывал про опасность goto или другой? У вас очень похожий мыслительный процесс, если это словосочетание вообще применимо к вам.
>>1666312 Это обычный человек, без мозгов, привыкший подчиняться чужой воле, настолько, что даже когда никто не приказывает, думают что приказ существует. В реальности проявляется так: вот есть в С++ классы, шаблоны, етс. етс., значит НУЖНО это всё юзать, иначе ты лох-пидр бла-бла. Тямы нет осознать, что это не принудиловка спущенная "начальником", а свободный выбор, где только ТЕБЕ ЛИЧНО решать использовать или нет. Потому что сами думать и за себя решать не способны в принципе, на генетичсеском уровне не способны.
реализовал свой собственный класс String. Описание на 1 скрине. Всё работает, но есть проблема при считывании файла. При создании объекта класса String в функции Get_file_Content содержимое файла успешно считывается туда, но при возвращении ничего не сохраняется. Приходиться передавать объект класса по ссылке - 2 скрин и делать её void. Что я упустил? Написать отдельный метод, чтобы возвращать содержимое в случае return ?
>>1666360 Ну какой нахуй собственный класс строки в 2020 году? Без мув конструктора тем более. Вангую, в консрукторе копирования у тебя там string_ = other._string
>>1666381 Если хочешь ООП ради ООП возьми Qt и педалируй там интерфейсы. Тут тебе и наследование, и инкапсуляция, и полиморфизм, и композиция и ещё куча умных слов
Сап двощ. Когда ебучие макаки разработчики компиляторов (или хотя бы одного) уже запилят полноценно модули? Feature freeze уже год назад произошёл, всё утверждено. И какого хуя вся эта котовасия всё ещё тенется? У кого нибудь есть прогнозы/инсайды/слухи?
>>1666360 Насколько можно понять из твоего хуевого описания, проблемы в конструкторе копирования, ищи там
Плюс мув-конструктора нет, что скажется на эффективности работы. Как и еще кучи вещей по типу виртуального деструктора, мув-присваивания, инициализации итераторами, определения типов размера, отдельного чара и тд.
Если целью не стоит заимплементить именно юзабельный тип, то лучше тренить ооп на чём-нибудь попроще: animal, cat, dog и тд
>>1666603 что-то мне подсказывает, что люди так и останутся сидеть на хидерах, причём это коснётся как всяких системных бздей, так и прикладных к ним утилит
>>1666478 Я не могу тебе взять и достать код из какого-нить внутреннего гита Микрософта. Я подписан на твиттеры челиков из MSVC, они писали, что у них внутрях уже модули во всю используются.
>>1666611 Ну, вот тут я не согласен. Как только в IDE появится полноценная поддержка модулей (Вижуал Студия 2021?) - мы на работе переедем в ту же секунду.
>>1666635 У тебя комплюктер пополам треснет при попытке открыть и отредактировать файл на 1кк строк.
>>1666639 >Проблема возникает тут. Нет, не тут. На 75% уверен что проблема ETO TI в операторе= Алсо надеюсь тебе не очень нужен завершающий \0, потому что read() его не пишет.
>>1666651 Я не про то что не скомпилится, а про то что большинство текстовых редакторов (с подсветкой синтаксиса особенно) едут крышей когда открывают файл >1 Гб. даже швитой ВИМ - по крайней мере в 2014 не вывозил
>>1666462 >Они во всех трех компиляторах есть уже. 3(2), причём судя по описаниям везде не full featured. Я готов хоть на ебучий текстовый редактор, дайте модули, сука.
Господа крестовики, приветствую Вас. Вопрос таков: каков самый быстрый способ (в рамках ОС, без ебанутых хаков с кастомными гипервизорами) наплодить N процессов и в бесконечном цикле кормить их разными вкусняшками? Я линуксоид, поэтому на ум пришло расфоркаться N раз (имеем в итоге одного отца с N дитяток), батя кормилец, а все N детей потребляди. Попрошу заметить, что каждый из детей вызывает одну и ту же программу через execve, поэтому треды здесь не покатят. Это часть функционала одной программы, которую я пишу на плюсах вперемешку с Си (кресты нужны из-за ООП в очень многих местах + банально удобнее работать с данными в некоторых моментах). Что скажете, есть быстрее способ или я вообще хуйню несу?
Господа крестовики, приветствую Вас. Вопрос таков: каков самый быстрый способ (в рамках ОС, без ебанутых хаков с кастомными гипервизорами) наплодить N процессов и в бесконечном цикле кормить их разными вкусняшками? Я линуксоид, поэтому на ум пришло расфоркаться N раз (имеем в итоге одного отца с N дитяток), батя кормилец, а все N детей потребляди. Попрошу заметить, что каждый из детей вызывает одну и ту же программу через execve, поэтому треды здесь не покатят. Это часть функционала одной программы, которую я пишу на плюсах вперемешку с Си (кресты нужны из-за ООП в очень многих местах + банально удобнее работать с данными в некоторых моментах). Что скажете, есть быстрее способ или я вообще хуйню несу?
>>1666662 Вим, имхо, нихуя не показатель быстрого редактора. Да и миллиард разных обвесов не позволяют судить где сам вим а где что-то ещё лагает. Самый быстрый всё же саблайм. Алсо, даже в вскод кто-то пытался впихнуть инкрементальный парсер для подсветки кода (https://github.com/microsoft/vscode-go/pull/2555), что как бы намекает что сварганить из готовых инструментов открывалку для гиговых файлов в 2к20. Правда кому это нахуй надо кроме полутора долбоёбов поехавших на перформансе.
>>1666649 > У тебя комплюктер пополам треснет при попытке открыть и отредактировать файл на 1кк строк. Кошерные редакторы могут грузить файл по частям. Это не такая уж и сложная фича. Самое сложное в этом - составить карту памяти новых строк, чтобы какое-то подобие классической навигации было. Ну а вообще я надеюсь что тот анон шутит так.
>>1666667 Если тебе нужно решить какую-то задачу — не страдай хуйнёй и возьми готовый ивентлуп (libuv/libev/итд) на вкус, если хочешь более хайлевел решение — возьми какую нибудь либу с корутинами и шедулером. Если в целях образования — то возьми либу по вкусу из совета выше и ковыряй её исходники. Если будешь вслепую писать на найденных апишках — скорее всего просто проебёшь кучу времени и придёшь к тому же результату в конце концов.
>>1666639 С копи конструктором все норм. Но там еще вызывается Resize, и непонятно как именно используется Get_File_Content: инициализируешь новую переменную - вызывается копи конструктор, присваивание к уже существующей - operator=
И раз ты подебажил и понял, что файл действительно успешно читается, то в чем проблема посмотреть что там происходит в месте вызова Get_File_Content?
Почему ошибка обращения к памяти, хотя память Read Write ? Exception thrown: read access violation. val was 0xDC6E168000. Хотя до этого 2 раза нормально прочел два других региона с state commit, правда protect read
Охуеть, че можно-то... Анончики, почто я так бездарно просрал свои студентские годы? Писал свои велосипеды на Си вместо того, чтоб окунуться в кресты. Довыебывался, работаю теперь черти на чем вообще, а ведь мог без задней мысли, рекурсивного захлебывания инфой из толстых книжек и прочего педантизма юзать мощь крестов в свое удовольствие и постигать дзен в бою - давно бы уже крестовиком трудоустроенным стал.
>>1666905 Что именно можно? Если ты про компайл-тайм вычисления, то это просто что то типа встроенного продвинутого калькулятора. Приятно, но в целом хуйня. Представляю как ты охуеешь, когда дойдешь до темплейтов и узнаешь про всякие metaprogramming штуки
>>1666637 На заметку. На пике один ты инициализируешь size_, а потом выделяешь в string_ size_ +1 элементов в списке инициализации. И все это работает только потому что в самом классе ты сначала объявил size_, а потом string_. Было бы наоборот - падал бы твой конструктор и ты бы очень долго искал ошибку. Потому надо инициализировать члены класса в порядке объявления.
>>1665820 Не особо понятно, куда ставить этот флаг. В списке флагов функции createprocess такого нет, а если все же его там выставить, процесс просто не запустится. Но что самое странное, код успешно работает, если в качестве приложения выбрать например internet explorer, или foxit reader. Может есть какой то запрет на terminateprocess именно у калькулятора?
А нахуя нужен WebAssembly, если один хуй надо его обмазывать жсом? Причем там такая ебля в сраку, что проще написать это всё в бэке или на чистом жсе, чем пердолиться с встраиванием васма.
>>1666667 >Попрошу заметить, что каждый из детей вызывает одну и ту же программу через execve, поэтому треды здесь не покатят. Какой-то изначально ебанутый дизайн, если честно. Тебе так в любом случае придётся делать процессы через стандартное АПИ оси, от этого ты никуда не денешься никогда. Вопрос лишь в том, как процессы общаются между собой - через пайпы или Posix Message Queue или shmget или сокеты или что придумаешь.
Почему qt creator требует для функции из библиотеки wibdows.h аргумент типа строки wchar_t, а в других иде для той же функции нужна строка чаров, и все работает.
>>1667170 Короче смотри. В виндобс до недавнего времени юникод был реализован через жопу UTF-16, соответственно все методы из windows.h при наличии макроса UNICODE имеют постфикс W и принимают wchar_t. Если таргетишь Винду версии 1903 и выше, то можно вроде как отказаться от этого макроса и в настройках винды включить utf-8
Аноны, помогите плиз. Почему моя прога вылетает, когда я пытаюсь использовать рекурсивную заливку flood fill на большой области? Например, картинка 320х320, я выделяю произвольную область даже меньше четверти всей площади картинки, и прога вылетает. Если выделять малюсенькую область, то красит. Алгоритм заливки такой:
void CustomAreaTool::floodFill(int x, int y) { QColor color = selectionMask.pixel(x, y);
if(x >= 0 && x < selectionMask.width() && y >= 0 && y < selectionMask.height() && color == Qt::black && color != Qt::white) { selectionMask.setPixelColor(x, y, Qt::white);
>>1667493 Переделать в цикл. Или думаешь у тебя в стек влезет 70к вложенных вызовов?
void floodFill(int x0, int y0) { vector<pair<int, int>> store(1, {x0, y0}); int dx[] = {1, 0, -1, 0}; int dy[] = {0, -1, 0, 1};
while (!store.empty()) { auto pos = store.back(); store.pop_back();
auto col0 = selectionMask.pixel(pos.first, pos.second);
for (int dir = 0; dir < 4; ++dir) { int x = pos.first + dx[dir]; int y = pos.second + dy[dir]; if (x < 0 || x >= selectionMask.width() || y < 0 || y >= selectionMask.height()) { continue; }
auto col1 = selectionMask.pixel(x, y); if (col1 != Qt::black) { continue; }
store.push_back({x, y}); selectionMask.setPixelColor(x, y, Qt::white); } } }
>>1667550 Спс, чел, попробую. А что тут происходит вообще? То есть ты создаешь свой стек store с пикселями. Потом достаешь из него по одному пикселю и одновременно суешь еще несколько его соседей. Так ведь?
>>1667063 1. Используй тайпдефы из хэдеров (ULONG/PVOID/ULONG_PTR итд) 2. Получи верхнюю и нижнюю границы адресов пользовательского режима, вместо сканирования вслепую с нуля до бесконечности. 3. Исключи из поиска регионы без нужного тебе доступа 4. Проверь доступность страницы в рабочем наборе, сканируй только те страницы, которые присутствуют в физической памяти и помечены системой, как доступные для использования
>>1667165 Батя кладет данные в расшаренный буфер от mmap, детки хавают это. Проблема producer-consumer решается семафорами. Почему ебанутый? Запускаешь программу, она плодится на N процессов-детей. Отцовский процесс готовит данные, дети их хавают. В итоге у каждого из N процессов есть разные данные и все они исполняются параллельно (насколько позволяет цпу машины). А учитывая, что IPC через расшаренную память является самым быстрым из всех других видов IPC, то получается вроде как неплохо. Быстрее - только высрать кастомизированный гипервизор со специально спроектированной моделью ввода-вывода.
>>1667576 Да я уже понял. Я забыл что адресс не моего процесса, и тупо обращался по адресу другого процесса в своем. Естественно вылетало. > 2. Получи верхнюю и нижнюю границы адресов пользовательского режима, вместо сканирования вслепую с нуля до бесконечности. От нуля до 7FFFFFFF. Так написано на в доках майкрософта. Дальше процесс распологаться не может. > 3. Исключи из поиска регионы без нужного тебе доступа Сделано > 4. Проверь доступность страницы в рабочем наборе, сканируй только те страницы, которые присутствуют в физической памяти и помечены системой, как доступные для использования Сделано Все работает. Причем довольно быстро. Спасибо за ответ
>>1667699 Чуток ошибся. For a 32-bit process, the virtual address space is usually the 2-gigabyte range 0x00000000 through 0x7FFFFFFF. For a 64-bit process on 64-bit Windows, virtual address space is the 128-terabyte range 0x000'00000000 through 0x7FFF'FFFFFFFF
>>1667699 >>1667703 > От нуля до 7FFFFFFF. Так написано на в доках майкрософта. Никогда не верь докам майкрософт. SYSTEM_BASIC_INFORMATION: MinimumUserModeAddress, MaximumUserModeAddress - реальный диапазон. Там же PageSize, AllocationGranularity.
>>1667654 Я HPC не занимался и не знаю как у вас принято, но я просто не вижу смысла городить процессы там, где можно обойтись простым тред пулом. Судя по постам код подконтролен тебе и поэтому я не очень понимаю, зачем так нужен execve. Да, по скорости не должно отличаться если всё правильно сделано хотя кто там знает, как в glibc межпроцессные семафоры реализованы, но плодить лишние тяжеловесные сущности со своими (хоть по большей части и расшаренными) виртуальными пространствами - как-то не то это.
Насчёт второй части оригинального вопроса - о "скорости кормления" - зависит от специфики твоей задачи, и плюсы тут не помогут. Какой размер у единицы работы, как сильно влияет false sharing, много ли ядер одновременно дёргают общие переменные - только ты знаешь. Тут уже не важно, треды или процессы, физически страницы одни и те же. Лично я до таких мелочей никогда не оптимизировал, поэтому подсказать не могу.
День добрый, проблемы с отладкой gdb в qt creator под вин10 распространенная тема (например, шаг с выходом почти всегда работает криво) или нет? Причем в VS работает без проблем.
>>1667755 Пчел, повторяю, каждый ребенок вызывает ДРУГУЮ программу. Это часть задачи, какие нахуй треды, если из-под них нельзя вызвать другую программу? Execve из треда, а не из отдельного процесса, накроет пиздой весь process image той программы, исполнение которой я хочу поддерживать в бесконечном цикле. Именно поэтому в виду специфики задачи я должен плодить именно ПРОЦЕССЫ, а не треды. Причем не по кд, а высрал N процессов, а потом только подохшие заменяю по мере поступления сигналов к отцу. Сам форк имеет copy-on-write, ощутимый оврехэд есть разве что у execve, ибо он вайпает все виртуальное адресное пространство и заполняет его новыми данными.
>>1667815 stack это адаптер, ни на чем он не реализован, а просто внутри использует один из контейнеров, причем на выбор пользователя. И да по умолчанию это дек, потому что есть подозрения, что лист со своими оверхедными ссылками хуже по производительности
А возможность доступа по индексу в queue - пиздеж скорее всего, или подгони пример использования
А как узнать установленную opengl версию? Выскакивает ошибка Context profiles are only defined for OpenGL version 3.2 and above, хотя вот что показывает аида. Только я не уверен что это значит. Имеется ввиду что поддерживает opengl 4.3 или что он установлен?
>>1668056 Вот это да, но тут проблемка воникает. Скачиваю адреналин от амд, обновляю драйвера и комп начинает нихуева лагать. Фризы, мерцания и тд. Сейчас конечно еще попробую, но мне кажется ничего не изменится
Конечно в этом плане стало намного лучше. Да и wddm 2.1. Круто, но комп фризит пидец и прога так и не запускается.https://habr.com/en/post/311198/ Следовал этим урокам. Может тт не то написано или я криворукий?
>>1668233 попробуй директЫкс 11. Чуть сложнее ОПЕНГЛ (COM-блевотина не лечится), но зато есть полноценные книги (вроде даже с переводом) от Frank D. Luna
Гайс помогите пж с задачей по информатике. Надо написать программу :Задача :"Определить индексы четных элементов вектора К размерности 7 элементов, значения которых равны Т или Е. "
Т=2,Е=4-эти значения должны вводиться с клавиатуры . Вектор состоит из 7 чисел которые вводятся с клавиатуры. Нужно найти сколько раз встречается Т и Е среди чисел в векторе
начал писать код,но че с ним делать не знаю: #include <iostream> using namespace std; int main() { double T,E,N; int i,K[7];
for (i=0;i<8;i++) cin>>K;
if (i%2==0) T=K;
} int i,K[7]; cout<<"Введите 7 значений вектора К "<<endl; for (i=0;i<8;i++) cout<< "T="<<T<<endl;
Пишу свою первую программу на плюсах, и сразу застрял на моменте подключения сторонних библиотек.
Я использую CLion IDE в котором CMake для сборки используется, так что нужно как-то через него это сделать. Нужная либа DuckX для чтения и записи docx файлов.
Проблема в том, что когда просто копирую репозиторий к себе, добавляю в свой CMakeList.txt add_subdirectory(DuckX) и потом дописываю target_link_libraries(project duckx).
Оно вроде как заводится, но когда я начинаю пробую открыть docx какой-то в коде - у депенденси этой библиотеки вылетает какой-то эррор (Assertion failed: (s), function strlength). И я просто из-за отсутствия опыта тупо не могу понять, это либа не работает вообще или я криворукий дебил. Подскажите, пожалуйста, руки опускаются, мне просто нужна возможность открывать док файлы и немного изменять их.
>>1668318 >первую программу на плюсах >парсит ворд
В CMakeLists.txt все верно вроде. Проверь, не выводит ли cmake какие ошибки во время сборки. И раз у тебя есть весь код, тебе религия не позволяет воспользоваться отладкой и посмотреть в чем там дело?
Есть варик отдельно сбилдить эту либу и уже потом подключить нужные файлы в основной проект, хотя это то же самое так то
Ну и комп ребутни ессно
>у меня стресс Тебе в JS-тред, там тебя приголубят
>>1668345 Валится оно в pugixml библе. Я так полагаю ему тяжеловато взять strlength от NULL. Такие ошибки в плюсах могут быть из-за неправильного подключения библиотеки?
>>1668345 Ладно, похуй на эту сломанную библу, я понял что док файлы это просто zip архивы, так что просто юзну libzip (распакую и запакую заново). Только странно что там написано что он работает только с zip архивами, как-то это странно. Может есть какой-то более народный инструмент для архивации? Просто реально не хочется опять какие-то ошибки сейчас словить
>>1668460 Блять, так поэтому и падает на ассерте. contents я так полагаю - содержимое файла? Если да, то видать эта хуета просто файл не смогла прочесть. Попробуй другой попроще. Либо вообще ищи альтернативную либу И да, скидывай код твоей проги. У меня закрадываются подозрения, что ты не отлавливаешь ексепшены/ерроркоды
>>1668509 Спасибо тебе, из-за этого ответа я понял, что я очень ТУПОЙ. Я неправильно указывал путь к файлу, надо было абсолютный. Программа там уровня Hello World, все заработало. Но как указывать относительные пути к файлам я так и не понял.
>>1668509 Как правильно обернуть в try catch, чтобы понимать из-за чего ошибки? Они супер неочевидные, почему оно просто не сказало что не нашло файл например?
>>1668574 >Как сделать так, чтобы при вызове объекта класса, некоторая переменная внутри ОБЪЕКТА класса могла получить адрес, по которому этот ОБЪЕКТ находится? Ёбанное ООП!
>>1668933 Ну, это я гиперболизировал. Может, ему какую-нибудь небольшую визуализацию данных надо сделать, несколько нестандартную. Вулкан ради этого пердолить смысла нету.
>>1669322 Признаю, что мне неохота обсуждать с тобой всё это конструктивно. Отчасти, от тона, не предвещающего продуктивное обсуждение. Поэтому, пожалуй, просто проведу аппеляцию к личности собеседника -- ты долбоёб, иди нахуй.
Прорамач, объясни дураку пожалуйста как создавать qm файлы и как их подрубать к проекту. Прочитал в справочники Qt о QTranslator и ничего не понял. Вопрос именно с созданием qm файлов. Спасибо.
• https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
• https://en.cppreference.com/w/
• https://www.cplusplus.com/reference/
Прошлый тред