Зачем так быстро перекатываете? Есть отрезки A и B, определяются своими Aleft, Awidth, и Bleft, Bwidth. Самый быстрый способ определить, пересекаются ли они?
Здравствуйте любители ++, пишет вам любител. Объясните одну вещь, разбирался тут с openGL крестах ваших. Там половина создания объектов это создать непонятно нахуя int neponyantna и затем передать его адрес куда то там в функцию &neponyantna. Зачем? Вот в шарпе все просто, пишешь какой объект тебе надо и все. Зачем тут все время int получают? Для чего? Как это вообще работает? Я понимаю, когда я создаю экземпляр класса говно сходив в туалет, потом к нему и обращаюсь. Так зачем вы, крестачи, все время int создаете некий и кидаете на него ссылку?
>>1775632 это API такое. Увы и ах, очень старое и сишное. И оно единственное. Все фэнси библиотеки красивые и шарпы - в глубине дергают все тоже говно с int neponyatna
>>1775635 О, аноний, спасибо. А можешь в двух словах пояснить, что там под капотом? Зачем int создавать? Я просто реально не врубаюсь, давай я просто туда 0 буду толкать это же int. Но нет, им нужен именно адрес, но int это 4 байта, а если мой объект, типа говно больше будет? Почему именно int?
>>1775636 >Есть новое. Вулкан. А по нему есть уроки русские и толковые? Я просто по openGL ща читаю, реально начал понимать чо и зачем шейдеры, как видяха работает с этим всем, как текстуры натягиваются, я люблю в игрульки поиграть, но узнать как там внутри все фурычит очень занятно. Самому из пары треугольников создать прямоугольник и натянуть текстуру, да все в шейдерах, блин, интересно. А с вулканом есть почитать чего такого?
unsigned int vertex; vertex = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertex, 1, &vShaderCode, NULL);
Ну вот, например, я создаю целый объект, целый вертикальный шейдер, а по сути это int ебаный, который я потом передаю в метода. Да как так? Я в метод 0 или 635 передаю? нахуя? Зачем? Шейдер это вообще целая подпрограмма, почему она в intе тусует? Как это работает вообще? Сложна сложна нипанятна
>>1775643 int в данном случае, при передаче просто указывает на определенную ячейку памяти и говорит, что вот отсюда и еще четыре байта это vertex. Чего ты мне рассказываешь, какие идентефикаторы? Либо объясни, если я не так тебя понял
>>1775645 Не ты задаешь. Ты просто создаешь инт, и OpenGL записывает при создании чего-либо туда некое значение. Которое для тебя НЕ ИМЕЕТ ВООБЩЕ НИКАКОЕ ЗНАЧЕНИЕ. Это внутренняя информация для драйвера.
Ты просто знаешь, что вот такой вот инт - это такая то текстура, всё. Ты никогда не используешь значение, кроме как для вызывания API
>>1775648 о, вот ща доходить стало, только не доконца чуть чуть. А как мне понять, что ему нужен int а не bool например? Вот в щарпе все просто, а тут как?
>>1775654 Там нихуя не так написано, там вообще написано, типо *glхуйнямоча и как я должен из этого понять что ему ссылку на память вообще надо? Это все кресты такие тяжелые или просто опенголый такой замудреный? Я не говорю, что сложный, я вроде все понимаю зачем делается пока. Но вот в некоторых моментах мудрено, при этом я не хейтю кресты, просто интересно
>>1775659 И почему этот адрес в памяти unsigned int, а не bool, например? ведь по сути тут хранится только начальный адрес, а длина переменной зависит от типа. Но мы же оба знаем, то текстуру ты в 4 байта не уложишь 800*600 так зачем ее хранят типо в int, а не в bool, если, как ты говоришь, динамически память расширяем а тут только начальный адрес хранится?
Нет, тот анон, ты не прав. опенгл надо инфу записать, я ему по ссылке передаю целую текстуру, а он в нее инт пишет и все, как это работает? Зачем? В чем смысл? Текстура же не может лежать в 4 байтах
>>1775665 >еще раз - четыре байта это лишь идентификатор текстуры Как это работает? Идентификатор текстуры? Я создам инт пустой, в нем будет мусор, как это может быть идентификатором? А если потом у меня в другом инте тоже будет, все, крах и вылет программы?
>>1775665 >Ссылок в С нету классическом То есть это только по этому? А чтобы понять, как это все робит надо лезть в С что ли? Бля, я решил уйти от шарпа, чтобы понять, как работает, перекатился в кресты, а вы мне в С говорите катиться, а там чо, в ассемблер пошлют?
Есть инт, в нем какой-то мусор, мы отдаем указатель на инт в какой-нибудь glGenTextures или как оно там называется, в этом инте окажется число. Может быть это будет число 1, может быть это будет число 1488, не важно.
Важно лишь то, что на стороне драйвера где-то будет записана информация, о том, что существует текстура с идентификатором 1488. И когда ты что-то это делаешь, ты отправляешь идентификатор этой текстуры (любого OpenGL обьекта), и он внутри знает, с какими кусками памяти и всяких разных внутренних лоулевел штук это связано.
Опенгл это абстракция, понимаешь. Абстракция. Тебе нахуй не нужны все эти внутренные пердольные вещи, тебе нужно рисовать. Вот и рисуй, при помощи АПИ.
Если ты рандомную хуйню попытаешься отправить в API, которое требует созданный обьект (т.е. невалидное число-идентификатор) - тебя просто нахуй пошлют, вот и всё.
На эту тему есть немного приколов из системного программирования, что эта сама схема (некие opaque идентификаторы) - говно. Но це уже оффтоп.
>>1775670 Пчелик, ты можешь дергать сишное АПИ из С++, этого тебе достаточно. Просто проблема в том, что когда тебе дают сишное АПИ - то увы, никакие фичи из С++ оно не принимает, типа ссылок.
Тебе вообще никто и ничего не мешает обернуть всю эту сишную дрисню в няшное ООП, или как минимум просто в читаемый С++ с RAII. Вполне вероятно, так и стоит сделать.
Мы, например, на проекте, всю сишную блюву типа CreateFile и тд обернули в красивый С++, и им и пользуемся.
>>1775663 >И почему этот адрес в памяти unsigned int, а не bool, например? Unsigned потому что адресов отрицательных не бывает, поэтому знаковый тип излишен. Почему 4 байта — ну наверное меньше может не хватить для хранения номера адреса.
> Но мы же оба знаем, то текстуру ты в 4 байта не уложишь 800*600 так зачем ее хранят типо в int Не, в 4 байтах всего лишь адрес памяти, в которой текстура.
>>1775675 Что значит отправить? Скопировать что ли? Мы тут в игрушки играем что ли? По ссылке передать нельзя, выше написали, что это си, в котором ссылок ещё не было. Поэтому получается передача адреса.
>>1775675 что такое "просто текстура"? Текстура с точки зрения это не кусок памяти, это некая структура данных, в которой хранятся размеры, формат, всякие там флажки, мипмапы и прочее. Эта вся информация тебе не нужна, у тебя есть абстракция в виде API.
>>1775674 это почему вдруг? я в ту функцию кроме инта, который сам же и создал больше ничего не говорю, там дальше 4 байт мусор хранится, а ты говоришь текстура.Сначала пространство выделяется, которое я запрошу при создании переменной, а потом уже туда чего то записывается. Ну вот создал, записал инт, а ты тут текстуру в дохуя мегобайт суешь, больной? Нахуй пошел, да?
и дальше при помощи glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); - бла бла бла - ты в АКТИВНУЮ текстуру записываешь уже свою память.
Это все делается через вот это абстрактное АПИ, а что и как драйвер дрочит память - тебе уже не интересно.
>>1775679 После unsigned int adr = glCreateShader(...) у тебя в adr оказывается просто число. Номер ячейки, с которой начинается текстура. Остальное тебя ебать не должно, как говорится. Сама текстура на много байт вообще где-то в другом месте.
>>1775683 Программирование графики еще "ниже" - это кернел драйверы для проприетарного железа. Даже вулкан, который пиздец лоулевелный - это все равно в итоге возведение флажков и пердолькинг АПИ
>>1775682 >у тебя в adr оказывается просто число. Номер ячейки, с которой начинается текстура. В каком виде? Просто 1553? И что это за число? Как в другом месте, если я только что здесь создал? Или в опенгл в каком то массиве записывается, что в яцейке 1553 лежит адрес с которого начинается текстура такая то, так?
>>1775686 >ничего не означает абсолютно. Как программировать тогда? Почему в ссаном шарпе я все всегда толком и четко понимал чего куда и кого, а тут какое то число, а хз чо это и как, странно.
>>1775685 Опенгл где-то в памяти создал текстуру и отдал тебе номер ячейки памяти, с которого эта текстура начинается. Вот на картинке внизу справа есть ptrSum, указатель на объект sum. Просто адрес записан 90000000. А вверху слева по этому адресу уже сам объект sum.
>>1775688 погоди погоди. То есть я создал int передал его адрес туда, он создал текстуру, записал ее в память, начальный адрес записал в мой инт и теперь я могу к нему обращаться. Я все верно понял? Оо
>>1775691 Он не отдает тебе никакой адрес. Если ты сгенерируешь текстуру, то ее айди будет 0 или 1 (точно не помню, давно опенгл не трогал). О каком адресе речь блядь.
>>1775691 Да. Ну вон челик говорит, что это на самом деле внутренний идентификатор драйвера, так что я могу ошибаться. Но если createshader возвращает указатель, как ты ранее говорил, то всё так.
>>1775690 Например, почему нельзя было тогда, еще даже до 90-х сказать, челы идите на хуй со своим говном старым, ща все по новому будет и все. Я понимаю ща хуй перейдешь, но тогда то, только умножать научились и делить, а уже кричать нам нужна обратная совместимость
>>1775695 Потому, что все новые версии опенгл являются расширением старых. Т.е. они никогда не убирали или изменяли новое API, Только добавляли новое. Ну и когда у тебя си вместо языка программирования - в выразительности API не разгуляться в любом случае
>>1775692 >Если ты сгенерируешь текстуру, то ее айди будет 0 или 1 (точно не помню, давно опенгл не трогал). О каком адресе речь блядь. Чего, блядь? Я чо, больше двух текстур не могу генерировать, дегенерат что ли?
Бля, а нахуй эти кресты тогда, как лампово в шарпе было, вот тебе ванечка класс текстуры пишешь texture t = new texture(); а дальше сиди задавай хоть до опиздения ее параметры, а сама она там в цикле крутится и в зависимости от твоих изменений модифицируется. Все удобно, все понятно, тут нахуя каждый раз в память лазать? Говно же сделали? Пусть переделывают
>>1775706 Это texture tx = new texture уже написали за тебя другие, в обертках. Можешь так же взять уже готовые обертки, хуй знает, например SFML, и играться. А можешь вообще сразу Юнити взять, и не ебаться с лоулевелом.
>>1775709 Ебаный в рот, тебе уже несколько раз обьяснили. Потому-что в Шарпе за тебя уже дохуя всего написали, целый дотнет. Вся эта же блевотина сишная заботливым дядей была пережевана и красиво выплюнута.
>>1775711 То есть я сижу и на плюсах пытаюсь написать говно, которое до меня уж 20 раз лучше написали, так как есть фреймворки под шарп? А я тут чо, насрано чо ли, раз пишу все по своему только на крестах?
>>1775713 > То есть я сижу и на плюсах пытаюсь написать говно, которое до меня уж 20 раз лучше написали, так как есть фреймворки под шарп? Ты понял суть программирования, искренне тебя поздравляю.
Помогите перевести на нормальный язык программирования, а то меня в школе беполезные псевдокоды для даунов почему-то не заставляли учить. Или онлайн переводчик посоветуйте, а то препод, пидор, методички на этой ебале зачем-то пишет. Лучше бы этот дебил просто словами на Русском описывал алгоритмы. http://www.cpp.sh/8b2qu
>>1775527 (OP) Сап, плюсач. Ньюфаг в треде. Знакомый препод подсказал учебник Полякова. Вроде норм, потом продолжу Липпмана из шапки. Так вот, мне нужно каким-то образом использовать в visual studio библиотеку graphics.h. Как это сделать? Пробовал скачать graphics.h и запихнуть в папку, где лежит stdio.h. Не заработало. Потом запихнул этот файл в папку с проектом. Теперь #include "graphics.h" не подчёркивается красным, но функции оттуда подчёркиваются. Я так понял, что надо ещё какие-то файлы, кроме заголовочного для работы библиотеки? Можно ли сделать graphics.h встроенной библиотекой, чтобы каждый раз не вставлять в папку с проектом?
Анон, поясни за итераторы. Я хочу передавать в функцию итератор на внешний контейнер, функция по итераторам его изменяет, в том числе его размер, причем заранее не известно на сколько. Это вообще нормальный подход? Такое ведь используется во всяких std::transform, но он точно заранее знает, какой длины будет out.
А есть ли какой-то красивый и нормальный способ передачи в функцию не двух итераторов begin и end, а шаблонного контейнера с шаблонным значением?
Почему в C++ настолько скудная стандартная библиотека? Почему класса строки нет такого важного метода как Split? В том же шарпе есть штук 10 этих Split'ов. Хочешь поделить строку одним символом? Пожалуйста. Хочешь поделить строку массивом других строк? Пожалуйста. В C++ нужно руками блять писать отдельный метод который потом еще и не вызвать как член класса. Что мешало авторам стандарта добавить этот метод который бы возвращал вектор разделенных строк? Недостаточно универсально? Хорошо, сделайте метод который будет принимать пользовательскую лямбду которая сама решит куда сохранять разделенные слова.
>>1775860 Это по си учебник? Тогда в си тред иди. Вообще, я не эксперт, но сомневаюсь что эта либа используется где то в норм проектах. Есть ли смысл ее учить? Я бы пропустил.
>>1775870 1) Что такое строка? Из чего она состоит? Ты можешь написать этот разделитель так, чтобы она работала со всеми говнами от KOI-8 до UTF-32? Ни в одном языке ещё не сделали нормально, везде свои костыли. 2) Что этот метод должен возвращать? Копировать подстроки в новые строки? Или возвращать указатели на начало подстроки и её длинну? 3) Как и где выделять память под возвращаемые объекты? 4) Как заставить это работать достаточно быстро, чтобы все не начали писать свои строки? Никак 5) А всякую хуйню вроде определения эмодзи в неё включать надо? 6) итд
Короче, плюсы слишком низкоуровенный язык чтобы это нормально решить.
>>1775938 1) А сейчас по твоему класс строк работает со всеми говнами типо UTF-8? 2) Как я и говорил если хочется прям супер универсальный метод то можно добавить аргумент, который будет принимать пользовательскую функцию которая будет обрабатывать разделенную строку. Типо string_view word(...); user_callback(word);. 3) При описанном выше подходе выделение памяти не происходит 4) Сам метод split никак не затронит остальные методы так что никто из-за него не начнет писать свои строки 5) Нет не надо, это более высокий уровень
>>1775980 >1) А сейчас по твоему класс строк работает со всеми говнами типо UTF-8? Там этих стрингов просто 2 штуки, лол. >2)... Типо string_view Начиная с 11-х плюсов строки не рефкаунтятся, как ты гарантируешь что твой string_view не на мусор ссылается в следующей же строчке? А учитывая современные тенденции — ещё лучше, в соседнем потоке/корутине, которая хуй знает где работает. >3) При описанном выше подходе выделение памяти не происходит Происходит, ты массив-то как возвращаешь? Как в шарпе? Сам как нибудь там без аллокаций справится? >4) Сам метод split никак не затронит остальные методы так что никто из-за него не начнет писать свои строки Конечно не начнут, у всех и так свои строки везде, лол. А если немного задуматься о перформансе — то внезапно тебе на каждый кейс нужна кастомная логика с сортировкой/структурой данных/чем угодно, чтобы всё делать за минимальное кол-во проходов. В шарпе ты просто ебашишь в linq-стиле цепочки и тебя это не ебёт, панимаю.
>>1775995 Гарантирую тем, что колбек вызывается во время работы функции split, так что string_view будет всегда валидным. Ты наверное не понял про что я говорю, вот пример небольшой.
template<class Callback> void split(char delimiter, Callback callback) { for (...) { //some delimiting algorithm string_view word(...); callback(word); } } vector<string> vec; list<string> list; string zalupa; zalupa.split(' ', [&](string_view word) { //save it like u want vec.push_back(word); list.push_back(word); });
Делаю вычисления над большими числами. Перед выходом из функции делаю проверку: if (A >= B) { A -= B; } return A;
До этой проверки вызывается функция, которая делает много вычислений. Если я эту проверку (и вычитание) делаю на ассемблере внутри той большой функции, то у меня огромный (20%+) прирост производительности. Основной проект на плюсах.
Не понимаю, почему так происходит. У меня конечно очень быстродейственный ассемблер по сравнению с компилятором из-за специфики вычислений, но тут уж совсем простая операция.
На первом пике — я закомментил кусок со сравнением. На втором — то, на что заменил. Не могут же два лишних вызова функции (operator>= и operator-=) иметь такой безумный оверхед?
>>1776593 Где хранится инфа, которая о массиве? Просто я искренне не понимаю пока как это работает: как программа понимает где просто указетель на объект, а где на массив объектов.
>>1776546 Каждая аллокация порождает так называемый чанк в куче, в котором есть хедер, где есть метаданные об этом чанке (chunk - кусок с английского). То, как выглядит аллоцированный чанк в памяти, я попытался нарисовать в виме, чекай пикрил. Пысы: освобожденный чанк выглядит по-другому, если тебе это интересно. Там на месте actual chunk data есть указатель на следующий освобожденный чанк в корзине, а сразу после него - указатель на предыдущий освобожденный чанк в корзине.
Все это справедливо для аллокатора ptmalloc3, который есть в glibc. jemalloc или аллокатор в виндовой куче, мб, работают чутка по-другому, но принципы примерно одни и те же. У чанков так или иначе есть метаданные, которые предоставляют разную инфу, в т.ч. и для освобождения памяти.
>>1776596 Короче, есть такое понятие как аллокатор. Оно для тебя полностью абстрактно, но вот тот самый аллокатор хранит где-то всю нужную инфу сам по себе. Т.е. тебе эта информация недоступна по умолчанию.
Это если мы говорим про именно создание\удаление. Если мы говорим про доступ - то такая инфа не доступна, и ты начинаешь читать хуйню, когда переступаешь за границы массива.
>>1776597 быстрофикс первые 3 бита в поле current chunk data - AMP - дабт доп инфу. Если бит А = 1, то чанк находится в главной арене Если бит M = 1, то чанк был получен впоследствие системного вызова mmap Если бит Р = 1, то предыдущий чанк не освобожден (в использовании).
Опять же, это имплементация аллокатора в glibc, разные аллокаторы реализованы по-разному, но между ними есть общие принципы.
>>1776598 кстати, ты можешь выделить 0 байт на куче, но glibc аллокатор вернет тебе указатель на чанк, в котором есть место под 16 байт (на 64битных системах), кек. Поэтому ты даже можешь слегка переполнить небольшой буфер без последствий (допустим, у тебя там выделен массив из 5-ти чаров, а ты записал туда 7 чаров), в данном случае формально случилось переполнение, но оно не загадило другую важную память, так как у тебя есть в этом конкретном случае 16 швабодных байт в чанке, даже если ты выделил, мать его, НОЛЬ байт на куче. Такая вот хуйня =D Но никогда так не делай, ибо это хождение по тонкому льду и просто прикольные хаки.
>>1776605 Ты недооцениваешь студентов второго курса, которые освоили сортировку на шарпе, и тут им дают САМЫЙ СОВРЕМЕННЫЙ, САМЫЙ НАВОРОЧЕННЫЙ, ЭТИ ВАШИ LINUX VULKAN СОСУТ КАК ПИРАТКИ У АКТУАЛА, КАК БУДТО КИАНУ РИВЗ ЛИЧНО СТО МИЛЛИОНОВ МИЛЛИАРДОВ ЛЕТ КОДИЛ OOOPEEEENGLL Сорян просто флешбеки всплыли как мы копались на сайтах начала 2000х чтобы разобраться в этой хуйне Листал доску увидел ваш тред. Что я тут делаю, я вообще дотнетчик...
Есть сишная либа. Она оперирует с некоторой struct. Эту struct я вынужден агрегировать у себя в class, который для нее оберточный. Функции либы возвращают указатели на struct. Как мне из такого указателя определить указатель на объект, в котором структура агрегирована?
>>1776620 >>1776617 Можно пример, когда make_shared помогает? Я не понимаю разницы меджу std::shared_ptr<T> p1 = std::make_shared<T>(); std::shared_ptr<T> p1(new T()); Что так, что так я потом должен работать с p1. То есть новые указатели им инициализировать.
>>1776611 при использовании make_shared объект разрушается после того, как счетчик weak ссылок становится равен 0, а при использовании обычных shared_ptr - после того, как счетчик strong ссылок становится равен 0.
>>1776630 Пока не понятно. В книге было сказано, что shared_ptr считает колличество ссылок на объект. Как их колличество достигает нуля объект и указатель последний удаляются. Но при этом выделение происходило через make_shared. Ладно. Буду читать дальше, может там уточнят
при использовании make_shared объект разрушается после того, как счетчик и strong и weak ссылок становится равен 0, а при использовании обычных shared_ptr - после того, как счетчик strong ссылок становится равен 0.
>>1776640 А если прям взять унаследовать класс от структуры, то может static_cast сработает? Но этот класс надо еще от другого по архитертуре наследовать. Задолбал тебя, извини, надо все руками пробовать.
>>1776671 Ну вот серьезно. В чем вопрос? Тут нужно просто сидеть, читать и вникать в то, что написано. Ну можешь еще посмотреть на паскаль, как там все записывается, потому что тот еблан русский с паскалем намешал
>>1775858 >Я хочу передавать в функцию итератор на внешний контейнер, функция по итераторам его изменяет, в том числе его размер, причем заранее не известно на сколько. Это вообще нормальный подход? Это то что делают стандартные алгоритмы стл когда ты передаешь им back inserter.
>>1776657 А я все же ебанулся и так и сделал. Все работает и кое-где удобнее стало. Даже в функцию сишной либы this можно отправить - полиморфизм срабатывает.
Я не понимаю разницы между копированием и перемещением. Я думал, что копирование это когда у функции f(T var) , а перемещение, когда f(T &var) или f(T *var). Но пикрил гоорит другое
>>1775527 (OP) Кто придумал такую шикарную аву С++ треда? Да еще и повторяют из треда в тред самую всратую, байтоебы тупые. оп переболеет ковидом столько раз, сколько я раз буду лицезреть эту хуйню в шапке
>>1777774 Чтоб можно было создавать объект. С приватным конструктором создать объект сможет только сам объект (через статический метод) или friend (builder).
>>1777710 >Я думал, что копирование это когда у функции f(T var) Да, но функция, которая так объявлена, она не выполняет это копирование сама по себе, она просто получает уже готовую копию. А эту копию кто-то должен сделать, для этого и нужен конструктор копирования, который для этого использует ссылку на оригинал.
Подскажите, как написать шаблонную ф-ю, которая вернет 1й или 2й аргумент в зависимости от bool в шаблоне? Что-то типа std::enable_if, но для вычисления значения в реалтайме
Как школьники-олимпиадники учат C++? Неужели C++ уже не первый язык программирования в их жизни? Неужели они читают тысячастраничные книги? И C++ это ведь только часть подготовки школьника-олимпиадника, ведь нужно знать и непривязанные к конкретному языку хитрые алгоритмы. Когда и как они всё успевают и с чего начинают?
>>1778156 Так они его знают на уровне циклов и массивов. Олимпиадное программирование про то как решать тысячи наркоманских задач, используя контент первых 50 страниц самоучителя
>>1778156 > Неужели они читают тысячастраничные книги? Тот уровень языка, который нужен на олимпиаде, учится ну максимум за неделю. Переменные типа int и float, арифметика, if/while/for, ввод с клавиатуры и из файла, вывод на экран и в файл. Всё, больше в школололимпиадах вообще ничего нет. Весь код в main() пишется.
> хитрые алгоритмы Это ты про задачи уровня "Вася часто ездит на автобусе и захотел написать программу для определения, счастливый ли билет" что ли? Очень хитро, прям днями и ночами надо готовиться.
>>1778156 Нахуя вообще читать книги? Появилась проблема, загуглил, нашел алгоритм, реализовал и решил проблему. Зачем читать 1000 страниц половина из которых забудется, а другая может никогда не понадобится.
>>1778168 Я как то раз так попробовал. Делал лабораторную, поиск подстроки в строке и в конце лабораторной была такая безобидная приписка: модифицируйте алгоритм для работы с большим потоком данных и программа-тест генерирующая этот поток данных, которые за один раз в массив не положить. Я долго боролся, но так и не смог и ничего полезного не нагуглил, гуглился только алгоритм поиска который я реализовал, а вот как его адаптировать для потока данных в гигабайты (или десятки гигабайт?) - нет. Вот и всё обучение через практику
>>1778254 Не так. На десктопе кутэшного куда больше, чем электронного. Электрон сейчас, по сути, только дискорд и вскод. А кутэ - дефакто стандарт для десктопных приложений, тем более если ты хочешь, чтобы софтина была быстрой и легковесной, а не как говно на электроне.
Геймев - инди игрульки мб и на шарпе, но годные ААА игры с охуенным графоном и сложной физикой - плюсы. Причем из топового геймдева даже раст не сможет выдавить плюсы.
На серверах крупных компаний куча бэкэнд кода на плюсах. Больше, чем ты думаешь, ибо ГОвно со своим сборщиком мусора может внезапно начать сосать хуи в слоумо в самый неподходящий момент.
>нищее байтоебство в эмбедеде Тут зависит от государства в котором ты живешь. Если ты рабсиянин/уркоинец/еблорус (нужное подчеркнуть), то да, малясь зашкварная отрасль, где требуют относительно много знаний + шарить в железе, а платят меньше, чем ссаной вебмакаке, которая по факту не знает что есть компьютер. В странах типа США, Германии, Израиля (за другие не скажу, за эти просто точно знаю, но думаю, что в Европке оверолл такая ситуация) эмбедщина - элитная айти отрасль и получают они хорошие деньги, порой выше, чем веб-смузихлебы, да и работа у них интересная. Учитывая, что эра IoT находится на заре, равно как и отрасль автономных машин с кучей эмбедщины внутри оных, эмбедщики будут востребованы еще очень долго.
Какие годные ребята в треде. Бтв вы высокие, мне кажется, только потому что вам нет замены. Как попасть на Джуниор с++ разраба? Правильно, никак, всем ток мидлы и сеньеры надо
>>1778279 И это я еще не привел примеры ресурсоемких числодробилок, разных научных симуляций Вселенных, RT, обработки изображений и видеофайлов (вся отрасль CV держится на плюсах, openCV написана на плюсах), медиа-аудио плееры, куча системного софта, драйвера (на винде дрова пишут на крестах, например), вся отрасль компьютерной графики и много чего другого.
Плюсы на пару с Сишкой - оплот и фундамент всего мира компьютерных технологий. Какую технологию ты бы ни взял, в 99.9% случаев ее инфраструктура будет написана на С/С++. Причем именно в случае с плюсами налицо их развитие. Каждые 3 года штампуют стандарты с тонной новых фич, язык явно не станут забрасывать, ибо на это нет никаких, даже косвенных, причин. Можешь считать, что С++ - это рак в терминальной стадии, давший метастазы по всему организму. Убьешь С++ - убьешь мир компьютерных технологий просто К ХУЯМ. Может ли все поменяться когда-либо? Безусловно, теоретически, может, только вот если такое когда-либо и произойдет, то каждый читающий этот пост уже будет давно в земельке.
>>1778286 Какой стэк, какие проекты делал? В чем надо шарить, чтобы быть востребованным эмбедщиком? Насколько глубоко надо нырять в мир железа? Какую литературу по сабжу лично бы порекомендовал? Здоровья тебе, анон.
>>1778299 Сишка, какой бы старой ни была, все равно бессмертна при нынешней архитектуре железа, лол.
Просто она менее гибкая и намного меньше напоминает швейцарский нож, нежели кресты, поэтому писать на чистой сишке какой-нибудь фотошоп или движок для очень серьезной и большой игры - лишний гемор, учитывая, что разница в скоростях между С и С++ пренебрегаема в подавляющем большинстве случаев, а порой плюсы даже быстрее сишки (если правильно писать код, перекидывая как можно больше вычислений на компайл тайм с помощью темплейтов и constexpr).
>>1778303 >если правильно писать код, перекидывая как можно больше вычислений на компайл тайм с помощью темплейтов и constexpr Никогда этого не понимал. Я как программист могу предвычислить всё, что нужно, вынести подвыражения, раскруить циклы, и результат будет лучше (для известных мне архитектур). Компилятору остается подставить static inline и свернуть константы, это с начала 2000-х умеют все.
>>1778295 ==Плюсы на пару с Сишкой - оплот и фундамент всего мира компьютерных технологий. Какую технологию ты бы ни взял, в 99.9% случаев ее инфраструктура будет написана на С/С++. Причем именно в случае с плюсами налицо их развитие. Каждые 3 года штампуют стандарты с тонной новых фич, язык явно не станут забрасывать, ибо на это нет никаких, даже косвенных, причин==
Прямо вдохновляет. Но как насчёт суровых реалий? Я живу в городе с населением 300 тысяч человек, областной центр и на данный момент на сайте hh.ru нет ни одной вакансии для C++ программиста, подозреваю что никакого "эмбедед" тут тоже просто не существует
>>1778318 Страны СНГ - технологически неразвитые страны, и, понятное дело, рынок айти это не обошло стороной. Тут я ничего посоветовать не могу. Дрочи дома плюсы, жестко вкатывайся в инглиш и заводи трактор, если хочешь элитной работы в сфере низкоуровневого программирования. В странах СНГ есть шанс, но я бы не стал. Решать тебе.
>>1778337 не, я уже окно возможностей проебал, так прост, интересуюсь. Когда то "гениальный план" разрабытывал, что выучу си, выучу ассемблер, выучу си плюс плюс и на галеру в Воронеж рвану, но встрял уже на первом пункте
>>1778318 Странно, что вакансий на эмбедщину нет, у вас там в рашке нет ведоров железа, которые должны писать кастомные драйвера и прошивки на чипы? Причем эмбедщина есть просто ВЕЗДЕ блять. От микроволновок до истребителей.
>>1778156 >задачи уровня "Вася часто ездит на автобусе и захотел написать программу для определения, счастливый ли билет" Наивный, там также сложно как и на олимпиадах по математике и физике. Не каждый студент вуза, даже не каждый препод эти задачи решит. Это я не про городскую олимпиаду мухосранска говорю, естественно.
>>1778318 Вот тут двачую, сам с мухосрани 600к, на весь город пара вакансий на плюсах. Вскоре думаю на собес пойду, и если не пройду или сама работа не понравится то походу придется выкатываться и переходить на веб парашу.
>>1778361 >>1778202 А в чем сложность то? Там шаблон для поиска всего 16 символов. Берешь сначала реализуешь дефолтный алгоритм поиска подстроки. Далее грузишь допустим первые 1024 байта файла, ищешь в них подстроку, если не нашел читаешь файл по смещению 1024 - длина_шаблона и опять ищешь в этом куске подстроку, повторить пока файл не кончится. И никакие книги для этого не нужны.
>>1775858 хех, подход не очень хороший если следовать дизайну стл ведь стандартные модифицирующие алгоритмы стл никогда не меняют размер контейнера и тому есть причины
>>1778160 Почти так. Могут еще контейнеры изучить. Для олимпиадного програнья школьного много знать не надо >>1778162 Ох лол. Ну открой задания олимпиады 1 степент и всероса и охуей.
>>1778371 Ну вот ты умный такой, а я не такой. Два месяца потратил - так и не сделал. Вот кот кстати, я нашёл: https://gitlab.com/Krogan1987/labs/-/blob/master/lab1-0/src/main.c Близок хоть к цели то был? int block = 163; Это размер блока на которые разбивается файл, меняем размер блока - вывод не должен меняться, причём разбиваем не файл генерируемый программой-тестером, там он слишком лёгкий, а заполняем рандомными цифрами. Сначала получаем эталонный вывод используя эту же программу но прописав блок больший длины файла, а затем тестируем прописывая меньшие длины блока
>>1778374 Когда я сказал много знать не надо, я имел ввиду в плане синтаксиса языка. И то там изъебываются иногда. Используют модифицированный ввод вывод. Но обычно это не требуется. В основном задачи сделаны так, что можно на любом языке написать, НОО иногда бывают байтоебские задачи. Например обязательное условие писать на си и улажиться в очень строгие ограничения по времени и памяти. Или залачи на перебор, где нужно эффективно перебирать. То есть там используют только плюсы.
>>1778381 Пиздец конечно, все в 1 функции, неинформативные названия переменных. Это читать и понять что происходит просто невозможно. Вынес бы хоть код поиска подстроки в отдельную функцию.
>>1778390 ==Это понять почти невозможно== Вот я и сам перестал что-либо понимать и любые изменения которые я вносил меняли не только то что я хотел но и то чего не хотел ==код поиска подстроки в отдельную функцию== Так я не умею для меня функция это то что принимает несколько аргументов и возвращает одно значение, принять массив и вернуть массив - я не знаю как, не прочитал ещё нужную главу в учебнике, ни тогда, ни сейчас
>>1778397 Но сейчас, то есть несколько месяцев назад я научился писать более понятный код. по крайней мере мне самому, но он и алгоритмически несравнимо проще: https://pastebin.com/wd0LDZCp
>>1778381 Ужасно нечитаемый код, особенно в теле цикла. Пиши чище, анон. Кстати, у тебя, видимо, баг в 6 строчке - fgets неявно вставляет нуль-терминатор после окончания чтения строки. И твой буфер на 20 символов вместит в себя 19 (20ый будет для нуль-терминатора). Если так было и задумано, то пардон, а если нет, то учти.
>>1778397 пчел, ты вкатился в 2016 году и до сих пор не знаешь как передавать в функцию массивы/возвращать из нее массивы? Не в обиду, но, возможно, программирование - это не твоё.
>>1778422 Да, именно так. Никак до этих глав не докачусь. Сначала катился по книге Прата, потом начал в школьную математику вкатываться, потом в школьную информатику, потом в вузе год пытался в код, пот ом снова книгу начал читать с самого начала, где то в апреле этого года снова забил прочитав не намного дальше чем в первый раз. Начал в линукс слепую печать и вим уходить, а на сам си как то взял да и забил, ещё и работать начал на заводе, вообще как то вечером не до самообразования
>>1778311 Да, всё мы можем. Но оказывается гораздо более удобным перекладывать эту работу на компилятор, код остаётся понятнее, времени на его написание и отладку уходит гораздо меньше. Компиляторы со временем становятся всё умнее, и уже сегодня спокойно уделают тебя в оптимизациях в 95% случаев. Так-то можно и на ассемблере всё писать, но, очевидно, времени на такую деятельность просто нет.
>>1778393 Взять большую сборку светодиодов, написать детектор степени дезориентированности существ в поле зрения камеры и сделать стробоскоп от воров с обратной связью.
>>1778449 Я привык, что сначала идет некое введение. Что нужно для работы сервера. Как сервер принимает соединения, и тд и тп. Там сначала расскаываются буферы, таймауты.
>>1778458 Потому что в шаблоны раскрываются на этапе компиляции, а значит в них можно подставлять только константы времени компиляции. В "const char hello[]" hello - константа времени выполнения. &hello, адрес hello - константа времени выполнения.
>>1778466 Миссклик, не дописал. const char* hello - указатель на const char - не константа времени выполнения => в шаблон не подставить. Строковые литералы просто нельзя передавать в шаблоны, причину не назову.
>>1778467 >>1778466 Еще и обосрался с названиями... Фикс: Потому что в шаблоны раскрываются на этапе компиляции, а значит в них можно подставлять только константы времени компиляции. В "const char hello[]" hello - константа времени компиляции. &hello, адрес hello - константа времени компиляции. const char* hello - изменяемая переменная-указатель на const char - не константа времени компиляции => в шаблон не подставить. Строковые литералы просто нельзя передавать в шаблоны, причину не назову.
>>1778467 Примерно та же причина, что и с флоатами. Из-за случаев, когда можно подумать, что параметры шаблона в двух разных местах совпадают, а на самом деле это не так. Тут хелло, там хелло, а указатели разные.
>>1778393 >Анончики, какие типы проектов можно делать с данной железкой? Как же заебали ардуинщики, блядь. Все бегают с этой хуйней и рассказывают, какие они инженегры, блядь. Да лол, все, что может эта хуйня сделать это - прочитать входа, обработать, выплюнуть выхода. Чо вы там все ими выебываетесь? Чо вы на них пишете? Один мне затирал, как систему полива цветочков автоматическую сделал в зависимости от влажности, ууу, бляя. И чо, говорю, ты там такого реализовал? Прочитал значение датчика и далее, если он ниже уставки, то включить насос? А в ответ...эээ, мууу, беее, ну эта.
Доку beast по порядку читать надо? Просто пока очень обрывисто выглядит и в одну картину не собирается. Вообще не понимаю структуры программы сервера. Я привык, что сначала идет некое введение. Что нужно для работы сервера. Как сервер принимает соединения, и тд и тп. Там сначала расскаываются буферы, таймауты.
>>1778590 Это документация, а не туториал. >Что нужно для работы сервера. Как сервер принимает соединения, и тд и тп. Тебе книги обучающие надо читать, а не документации.
>>1778618 Какая эмбедщина, поехавший? Там залупа, уровня вывести хеловорд в консоли. Даже самый отбитый нуфаня таким хвастаться не будет, а ардуинщики хвастаются
>>1778630 ну а я говорил про эмбедщину. Высрать какой-то кастомный дрон или что-то наподобие. Ты ответил на предыдущий пост в духе "нахуя пилить хеллоуворлды на микроконтроллерах и кичиться этим", но я изначально и не говорил про хэллоуворлды, а про что-то куда более сложное.
>>1778630>>1778577 > прочитать входа, обработать, выплюнуть выхода > Там залупа, уровня вывести хеловорд в консоли. Даже самый отбитый нуфаня таким хвастаться не будет Чем твой пример отличается например от обработки данных рсдб-наблюдений? Там тоже "прочитать входа, обработать, выплюнуть выхода" -- а про это написано тысячи статей, и посоны 40 лет ебались с проблемами оцифровки и передачи информации, с корреляцией данных и прочее. Сейчас эти проблемы не стоят так остро, записать на винчестеры и передать пару сотен гигабайт по инторнету, а потом прокоррелировать на видеокарточках не что-то сложное, когда-то это был знатный геморрой. Приходилось строить суперкомплектары и диски самолетами пересылать.
Не нашёл отдельный загон для Qt, но надеюсь тут кто нибудь есть.У меня в проекте помимо главного класса, с ui, есть вспомогательный, который обсчитывает данные но сам виджеты не обновляет. Мне нужно выводить на экран статистику по выполнению функций вспомогательного класса. Как это можно сделать? Пробовал сделать ui публичным и подключить его ко второму классу, но чёт не вышло. Ещё знаю о существовании сигналов, но они вроде как работают между виджетами, а мой вспомогательный класс не подключён ни к какому виджету.
>>1778715 > работают между виджетами Они между чем угодно, нужно только от QObject отнаследоваться. Как сделать есть разные варианты. В классической MVC ты создаешь модель со статистикой (туда записываются данные которые нужно отображать). Вспомогательный класс обновляет инфу в модели. Контроллер время от времени (или по сигналу от вспомогательного класса что данные обновились) берет инфу из модели и отправляет ее на отображение в виджет (сигналом).
>>1778701 Ты издеваешься, блядь, что ли? Ты понимаешь, что ты несравнимое сравниваешь? Абстракционист, хуев. Так и функция любая у тебя прочитать вход, обработать, выплюнуть ретурн.
>>1778733 Тем, что компилятся в относительно компактный нативный код и имеют темплейты (нет, дженерики далеки от темплейтов).
Хорошо написанный код на с++ будет всегда быстрее хорошо написанного кода на сишарпе (тем не менее, суперхуевый код на с++ может быть медленнее кода на шарпе), именно поэтому в хуйлоудах предпочтительнее С++, а не шарп. С++ дает гораздо, ГОРАЗДО больше контроля над программой и над тем, какой машинный код выплюнет компиль.
>>1778809 >Кстати я вижу ты знаток шарпа. Да будет тебе известно, там есть указатели. Ни разу не видел, чтобы их кто то где то использовал, тогда как на крестах какой код не возьми, все указателями обмазываются где надо и где не надо
>>1778842 >Когда завезут функции, небось тоже никто их юзать не будет. Ага, прямо как на ооп в крестах, дали им, дебилам, классы, так они все равно без них хуярят
>>1778856 Не нужно будет создавать классы из одного-двух статик методов. Классы будут использоваться по прямому ООП-назначению, а не в качестве модулей. Но это тема отдельного срача.
Сап. Может тут есть аноны, прошаренные в QtQuick? Есть изображение, которое генерируется из нескольких картинок. Генерирую я это в QQuickItem::updatePaintNode. Сейчас нужно в эту же картинку добавить что-то типа DropShadow. Так вот вопрос, могу ли я в одном updatePaintNode нагенерировать кучу QSGNode, а потом засунуть в другую ноду, где будет написан мой кастомный материал с нужным мне шейдером?
>>1779028 Оч сложна Качаешь пару талмудов и внимательно, методично их читаешь, попутно выполняя все примеры и дохуя гугля. И может через несколько лет что да выйдет.
>>1779088 Например клиент должен серверу отправить запрос на соединение. Там должны быть заполнены заголовки. Я же не буду вручную их заполнять, вычислять и отправлять
>>1779090 если ты про http сервер (раз говоришь про заголовки) - их дохуя и больше. Всякие pistache, crow, и тд. Если про клиента - то курл все сделает за тебя. В че вопрос то?
Йоп, анон посоветуй хороший гуй для пэт-проекта ? Раньше сидел на Qt, но сейчас после переката на новое железо просто лень катить его заново, плюс, хотелось бы знать, есть ли вообще что-то готовое и хорошее, по возможности лёгкое ? Сам поискал, наткнулся на JUCE, переплевался с объявления точки входа в программу, дропнул к чёрту, моя нежная душа не выдержала, сейчас ещё смотрю на Dear ImGui, пока лучшее что нашел
>>1779149 Что тебе ОБЪЕКТИВНО мешает остаться на QT и не ебать мозги ни себе, ни остальным? >по возможности лёгкое У кутей чуть ли не идеальный баланс между навороченностью и легковесностью, хз че ты мнёшься.
>>1779190 На винде не сидим, так что... Можно так же, только с gtk ? >>1779193 Хочу посмотреть на что-то новое, да ну и как бэ, понятно, что сейчас куда не пойдёшь, на гуй тянут qt, но всё же животный интерес надо удовлетворять иногда, в общем, просто любопытство по хорошему
>>1779165 >Какой стэк, Любой, этож C++, это тебе не JS, где ты отошёл от браузера на миллиметр и сосёшь. >какие проекты делал? Гейдев, Эмбедед, микроконтроллеры, 3d графика, openGL, картография, навигация по GPS + Glonass, работа с электроникой типа ардуино итд, базы данных.
Пригласили в фирму для разработки карт. Канада - разработка игорей. Вообще не стоит слушать дебилов которые говорят о мёртвости того или иного языка. Я 20 лет в IT и 15 в программировании. И так говорят вообще обо всех языках на свете. Примеры ниже PHP - вообще говно которое вот вот загнётся (15 лет слышу). C - загнулся в 90 (при этом самые ценные вакансии как раз на нём почему-то) Java - вот вот загнётся (есть же более производительные языки) (слышу об этом лет 15) Kotlin - Язык одного стартапа джетбрэйнс, проживёт лет 5 максимум (лол) JS - заменят на %new_lang_name% (меняют лет 13) Python - тормозное говно без задач, сдохнет везде кроме униварситетов (8 лет читаю как он подохнет) C++ - помер лет пять назад (почему-то мне сыпятся самые крутые вакансии на нём и сишке лет 10 как, дауны всё кроме стека с микроконтролерами не могут ничего найти) Даже кобол живой. А вы сосачерам верите, лол.
>>1779225 Вообще у меня довольно крутой бэк по теме картографии, сам разработал прогу которая делает карту местности собирая снимки с дронов. Видимо поэтому меня и пригласили. Хотя это не проект даже, а хобби скорее.
Но да, если ты книжку прочитал да лабу написал, тебя никто в своём уме хантить не будет. В cpp это так не работает.
>>1779228 Это плохо, когда ты концентрируешься ТОЛЬКО на одном стеке, забывая обо всём остальном. В результате ты видишь только узкую прослойку вакансий, которая не всегда оплачивается адекватно.
>>1779225 >>1779229 Как дорасти до твоего уровня? Только без абстракции вроде: читать, практиковаться. Тоже хочу в Канаду, бля. Учу сейчас C, докачаю до продвинутого уровня и перейду на плюсы.
>>1779230 я вот лоу-лвл червь, люблю прошивки и драйвера. Что скажешь по этому поводу? Пысы: самый хай-лвл проект, который я разрабатывал, была небольшая виртуальная машина, это чтоб ты понимал степень моей байтоёбности)
>>1779233 Тут я должен бы какую-нибудь шаблонную фразу кинуть, типа Учись, читай. Но на деле это мало кому помогает. В реальности надо не просто любить язык и хотеть на нём программировать, а любить решение задачи. Тот же проект с дронами нахрен никому был не нужен когда я начинал. И выглядело всё со стороны как какой-то задрот тратит кучу времени на то, что и так имеет аналоги в том же гугле. Потом пришли фирмы чтобы его у себя виспользовать. Думаю если у тебя возникает какое-то чувство страсти и хоть какого-то удовольствия - ты в любом случае окажешься в Канаде, калифорнии, на пляжу с удалёнкой и коктейлем в руке. Верю что всё у тебя получится. В этот тред просто так не заходят всё таки.
>>1779248 Кстати один интересный совет я всё же могу дать. Светись на форумах, телеге, там где обитают крутые спецы. Задавай вопросы, ищи решения. Меня в основном так и находят.
>>1779275 хиккам в 2к20 сложно без софт скиллз, даже в погромировании. Тебе будет гораздо сложнее, порой на грани невозможного, добиться успеха, нежели более социализированным собратьям.
>>1779286 Не сказал бы. С одной стороны хорошо когда подован вопросы задаёт. С другой стороны зачем мне долбоёб который задал 9000 вопросов и фактически я за него проект сделал, в то время как тот социоблядский мудак неделями на кофебрэйках. Тут нужна середина.
Их писала куча разработчиков, платы для них делались с нуля и ничего общего с хелоуворлда "мама я с одноразового китайского датчика, который через месяц окислится и заржавеет к хуям, писяю в горшок, код спиздил со стековерфлоу я умный".
>>1779460 С таким подходом любой пет-проект - это гиблая затея, ибо за тебя уже давно все написали. А если ты и пишешь что-то на уровне стартапа, то это 1 на миллион, и то не факт, что кому-то будет нужно и выстрелит. Тем не менее, людям серьезные пет-проекты помогают устроиться на работу, и речь далеко не про хэллоуворлды и мигания диодами. Ты троллишь тупостью или как?
Всё дело в том, что мода на детские радиоконструкторы из отладочных плат каким-то образом перелезла за пределы школьных радиокружков в область ВО ВОТ СЮДА ВОЙТИ ВАЙТИ и на основе детских радиоконструкторов дебичи всерьез думают делать какие-то стартапы.
>>1779465 Блять, да речи не было про хэлоуворлды, алло Речь была про более серьезные проекты, которые требуют куда более углубленных знаний в программировании и электронике. Хули ты прицепился вообще со своими миганиями диодов, шиз?
Поясните, можно ли скомпилить плюсовой код так, чтобы он без ос работал? Нахуя мне нужна ос, которая жрет кучу ресурсов, если можно просто запустить программу без ос.
>>1779749 Ну если у нее не будет dll всяких. Обычно же у программы куча системных вызовов. Можно заставить компилятор скомпилировать под голую железку код?
>>1779749 Без усилий - нет. Только разве хэллоуворлды запускать. ОС дает тебе абстракцию над железом и не дает тебе фривольно пакостить. А дебажить bare-metal код ты вообще ебанешься, особенно если он на обычном настольном компе, где даже UART порта нет.
Мой тебе совет - хочешь заниматься подобной хуйней, покупай любой SoC типа малинки или биглбона или же сразу мкк типа STM32 (для bare-metal лучше второй варик).
>>1779753 Ладно. Я так подумал, что ебала еще та. Огромное колличество функций ос, всякие платформозависимые штуки типо аллокации, потоков. + вывод нужен. Было бы это просто было бы круче.
>>1779755 > Мой тебе совет - хочешь заниматься подобной хуйней, покупай любой SoC типа малинки или биглбона или же сразу мкк типа STM32 (для bare-metal лучше второй варик). Да не. Просто вопрос из интереса. Типо можно ли так всякие требовательные программы запускать, чтобы все ресурсы компьютера были нацелены на исполнение программы. А то винда как то много ресурсов потребляет.
>>1779757 >винда Пересядь с зондированного говна на операционную систему (Линукс), например, там ты так закастомизироваться сможешь, что все ядро вместе с гуем на стартапе будут жрать по 100-150 MB вместо 3 GB в винде. Тащемта, все суперкомпьютеры мира на Линуксе и крутятся, чтобы выжимать все соки из железа.
А вот полностью отказываться от ОС - хуевая затея, ибо ее абстракции нужны для того, чтобы оверолл деплой даже простых программ не занимал 3 десятилетия. В 2к20 году даже на кастрированных железках крутится какая-нибудь FreeRTOS, даже в автономных машинах и джетах. Почему? Потому что если у тебя нет ОС, то у тебя нет планировщика, а значит если ты захочешь параллельно запустить 2 процесса - ты соснешь хуйца с проглотом. Гонять электроны по проводам как 60ых не варик, нужна какая-никакая ОС в 99% случаев.
Но тут разыменование(без доступа к чужой памяти) нуля как макросе offsetof, которое хоть вроде как и работает в большинстве случаев, но всё же UB. Вопрос, есть ли способ правильнее?
>>1779767 > Пересядь с зондированного говна на операционную систему (Линукс), например, там ты так закастомизироваться сможешь, что все ядро вместе с гуем на стартапе будут жрать по 100-150 MB вместо 3 GB в винде. Найс манямирок. Линупс с голым ядром 5.0+ без гуя жрет минимум 120, без systemd можно до 90 ушакалить. А ты в курсе сколько жрет Windows Server 2019 Core? 140 мб. С гуем, правда без рабочего стола.
Аноны, в компаниях, где производят железо, те, кто производят железо, они и пишут на них прошивки и драйвера? Или для этого есть отдельные софтвер-челики?
Расскажите как происходит разработка для винды под линуксом? Вот допустим прилетает мне на фрилансе задание сделать гуишное приложение на Винду. Как я буду это делать? Только Virtualbox или есть ещё варианты?
>>1779961 Просто не используй линуксовый API во время разработки, а если речь о гуе - QT - кроссплатформенная либа, которая абстрагирует от тебя надобность думать на какой ОС ты пишешь код. Если в коде должны быть winAPI вызовы помимо всего прочего - поднимай виртуалку и дебажь свою софтину там.
>>1780018 Тем, что количество потоков, которая твоя машина может исполнять ДЕЙСТВИТЕЛЬНО параллельно, ограничена спекой твоего процессора. Формула такова: core per socket * threads per core = количество потоков, которые твой процессор может исполнять параллельно. Превышая это число, планировщик начинает активно дрочить заниматься context switch'ем и все клиенты начинают на пару с тобой потихоньку сосать хуи в постоянно усиливающихся лагах.
>>1780025 да, у тебя дохера соединений на каждом io_context (или чем-то таком), один контекст на тред, и дальше сам контекст все в рамках одного треда шаманит.
>>1780029 >>1780026 Спасибо большое. Можете еще пояснить за некоторые различия в серверах. Ну просто синхронный и асинхронный понятно. Быстрый я так понимаю ебейше оптимизирован. Туда я лезть пока не буду. А вот 3 и 4 сверху это че?
Давай так, делай пока синхронно, как сделаешь идею - начинай переезжать на асинк. Сразу асинк раскуривать не рекомендую, он лютейший. А корутины так и вообще пиздец.
>>1779259 Кстати, хороший колл, где социум плюсов искать ? Просто уже сталкивался с тем, что пэт проекты дохнут как мухи на то они и пэты, но хотелось бы знать места, где можно найти челов, с которыми интересно и приятно будет кооперировать, может и пэты так быстро убиваться не будут...
>>1779989 Там вполне себе написано. Ты пытаешься использовать winapi без указания версии винды, для которой собираешь. Обычно студия эти макросы сама определяет в файле targetver.h при создании проекта, но у тебя что-то видимо пошло не так
>>1780180 >гд лучше конечно этого не делать, но дрочи крестовые абстракции - веткоры, дженерики, темплейты. Почитай про компайл-тайм и рантайм специфику крестов. Какие-то популярные части буста. Короче любая книжка по крестам для НЕ начинающих тебе подойдет
>>1780180 В шапке всё есть, но раз ты такие вопросы задаешь, то сразу огорчу тебя - ты не преодолел минимальный порог входа по IQ для того чтобы освоить С++.
>>1780035 Как вообще сервер может работать на корутинах? Корутины же работают в одном потоке. Вот допустим приходит запрос от клиента, в потоке разбора входящих запросов запускается корутина которая обрабатывает конкретный запрос и тем самым блокирует обработку новых запросов? В чем фишка то я не совсем понимаю.
>>1780261 Я вижу это так. Вот как в потоке разбора входящих запросов получил клиента, отправляешь обработку в отдельный поток, если хочешь, и тут же ожидаешь следующего клиента. Наверное, в примерах просто в один момент времени только один клиент обрабатывается. С корутинами это не связано, корутины это детали реализации.
>>1779962 >Драйверисты и железячники - это не пересекающиеся скиллсеты К моему большому сожалению мне приходилось видеть код, который пишут железячники.
>>1780261 Корутины это кооперативная многозадачность, со всеми её плюсами и минусами. То есть при обработке сессии у тебя будет рассыпана куча точек переключения на другие корутины. Во всяких эрлангах/го они натыканы ВЕЗДЕ. Плюсы: если раньше ты запрос моделировал всякими коллбеками и/или стейт машинами, то с корутинами всё будет просто и линейно, весь стейт компилятор выведет сам. Минусы: если нет точек переключения, то хрен тебе, а не многозадачность.
>>1780835 Получается что для эффективной работы корутин придется писать конструкции типо таки? BigDbRequestAsync(); yeild(); ReadFIleAsync(); yeild(); ... yeild(); ...
>>1780850 Не, как раз этот yield будет внутри каждой асинхронной операции. Пока корутина ожидает результата BigDbRequest, экзекутор выберет другую корутину и начнёт её исполнять. А вот если у тебя что-то только жрущее цпу секунд на двадцать, тогда да, без yield все остальные корутины заглохнут. С вытесняющей многозадачностью это же происходит автоматически.
>>1780835 сопрограммы нужны чтобы красиво решать пару специализированных алгоритмов но, по видимому нас ждет очередная сильвербуллет фича которой будут решать любые задачи по парралельной обработке данных, пока коммьюнити языка не наиграеться с этими корутинами
> Здесь почти весь тред - идейные виндобляди, у которых даже сервера на винде, лол. Ну вдруг тебе зачем-то потребовался гуй под прыщеось вместо божественной САСНОЛЬКИ
>>1780848 >Уверен? Желещячники пишут на всяких vhdl, ну или мы про разных желещячников.
Во первых hdl языки бай дезайн уёбищны как раз в плане писать комбинационную логику, то есть какой-то последовательный алгоритм или конечный автомат на них писать норм, а вот когда отдельные кишочки нужно собирать в единое целое виртуальными проводами, в роли которых выступают буковки и параметры модулей - код уже сам по себе превращается в пиздец.
Именно по этому там где можно прогать провода мышкой в гуе - стараются прогать провода мышкой в гуе.
Пиздец с этой белорашской войной престолов проебал эпичный срач про опенгл.
Так вот, кто придумал эту блядскую семантику с включающим глобальным glBindHuita?
Почему, если у нас уже есть идентификатор, высраный с помощью glGenHuita не передавать его в последующие функции?
Особенно лоллирует клоунская магия когда что бы копировать из одной хуиты в другую нужно забиндить два буфера с правильными типами а потом такой НУЖНО ТЕПЕРЬ ДУНУТЬ ЕСЛИ НЕ ДУНУТЬ ТО МАГИИ НЕ ПРОИЗОЙДЕТ
Почему нельзя было сделать glCopyBufferSubData(vbo1, vbo2, 0, 0, 8 ⚹ sizeof(float))?
Ладно хуй с ним, анальная бинд-акробатика святое, нахуя если мы уже указали что первый буфер мы забиндили как рид а второй как врайт а потом типа такие, неее мы передумали, мы терь из врайта в рид будем копировать?
>>1781716 В opengl 4.4, кажется, завезли bindless, ну, чтоб по айдишкам хуярить. Вообще, да, байндить всякую залупу -- такая мерзость шо пиздец. Ещё все вызовы, как я понимаю, завязаны под какой-то контекст, и без него не получится, например, гонять compute shader-ы. Зато после ебли с этим вот всем, vulkan кажется не монструозной перегруженной тварью, а самым логичным, прекрасным, тончайшим инструментом, которого тебе так не хватало.
Суп, продублирую вопрос из треда ньюфагов Получил фидбэк по заданию, но чота местами не понимаю чего от меня хотят. Помогите разобраться. https://ideone.com/4dkWRk -Классы для чтения, классы для парсинга. Почему не функции? -Так же хорошо иметь объектную модель данных и ее стерилизовать в XML. Это как?
Так, дурачок с гуями возвращается, первое, есть ли какой-то адекватный способ перенести в переменные пути переменные Qt ? //debian, установил Qt c онлайн установщика, qtcreator etc встало, но прик в том, что терминал в ахуе с qmake, то есть, он знает, что оно есть, но где есть хызы
Немного тупой вопрос, но я крайне смущен, что вообще такое спрашиваю, но такой вопрос, есть функция которая говорит о том, что буфер потока ввода данных обновился ? То есть, допустим, у меня есть определённое поведение, если пользователь ничего не вводит, но только, если чел ввёл в консоль что либо, то тогда поведение меняется. Логично предположить, что данный момент должен выглядеть примерно как getline(cin, str); if(str == "") { default behavior; } else { extended behavior; } Но все мы понимаем, что в данном случае на каждую итерацию нужно будет прожимать ввод в консоль, чего мы крайне не хотим, собственно, есть ли функция/метод классса istream, который говорит о том, что ввод был нажат, и имеет смысл проверить что там вообще происходит ?
>>1782007 Классы для масштабируемости. Дрочи паттерны, функции по уровню дна находятся где-то в камне на дне. Второй пункт не понял, лол, но наверное он про DOM говорит
Засовывание числовой константы в указатель это ID. Было бы UB - Си бы пулей из системного проганья вылетел, там все построено на "указатель содержит адрес памяти"
>>1782492 Я скомпилировал библиотеку и установил. Теперь ее хедеры лежат у меня в /urs/local/include/qxmpp.
Теперь я копирую екземплы с свою директорию (с редактированием #include) и хочу скомпилировать своим make файл, как свой проект. Каким образом мне это сделать?
>>1782522 Еще раз, как скомпилировал? Ты использовал cmake? Есди да, то где-то в папке сборки должны лежать примеры собранные, потому что флаг для примеров включен в корневом cmakelists на гитхабе.
>>1782674 Настоящие пацаны пишут без фигурных скобок вообще, в иф/элс блоках должно быть по одному выражению. Если в коде внутри блока больше одного выражения, то код выносится в функцию или лямбду.
>>1782674 Что кстати странно, читая джаву нормально воспринимаю такую конструкцию, а читая кресты никогда не могу найти этот ебучий елс когда так пишут
>>1782621 c это у меня символ строки, дальше его необходимо преобразовать в без знаковый инт. При дебаге нашел вот такую непонятную хуйню. Почему оно так не очевидно кастует типы? Сначала в знаковый инт, и потом в беззнаковый. По моему самое очевидное это сначала кастануть в без знаковый чар и потом уже до инта поднимать...
>>1782771 >самое очевидное это сначала кастануть в без знаковый чар и потом уже до инта поднимать Тогда ты пришел бы с вопросом почему в этом случае x=255.
>>1782776 Так у тебя тут оба типа знаковые, соответственно нужна только одна операция повышения чара до инта(0xFF -> 0xFFFFFFFF). В ситуации когда нужно знаковый перевести в без знаковый с повышением порядок операций почему-то сначала повышение(0xFF -> 0xFFFFFFFF) и только потом каст в без знаковый(0xFFFFFFFF - > 0xFFFFFFFFu). Логичнее было бы сначала кастануть в без знаковый(0xFF -> 0xFFu) и потом повысить до инта(0xFFu -> 0x000000FFu).
Пишу на плюсах в коде на бустере. Иногда когда нажимаю вырубить дебаггер он не выключается и вроде как висит в фоне (на самом деле не висит). Код показывает что дебаггер запущен, но активности нихуя не проявляет. Из-за этого не могу запустить исправленный код и приходится перезапускать прогу. Сталкивался кто с таким мб? Другие советы из интернетов не помогают.
Кто может мне нормально объяснить что реально не так с книгой "Кресты за 21 день" и откуда столько лулзов с неё? Ну вот прочитаю я её, база у меня уже есть. Дальше только бери задания да учись именно писать код. В чём я не прав?
>>1783322 Нюансов в крестах так много, что даже самые основы в такую книжку не впихнуть, и неважно, есть база или нет. И эти нюансы порой никакой практикой не покрыть. Можно годами писать лютое UB и даже не подозревать, что идёшь по минному полю, ведь на первый взгляд всё работает. В других языках за незнание нюансов компилятор даёт тебе линейкой по рукам. Но в крестах компилятор предполагает, что код пишет очень высококвалифицированный сеньор.
>>1783390 >не было в двух самых языках, которые на момент выхода уже казались кастрированными и без нормалных фичей (Паскаль и Си) >сознательно отказались
>>1783222 Заруби себе на носу - когда у тебя есть класс, среди класс мемберов которых есть хотя бы ОДИН, сука, указатель - пиши конструктор копирования, который делает, сука, DEEP COPY. Иначе ты копируешь указатели и у тебя после конструктора копирования по умолчанию есть 2 объекта, указател внутри который указывают на одну и ту же память, а это UB и в некоторых случаях эксплуатабельная дыра в безопасности.
>>1783476 У тебя 2 указателя на 1 участок памяти. Потом ты будешь освобождать память в обоих, вот тебе double free вырисовывается, а это UB.
Или вот другая ситуация - ты освободил память по указателю ptr1, но при этом пишешь в память по указателю ptr2, который еще не освободил. Результат - Use-After-Free, что тоже UB.
>>1782771 >Почему оно так не очевидно кастует типы? Integer promotion. Это артефакт того, что PDP-11 загружала байт командой MOVB, которая всегда выполняла знаковое расширение.
>>1783393 речь о академическом рисерче вокруг алгола, ады, etc в си и паскале сопрограмм уже небыло по той причине что уже была доказана их узкая применимасть и то что те же задачи можно решить другими конструкциями проектируемого языка
>>1784712 Представь, что ты говоришь что 2*2==4 и одновременно кидаешься фекалиями, а тебе говорят что кидаться не правильно, тоже ответишь что суть не в этом?
Товарищи сеньоры, хочу вкатиться в плюсы, за плечами 10 лет пинания хуев и мастурбации. Если не сложно, есть парочка вопросов. Каков порог вхождения если начинать сразу с плюсов? Важно ли знание ин.яз в наличии что то около С1 ? Важно ли знание всяких математических штук все очень плохо Насколько востребованы плюсы в обозримом? Тяжело ли найти работу в будущем?
>>1784785 >знание ин.яз Да. Upper intermediate как минимум, иначе ты сосешь хуй и не нужен, если вдруг есть шанс на сасный релок. >знание всяких математических штук Смотря где. В геймдеве - критично. >Насколько востребованы плюсы в обозримом? Плюсы если и сдохнут когда-то, то это случится тогда, когда твои внуки будут кормить червей, так что не ссы. >Тяжело ли найти работу Тяжело, ибо знать язык недостаточно, нужно уметь решать задачи, в случае с плюсами, в большинстве случаев, далеко нетривиальные. Если у тебя 0 опыта и это твой первый ЯП - земля бетоном, вкат займет не меньше 5-ти лет как бы ты не усирался.
>>1784789 Тогда бы было 17. >>1784830 Люблю червей. >5лет Ну это так то до звезды. Очень неприятно. Меня жена с потрохами сожрет если я 5 лет буду такой кошку пинать. Но вкатываться то куда-то надо..
Что на плюсах пишут кроме игр? Какие там библиотеки основные? На java там всякие spring, на питоне django, что на плюсах есть? Или это самодостаточный язык?
>>1784849 >Или это самодостаточный язык? Да. Нет, просто под разные задачи много разных инструментов. java слишком сильно в бизнес ушла с микросервисами (и сервисами), поэтому spring там повсюду. С питоном аналогично.
>>1784857 Ну туда я всегда успею. В то же м-видео пылесосы бабкам втюхивать. Единственное в чем я действительно плох так это что не знаю языков. Ну ладно поживем увидим, может через пару лет буду норм," в рай попаду, а вы просто сдохните".
>>1784845 Вкатывайся в веб, анон. Тебе все эти 5 лет нужны идальные условия и минимум стресса, а в браке это маловероятно (нахуй вообще жениться в 2к20, ну да ладно, этот тред про другое).
Шансы еще больше уменьшаются. Серьезно, катись в веб, а лучше не в прогеры, а в сисадмины - там еще быстрее сможешь вкатиться и будешь зарабатывать так, чтобы хватало на жизнь.
>>1784830 >вкат займет не меньше 5-ти лет как бы ты не усирался. Всегда было интересно откуда эти цифры берутся. Все разные, у всех по-разному голова работает. Кто-то уже через год-полтора сможет ебашить за 120к, а кто-то и в веб за 5 лет не вкатится.
>>1785027 Пили стори как вкатывался, сколько часов в день и что сейчас пишешь, правда интересно если не троллинг. От подобной херни про 5 лет моя мотивация уже не страдает, но ты можешь её поднять.
>>1785027 У тебя наверняка был опыт в программировании, тут челик полный ноль и не знает что такое переменная. Ни о каких 6-ти месяцах и речи быть не может, у него даже КОКОрочки нету, тупо нихуя.
>>1785029 >>1785031 У меня опыт был только в быдлоадминстве, ну и вообще пеказадротом был.
Взял 2 книжки, по очереди читал, писал код 24х7 после и, иногда вместо основной быдлоработы. Ну вот спустя полгода задротства и перекатился, нарисовав себе год опыта в резюме. Реально задрачивал безумно, второй раз такой подвиг я бы не повторил.
Перекатился на тот момент в контору, занимающуюся около РЖД хуйней, писал там всякую хуиту для поллинга датчиков по ком порту, и так далее.
Кококорочки у меня тоже нет. Из моих охуенных приемуещств была все таки нихуевая база в ойти, всякие виндовсы\шлинуксы на хорошем уровне, и английский разговорный (он дико заролял кстати)
Почему в России на столько популярна сишка и кресты? Кого не спроси среди русских программистов - 90% людей учили их в какой-то момент жизни. В то время, как на Западе 90% даже не задумывались, что есть такой язык и нахуй он вообще нужен. Почему именно в России все так боготворят кресты?
>>1785143 >>1785126 Я не пытаюсь выставить кресты в плохом свете, мне просто интересно, почему в России у большинства погроммиздов первый или максимум второй язык - это сишка или кресты.
Аноны, поясните, пожалуйста, зачем комитет сделал следующее ограничение на aggregate initialization: > class type (typically, struct or union), that has ... no virtual member functions
Допустим, у меня есть какой-то "интерфейс" serializable, хочу его реализовать для нескольких структур с кучей полей. Так вот, если бы они не наследовались от serializable, тогда я бы мог использовать aggredate initialization или даже desginated initializers, а что сейчас?! Соси хуй, делай бочку говорят они. Есть конструктор, говорят они. Да это уебище лесное ваш конструктор, если мне надо в структуру напихать 20 параметров, что предлагаете делать - создавать экземпляр структуры и заполнять его?! Цука, чому деды-пердуны так сделали, поясните?
>>1785351 initializer_list должен состоять из однотипных объектов, разве нет? Единственное, до чего я додумывался - унаследоваться от serializable и от структуры и принимать эту структуру в качестве аргумента конструктора, но получается уебищно.
>>1775527 (OP) Я прохожу курс по алгоритмам на плюсах, но там даётся си подмножество. Как мне проще всего перестроиться на какой-то нормальный стандарт и на какой именно лучше всего?
>>1785328 >если мне надо заполнить структуру, что предлагаете делать - создавать экземпляр структуры и заполнять его? Цука, чому деды-пердуны так сделали, поясните?
>>1785649 >разраб ААА Вот я эта хуйня. Насколько этот уровень продвинутей школьной математики? >>1785663 Не быкуй, пчел. Я спрашивал про крутого спеца который на работе аки пикрил.
>>1785649 Наоборот. В инди, где людей мало, одному человеку есть шанс поработать над многими системами в игре. А в ААА можно одну свою гайку крутить джва года и вообще понятия не иметь, что там в остальной игре творится. Ну если под инди-парашей не понимать лепку в конструкторе, конечно.
Всем привет, сап и cout << "Здравствуйте". Начинаю вкат в эти ваши плюсы, через какое время параллельно этому можно начинать учить немецкий и заводить трактор соответсвенно?
Учитывая то что самодиагностированный в2 оказывается в лучшем случае МГИМО фишинд, а в худшем совсем не говорит по английски, подозреваю что двачевский с1 не сильно выше уровнем, лучше подтяни на всякий случай
>>1786930 >самодиагностированный TOEFL, держу в курсе как говорится. >>1786936 Ну ебать ты конечно. Поспи хоть немного, сам же видишь - в глазах всё плывёт.
На каком IDE лучше сидеть Qt или codeblocks? Qt конечно легче настроить, но он похоже скурвится совсем, перейдёт полностью в коммерческую версию. По codeblocks подскажите: если мне надо приложению создать GUI то надо ставить wxWidgets ?
>>1787724 Мне после сишечки это пиздец как мешает, какой-то нубский вариант. "Меньше" и "не равно" это совершенно не однохуйственно. Реально в шоке, что такой общепризнанный авторитет в области разработки сложных и боевых программ пишет такой код.
>>1787744 они нужны в некоторых местах. Но не везде. То есть выключить на уровне компилятора всеже нельзя, но и в 90% кода исключения не обрабатываются, вот это думаю пометить noexcept...
>>1787741 Можешь завести привычку сначала хуйнуть noexcept, а потом подумать, мол, вдруг бросаешь (ведь почти никогда не бросаешь). Собственно, всё, как с const. Лишним никогда не будет, плюс уточняет намерение. Компилятор, конечно, умный -- если может, везде проставит const и noexcept сам, но это только если он сможет. А может он, только если код не сильно сложный.
Как вкатится в программирование на 3ем курсе универа? Хочу прогать на C++, есть некоторое понимание С ( 1 курс был на нем, про массивы и списки знаю и не больше). Больше всего интересуют сайты по типу теория -> задачки, при этом проходятся все темы из Страуструпа допустим, есть такие?
>>1787700 Вон тебе ниже сказали юзать нормальный текстовый редакторvim. Потрать время на освоение cmake. Для гуйни можешь цеплять qt, остальные варианты как-то ну его нахер. Хотя, если тебе что-то несложное надо сделать, прототипчик быстро нашлёпать, или реалтайм гуйню, можешь попробовать imgui, ваще пушка ебать. Если ты всё-таки собираешь ставить сраную IDE не еш подумой, то выбирай Visual Studio, это хотя бы нормальный инструмент для людей. Ну и ещё, гуйня, которую ты пишешь, от IDE никак не зависит. Шлёпать qt из-под VS, собирая cmake-ом -- стандартная практика.
>>1787948 в имаксе это тоже редактор вообще-то, там просто куча всего другого, это считай как мини-ОС.
Профилировать можно независимо от вима, равно как и отлаживать программу. Ты же не профилируешь код в сойблайме, верно? Заводишь какой-нибудь gprof и заебись.
>>1787962 текстовый редактор, который есть в имаксе, ничем по функционалу не отличается от вима, с разморозкой. Лет 15 назад это было не так, но не сейчас. И оба расширяются плагинами. Напомню, что есть Nvim, который полностью совместим с обычным вимом, где есть поддержка плагинов на Lua и в целом больше полезных и крутых плагинов, чем в обычном виме. Анону 0 смысла нырять в имакс, если ему нужен ТОЛЬКО текстовый редактор, который лучше зумерских сойблаймов и вскодов.
Ах да, я работаю с юникс-лайк ОСями с 2001 года (конкретно с Линуксом - с 2003), так что называть меня ньюфагом - очень сильное заявление :-)
>>1787994 В чем разница между рассматриванием циферок в окошке и в консольке? Или для запоминания 10-15 интуитивных команд в виме оперативки в голове не хватает? Во поколение пошло...
Нужно записать вектор в файл. Сначала думал записать его в сыром виде, а потом так и достать. Но может у него там хранятся какие нибудь указатели? Я хз. Или просто не ебать мозги, записать его элементы в файл, потом причтении создать вектор, указать capacity, size и записать. Только вот как быстро записать?
На сервере должен храниься список карт. Клиент может отсортировать его по разным параметрам. Правильно ли я хочу сделать: создать для каждого параметра отдельный список. Не сортировать же для каждого запроса исходный.
>>1788117 В смысле? Храни один vector<hui>, а остальные vector<hui★>. На миллионе элементов потребление памяти 4мб на параметр. Если миллиард, то решай сам, что проще - закупить 8гб оперативки или сортировать на лету
>>1788136 Ну смотри, у тебя объект вектор, vector<int> v. Он расположен на стеке. Как же тогда в него можно затолкать неопределенное количество интов? Просто вектор имеет внутри себя указатель на участок памяти, выделенный уже в куче, и знает размер этого участка (capacity) а также количество элементов хуйни, которое ты в него плолжил (size).
Вот скажем есть вектор с тремя элементами (пикрил-1) и ты сохранил указатель на третий элемент. И элемент по этому указателю нормально доступен. Тут в вектор добавляется четвертый элемент и кладется в конец участка памяти (после третьего) и всё пока в порядке - по *ptr всё ещё можно добыть третий элемент.
Но тут ты добавляешь пятый элемент (пикрил-2). Вектор видит что капасити=4 меньше 5, то есть не лiзiт!, выделяет себе второй кусок примерно в два раза больше текущего, копирует(перемещает) туда все четыре элемента, которые уже есть, и кладет за ними пятый. А старый кусок памяти УДОЛЯЕТ. К хуям.
Ты лезешь получить третий элемент по указателю ptr, а получаешь по ебалу UB. Это в общих чертах и есть инвалидация итераторов, и указателями снаружи её обойти нельзя, потому что каждый контейнер дрочит свою память как хочет.
>>1788175 Наверно потому что это довольно просто и прокатит если вектор не увеличивается или заранее сделан reserve нужного размера ШОБ НИДАЙБОХ. Если опасаешься, можно хранить не указатели а индексы. Но все равно поломается, если сделать хотя бы одну вставку/удаление в середину.
Я хочу создать множество точек, обладающих координатами (x, y, z), весами для взаимодействия, вроде массы, и ещё суммарный вектор сил, действующий на каждую точку. Итак, вопросы: 1)Стоит ли делать ли это на структурах или классах и почему? 2)Если на структурах, то что лучше: массив структур-точек или структура-множество-точек из массивов?
>>1788328 1) Классы без трехэтажного виртуального наследования как правило ничего не тормозят. 2) struct-of-arrays вроде как быстрее array-of-structs, и это почти то же самое что хуйнуть три массива флоатов без структуры вообще.
Жил-был СТРАУСТРУП. Шел обычный, скучный день. СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад. Только успев кончить матери в пердак и вынуть измазанный в говне хуй, СТРАУСТРУП услышал стук в дверь. Не заметив, что его мать умерла от сердечного приступа еще 3 дня назад, он пошел открывать дверь и вышел на веранду. На веранде никого не было. СТРАУСТРУП, было, уже начал подозревать СТЕПАНОВА в очередной подъебке, но вдруг, из под крыльца что-то вылетело и понеслось на него. От перевозбуждения СТРАУСТРУП уронил скрепленнеые скотчем очки на пол и смиренно ждал, что будет дальше. ЛЯМБДА, с огромной скоростью пролетела мима СТРАУСТРУПА, квадратной скобкой отпихнула его и заползла в дом, крепко заперев дверь. ЛЯМБДА ясно дала понять, что она приняла дом в качестве аргумента, но отказывается возвращать функцию, которая принимает ПИЗДЮЛИ в качестве аргумента и возвращает дом. ЛЯМБДА заползла на стул перед компьютером и свернувшись в уютный клубок, зашла на ДВАЧ. СТРАУСТРУП знал ЛЯМБДУ. По крайней мере, это слово он точно слышал, но не знал, что оно значит. Он очень удивился, когда недавно узнал, что ЛЯМБДУ включили в НОВЫЙ СТАНДАРТ, принятый полгода назад. СТРАУСТРУП понял, что надо выгнять ЛЯМБДУ из дома, потому что желание в очередной раз залезть на мамочку было слишком велико. Будучи первоклассным инженером, СТРАУСТРУП начал искать решение проблемы. Для разминки он решил повторить таблицу умножения до 12 на 12. Он 2 часа стоял на одном месте и смотрел в никуда, потея как свинья. Пока он боролся с таблицей умножения, из за угла вышел измазанный в говне АНДРЕЙ АЛЕКСАНДРЕСКУ и осмотрелся. Рядом стояли несколько зданий, включая психбольницу для буйнопомешанных и тюрьму. АНДРЕЙ задумался и понял, что в округе нет ни одного настолько больного и гнилого человека, чтобы продать ему свою книгу. Небрежно посвистывая, АНДРЕЙ удалился. СТРАУСТРУП закончил разминку и начал думать, как прогнать ЛЯМБДУ. Вдруг его осенило. Его дом был скомпилирован последней версией GNU G++, которая поддерживает ЛЯМБДУ. Именно поэтому, ЛЯМБДА и смогла проникнуть к нему в дом. СТРАУСТРУП понял, что ему нужна более старая версия G++, которая не поддерживала ЛЯМБДУ и тогда, при попытке компиляции дома, ЛЯМБДУ выкинет вместе с СООБЩЕНИЯМИ ОБ ОШИБКАХ. Но старую версию было негде взять. СТРАУСТРУП нанял ФУНКЦИОНАЛЬЩИКА СО ШТАНГОЙ за 5 тысяч рублей. Так как компьютера у них не было, ФУНКЦИОНАЛЬЩИК вначале написал на бумажке компьютер в 1 строчку НА ХАСКЕЛЕ:
Computer = Computer
ФУНКЦИОНАЛЬЩИК сожрал бумажку и высрал работающий системный блок с ВОДЯНЫМ ОХЛАЖДЕНИЕМ и предустановленой WINDOWS 7. На компьютере уже был установлен АЛАН ВЭЙК и ХАСКЕЛЛ ПЛАТФОРМ. Корпус был красного цвета, с наклейкой ТУРБО на прозрачной боковой крышке. Затем ФУНКЦИОНАЛЬЩИК написал в 2 строчки старую версию G++:
Compiler :: [C++SourceCode] -> [ExecutableFile]
Compiler source =(Link . Compile) source
СТРАУСТРУП взял исходники своего дома и запустил компиляцию. Компилятор начал дристать СООБЩЕНИЯМИ ОБ ОШИБКАХ. СТРАУСТРУП попытался разобрать первую строчку, но увидев такое, дальше лезть не решился(таблица умножения и так вымотала его):
Высрав 10 000 СТРОК СООБЩЕНИЙ ОБ ОШИБКАХ, компилятор скончался от ЛЕНИВЫХ ВЫЧИСЛЕНИЙ ПРЯМОЙ КИШКИ и из монитора вылетела ЛЯМБДА. Придерживая круглые скобки квадратными скобками, ЛЯМБДА в ужасе съеблась под ближайший камень. Ей еще долго не захочется принимать и возвращать значения. Довольный СТРАУСТРУП плюнул в руку, чтобы наслюнявить хуй и уже решился залезать на мамочку, но передумал и решил вначале запостить эту историю на БАЙТОКОВЫРЯЧ.
>>1788997 Жил-был АНДРЕЙ АЛЕКСАНДРЕСКУ. У АНДРЕЯ всё всегда было через ЖОПУ. Мать АНДРЕЯ была наркоманкой. Список ее психических расстройств, венерических заболеваний и наркотиков, на которых она сидела, был длиннее типичного ресторанного меню. Когда пришло время рожать, каково-же было удивление врачей, когда АНДРЕЙ вылез из ЖОПЫ и каким-то образом умудрился убить и частично съесть двух медсестер. АНДРЕЙ был трудным ребенком. Когда АНДРЕЙ еще находился на лечении, на пятнадцатом году шоковой терапии и после второй лоботомии, он вдруг направил свое внимание на языки программирования. Большую часть дня, АНДРЕЙ бился головой о стену, пытался откусить кусок своего тела и ел свои экскременты. Но в перерывах между приступами, АНДРЕЙ листал книги и искал... Он прочитал про десятки языков программирования, но они не вызывали у него никакого интереса, потому что, они не были достаточно извращенными для его тонкого вкуса. Внезапно АНДРЕЙ увидел ВЫЧИСЛЕНИЕ ЧИСЕЛ ФИБОНАЧЧИ ВО ВРЕМЯ КОМПИЛЯЦИИ НА C++ и замер. В его уставшей, больной голове что-то щелкнуло - он нашел, что искал. Он начал читать книги по C++. Чем дальше он проникал в тайны C++, тем больше он понимал, что этот язык создан для него. Мерзкие извращения, которые он наблюдал на страницах, глубоко резонировали с его истерзанной и едко ненавидящей все светлое душой. Его глаза наливались кровью от удовольствия и слезы текли по щекам, от осознания, что на свете есть люди, не намного менее больные, чем он. АНДРЕЙ понимал, что скоро ему сделают третью лоботомию и тогда он вряд ли сможет написать книгу. Времени до третьей лоботомии оставалось немного и АНДРЕЙ решил начать писать книгу прямо сейчас. "THE TIME IS NOW, ANDREI", сказал он вслух самому себе на ломаном английском с выблядски кривым акцентом и начал писать. Вначале он не знал, в чем суть того, что он пишет. Но со временем картина стала ясной как день. АНДРЕЙ взял самый гнилой, уродский и омерзительный язык программирования и решил довести его до уровня сумасшествия, до сих пор невиданного в мире людей. Первый (и последний) технический рецензент его книги, сошел с ума и убил всю свою семью, после прочтения нескольких глав. Узнав об этом АНДРЕЙ смеялся, пока не потерял сознание. АНДРЕЙ понимал, что все идет как надо. Сразу после того, как он дописал последнюю главу, ему сделали последнюю лоботомию и писать книги ему больше не хотелось. Представители издателя взяли книгу АНДРЕЯ и, согласившись ее издать, спросили у него, как бы он хотел ее назвать. На ломаном, кривом английском он ответил: "MODERN C++ DESIGN: GENERIC PROGRAMMING AND DESIGN PATTERNS APPLIED BY ANDREI ALEXANDRESCU". Его акцент был настолько уебищен, что представители издателя начали ржать, с такой силой, что моча начала струиться по их ногам. Но, слишком поздно они поняли, что это была моча АНДРЕЯ. Они не знали, что таким образом он помечает своих жертв, перед тем, как их убить. АНДРЕЙ успел убить одного, но другому удалось спастись, хоть он и лишился уха.
Через несколько лет АНДРЕЯ выпустили. 20 лет шоковой терапии и 3 лоботомии, все-таки, смогли немного успокоить его. Он, конечно продолжал убивать, но редко, и в основном мелких грызунов.
Наступил обычный, скучный день. Скучным он мог быть для кого угодно, но не для АНДРЕЯ. Ведь у него диагностировали шизофрению еще на внутриутробной стадии. Книга продавалась не особо хорошо. В мире оказалось не так уж много запредельно больных людей, готовых ее купить. Уже 2 месяца у АНДРЕЯ почти не было денег и он ел блюдо собственного изобретения - ТУАЛЕТНАЯ БУМАГА ПО ФЛОТСКИ. Блюдо представляло собой собачий корм с вареной туалетной бумагой. Роялти с продаж книги капали ему на банковский счет, но очень вяло. АНДРЕЙ уже отошел от третьей лоботомии и решил взять дело в свои руки. Он положил в сумку с десяток экземпляров MODERN C++ DESIGN и пошел на улицу, с надеждой продать хотя бы несколько. Хотя бы один. Если это удастся, то наконец можно будет купить КЕТЧУП. Подумав о КЕТЧУПЕ, АНДРЕЙ улыбнулся, но повернувшись, чтобы открыть дверь, увидел свое отражение в зеркале. Выражение лица, которое получилось из за улыбки, было настолько ужасающим, что АНДРЕЙ отшатнулся. Он вышел на улицу и стал бродить по улицам. АНДРЕЙ увидел здание, в котором было множество компаний по разработке программ и направился к нему. Там АНДРЕЯ уже знали и вызвали охрану раньше, чем он успел войти. АНДРЕЙ удивился, потому что он никогда не был здесь. Из здания вышел человек и сказал АНДРЕЮ, чтобы он убирался. Человек объяснил, что однажды, один из программистов, работавших в здании, купил себе MODERN C++ DESIGN и принес на работу. Прочитав 5 страниц, этот человек обезумел и успел убить трех коллег, до того как натолкал себе в жопу скрепок и повесился в полностью пустом помещении. После этого, запятнанную кровью книгу, подобрал другой разработчик и цепь событий повторилась. Как вирус, книга распространялась по всему зданию. В результате этой бойни, 30 человек погибли ужасными смертями, перед тем, как кто-то сообразил, что нужно уничтожить книгу. АНДРЕЙ понял, почему его не хотят пускать, но решил попытать судьбу и все-же проникнуть в здание. С раззадоренным еблом, он попытался пробежать в дверь, но охранник ударил его дубиной по еблу, выбив несколько зубов, после чего добил по яйцам, пнув достаточно много раз, чтобы наблюдающие сбились со счета. АНДРЕЙ сполз с крыльца и потерял сознание.
Очнулся он уже под вечер. Первый опыт продажи был не очень удачен, но может во второй раз повезет? АНДРЕЙ шел по улице, страстно разговаривая сам с собой и вдруг увидел двух человек. Подсознательно он узнал их, но не мог вспомнить. Трясясь от страха он подошел к ним и предложил купить книгу. ПОЛ ГРЭМ и ПИТЕР НОРВИГ взяли его книгу и стали листать. Они поняли, с кем они имеют дело. АНДРЕЙ смотрел куда-то в сторону и незаметил первого удара, который пришелся по голове. АНДРЕЙ даже в начале не понял, что происходит, потому что били его как никогда сильно. Удары сыпались со всех сторон и, услышав хруст своих ребер, АНДРЕЙ осознал, что вероятно, живым ему не уйти. Это осознание ввергло его в истерику, но он ничего не мог поделать, кроме того, как обосраться и изваляться в собственном говне. Увидев это ПОЛ ГРЭМ и ПИТЕР НОРВИГ побрезговали добивать жалкого РУМЫНСКОГО барана и оставили его в покое. Грязно выругавшись, АНДРЕЙ поднялся и пошел по улице. Завернув за угол, он увидел СТРАУСТРУПА, стоящего на одном месте и напряженно о чем-то думающего. АНДРЕЙ осмотрелся, но не обнаружив потенциальных покупателей, развернулся и пошел домой, насвистывая РУМЫНСКУЮ НАРОДНУЮ ПЕСНЮ.
Анонцы, как найти первую работу и сколько времени на это уйдет? Из знаний пока начальные алгоритмы, ООП, немного синтаксис знаю, с QT знаком. Чего нужно учить вообще для того чтобы первый оффер получить?
>>1789056 ты должен закончить вуз по профилю или быть толковым студентом последних курсов тебе должно быть лет 20—23 ты должен жить в большом городе где есть фирмы с разработкой на с++ это базовый минимум, иначе пошел нахуй или тупо здохни от голода
>>1787943 Профилирую в соседней вкладке, perf-ом, или tracy цепляю, если gpu профилировать. >>1788016 Нахуя мне тащить сотни мегабайт какой-то непонятной грязной дряни, которая мне для редактирования кода предлагает треть экрана и всратый фейковим? Как вы вообще работаете, когда нихуя не видно нормально, ни код, ни процесс компиляции? Тот же вим я юзаю не только потому, что удобные хоткеи и без мыши всё можно делать, а ещё потому, что он сука на весь экран! Перешёл на соседнюю вкладку, а там на весь экран ошибки компиляции вываливаются. Перешёл в соседнюю вкладку, и там gdb запустил на весь экран. Вот это удобно, а не сидеть как дурак блять щуриться хуйню всякую разглядывать. Вот посмотри на пик. 48 строк кода в фуллхд экран влезает (46 если вкладок много), с приятным шрифтом. Моим глазам на такое приятно смотреть, а на кутешную дрянь больно.
>>1789097 Студентов младших курсов мало вообще куда берут, ибо им шарага важнее. А вот третий-четвёртый уже можно, и то на моём потоке на третьем не то что бы очень много работало.
>>1789099 >ImplementsGeneralMeshInterface Уже концепты на дворе же
>>1789052 Ты ж сам написал: > Но все равно поломается, если сделать хотя бы одну вставку/удаление в середину Вот я и отвечаю: можешь вставлять куда угодно, только в остальные векторы вставляй через lower_bound
>>1789099 > а там на весь экран ошибки компиляции вываливаются Чювак, у меня лог компиляции занимает несколько мегабайт. Я уж лучше на прямоугольники от жыдбрейнсов или инкредибилда буду смотреть
А по поводу тёмного фона, на вкус и цвет фломастеры разные. Мне лично светлый фон просто неприятен. Экран с тёмным фоном сильно меньше светит, да банально батарея дольше держится.
>>1789112 Пишет, что Monospace Regular 13, не знаю, насколько это правда. >>1789113 Если бы у меня так было, может, и юзал бы жыдбрейнсовскую дрянь. Или ещё какие workaround-ы бы придумал или подсмотрел.
Вкатился месяц-два назад в жуна жабу, но как то скучно и примитивно. Как перакатиться в срр? Начинал учить срр, знания примерно одни и те же(разве что дополнительно spring и liferay, на жабе), но на жабу взяли, на срр никак не хотят. МимоШкила без образования
>>1789778 >using namespace std убери, его макс мешает. А почему мешает? В стандартной библиотеке же нет перегрузки под тип box. Компилятор должен был использовать мой шаблон и не выпендриваться, не?
> in the definition of a class or class template, if a base class depends on a template-parameter, the base class scope is not examined during unqualified name lookup either at the point of definition of the class template or member or during an instantiation of the class template or member Кто это говно придумал?
>>1787738 >>1787735 >>1787729 Анон, поясни за итераторы. Если я правильно понимаю, то на чистой сишке можно совершенно спокойно добиться того же, но с некоторыми отличиями: - На си код логичнее и прямее, так как и на с++ нужны указатели - Итераторы- просто сахарок и абстракция, в данном случае необоснованная - Городить целый раздел для такой простой концепции перебора, который нужно писать чисто прикладным, а не обобщенным - это аутизм. Это как написать целую функцию HelloWorld, которая вызывается Hello(int k) и печатает HelloWorld k раз. А потом на серьезных щщах рассказывать об этом на конференциях.
>>1790080 >Итераторы- просто сахарок и абстракция, в данном случае необоснованная Конечно обоснованная. Вот у меня есть big_integer, а у него есть битовые, байтовые, вордовые итераторы, я могу ходить по нужным кускам с очень простым юзер-кодом
>>1790111 На мой взгляд, взаимодействие с совершенно разными контейнерами, реализация которого спрятана под капотом, и не имеющая явных преобразований - являет собой просто цунами трудноуловимых багов. Я, повторюсь, понимаю концепцию и причину появления "итераторов", но я как видно не достаточно понял реальное приминение.
https://ideone.com/MDRAJ7 Как разобраться, когда использовать строгие и нестрогие условия, пре- и постинкременты? Вдруг я ошибусь и сделаю неверное число итераций?
>>1790147 >цунами трудноуловимых багов Честно, я даже не очень представляю что ты тут имеешь в виду. Какая разница, сделать std::next(iterator) или условный list_next(current_node). Код всё равно по сути одинаковый будет, и если есть баг в одном месте, то будет и в другом. >не имеющая явных преобразований Итераторы жёстко типизированы. Ты с forward_iterator ничего лишнего не сделаешь.
>>1789988 >at the point of definition Всё логично и понятно, мы вообще ничего не знаем о базовом классе и окружении. >or during an instantiation В теории тоже понятно. Переменная не dependent name, и компилятор пытается сразу её зарезолвить, что приводит к фейлу. Используй "using Base<T>::x" или this->x
>>1790147 через абстракцию итератора ты можешь писать обобщенные алгоритмы работающие с разними контейнерами более того, итератор позволяет обрабатывать не все содержимое контейнера, но часть его более того, итератор может быть и не по контейнеру!, но при этом ты все также его можешь запехнуть в тот обобщенный алгоритм обработки
Ну вот например, я собираюсь писать прикладной инженерный софт под винду, с некоторой долей простого графического интерфейса и очень простой визуализации результатов. Например есть 3д модель и мне надо обсчитать перепады температуры и соответствующие деформации в некоторых точках. Точек много, очень много. Питон - не вариант, будет работать несколько дней. С++ код для этого приложения работает, но прикол в том, что прямо скажем, этот код просто пиздец. Как результат - переписываем все на чистых сях, со списками и указателями, gdi и winapi. Которые сами по себе сишные сущности, все обертки типа mfc - говно. Конечно хотелось бы писать на плюсах, но я не вижу преимуществ. В чем преимущество? С++ для разных нужд различаются между собой почище чем с++ и с89. Хз короче, я не программист.
Короче из нуфага выпнули к байтоебам, то бишь к вам, может кто посоветует что или подскажет. Короче, ща сложна будет Вот сижу я и потихоньку ковыряю openGL под с++. Научился выводить, вращать, масштабировать, перемещать и прочее кубики обтянутые текстурой. Отлично думаю. А чего бы мне не ебануть этакий конструктор, типо, лего? Кубики можно сцеплять друг с другом. И вот чот я придумать не могу, а как это вообще реализовать, с точки зрения архитектуры? Кто и где будет выравнивать один кубик на другом и вот это вот все? Вроде в голове мысль, что держать трехмерный массив, в который и заталкивать эти кубики, прямо буквально, одна три дэ клетка массива - один сегмент блока. Ну а в opengl уже срать вершинами из этого массива. Как идея? Хуета? Кто, что получше посоветует?
Здраствуйте господа байтоебы, я вэб-макакий, и меня к вам занесло на волне моего интереса к байтам. Я из интереса пердолюсь с бинарными буферами которые node.js гоняет через сокеты на транспортном уровне. Фигня в том что вуз я окончил давно, а макакинг разжижает мозги. Подскажите что почитать по основам байтоебства, такого научно - популярного. Например трабла: есть буфер бинарных данных из 100 байт, есть его длина - хранится в двух байтах, и соответственно мне нужно когда отправляю свой "кастомный пакет" - мне нужно чтио бы сначала в пакете были два байта длины, а потом все оствальное тело. Тоесть нужно склеить бинарник длины тела, и бинарник самого тела. В node есть функци для этого, ноони работают как кривая магия. Сорр, зза криво сформулированный вопрос - я пока что даже сформировать нормально не могу - не хватает понимания.
>>1790903 >В node есть функци для этого, ноони работают как кривая магия. Функци работают конечно правильно, просто я их юзаю криво, не вдупляя че и зачем.
>>1790552 существует куча прикладного софта, которое делает 3d визуализацию используй его и все для вывода результатов скорей всего также есть софт который считает и перепады температур с деформациями по итогу у тебя будет пара скриптов или плагинов к этим прогам и все минимум ебли
>>1790903 k&r, особенно там в конце есть задание по реализации своего malloc, обычно новичкам очень полезно для научения раскладывания байтиков по памяти
>>1790678 глянь как спроектированы высокоуровневые обертки над тем же opengl, какие там архитектурные решения применены, общая цель у них одинакова - повысить уровень абстракции что облегчает прикладное использование
>>1791144 >>1791147 Чем этим то? Нахуй мне обертки? Я хочу редактор конструктора сделать, берешь блок, кладешь, сверху другой ставишь, чтобы он по пазам попадал, сверху третий, чо лего никогда не видел что ли?
Пишу на С++ Builder 2002. Памагити! А если серьёзно, какие перспективы у современной Эмбракодеровской версии этого IDE? Кто нибудь вообще сейчас в ней работает.
>>1791319 Знакомый формошлёпит на этой хуйне, там вроде недавно даже c++17 завезли, хотя один хуй если пользуешься билдером, то хуй ты когда на c++17 перейдешь
>>1791341 У меня опыт очень маленький, всё время работал в Code::Blocks. Сейчас пересел на Notepad++, g++ и консольку, подтягиваю фундаментальные знания, ибо память очень слабая
>>1791341 линукс + вим лично для меня Мне проганье под Линукс приносит доход + юзер экспириенс мне больше в Линуксе по душе, за многие годы многое сделали для простых смертных, даже в игры на Линуксе стало куда проще играть, порой даже вино не нужно (сам не ГЕЙмер)
>>1791390 В С++ есть обертки - та же парадигма RAII. Ну и есть managed языки типа джявы, сисярпа, пездона - там вообще об управлении памяти думать не надо. Но managed языки не для всех задач, поэтому нужда в байтоебах будет вечна, так как существуют уровни абстракций между железом и софтом, и кто-то на нижних слоях абстракций должен мутить мутки, иначе никак, бро.
>>1791464 >парадигма RAII Если честно - ни о чём не говорит ибо только-только вкатываюсь. Просто интересно насколько сейчас всё лучше по сравнению с тем временем когда этот ярлык байтоёба зародился.
>>1791487 В смысле? Байтоеб есть байтоеб, что 20 лет назад, что сейчас, что через еще 20 лет. Байтоеб - это кодер, пишущий код на малом кол-ве абстракций над железом, лоу-лвльщик, грубо говоря. В идеале байтоеб должен писать код в пространстве ядра (дрова, например) или же вообще прошивки. Юзер-спейс макаки - это байтоебы-полукровки на самом деле. Ебать байты можно и там, конечно же, но ответственность нулевая, так как в пространстве пользователя тебе по кд подтирает жопу операционная система. В пространстве ядра в случае твоих кривых клешней может и BSOD/kernel panic (смотря что за ОС) вылететь.
>>1791506 >Значит со временем от похода к проститутке можно будет отказаться щито
Кстати, если ты живешь в странах бывшего совка - тебе, как байтоебу, придется туговато. Это я так, чисто даю предупреждение на опережение, чтобы ты не терял связь с реальностью. Сразу говорю, что если цель вката - чисто бабки по фасту, не имея особой фанатичной склонности к программированию, то советую вкатываться в веб-макакинг. Подумой, анон.
Помогите нуфане. Есть структура struct Hui { int x; int y; } Значит создаю я структуру с x = 0, y = 0. Затем передаю эту структуру в функцию по значению int obrezat (Hui h) и что бы вы думали? Ставлю бряк на первой строке функции, смотрю чо у меня передалось, а там мусор, вместо нулей, почему?
>>1791622 Ты немного неправильно смотришь, чекай пикрил.
Находясь УЖЕ внутри тела функции obrezat, ПОСЛЕ пролога функции идет обнуление членов структуры (до этих двух инструкций в локальной структуре реально был мусор). Компиль - g++, но я думаю, что так работает и в остальных.
Почему размер исполняемых файлов разный, если один из них я собираю в g++ -Wall, а второй в IDE с этим же параметром (конфигурация relrase)? Исходный код одинаков
>>1791692 Охуели что ли? Какой нахуй баг в компиляторе? Это в лучшем то языке? >А по ссылке нормально? По ссылке вроде нормально >>1791694 >Код в студию Пикрил. На первом я тормознул до передачи в функцию, чтобы показать анонам, что честно-честно передаю структуру с нулевыми значениями. На втором я тормознул уже внутри функции. >>1791726 Пикрил
>>1791815 > Охуели что ли? Какой нахуй баг в компиляторе? Это в лучшем то языке? Уноси свое говно C++/CLI туда, откуда принёс. Здесь мужики жабу на кресты не пытаются натянуть, нет, тут другие нравы произрастают.
Ананасы, вопрос про гцц и кланг. Интересует вопрос не оптимизаций, поддержки стандартов и прочее, а скорее унификация работы. Ведь кланг есть подо все платформы, а с гцц нужно трахаться для шиндовса хоть я и использую на нём msys. Может нахуй послать гцц и пользоваться клангом?
>>1791828 >А р как создаётся? Пикрил >>1791829 >Уноси свое говно C++/CLI туда, откуда принёс. Здесь мужики жабу на кресты не пытаются натянуть, нет, тут другие нравы произрастают. На русский переведи, чо сказать то хотел?
>>1792056 memcpy МОЖЕТ привести к неопределенному поведению, если у тебя руки из жеппы. Просто контролируй размер буфера куда ты копируешь байты и все будет норм.
>>1792078 > memcpy МОЖЕТ привести к неопределенному поведению, если у тебя руки из жеппы. Лол, половину функций так можно охарактеризовать. Почему тогда я тут по поводу этой функции срачи видел?
>>1791633 Это что такое? >>1791622 >ряяяя, с++ крута, напрямую с памятью работаешь, байтоебишь, шарп сасадъ >пук среньк это компилятор глючит или ещё чего, хз короче охуеть, блядь, почему в шарпе такой срани нет? Какого хуя структура в функцию по значению с мусором передаётся? Как вообще на ваших крестах проблемы решать?
>>1792136 Начнем с того, что у тебя там не настоящие кресты, а противоестественный гибрид С++ и С# от микрософт. С навернутым поверх гарбадж коллектором и хуй знает чем ещё. Одному сотоне известно как там что работает, особенно учитывая любовь мелкомягких к соблюдению стандарта (нет). Именно поэтому ты был послан нахуй. Так-то.
>>1792141 >Начнем с того, что у тебя там не настоящие кресты, а противоестественный гибрид С++ и С# от микрософт. С навернутым поверх гарбадж коллектором и хуй знает чем ещё. Ты можешь внятно объяснить, что у меня не так? То что я студию использую? Или что? Я ж тебя уже просил нормально пояснить, тебе чо, трудно что ли?
>>1792156 Проверь что в студии ты не создал проект С++/CLI или не поставил флаг /cli компилятора. Я надеюсь, ты сделал это случайно. Если и правда надо писать именно на нём - да поможет тебе бог.
>>1792181 >Проверь что в студии ты не создал проект С++/CLI Я пустой проект создал. >не поставил флаг /cli компилятора. Где это посмотреть? >Если и правда надо писать именно на нём Нет, мне похуй в принципе, лишь бы в студии, так как привык к ней с шарпа. А с чего ты вообще взял, что у меня cli это используется? И что это такое, поясни в двух словах, плес
А отлаживать сетевые приложения не очень круто. Смотрю, вроде на клиенте все данные в порядке. Приходят на сервер, а тут что то не то. Думаю может считал не правильно (приходят байты с нужной инфой, а не строки или числа), да нет. Начало нормальное, а потом хуйня какая то идет.
>>1792274 Да ебаный ты почешись! Утебя проект не на том языке, ты бы ещё на вижуал бейсике создал и спрашивал, чо это std::cout не работает - баг в конпеляторе наверно. Мне за тебя что ли загуглить видеоинструкцию как создать с++ проект в студии?
>>1792286 Блядь, какие видео инструкции? Как не на том языке, блядь? Я зашел, выбрал кресты, выбрал пустой проект, создал файл source.cpp, создал нужный мне hui.h и пишу в нем, блядь, чо еще надо то на хуй? На каком языке я пишу, блядь, тогда? Чо за хуйня с вашими крестами вечно? Почему в шарпе я выбрал проект и пишу код и это шарп, блядь, будет всегда, как не выебывайся. У вас это чо? Как может быть не тот язык, если выбраны кресты и пустой проект? Он чо, компилятор от петухона подключает? Чо за пердолинг на ровном месте? Где посмотреть и переключить на кресты эти ваши?
>>1792293 Так блядь, уёбище. Прямо сейчас, сука, заливаешь свой репозиторий на GitHub/gitlab/Bitbucket/на небо с Аллахом. Мы всем крестачём смотрим на твой высер и заодно на то, в какую секунду после 01.01.1970 ты обосрался сам и обосрал свой проект.
Половина треда в бамплимите, который уже надо перекатывать, засрана попытками помочь тупорылому шарписту-неосилятору с айкью как у табуретки, который даже не понимает на каком язке он пишет код. Охуеть шизоиды.
>>1792331 >>1792332 Да ебаный рот ваших крестов, блядь! На каком я пишу то тогда? Если создал ебаное приложение пустое на крестах, блядь!!!!! Хули компилятор крестовый не ругается на for_each если это зашквар, блядь? А просто молча структуру с говном в рот сует? Студия мне предложила сразу, как только я fore написал for each этот еще и заботливо показала, чего в скобках хуярить. Умеет ваша параша в foreach(var l in list)?
>>1792334 >который даже не понимает на каком язке он пишет код. Да я откуда знаю, на каком языке ваш компилятор хавает это с довольным ебалом, а потом срет вонюче? На шарпе если пишешь не на шарпе, так и компилятор тебя на хуй пошлет.
>>1792337 Я понимаю, ты пытаешься, типо, посмеяться, ыыы, глядите, он тупой, я ему, как ребенку все объясняю, только вот пост, который ты процитировал, если взглянуть на скрин, то там уже и выведено окно свойств и там нет дополнительных
>>1792339 короче, кресты в foreach не умеют и надо колхозить for, так? Ну, допустим сделаю, компилиться то все равно хуйня будет, которая структуры по значению с мусором передает в функции и вообще, cli - нахуй эта хуйня нужна, если она по значению не умеет передавать?
>>1792344 >cli - нахуй эта хуйня Это "кресты" для дотнета, существуют и поддерживаются до сих пор только по велению левой пятки кого-то из майкрософта. У них вообще таких продуктов много, например есть даже джейскрипт дотнетовский и даже Бейсик лол
>>1792354 >Это "кресты" для дотнета Уже хуйней пахнет, даже для шарписта. Ладно. Допустим я хочу вкатиться в кресты, юзать компилятор для вас православный и при этом студию, мои действия?
>>1792367 >Читать книги из шапки? Чтобы хеловорд скомпилировать? Читать книги? тут же явно где то ошибка в одной галочке, блядь. Почему в шарпе не надо книги читать, чтобы хеловорд скомпилировать?
>>1792056 правильный способ это представлять кусок сырой памяти как vecror из char, а для работы с ним исполтзовать стандартные алгориьмы std, в частности copy
>>1792344 > cli - нахуй эта хуйня нужна У нее есть достаточно прикольный юзкейс - можно из нативного С++ приложения при помощи CLI-обертки дергать код, написанный на сишарпе. Один раз мне это пригодилось, когда нужная мне либа была только на шарпе.
>>1791905 если ты не погроммист то тем более проще заюзать готовые решения, чем писать свою прогу возможно, твою задачу проще рассчитать и визуализировать в чем-то типа mathcad
>>1792371 >pepuhon >print ("helloword") Мам, тут короче три книги надо, чтобы в кансаль вывести два слова, тут все сложна, указатели надо изучить, для элиты кароча
>>1792380 Странно слушать такой высер от человека, который не мог понять самостоятельно на каком языке он пишет программу. Знаю, книга для тебя слишком сложно, моя ошибка( Мог бы предложить Гугл или что-то такое, но тут сейм проблема - буквы. Мам, тут проблема категории /яНеМогуОсилить, тут все сложна, программу нужно скомпилировать, пойду ебать /pr.
>>1792395 >Странно слушать такой высер от человека, который не мог понять самостоятельно на каком языке он пишет программу. Скомпилировалось? Скомпилировалось! Какие ко мне претензии? Блядь, старый анекдот - один в один ситуация, когда один покупатель другому говорит в отделе сантехники - да не верь им, я уж и жопу показывал и туалетную бумагу, все равно унитаз не дали. Так же и тут, я уж исходник выложил, а все равно никто не объяснил в чем проблема. Ну перепишу я этот форич и чо, компилятор по другому скомпилирует что ли? При чем тут это вообще, если компилятор крестов мусорными значениями срет? Блядь, да я б уж давно на шарп все это переписал, если бы мне надо было и все бы работало по ф5. Какого хуя ваша залупа не работает, но компилятор жрет без проблем, вот это хочу выяснить и все.
>>1792541 Слушай, за два года в треде ты здесь первый с такой проблемой. Может у тебя в студии дефолтные настройки нестандартные. Попробуй медленно и аккуратно, осознавая сука каждое нажатие на кнопку, создать новый проект console С++ app. Если ты не тралль, конечно, в чем я уже начинаю сомневаться..
>>1792555 Да мне видимо судьба так и грит, обходи стороной кресты, блядь. В нулевых пытался в кресты, даже книгу купил 21 день и что бы вы думали? У меня самая первая программа не компилировалась, хеловорд из книги, знаете почему? Потому что пидор издатель опечатался. Блядь, в самой первой программе, в хеловорде, опечатался.
>>1792593 Как от нее избавиться? Я хз, создал новый соснольный проект, я в душе не ибу, почему не работают кресты как надо? На чем ты пишешь, хуй с ней, с студией, поставлю другую парашу тогда
>>1792594 На работе пишу в VS code - но там надо изрядно поебаться с настройкой. Маленькие проекты пинаю в codeblocks, но по СОВЕРШЕННО СЛУЧАЙНОМУ совпадению, сейчас версия под win10 немного сломана.
CodeLite например для хелло ворлда лучше студии (для всего остального - нет)
>>1792592 Открой ту книжку которую ты купил в нулевых и прочитай блджад как заинклюдить хедер. И ещё раз, ты пишешь не на крестах, а на дотнетовской крестожабной абберации под названием C++ with managed extensions. Адекватным компилятором вроде вижуал си++ то что ты кидал никогда бы даже не скомпилилось
>>1792617 >>1792624 Спасибо,увидело вроде, но все равно срет мусором Я уже заебался, конечно, но пойду до конца. Как, блядь, в этом вашем цплюсплюс другим компилятором собирать?
Сказал человеку - выложи в ideone, подскажу, где у тебя ошибка. Он продолжает срать скринами среды разработки зачем-то, при этом ругаясь на язык. Просто невероятно.
>>1792592 Какой же ты тупой нахуй, это просто пиздец. С++ это явно не твое, раз ты в элементарных вещах не можешь разобраться, я просто хуею с таких даунов. Тебе максимум фронтэнд-макакингом заниматься, аутяра, и то я сомневаюсь, что у тебя получится.
>>1792686 >студия компилирует хуй пойми чем >ряяя, ты тупой, кресты не для тебя Я чо, студию эту разрабатывал, на хуй, что ли? Я тут при чем вообще, блядь?
>>1792665 >открой установщик студии и удали оттуда рабочую нагрузку .net А на нормальном языке программирования шарпе я смогу потом писать? в 2015 студии нет инсталлера, кстати
>>1792721 А зачем мне это делать? Любители крестов так развлекаются или чего? Почему в нормальном языке программирования я открыл студию, создал проект, написал код, нажал ф5 и все работает? Почему, блядь, я тебя спрашиваю? Почему пердолиться не надо, блядь? А просто открыл и пишешь код, потом нажал кнопку и все скомпилировалось. Почему, блядь, здесь пердоля на пердоле и костыли какие то?
>>1792783 Что это и как накатить? Алсо, можно ли там сделать, чтобы содержимое переменных показывалось? И чтобы брейкпоинты запоминались. А то в gdb неудобно всё это.
Если я немного поковыряю Qt, это баффнет на собеседовании или лучше потратить больше времени на обмазывание алгоритмами / паттернами / устройством системы? Что вообще на собесе по плюсам котируется?
>>1793557 Лол. Я вспомнил еблана, который писал на шарпе и подумал, что имеется ввиду полегче в плане работы с ней. Типо не надо настраивать. Ну vs конечно тяжелая для компа.
>>1793207 >Поставь обычную вижуал студию, нахера тебе код. Анон выше вон поставил обычную вижуал студию и у него код компилятор хуй знает на каком языке собирает, лол
>>1793974 Если ты не умеешь пользоваться инструментом, это не значит, что инструмент хуёвый. Это вполне может значить, что ты долбоёб. Иные и из вима не могут выйти.
Двачане, очень сильно понравились плюсы в своё время, но времени ими заняться не было от слова совсем... Сейчас появились 6 месяцев относительно свободных. Вопрос такой. За это время возможно найти работу в области c++ за еду? Если да то сколько заниматься и что делать чтобы точно получить оффер за это время? Вроде знаю синтаксис +- за исключением ебанутых конструкций с 20 указателями. Помогите пж. Спасибо за помощь заранее)
>>1794328 Так не работает, понимаешь? Нет никакого минимума Всё уникально и индивидуально Открываешь какую-нибудь копеечную джуновую вакансию на hh и смотришь. Если примерно о половине перечисленных требований ты можешь что-то рассказать на условном интервью - шлёшь резюмеху.
>>1794478 Когда никто не отвечает на вопросы уровня блин зачем ваши укозатели у мя в питоныче их нет и мне норм))) это наверное для тебя тоже значит что никто не понимает или не способен объяснить
>>1794757 Так он уже рабочий, просто некоторые фичи пока не реализовали, в 2021 уже точно допилят. По бенчмаркам уже даём пососать пиндоскому расту. И он простой как АК47, сразу видно что наш человек делал. По звёздам уже говно-Nim в два раза обогнали.
Около года назад начал читать "Принципы и практика с использованием С++" Страуструпа. Сечас дошёл до 12 главы и компилятор что-то ругается на графические библиотеки Graph.h и т.д.. Пишет, что <hash_map> устарел, define что-то там не работает, библиотеки вроде последнй версии. Так и должно быть или лучше поменять книгу?
>>1794861 Наоборот хорошо, потому что тип не всегда пишется. А так у тебя будет забор с типом/без. Объективно лучше чтоб имя везде было на первом месте, а опциональный тип после. Тут же за простоту борются, чтоб не писать однотипную лапшу перед каждой переменной. Можно как в питоне ебашить: > zalupa := "hui"
В универе начали изучать плюсы. Накидайте плез инфы по всяким темлейтам, умным указателям, лямбдам та и вообще всякой хуете, чтобы я ОХУЕЛ от мощи плюсов. Ну или хотя бы писал как на современном языке, а не как на си. Плюсы не знаю от слова совсем, знаю шарп, хаскель и писал хелловорлд на расте.
только ооп не кидайте, мы типа процедурное программирование изучаем
>>1794881 >Наоборот хорошо, потому что тип не всегда пишется. Пидорам со своим var руки бы на хуй пообрывал. Не всегда тип пишется только у пидорасов, которым при встрече всегда в ебало харкать надо
>>1794926 >темлейтам Пишешь функцию один раз, а пихать в нее можешь хоть чо и она обрабатывать будет одинаково, такой вот полиморфизм местный >лямбдам Чо, лямбды в шарпе не изучал что ли? То же самое все >указателям юзается чисто для скорости, чтобы напрямую можно было передать адрес, а не объект пихать целый >чтобы я ОХУЕЛ от мощи плюсов Ну как, охуел?
На связи аноний, у которого компилировалась хуй пойми каким компилятором и структура с мусором передавалась. В общем плюнул сегодня и решил, семь бед - один ответ. Снес к хуям студию и накатил заново. Все заработало, как часы. >ряяяя, ты тупой, руки кривые, долбоеб, выкатывайся из крестов это не для тебя Ссу в ваши самодовольные ебла и сру вам же в глотки
>>1794993 >структура с мусором передавалась. Не было такого. Ты объебался там, у тебя наверное copy-constructor не успел вызываться, так как ты на входе в функцию сидел.
>>1794994 Ты, глупый что ли? Я даже скрины постил, что бряк стоял на третьей строке функции, какой вход функции? И как же так вышло, что после переустановки, ровно тот же код заработал, как надо, то есть начал ругаться на for each компилятор и когда на for ( хуй : хуи) заменил, то все скомпилировалось, но передавалась в функцию уже нормальная структура, ведь бряк то я ровно в том же месте ставил
>>1794999 >ровно тот же код >до этого не ругался на for each, то есть использовался другой компилятор для другого языка >начал ругаться, то есть используется другой компилятор >ровно тот же код
Пошёл нахуй, дегенерат. Переустанови ещё пару раз.
>>1795001 Блядь, какой же ты тупой. Бряк стоял на строке с for each, то есть до того, как еще он выполнялся, так какое значение имеет for each там был в функции или hui pizda? Проект, блядь, один и тот же. Хули тебе не ясно? Просто до этого не ругалось, а после переустановки начало ругаться, как полагается. Я тут при чем, блядь? Если я проект создавал пустой крестовый. Ты можешь сколько угодно тут умничать и щеки надувать, но факт остается фактом, заработало после переустановки, то есть там у майков чего то поломалось, а не я не туда тыкал, не там бряк ставил, не так код писал.
>>1795012 >Проект, блядь, один и тот же. Представь себе, но проект был ровно тот же самым, что и вчера, без единого изменения. И вот я сегодня переставил студию и о чудо, он перестал компилироваться. Но тупой я конечно, кто же еще
>>1795017 Как же вы заебали с вопросом СКОЛЬКО НАДО ВКАТИТЬСЯ. Столько, сколько ты готов задрачивать. Кто-то вкатывается за полгода, кто-то за полтора, большая часть - никогда. Все зависит только блядь от тебя, и сколько времени ты реально пишешь код дома.
>>1795026 Мы - вкатыши 21 века, привыкай. А если серьёзно то это какую-то мотивацию придаёт. Мне вот программирование само по себе доставляет, а при том что я учу язык на котором в будущем смогу исполнить вообще всё что за хочу ещё лучше. Но вот кулстори от челиков которые вкатились за полгода на норм зп тоже нихуёвый буст дают.
>>1795034 > Вкатыши настолько доебали? Да. Это как если бы каждый день спрашивали бы как устроится на завод. Работа хоть и черновая, но кодеров много и можно выбирать.
>>1794990 >Пишешь функцию один раз, а пихать в нее можешь хоть чо и она обрабатывать будет одинаково, такой вот полиморфизм местный Я знаю что такое дженерики. Слыхал, что в плюсах это не просто дженерики, а целый мать его, тьюринг полный язык, на котором даже калькуляторы писали. >юзается чисто для скорости, чтобы напрямую можно было передать адрес, а не объект пихать целый Да ладно, в 99% языков обьекты передаются по ссылке, так как так намного быстрее. Но вы же не юзаете сырые указатели, как в си? Должен же быть способ, подобный растовскому?
>>1795022 Ой да кому ты пиздишь. Присылают мне пулреквесты всякие джуники и в слаку пишут, мол, там чуть-чуть правок. А на деле как-то умудряются залезть в файлы в отдельном проекте и там что-то поменять. На вопрос почему ответ один - ой, я не заметил
Двачане, появился варик учить плюсы и подрабатывать одновременно на unreal engine. Имеет ли это смысл и поможет ли это выучить cpp или просто трата времени и от cpp там ничего не осталось?
>>1795144 Что есть перекат? Если у тебя будет опыт войны c UE4 - то ты сможешь найти другую работу, и если постараешься и задрочишь темы к собесу - то без проблем перекатишься. Да и опыт в резюме будет какой-никакой, хоть как-то релевантный.
Касательно самой работы - я сомневаюсь, что ты будешь трогать С++, делая игру.
>>1795050 >тьюринг полный язык, на котором даже калькуляторы писали. Тебе правда надо язык в языке? К чему? Калькуляторы на чем только не писали, нахуя тебе это? >Да ладно, в 99% языков обьекты передаются по ссылке А здесь по указателю. Ну еще для динамических массивов используются указатели.
>>1795120 >А на деле как-то умудряются залезть в файлы в отдельном проекте и там что-то поменять. На вопрос почему ответ один - ой, я не заметил И при чем тут я? Там .h файл один, который я в проект новосозданный добавил и вызвал один из его методов. Куда там чо я залез и поменял по твоему?
>>1794625 >>Почему в адрес С++ произнесены тонны слов ненависти? Потому что зайди в JS тред. Они основных понятий своего языка не знают. А от слова байт теряют сознание.
Сейчас и правда слой программистов как людей фундаментально понимающих то в чем они работают - очень маленький. В основе все - операторы фреймворков, и оснавная их цель - формочки пердолить на реакте/ангуларе. мимо-пхп макака
Имхо он намного проще современных языков переполненных сахарком, где только этот сахар изучить - надо дохуя времени, а без его знания не сможешь читать чужой код примеров
Я с 12 лет начал изучать С++. Вообще освоил его по книге С++ за 21 день (которую дочитал до середины, дальше уже и так все понял). Работал фрилансом.
>>1795290 Какой байт сука что ты несёшь. Какие нахуй формочки на ангуляре? А то что в великом крестотреде большая часть населения вряд-ли даже справится с переводом десимала в хекс на бумажке тебя не смущает? В любом треде одни дауны, не важно какой язык в названии.
>>1795313 более чем уверен, что ты педалил код на уровне laba1.cpp
Вкатишься в template metaprogramming - тогда поговорим. И это еще без учета того, что разрабатывая на плюсах, ты должен думать о безопасности, иначе твой код нагнут раком на второй день после релиза, а это требует отдельных знаний.
>>1795331 >десимала в хекс Ты явно недооцениваешь здешний контингент. Я говорю про норм анонов, а не вкатунов, которые только вчера услышали о программировании.
>>1775527 (OP) Что стоит прочесть по многопоточке? А то уже не джун, но большой пробел в этой области, только универские знания. Также реквестую литературу по профилированию памяти. С меня как обычно
есть проект, делал в clion полгода назад, сейчас пробую его открыть и cmake файл не подхватывается чет, как безболезненно восстановить работаспособность я нихуя не помню шо тут с вашими плюсами делать надо, проект по сути 10 файлов классов с заголовками, и вроде там какая то ебота с параметрами компиляции была- чет дописывал
>>1795545 Ну после эпичного, когда они в JS тред обсуждали нужно ли понимать среднем разрабу оператору фреймворка как в JS работают замыкания и лексические окружения я думаю сложно уже что то иное ждать. Ты заходя туда по дефолту в потоке говна. Там естественно есть грамотные товарищи, но в потоке лололоканья их не видно.
>>1795614 Да ты наш тред-то почитай. Первую половину объясняли одному полуёбку почему индекс в опенжль это инт, потом второму настраивали студию всем двачем. И каждые 50 постов кто-то спрашивает как вкатиться.
Добрый вечер уважаемые. Дочитываю сабж. Судя по тому, как форсят высеры этого эксперта в профессиональной айти-среде,собственно назревает вопрос: А действительно 99% разработчиков настолько тупые животные, что азбучные истины надо разжевывать на протяжении 3-х именно столько его книг я прочел книг? Или обычный средний инженер-механик со средним стажем как я лучше подготовлен? Охуеть, оказывается большие проекты надо разделять на маленькие, продумывать интерфейсы, отделять движущиеся склонные измениться детали от неподвижных неизменяемых при помощи интерфейсов. НУ КТО БЫ МОГ ПОДУМАТЬ?! CLEAN ARCHITECTURE!
>>1795739 >>1795740 Ого, а у меня оказывается АРХИТЕКТУРНОЕ МЫШЛЕНИЕ! Пипец блядь. Недавно смотрел видос с Даном Саксом на CPPCON, где речь шла о том, что думающие люди не хотят облизываясь жрать новомодное говно, которое вываливает на них комитет. И, внезапно, он приходит к мысли, что одна из причин этого - что в серьезном программировании засилье инженеров а не программистов. Да что ты говоришь?! Не может быть, блядь. Причем в свой спич вставил свои фотки с Обамой - что это за днище блядское? При чем здесь вообще Обама? Это у них круто считается? Мол как я авторитет? Что вообще происходит? Шизоиды одни. Александреску один пока как утес над морем говна.
>>1795751 и еще учитывай, что обычно шлепают слои говна на слои говна, и получается копролит. Времени на вменямый рефакторинг не дают.
Я как-то 3 недели сидел и рефакторил говнокод (спасибо шефу за это) - в итоге код стал в разы более приятным и читаемым. Да, бизнес ценности +- нуль, зато все программисты стали счастливы.
>>1795755 Ты красавчик, вот реально уважаю таких. Это называется профессионализм. Неприятие говна становится твоей натурой.
Бизнес ценность в том, что легко вносить изменения.
Недавно полностью перепроектировал агрегат, где всего-то надо было заменить материал одной детали. Агрегат спроектирован как монолит, то есть надо разбирать весь. Деталь заменена на алюминевую, но засада в том, что была стальной и выдерживала серьезные нагрузки. А это значит, надо увеличивать размер. Но так как конструкция не модульная, то и заменять надо полностью все. В результате сконструировали 10 модулей, соединяющихся через "интерфейсы". Минус - деталей больше. Плюс - все модули можно пилить параллельно, и заменять по удаленке. Это если вкратце, на деле есть еще промежуточные модули, чтобы использовать и в старых агрегатах, которые уже куплены.
Почему так изначально не сделали - загадка. Тем более что стандарты интерфейсов известны с 50-х годов, например на пиках. Но инженеры во-время спохватились. А если бы были программисты, хуй знает чем бы закончилось.
>>1795522 > Что стоит прочесть по многопоточке? Да чё там читать, пока свои шишки не набьёшь - не разберёшься. > Также реквестую литературу по профилированию памяти. vcperf > С меня как обычно С тебя как обычно
>>1795522 >Что стоит прочесть по многопоточке Если пользовался мьютексом с семафором, то всякие бложеки про модели памяти в плюсах и затем Concurrency in Action. Если нет - у Таненбаума в книге про оси говорят норм написано про них и стандартные задачи типа producer-consumer
>>1795755 > Я как-то 3 недели сидел и рефакторил говнокод (спасибо шефу за это) - в итоге код стал в разы более приятным и читаемым. Никогда этого не понимал. Сколько работаю всегда было похуй на красоту кода. Главное сделать побыстрее и потребовать зп побольше, на остальное поебать.
>>1795888 Просто ты не работал с долгосрочными проектами.
Сэкономленная сейчас минута в будущем потратит в десять раз больше времени: - либо придется как-то присобачивать новый костыль среди других костылей, и потратить овердохуя времени на то чтобы оно работало и не сломало старые костыли - либо все равно придется рефакторить
Я на днях лечил один баг уровня "в полнолуние, в пять утра, при определенном уровне звезд и движении ветра оно пишет туда формулу призыва ктулху". Полгода от бага страдали. Нашел. Баг оказался всего в одной функции написанной еще двадцать лет назад методом лишь бы работало. И двадцать лет все работало.
Но год назад немножко изменили формат данных, и при некоторых данных эта функция тупо ломалась. Вся проблема была в том что в функции год читался из входящей строки, по последним символам (вместо того чтобы нормально сделать парсер даты, тупо брали два последних символа строки). В те времена в строку даты не входило время. А когда формат меняли под новые требования (добавить туда еще и время), уже давно забыли что там и как 20 лет назад принималось. Поэтому, хотя большинство случаев всеже отсеивались на более высоких уровнях парсера строки (строка проходит много уровней где от нее отгрызаются куски), всеже парочка случаев доходила до этой функции и он вместо года брал то что было в последних символах - то есть секунду.
Так что всеже лучше либо сразу писать хорошо (если есть нормальное TD и хороший лид), либо рефакторить как можно быстрее не запуская
>>1796190 >вместо того чтобы нормально сделать парсер даты, тупо брали два последних символа строки Например как ты спарсить предлагаешь? 212022080115вав45203072220 На, вот строка тебе, парси хули, что последние джва символа это год
Труп страуса какой-то левый в этой компании, похоже, больше как популяризатор языка. Его базар не производит впечатление работы над реальными проектами. И книги галимые по сравнению с Пратой.
>>1796736 А ты подумай. Строка которую ты привел - это мусор, такой мусор отсеется раньше.
В той функции были правильные методы извлечения даты и месяца, но разрабу ее писавшему было лень доделывать код, поэтому он решил что в шестизначной входящей строке, если 4 символа - это день и месяц, то оставшиеся - это год.
Проверки на длину строки там тоже не было, поэтому оно спокойно пропустило строку, в которой было уже не 6 символов, а 12.
Расскажите в какой момент стоит начинать раскидывать код программы на разные сорс файлы а когда можно обойтись тупо отдельными функциями? Где эта грань?
>>1797313 У меня обычный .cpp файл занимает от 50 до 500 строк. Обычно 1 класс (и, возможно, несколько вспомогательных классов и структур) в хедере и его имплементация в самом .cpp.