Какие же системные языки говно, просто пиздец. Только на Си приятно писать, но область применения этого языка очень мала, точнее своеобразность использования. И что остается? Плюсы, раст, zig. Первый - древний говнокомбайн, который не выучить за всю жизнь, но зато можно найти работу на легаси. Второй - получше, но не имеет спецификаций и стандартов, поэтому для серьезного бизнеса не подходит. С появлением последних можно хоронить плюсы. Третий - неплохой ноунейм ЯП, который пилят 1.5 калеки. Так и живем в говне, приходится страдать
>>2397338 Ага, а как же тот самый метод, который однажды пригодится, но ты его не знаешь? Алсо, бОльшая часть готового кода как раз на старом говне и написано. А новые проекты на плюсах почти никто не начинает.
>>2397340 > Ага, а как же тот самый метод, который однажды пригодится, но ты его не знаешь? Открываешь документацию и узнаешь блять. > А новые проекты на плюсах почти никто не начинает. Будто на шарпе пишут. Это не кресты умирают, а десктоп и системщина. Сейчас всем вебдрисню подавай.
>>2397331 > неплохой ноунейм ЯП Только в фантазиях прыщечмох. Уже 3 года прошло, а там всё ещё пре-альфа, на которой невозможно нихуя написать не столкнувшись с багами компилятора, даже D лучше и стабильнее. А ещё куча ебанутых решений. У автора этого говна, кстати, опенсорс головного мозга, он там настоящую борьбу ведёт против злых проприетарных корпораций. Выглядит нелепо и результат как у всех опенсорс-фанатиков.
>>2397475 Причина подрыва? Я просто сказал о фактическом положении дел с этим говном. 2к issues и каждое второе - баг компилятора, каждое сотое - мисскомпиляция. Как было на первых версиях, так же и сейчас - новые фичи добавляют, а качество реализации всё такое же нулевое с бесконечным потом багов. Причём пердолики обещают какую-то безопасность, но по факту как всегда пиздят, я помню в начале пиздели про отсутствие UB, но теперь его официально добавили.
О чем вы тут спорите, если Free Pascal с Lazarus дает пососать всем пердовысерам вместе взятым, начиная с раста от гугла с мозиллой и заканчивая васянками от одного соевого пердуна. Конкуренты плюсов, лол, рарзе что конкуренты крыс на помойке.
Сап анон. В последнее время в проектах угораю по шаблонным классам. И вот возник такой вопрос: как по-красивому описать методы шаблонного класса, которые имеют мои названия, а не operator()(const Foo& foo)? Использовать наследование от интерфейса, или забить пиписку, всё описывать в документации и ждать ощибок компилятора?
/ шаблонный параметр A обязан иметь метод void func() / template<class A> Math { / вычисления по указанному алгоритму / void calc() { A::func(); } }
Конкретно для этого примера правильно использовать функтор в классах Algo1 и Algo2, но когда в каждом Algo по два и более метода, то уже хз как правильно, функтор то один на класс может быть.
По ощущениям, для Algo1 и Algo2 хочется унаследовать от какого-то интерфейса типа
struct IAlgo { virtual static func() = 0; }
но это 1) динамическая дедовская пидорасня и 2) virtual static запрещен. Предполагаю, что в C++ есть некий механизм проверки полей типа static_cast<>, который будет в Math, но я этого не знаю.
>>2397636 > Не все Это какие? Нахуй ты используешь компилятор пятилетней давности? Не хочешь использовать нормальный компилятор - ебись сам как хочешь.
Итак появился небольшой прогресс в сборке HelloWorld для Линукса. Насколько я понял, я пользовался до этого не тем компилятором, у меня какой то bare-metal был, а надо было прямо под линукс скачивать. Так вот, теперь я могу по идее компилировать под Linux, но теперь мне выдает ошибку при запуске исполняемого фаила на Linux, что ненайдена библиотека GLIBC_2.34. Компилятор собирает под библиотеку 2.34, а на orange pi установлена библиотека 2.31. Что мне делать и как? Обновить на линуксе библиотеку? Или как то сказать компилятору что бы под 2.31 компилировал?
>>2397844 Только что кстати собрал, ура! Добавил ключ -static при компиляции, и как я понял он библиотеку libc.so.6 в исполняемый фаил засовывает, ну ниче, зато работает. Подумаешь HelloWorld 11 мегабайт весит. А что если попробовать скинуть библиотеку с orange Pi и заменить ее у компилятора. Тогда может он будет под нужную версию компилировать
Анон, а что ты думаешь про JIT в c++? Пример: есть сервис, крутится себе там неделю, ещё какой-нибудь матанчик делает. Хуякс, новые данные, настройки, перекомпилируется функция с новыми константами, и матан считает уже с новыми данными также хорошо и быстро.
Сейчас для этого, похоже, все есть. Современный C++ имеет явно функциональный уклон, да и темплейты являются важной частью языка. Компайл-тайм оптимизация считается наиболее желанной, и язык ориентирован на это. В линуксах есть нехитрый способ подгрзузки в рантайме дллки. Компилятор типа цланга может быть частью проекта. Сборщики типа cmake тоже могут как-то подготовить сборку к таким фокусам
>>2397954 И компилятор такой: Так, падажжи ёбана. Делаю инклуды, разворачиваю макросы, делаю шаблонную подстановку, разворачиваю <...> и элипсисы, вот тута вот не минимально по включению, а вот тут вот зависимости надо внешние прилинковать. Чё-то не выходит JIT - кидаю эксепшен во время обработки эксепшена. Тем временем спутник теряет управление и падает нахуй на марс, открывая портал в ад.
>>2398005 Ну мне иногда страшно, вдруг уволят потому что я так медленно все делаю и всему учусь так медленно, но не увольняют, а даже зп повышают потихоньку. Может я тут и нужен что бы я сам сидел и обучался. И все равно тревога у меня, вдруг мой начальник узнает насколько же я еще мало всего знаю. Надо С++ знать, и тогда сможешь устроиться
>>2398036 Опять трёхэтажная std::zlp_gvn::zalupa_govna<is_ochka>(sosi.begin(), sosi.end(), std::borschehleb<std::ebaniy>) вместо ламового array.join(","). Ну чё за хуйня?
Вообще мне порой интересно узнать, как крупные системы работают типа поисковика Гугла. Что это, один сервак с микросервисами? Почему бы одному из сервисов не быть перекомпилируемой говной с автопрогоном юнит-тестов?
>>2398165 я чёто мельком видел в интерете, что якобы он для строк не подходит, но походу в 20 уже всё норм и там не будет лишних копирований строк, да чёто затупил
Есть один с++11. И есть классические битфилды. (struct msb { bit0: 1; bit1: 1; bit2: 1; ...)
Что я хочу. Обертку чтобы писать int i = msb.bit(1); msb.bit(2) = 1; msb.bit(4) = 1; И чтобы при этом все соптимизировалось компилером в i = msb.bit1; msb.bit2 = 1; Ну и в идеале в компайлтайме в msb = 0b1010;
>>2398417 хахах, ну мне это надо, я должен был узнать каким образом писать программы под orange pi, осталось решить проблему с glibc и понять как добавить в qt компилятор что бы он там работал
>>2398069 >Почему бы одному из сервисов не быть перекомпилируемой говной с автопрогоном юнит-тестов? Чтобы пользователи 2 дня смотрели на сообщение "извините проводятся технические работы", пока это все собирается?
>>2397811 >Что мне делать и как? 1. Установи нужную версию на целевой машине. 2. Статическая линковка. 3. Откажись от библиотек и пиши через системный вызов. Из мюслей код можешь спиздить. Выбирай любой вариант.
>>2398456 Статическую линкову я тут применил >>2397847 Мне вот в идеале нравится версия с принуждением компилятора к сборке нужной мне версии библиотеки. Пока не знаю как это сделать, надо скачать либо готовую библиотеку нужной версии, либо собрать самому, а это опять морока. Все равно наверное мне придется ставить на Orange Pi новую систему с графическим интерфейсом, так как сейчас у меня просто консоль, за одно и GLIBC обновится
У меня появилась просто гениальная идея! Новый язык с++2.0, который будет компилиться сразу в плюсы
Какие фичи минимально нужны: 1) Вместе темплейтов дженерики, с нормальной системой концептов 2) Статическая рефлексия 3) Вместо дефайнов крутые макросы можно прям как в у раста спиздить 4) Возможность использовать с++ код в с++2.0 ...
Такое сможет заменить плюсы? думаю диплом по такой штуке написать, но если без шуток, насколько мертворожденная идея?
Я хочу преобразовать массив optionalов в массив обычных значений. Чому пикрил https://godbolt.org/z/956z41Tdo код не работает? Это из-за каких-то ограничений mem_fn или я что-то неправильно делаю?
Если заменить на закомментированную лямбду, то работает, но с mem_fn меньше символов печатать
Почему operator[] для rvalue контейнеров возвращает lvalue ссылку? Разве не логичнее было бы, чтобы из operator[] возвращалась rvalue ссылка в этом случае?
>>2400302 Ты вообще понимаешь о чём пишешь? Где логика? Если возвращать rvalue, то ты с этой ссылкой ничего сделать не сможешь. Алсо && - это не rvalue ссылка, шиз.
>>2400487 Не работать кодером, очевидно же. ИТ не только из кодеров состоит. Никто не мешает тебе вкатываться в ИТ без кодинга и получать столько же. Верхняя планка может и доступна только кодерам, но кресты далеко не самый высокооплачиваемый язык, так что 150к можно даже в техподдержке найти, не говоря уже про что-то получше.
Сап, аноны. Имеется некий проект на Qt. Можете порекомендовать чего-нибудь почитать на предмет подходов к организации кода, работающего с БД? Суть вот в чём: в текущем рабочем проекте имеется специальный класс, который работает с БД -- подключается к ней, создаёт таблицы при первом запуске, получает запросы на помещение/извлечение данных и всякое в таком духе.
В проекте есть группа структур с общим интерфейсом и многие вещи с ними делаются через виртуальные функции интерфейса, переопределённые в наследниках. И вот вроде бы просится ебануть в этот интерфейс ещё и функции записи/извлечения структур из БД, чтобы каждая структура могла себя записать/считать из БД.
Но. Непонятно, как тогда быть с созданием таблиц. Структура должна сама себе таблицу создавать (поскольку она знает, чего ей хранить надо) или же таблицу создавать классом работы с БД, а структуре говорит, мол, клади себя сюда.
Вроде бы логично структуре самой создать таблицу. Но тогда возникает вопрос, как быть с внешними ключами, у меня часть таблиц ими связана, чтобы при удалении некоторых записей (а-ля удаление юзера, устройства), всё связанно с ними вычищалось. Структура, естественно, ни о каких внешних ключах знать не знает и знать не должна, по идее, не её ума это дело.
>>2400302 Потому что operator[] возвращает референс, а если у функции в качестве return value референс, то это lvalue. Ты сам себе стреляешь в ногу таким кодом. Можно много подобных ситуаций воспроизвести специально, но это не минус языка, а его незнание
>>2400757 Ну смотри, у rvalue и lvalue нет какого то определенного типа Любой тип может быть как rvalue, так и lvalue Всё что ты можешь с ними делать - это попытаться принять в функцию как аргумент
Причем, для того чтобы параметр сматчился в rvalue - в плюсах есть магия как &&, то есть, T&& - будет матчить все rvalue of type T если Т не темплейт параметр, иначе же будет матчить всё Причем, как только ты значение засовыеваешь в T&&, оно перестаёт быть rvalue
Краткий итог: - Ты не можешь сказать в С++ чтобы функция у тебя возвращала rvalue или lvalue, ты их можешь только принимать в функции - Если переменная имеет видT&& еще не значит что это rvalue (только если как параметр функции и T не темплейт параметр)
>>2400757 Что значит нельзя? На пике ты это и делаешь. Rvalue ref как return type в функциях считается rvalue. Но lvalue ref считается lvalue. То есть с lvalue ref можно сделать foo() = 5; А с rvalue ref так нельзя, ибо он будет считаться rvalue, а rvalue is not assignable. На пике у тебя вызывается ведь перегрузка с rvalue ref - все работает как ты и хотел. Имплементация operator[] в std::array возвращает lvalue ref на элемент. Хочешь, можешь написать свою имплементацию array с оператором, который возвращает rvalue ref. Но зачем? Либо можешь просто std::move использовать для случая в первом твоем пикриле.
Пришла пора мне выкатываться из фронтенда. Стал думать, чем бы таким заняться и обнаружил, что я оказывается последние 2 года игрался с плюсами и его либами. Короче говоря завтра начну спамить резюме, пожелайте удачи.
>>2400407 > Не это другое Концепт тот же, куте так реализует статическую и динамическую рефлексию Я к чему пример привел - много кто делал кодогенераторы для плюсов, просто они либо проприетарные либо простые как qt MOC Вообще, для кодогенерации лучше использовать си или llvm на худой конец, так делают zig, jai, nim вроде
>>2400536 Учитывая мощность qt рефлексии, я бы кастомную орм запилил - она бы создавала таблички и по инфе от классов прокидывала связи и генерировала методы чтения/записи Но это нетривиальная работа, да и новое колесо по сути
Хочу настроить cmake для github actions. Не могу подключить буст. Причем локально у меня все работает, на ubuntu в гитхабе собирается, а на msvc нет, хотя локально на msvc все ок. В cmake написано find_package(Boost COMPONENTS system) include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) В гитхабе с помощью vcpkg установил boost командой vcpkg install boost-asio:x64-windows При сборке ошибка длинная -- Could NOT find Boost (missing: Boost_INCLUDE_DIR system) Build with MSVC -- Configuring done CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: Boost_INCLUDE_DIR (ADVANCED) used as include directory in directory D:/a/i2p_sam/i2p_sam CMake Error in CMakeLists.txt: Found relative path while evaluating include directories of "ZERO_CHECK": "Boost_INCLUDE_DIR-NOTFOUND" CMake Error in CMakeLists.txt: Found relative path while evaluating include directories of "ZERO_CHECK": "Boost_INCLUDE_DIR-NOTFOUND" CMake Error in CMakeLists.txt: Found relative path while evaluating include directories of "ZERO_CHECK": "Boost_INCLUDE_DIR-NOTFOUND" и там еще дальше подобное. Я сначала думал, что я может установил boost x64, а компилирую для x86, но нет, вроде компилятор x64 запускается.
Я не знаю пока что в чем проблема. Помогите, пожалуйста
>>2401846 Справа от функции - это cv-qualifiers и reference-qualifiers. Они ограничивают, над какими объектами можно вызывать эту функцию (только над const, только над rvalue, и тд).
>>2402253 В крестах нет того, что в других языках называют рефлексией, соответственно, ни на каких примерах и аналогиях ты не поймёшь, что это такое. Ближе всего к рефлексии RTTI.
>>2402253 Посмотри на систему метаобьектов в qt. Вкратце, ты в рантайме можешь получить информацию о классе объекта - какие есть методы, конструкторы, енумы и т.д., можно узнать кто вызывает метод и всякое такое.
>>2402253 Рефлексия это понятие у скриптов, которые в рантайме интерпретируются машиной, поэтому машина-интерпретатор в рантайме имеет информацию о кодовых объектах этого скриптового языка.
С++ же это компилируемый язык. После компиляции получаются, и на самом деле выполняются - машинные коды, а у машинных кодов нет никаких объектов языка С++, это вообще не язык, точнее это хардварный язык процессора, соответственно никакой информации о С++ там нет и быть не может, потому что кода С++ уже давно нет, он есть только у тебя в текстовом редакторе кода, не дальше.
>>2402405 Это бессмысленная приблуда сбоку, которая только будет раздувать программу и тормозить. Конечно, С++ это нативный язык железа, поэтому при желании из него можно вылепить и подобие динамического скрипта. НО ЗАЧЕМ? Нужен скрипт - пользуйся скриптами, полно этих языков. А компилируемый язык нужен для нативного кода, собранных машинных инструкций, чтобы код работал сам по себе, без сраных машин управления сбоку.
Как мне найти библиотеки для запуска моих прошлых проектов в говне под названием Qt5 вида: Qt5Cored, Qt5Guid и ещё 100500 файлов? Устанавливать это дерьмо ради библиотеки не хочу.
>>2402435 Да, я зря проигнорировал, что хоть рефлексии нет в рантайме, но она есть во время компиляции. Но это ограниченая фича, похоже очередной костыль для темплейтов или вроде того. Ну имеет кое-какое применение, но не широкое, и даже если такое абузить вместо кода будут помои.
>>2402773 Ну тут я согласен, если нужна рефлексия, скорее всего ты накостылиль какую то хрень, хрен знает чем тут гордятся шарписты... Я использовал только раз и до сих пор стыдно за тот Новгород.
У меня есть n штук массивов размера m. Использую библиотеку Eigen. Задаю матрицу n X m: //допустим, m = 5
Eigen::MatrixXd N(n, m);
for (int i = 0; i < n; ++i) N.row(i) << a[0] << a[1] << a[2] << a[3] << a[4];
Если m заранее не известно, то можно сделать вложенный цикл. А можно целиком присвоить a для N.row(i)? Как это сделать? Ни в мануале, ни на стэковерфлоу этого нет.
>>2403707 Опять же, если верить докам, то есть отображение Map. Map<Eigen::RowVectorXd> vec(a, length); И возможно потом что-то типа N.row(i) = vec.row(0)
>>2403790 >В нормальных языках есть функциональщина и можно через точку вызывать map, В крестах это называется transform, и он был уже в первом стандарте, но возможно твой Эйген его не поддерживает.
>>2404365 С дотнета 7 уже сразу в машинный код может компилироваться, а IL останется для кроссплатформенности. Тот же юнити уже давно умеет IL в крестовый код конвертить и компилировать.
Пикрил из вашего гитхаба - правильно и разумно, очень нравится подход.
Но
>Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Это вот не верно. Лучше сразу узнать про потоки, типы данных, память, функции и их значения и прочее, чтобы писать более грамотно на иных языках в том числе, а не быдлокод.
Алгоритмы и вовсе учить до программирования первых приложений - путь в никуда и способ отбить весь интерес. Кому интересно рисовать "сортировку пузырьком" 4 часа, не зная про циклы? Переписывайте лучше.
>>2404851 >А как же программирование микроконтроллеров? Выучив c++ и деграднуть до c, освоив несколько библиотек - лучший язык для широкого охвата: Можешь писать десктоп приложения, программировать микроконтроллеры, писать модули ядра линукса.
>>2404851 Микроконтроллеры нишевые, а не массового применения. Маркетологи могут хоть тысячу раз произнести 'IoT', суть от этого не изменится. Смузихлёбы кста пишут прошивки на петухоне
>>2404854 >Микроконтроллеры нишевые, а не массового применения. Так в этом же и фишка, чем уже ниша, тем выше спрос, а значит и больше денег. Конечно, если речь не идет об очень узких нишах и редких вещах уровня хаскеля из трех человек.
Т.е. зная плюсы можно вкатиться в серьезный десктоп или в микроконтроллеры или в модули ядра или в инфбез.
>Смузихлёбы кста пишут прошивки на петухоне Соболезную
>>2404860 >вот только зарплату ты за них будешь получать скорее всего маминым борщом Не работаешь за борщ и шлешь быдло, как на гитхабе написано. Нужно уметь посылать к хуям быдло, пусть ищут себе миллиарды лет программиста тогда.
>>2404862 >чем уже ниша, тем выше спрос На специалиста имеется ввиду.
Пример 1: .в нише 10 человек и 1 гуру, нужно еще одного, а его нет. Пока остальные наращивают скилл, бизнес предложит любое бабло на рынке, чтобы спрос удовлетворить.
Пример 2: В нише 100 человек и 10 гуру. Нужен еще один и переманивают из других контор, т.к. они есть. Бизнес предлагает бабло, но рыночную стоимость в конкуренции этих десяти.
Чем уже ниша, но широкого охвата, тем больше вероятности поднять бабла.
Под бизнесом понимается бизнес, а не плановой экономики быдло нахрюк.
>>2404854 >Маркетологи могут хоть тысячу раз произнести 'IoT', суть от этого не изменится "IoT от маркетологов" это уровень развития "пузыря в айти" от эйчара-совкокабанчика. На это не ориентируется никто, но есть конторы даже малого бизнеса с собственными устройствами в нормальной стране. Вопросики?
У меня в результате некоторого аритмического выражения вычисляется битовый сдвиг влево lshift для числа x. Суть в том, что в случае, если lshift >= 0, то всё работает нормально. Но если lshift < 0, мне надо, чтобы сдвигалось на абсолютное значение lshift, но уже вправо. А вместо этого в результате отрицательного сдвига получается какой-то бред (видимо, сдвиг на отрицательное число - это UB). Есть ли какой-то оператор, который сдвигает как надо: при положительном левом сдвиге сдвигает влево, при отрицательном левом сдвиге - сдвигает вправо? Или наоборот. Хотел бы сделать без условного оператора.
>>2404864 Вот только по сишке не так много хорошей работы в странах СНГ, да и ща рубежом не сказать что прям ярмарка. Я когда перешёл го, офигел от щепок и количества приглосов от хрюшек. Правда я там напиздел мальца и из 6 лет только год на году писал. Но типа в чем пофиг, если прошёл собес(на помидора) - велком. Конечно есть свои минусы, там прям надо знать конкретный стек технологии, всякую бэкхенд дичь, но это только по началу. Из минусов - через год будет ооочень скучно. Задачи везде +- похожие, Толе подходы могут отличаться. Разговорился с одним лидом, так у него прямо набор шаблонных решений заготовленной под всё случаи жизни. Он из тупо на новых работах и развертывает.
>>2404864 Вот только по сишке не так много хорошей работы в странах СНГ, да и ща рубежом не сказать что прям ярмарка. Я когда перешёл го, офигел от щепок и количества приглосов от хрюшек. Правда я там напиздел мальца и из 6 лет только год на году писал. Но типа в чем пофиг, если прошёл собес(на помидора) - велком. Конечно есть свои минусы, там прям надо знать конкретный стек технологии, всякую бэкхенд дичь, но это только по началу. Из минусов - через год будет ооочень скучно. Задачи везде +- похожие, Толе подходы могут отличаться. Разговорился с одним лидом, так у него прямо набор шаблонных решений заготовленной под всё случаи жизни. Он из тупо на новых работах и развертывает.
Работяги, что на крестах шлепаете? Есть успешные наносеки у которых ещё стоит? Я вот в зелёном банке работаю получаю свои козюли(почти 4) но чет вообще ничего не хочу и как-то грустно. Оказалось что физтех на плюсах - это поддержка какого-то старого говна(
Плюсы для средних проектов?
Аноним14/07/22 Чтв 09:03:09№2404958184
Какие "среднячковые" идеи проектов можно реализовать на плюсах?
С одной стороны плюсы это иногда язык с которым впервые знакомят перепуганных студентов заставляя их потом писать крестики нолики, тетрисы и морские бои.
С другой же стороны, плюсы идеальный язык для систем, движков, серверов и всего великого и могучего в этом мире. Но такие проекты пишуться огромными командами и хоть какой-то игровой движок и можно на коленке соорудить в одиночку, всё-равно это будет не самый полезный проект для реализации (вон Cherno кучу лет проработал с движками в больших компаниях, а свой собственный в одиночку уже который год пишет, да и то только потому что уже знает многие элементы которые нужно будет реализовать для полноценного движка).
И вот я столкнулся с проблемой что писать маленькую шелупонь мне больше не хочеться, а писать матёрые штуки вроде движков я пока просто не выдержу.
Короче как вы рождаете\рожали идеи для проектов которые можно будет понемногу писать, а потом со временем не будет стыдно их закинуть в портфолио?
>>2404958 Ну так начинай сразу делать большой проект мечты. Просто разбей его на максимальномелкие подзадачи, что бы они были >> маленькую шелупонь мне больше не хочеться Постепенно из нее у тебя и соберется проект. Вон иди пиши игру, или браузер, или что в голову вбредет.
>>2404958 >С другой же стороны, плюсы идеальный язык для систем, движков, серверов и всего великого и могучего в этом мире. Не. Плюсы это язык, попытавшийся смешать в себе низкоуровневость и высокоуровневость и проигравший. Типа объекты есть, но это недообъекты без инкапсуляции. А разгадка одна - нельзя сделать ооп в неуправляемом окружении, вот нельзя и всё тут, не бывает такого. К жопе вопросов нет, к питону вопросов нет, к си вопросов нет, к крестам - вопросы есть, но нет ответов. Но ты попиши что-нибудь, увидь это сам.
>>2404958 >Короче как вы рождаете\рожали идеи для проектов которые можно будет понемногу писать, а потом со временем не будет стыдно их закинуть в портфолио?
>>2404958 Я бы плюсы рассматривал как возможность создания платформы для своей интересной идеи. Вот есть у тебя прикольная идея с рендерингом например, пилишь её в качестве mwp, а потом либо дропаешь либо развиваешь. Примерно как этот чел описал >>2405048
>>2401188 >>2401086 В госпарашах четкое строго закрепленное штатное расписание, где у должности с название "программист" обязательно наличие технической вышки. Но я обходил это правило, устраиваясь на другую должность с меньшими требованиями, но выполняя по сути работу программиста.
>>2405079 >Так на сишке много или нет хорошей работы в снг, я не понял? Думаю, что в снг нет. Но если ты дойдешь до уровня гуру, то можно уехать, и вот тогда уже зарабатывать много денег в нишевом сегменте широкого охвата, лол.
Ну, допустим, абстрактный интел делает новое устройство и надо писать на нем модули ядра. Много ли интелов в снг? Их нет. Не в снг они есть, но нужно иметь прокаченный скилл, а не в машинки играть.
А вы когда-нибудь использовали на практике такое преимущество плюсов как возможность писать свою реализацию типов. Например свой string с другими правилами, подходящий под конкретную задачу.
>>2405097 > свой string с другими правилами, подходящий под конкретную задачу. Ты на пороге очень больной темы. Дело в том, что ВСЕ плюсовики хоть раз писали свои реализации строк.
>>2405130 При чем тут строка? Может мне нравятся array в другом языке или я хочу добавить функционала, а должен довольствоваться тем, что для наговнокодили макаки-содатели языка.
>>2405100 > в его случае больше раскрутки как дохуя гения, Он находил уязвимости в процессорах, имея скилл, исходя из самообразования, перенеся инсульт в детстве из-за отека мозга. Он точно гений.
>>2405124 >Это минус, а не плюс. Потому-что в других языках это нахуй не нужно писать самому Ну надо писать валидацию тогда, все равно надо писать в других языках что-то.
>>2405163 Это ты думаешь, что умеешь работать и пилить фичи. Я тоже так думал, а потом меня просто так обоссали на трех собесах подряд, что я понял что я вообще нихуя не знаю и не умею.
Вкатился еще через 4 месяца задротства после этого
Как мне быстро получить целое число по заданному количеству установленных битов справа? Допустим, если toc = 4, соответственно, мне нужно число 0xF (0b1111). Если toc = 2, то мне нужно 0x3 (0b11). Варианты, которые приходят на ум беспомощному джунишке: 1. массив заранее подготовленных значений для всех возможных toc; 2. устанавливать нужные биты в цикле. Будут ли более грамотные идеи у бывалых крестогоспод?
>>2405298 пишу реализацию класса string имею this.пик проблему, перегрузка конструктора выглядит так(полностью соответствует "учебнику", пробовал брать разные материалы, везде одна и та же ошибка): https://pastebin.com/WJWEKsJ1
пробовал инициализировать массив типа char (статический), и затем его отправить в объект класса - работает
>>2405397 Вместо того, чтобы переизобретать что-то что уже было сотню раз изобретено напиши простенькую консольную рпгшку. ООП учится за пару часов, чел.
>>2405411 разобрался сам - в перегруженном конструкторе класса, который я прикрепил не использовалось слово const в VS все строковые литералы преобразовывались к типу const char, а не просто char
>>2405423 других не наблюдаю, я скидывал на пастебин только часть кода, проблема была в том что компилятор преобразовывал стороку "Hello" в тип const char[], а в перегруженный конструктор принимал не константный массив типа char пока ещё не научился понимать сам такого рода ошибки(
>>2405461 вообще куска кода было достаточно для решения проблемы, я не хотел нагружать анона большой простынёй кода >Тебе говоришь: "покажи поля класса" нет, этого у меня не спрашивали, запрос на весь класс - был, но как уже писал выше (в этом же посте) - данная информация избыточно >а ты в ответ: "сложно, я не понимаю! язык говно!". язык как язык, такого, что ты мне приписываешь, я не писал
>>2405462 ну на вкус и цвет... (мне особо не с чем сравнивать - на моём уровне приходится есть то что дают)
>>2405470 Чушь. Использую буст в одной маленькой программе, компилится одинаково мгновенно, что и бустом что без него. И какие могут быть проблемы с линковкой? Берешь и используешь как любйю библиотеку.
>>2405626 Ничего. 1) Это одна из самых тупых операций. Там негде накосячить 2) В std не просто цикл копирования по байту, а еще и всякие оптимизации под конкретные архитектуры. Короче ты сам лучше не сделаешь
>>2405694 я понимаю что там идеальный код, проблема в том что я ничего не понял - не похоже на тот С++ с которым я познакомился на курсах вроде "С++ для идиотов"
>>2405690 Это ты еще сорцы STL от GCC не открывал. По стандарту, STL может использовать только символы "__name" и "_Name", там вся библиотека из-за этого нечитаема, как будто обфускатором прошлись.
Но с другой стороны я когда то копипастил код std::vector и его имплементация была вполне себе понятна.
>>2405701 Там наверняка куча говна ifdef связанного с small string optimization
>>2405701 Там очень много концепций слеплено: 1. Контейнеры и итераторы. 2. Кастомный менеджер памяти (_Alloc, allocator<>) 3. Кодировки unicode и ascii (char, wchar_t, _Traits). 4. Оптимизация (small string optimization) 5. Представление одной строки на основе другой (string_view, c++17) 6. ???
Всё обильно смазано шаблонами, макросами, условной компиляцией. Чтобы нормально читать STL сырцы, надо годик-другой покодить и книжки полистать.
>>2405626 >Есть ли что быстрее memcpy? Ничего, обычно это интринсик, т.е. компилятор даже вызова функции не производит, тупо несколько ассемблерных кодов.
>>2405465 Посмотри реализацию Metaparse, например. Да вообще любого из модулей. >>2405486 Помню использовал Program Options и еще что-то по мелочи. Скорость компиляции падала в разы. Буст это какая-то ебическая химера, дитя бюрократии и оверинжиниринга. Единственное оправдание её использования это когда надо хуяк-хуяк и в продакшн. Это также касается Qt и либ от гугла.
>>2405855 >Буст это какая-то ебическая химера У тебя в башке ебическая химера. Буст это сборник библиотек. Просто много библиотек в одном комплекте, вот они и занимают много, но это и естественно, ведь их много. Но никто не заставляет их использовать сразу все, дебил. Испольщзуешь только те либы буста, которые тебе нужны, вот и всё. Надо быть совсем наглухо ёбнутым дебилом, чтобы ругать за то, что тебе дают много библиотек. Это достоинство, а не недостаток.
>>2405855 >Program Options и еще что-то по мелочи. Скорость компиляции падала в разы. Чет не верится, програм опшанс как раз одна из компилируемых бустовских либ, из-за чего там падать.
вопрос про освобождение динамической памяти есть объекты одного класса: A, B, C выполняем действие: A = B + C;
сначала выполняется сложение с помещением результата объект класса, назовём его RESULT, который возвращается как параметр оператору присвоения: RESULT = B + C; A = RESULT;
касательно первой части: RESULT = B + C (при скложении происходит конкатенация динамических массивов в моей реализации) объект RESULT объявляется в реализации оператора присвоения(присваивания? - гугл ответа не дал) в классе, то для его создания должен вызываться конструктор по умолчанию, если в его реализации предусмотрено выделение динамической памяти - получается её нужно очистить сразу после объявления объекта RESULT в реализации оператора сложения и выделить динамическую память по новой, верно? Собственно вопрос - что с освобождением, что без работает одинаково и ошибок не выдаёт, почему так?
>>2406168 это я знаю вот в конструкторе по умолчанию у меня создаётся массив на 10 элементов в динамической памяти, потом, без очищения памяти этих 10 элементов я выделяю место на 20 элементов (потребуется после "сложения"), по сути это утечка памяти, которая должна приводить к ошибке при закрытии программы, о том что из элементов A, B, C, D элементы A, B, D "сообщили" (через деструктор) системе что им память больше не нужна, а элемент C сделал это только для одного участка памяти на 20 элементов, хотя запрашивал 2 участка на 10 и на 20 элементов
>>2406171 >которая должна приводить к ошибке при закрытии программы, Да с чего ты взял то? Система срать хотела на твои объекты, она выдает память страницами по несколько килобайт, и прекрасно знает кому сколько выдала, т.к. ведёт таблицы трансляции виртуальных адресов твоей программы на физические в памяти.
>>2406179 а если первый раз выделяя динамическую память на 10 элементов я попаду на одну страницу, а выделяя 20 элементов - на другую? система мне сообщит об ошибке? - Уже проверил, просто удалил деструктор, ошибок не было
>>2406190 У тебя в стандартной библиотеке менеджер памяти, вызываемый при new, malloc и тп. Запрашиваешь 10 элементов, он берет целую страницу у системы. Запрашиваешь ещё 20, он выделяет их с той страницы которую уже запросил, т.к. она гораздо больше твоих 30 элементов. При выходе из программы система забирает себе все, неважно освободил менеджер память или нет. Утечки есть только во время работы программы, а не после. А менеджер нужен для эффективного управления твоей мелочью, которая системе неинтересна. Все, я пошел домой, лекции закончены =)
>>2405834 Метапрограммирование в с++ изначально было плохо читаемым. Сейчас ты с этим ничего не поделаешь. Соглашения об именовании std тоже вытекают из базового дизайна языка.
Только вынос страуструпа из мавзолея и разгон комитета позволят создать новый современный язык.
>>2406280 > позволят создать новый современный язык Уже раст сделали. А второго раста не будет, даже индусы уже официально поддерживают раст и полностью всё виндовое API на него биндят. Так что вариантов не много и больше не станет. А кресты уже ничем не спасти из-за обратной совместимости, какие-то базовые вещи типа implicit move или выражений уже не запилить даже закопав труп страуса.
>>2406000 По общему дизайну и немного о особенностях реализации Josuttis: The C++ Standard Library
Для понимания шаблонов. По началу будет казаться кашей, ибо синтаксис в языка крайне уебанский и многословный. Josuttis & Co: C++ Templates: The Complete Guide
В остальном - общее повышение эрудиции через гугление увиденных вскользь терминов и идиом.
>>2406292 Бизнес денег туда особо не вливает. Хуяндекс сидит в комитете с++ и генерит сотни вакансий на плюсах. В других МЯСО конторах спрос на системшину скромнее и раст там тоже не замечен. Хуйвей наверное единственный, кто в свои манялаборатории на раст берёт.
Хотел поизучать WinAPI, а хуй там. Студия 2022 не дает вариантов Win32 приложения, вместо этого некое "классической приложение", которое создает по умолчанию вот эту поебень с другим синтаксисом.
>>2406505 Чел, я хз что ты там смотришь, я только что собрал пару проектов из Windows-classic-samples на 22 студии v143, c Windows.h, все собирается с пол тычка.
>>2406501 Чел, создавай пустой проект или хотя бы консольный, если тебе не нравится шаблон оконного. >>2406505 > какая-то хуйня, вместо Windows.h WinAPI не только в Windows.h. И его никто в cpp не инклюдит. > любой код из гайдов по винапи выдает ощибки Начни с чего-нибудь попроще, с питона, например.
Да, вы были правы насчет получения элемента двумерного массива с помощью указателей, это оказалось элементарно. Достаточно знать, что оператор a[x] равносилен ⚹(a+x), из этого следует, что для получения a[x][y] надо произвести операцию над результатом операции ⚹(y+result), где result это ⚹(a+x), то есть ⚹(⚹(a+x)+y). Из интересного я заметил, что [][] массив адресов и a это указатель на указатель, я почему-то думал, что такое только у динамических массивов.
>>2406501 >поебень с другим синтаксисом Кекус. Как определить дебила - по хрюсеку вместо интерфейса. Аналог мелкобуквы, сразу однозначно дебил и можно идти мимо, всё равно блеяние не имеет никакого смысла.
Как научиться понимать, что делает приведённый на пикриле магический код? Можно конечно на листочке выписывать из таких примеров каждую такую операцию побитово и увидеть на каких-то примерах, что да, вроде правильно. Но это нихуя не прибавляет понимания и навыка в чтении такого кода. Как это читать не как китайскую грамоту? Как такое самому научиться придумывать? Особенно порвался от подчёркнутой фразы, ага, конечно средний читатель сразу заметил лишнюю маску (это для первокуров пособие к занятиям по С++).
>>2407192 Все битоверчение состоит из шаблонов. (1<<n)-1 n & (n-1) n<<8 | n>>8 n = p - 1, m = -p После того, как 100 раз увидишь и применишь каждый из них, научишься декомпозировать задачи. Ну и двочиный счет в уме, само собой. Надеюсь, ты хотя бы 16 степеней двойки помнишь?
>>2406280 раньше - да, потому что делалось в функцональном стиле - константы времени компиляции не было, использовали рекурсию и ограниченный паттернматчинг в новых стандартах все это делается в императивном стиле, с циклами, условными конструкциями и константами, времени компиляции, поэтому читать такой код легко, так как по концепции он не сильно отличаеться от кода который отрабатывает в рантайм
>>2406299 Раст - это совершенно другой язык. Актуальную кодовую базу на него не перенести. Актуальные работающие крестовики его не знают (кроме единичных ноулайферов). Но медленное вытеснение будет происходить.
Сап! Хочу компилировать свой код в grid сети распределенных вычислений. Должны же быть готовые решения для этого под линуксом, чтобы не изобретать свой велосипед, ведь так?
Только чтобы "кластер" мог соединяться через интернет, а не шнурком. В любой момент подключиться, расшаривая ресурсы, и отключиться. Должно же что-то быть такое уже, да?
>>2402402 >Рефлексия это понятие у скриптов >С++ же это компилируемый язык Пиздец, с кем я здесь сижу. Для начала, нет такого понятия как "компилируемый язык". Есть язык. Для него можно сделать компилятор (транслятор в машинный язык). Для него можно сделать интерпретатор.
Если пчелики в шарпе решили, что у них будет байткод и некая виртуальная машина для него - это не значит, что для шарпа нельзя сделать транслятор в машинный код. Аналогично для плюсов.
На остальное время лень тратить. И я мидл, пчел. Миддл в мухосрани. Если выяснится, что ты помидор, и такую ахинею с серьёзным лицом нёс в массы, то это пиздец.
>>2407360 >нет такого понятия как "компилируемый язык" Есть такое понятие - отсутствие мозгов. Дебилодрон может попугаить только по предварительно заученному. В то время как любой мыслящий человек прекрасно понимает, что компилируемый язык - который компилируется, а некомпилируемый - который интерпретируется. Как же сложно для понимания, ебать пиздец, но скриптодебилу и в самом деле сложно, у него >врёти нисущиствуит!
>можно сделать >нельзя не сделать Охуительная ЛОГИКА скриптодебила, только при чем тут реальность? Лучше этот гнойник кретинизма не вскрывать.
>>2402402 > рефлексия понятие у скриптов Сынок, я видел рефлексию на сях Достаточно просто мета инфу о типах хранить в сях это делалось руками и магическими дефайнами
Аноны, насколько memset быстрый? Есть какие-то способы быстрее заполнить байтом небольшой участок памяти в 8-32 байт? Я же правильно понимаю, там в любом случае в ассемблере будет цикл с mov? Если я сделаю без цикла битшифтами заполнение не будет ли это быстрее?
>>2407360 > Для начала, нет такого понятия как "компилируемый язык".
Тут ты не вполне прав. Всё же есть языки для которых компиляция это необходимый шаг в процессе разработки (то есть от изменения кода до ошибки), и есть для которых нет. Можно задрючиться в тонкости что мол и это можно откомпилировать, и то заинтерпретировать, но разница между плюсами и питоном поганым например -- налицо
>>2407413 > Аноны, насколько memset быстрый? Анон, надежнее всего померить. В проприетарных либах попадается страшное говно. > Есть какие-то способы быстрее заполнить байтом небольшой участок памяти в 8-32 байт? Цикл, если размер переменный. Если размер известен, можно мемсет, хороший компилятор сам разберется. > Я же правильно понимаю, там в любом случае в ассемблере будет цикл с mov? Или rep stos. Или call memset. Или stmia...
>>2407415 Ты не прав. Компиляция как необходимый шаг это не компиляция, а бессмыслица. Это исключительно мелкий квирк реализации, не больше, ничего не значащий.
Смотри, классический BASIC считается интерпретатором, отдельного процесса компиляции там нет. Но на самом деле компиляция там есть, только компиляция не программы полностью, а одной строчки.
Суть в том, что в BASIC отсутствуект текстовое представление кода. Как только ты вводишь очередную строку (нажимая Enter), она тут же компилируется в байткод и заносится в память уже скомпилированной. Текстовой программы нигде нет вообще. А когда тебе нужно посмотреть код или его отредактировать, ты запускаешь процесс декомпиляции специальной командой list, которая декомпилирует код в текст и печатает тебе на экран.
Улавливаешь? Компиляции в явном виде нет, но она есть (незаметная, построчная), просто не в привычном виде как отдельный процесс. Но зато есть процесс декомпиляции, чтобы посмотреть на свой код и его редактировать - построчно, сразу же компилируя обратно незаметным образом.
Но тем не менее, это не называют компилятором, а называют интерпретатором, потому что компилированный код это не код исполнения, а код для машины-интерпретатора. То есть, настоящий компилятор это только такой компиляторр, который производит код непосредственного выполнения, а не какой-то промежуточный код для интерпретатора его выполнения. Последнее будет интерпретатором всё равно, даже если код для интерпретатора был скомпилирован промежуточным компилятором, и даже как отдельный процесс, это просто не имеет значения.
>>2407423 Шизик, спок. Компилятором называют то, что (1) выдаёт результат преобразования исходного текста. Хоть на пролог, хоть на васемблер at&t. Или (2), генерирует по исходному тексту исполняемый код. Хотя бы в память. Хотя бы для виртуального процессора.
>>2407425 Это бессмысленная демагогия, другой контекст.
Речь шла про рефлексию - свойство языка. Рефлексия это свойство только интерпретатора, который непосредственно выполняет код. Процесс компиляции к этому вопросу не относится, не имеет значения. Важно только кто выполняет код: либо никто - код выполняется сам, либо выполняет интерпретатор кода. Вот и вся разникца. А без интерпретатора рефлекции нет, ибо код это код процессора, а процессоры не поддерживают рефлексию.
Таким образом, в контексте свойств языка, и в частности рефлексии, рефлексия существует в языке только благодаря интерпретатору. А С++ это компилятор непосредственного кода выполнения, поэтому рефлексии там нет.
Ты конечно можешь написать любую программу, и даже с рефлексией, но это будет свойство твоей программы, а не языка. На языке можно написать всё что угодно, это вообще не имеет значения, не является аргументом ничему.
А че мне reinterpret_cast не дает дабл к инту привести, я думал он все может. Я хотел посмотреть как дабловские байтики будут интерпритироваться как интовские как в union.
>>2407423 Вот допустим есть обычный айтимакак штат бангалор Если он пишет на компилируемом языке то получать унижение будет от компилятора до запуска в продакшн а если на интерпретируемом то после и уже не от компилятора
В теории разницы нет но нельзя отрывать теории от реалий
>>2407429 Рефлексии как свойства языка нет, значит, рефлексия свойство того, кто исполняет. Если железный процессор исполняет код + понимает rtti, то у него есть рафлексия для компилированных крестов?
>>2407466 >Рефлексии как свойства языка нет, значит, рефлексия свойство того, кто исполняет. Рефлексия это свойство интерпретатора, поэтому интерпретируемые скрипты имеют рефлексию нативно из коробки. Рефлексия это натуральное свойство скриптовых языков.
Для компилируемых же языков, рефлексия чужеродна, её там нет. Конечно можно накостылять и запихнуть, всё можно, но смысла не вижу. Нужна рефлексия, вот и пользуйся скриптами. Если разводить скрипты в компилируемом языке получится химера.
>>2407502 У меня от тебя китайская комната. Рефлексия есть там, где она реализована (т.е. доступна программисту). Компилятор отличается от интерпретатора по другому признаку.
>>2407511 Дело не в том, что и где есть или нет. Дело в понимании принципиальной разницы между скриптами и нативным кодом, между интерпретатором и компилятором. Это именно принципиальная разница на фундаментальном уровне, а не какая-то ерунда вроде необходимости генерации файликов или нет, установки машины-интерпретатора в систему или нет, текстом распространяется программа или экзешником, с зависимостями или нет. Это всё ерунда, не имеющая никакого серьезного отношения к обсуждению того, что такое язык, что он из себя представляет, его концепции акк языка, что такое код который ты там пишешь, эти вещи разные у скриптовых и компилируемых языков, вот что важно. А что куда можно запихнуть расскажи своей мамаше шлюхе, которая себе в анус всё пихает, даже не предназначенное, ведь не запретишь, долбоебов всегда хватает.
>>2407384 >В то время как любой мыслящий человек прекрасно понимает, что компилируемый язык - который компилируется >>2407415 >Всё же есть языки для которых компиляция это необходимый шаг Охуеть. Пиздец.
Вы теорию формальных языков в универе проспали что ли? Или вкатуны без ВО?
Аноны, а возможно ли более одного раза перегрузить оператор индексирования, один для public-секции(с доступом не по ссылке, чтоб только получать значение по индекса), другой раз для private(чтоб методы класса могли с ним работать по ссылке)?
>>2407680 >открещиваюсь от плебса Кто сказал, что я открещиваюсь? Просто учить других чему-то типа различию между языком и программами для обработки языка - себе дороже. Это нужно только когда ты какую-то теоретическую хуету обосновываешь. Лучше ещё раз вчерашнему студенту объяснить, зачем слово виртуал при наследовании и почему нельзя копировать объекты, используя интерфейс. Это больше пользы принесёт.
Но совершенно другое дело, когда начинают нести чушь, будучи абсолютно уверенными в том, что это правда. Приумножают заблуждения типа. Сам таким был, и мне-то нос утёрли. А вот вам похоже нет. Ну продолжайте, хули я ещё могу сказать.
>>2407597 >>мыслящий человек Что тебе в этой фразе непонятно? Ладно, даун, поясняю: тупо заучивать что тебе вливают в бошку, а потом это тупо цитировать, это не мышление, не мыслящий человек, а безмозглый гуглобот. Так что можешь своими теоремами подтереться, они всё равно для идиота бесполезны, раз не умеет думать, а только цитировать как попугай.
>>2407804 >Так что можешь своими теоремами Ты только что определения. С определениями не спорят. Выдумывают свои, если другие не нравятся. Другое дело, насколько твои определения будут полезны.
>>2407816 Это и есть идиотия в чистом виде. Пациент может только повторять заученное под копирку. Не может читать и понимать что мыслящий человек говорит когда речь отличается от заученной копирки. Это классическая проблема искусственного интеллекта (ИИ) - тупость, неспособность соображать за пределами обученной модели.
Когда мыслящий человек ситает и понимает написанное, он понимает и значение терминов, ибо всё в контексте. А безмозглый гуглобот выкидывает экзепшен "Ошибка Терминологии" и прекращает функционирование. Сейчас даже роботов делают умнее, они не крашатся от одной фразы как ты.
>>2407597 Нет блять тут анон сидит дремучий, который дальше прикладной теории категорий не продвинулся.
Еще раз для тех кто проспал диалектический материализм :
Понятие компилируемый язык есть.
Оно возникает в ходе производственных отношений в капиталистическом обществе когда макак типа тебя пишет код с ошибками. То в какой момент вылезают ошибки и макак получает в пердак -- вот это и определяет разницу между средствами разработки.
Твоя ошибка в том что ты рассматриваешь язык отдельно от сопутствующих человеческих процессов. А так делать нельзя потому что язык это прежде всего средство человеко-компьютерного взаимодействия
>>2408177 > за два предложения закрыла тему Как и ожидалось от человека, что вовсю потакает своей предвзятости подтверждения, второй абзац ты даже не читал. Алсо, как выше анон отписал, формальные языки - это академическая область, а не хуй собачий.
Я не могу никому запретить этот самый хуй сосать, но всё же, попробуй посмотреть на источники в этой статье. А когда поймёшь, что этот хуй слишком большой и вонючий, переключи на ангельскую версию.
Алсо, как же я много времени здесь проебал на хуйню.
>>2408211 Да нет. Просто в ангельской версии источников аж два, лол. И хуй, который ты будешь сосать на английском менее вонюч.
Я же хуй совсем не сосу, потому что я знаю, что компилируемый язык - это костыльное определение, созданное неучами. Как и многие неологизмы. Из недавнего помню хороший глагол эмоционировать.
>>2408129 Тащемта у нас тоже как такового не было. Назвали его чё-то типа "Введения в ТФГиЯ" или "Основы ТФГиЯ". Хуй уже вспомню.
Зато помню, что у нас выкинули лямбда-исчисления, хотя я его больше всего хотел. Оставили классеку - машину Тьюринга, рекурсивные функции и алгорифмы Маркова. И теория была не очень объёмной. Никаких лиспов, крутых теорем о трансляции из произвольного языка в произвольный. Начало по языкам с автоматами, регулярками, БНФ и прочей лабудой. А закончили описанием трансляции из си-подобного языка в подобие ассемблера для x86_32.
Очень круто было тогда, да. Но это всё абсолютные основы. Собственно, я никогда экспертом по этой еболе и не был. Поэтому и удивляюсь, что люди делают ошибки, которые даже такой чел, как я, может задетектить.
>>2408225 > машину Тьюринга, рекурсивные функции и алгорифмы Маркова > теорем о трансляции из произвольного языка в произвольный > по языкам с автоматами, регулярками, БНФ и прочей лабудой Нахуй это говно вообще нужно кодеру в отрыве от реальности? Когда столкнёшься с проблемой, для решения которой нужно подобное говно - за час разберёшься на ходу. Это намного продуктивнее будет, чем учить какую-то теорию непонятно нахуя и для чего это можно применить ИРЛ. > описанием трансляции из си-подобного языка в подобие ассемблера для x86_32 Опять же, написание AST и кодогенерация ASM или IR - довольно простое занятие. Компилятор простого псевдокода на LLVM пишется за день. Нахуй этому учиться, если после ебучего Калейдоскопа в доках всё понятно становится за час?
>>2408241 >Когда столкнёшься с проблемой, для решения которой нужно подобное говно - за час разберёшься на ходу. Может быть мы вообще из разных миров, в конце-концов я из мухосрани за уралом. Ты можешь быть гением. Но всё же, из всех своих одногруппников только я нормально выучил регулярки. Не "обрезаные" для теории, а perl-compatible которые. "С час на ходу", ага.
>Опять же, написание AST и кодогенерация ASM или IR - довольно простое занятие. Не для всех же. Не ровняй вчерашнего школьника, который лишь года два как пересел на линукс с собой нынешним.
Тащемта это был хотя бы нормальный предмет, в отличии от матана и диффуров, которыми мне очень так хорошо подзатыльник дали. До сих пор нихуя не помню как я сдал их.
>>2408241 > кодогенерация ASM или IR - довольно простое занятие. Компилятор простого псевдокода на LLVM пишется за день. Чел, ты встал на плечи всем этим челам, которые учили теорию. И занимаешься компиль-макакингом.
>>2408247 Все эти студентики начинают с зазубривания, выбирая программирование на похуе потому что в ИТ платят хорошо. А у нормальных людей наоборот всё - им нравится кодить и они начинали с чистой практики, имея из теории только половину трупа страуса.
>>2408250 >имея из теории только половину трупа страуса Кек, люблю хвастатся тем, что я читал только одну главу страуструпа. Он в первой главе начинает бросаться всякими конструкциями направо и налево (в отличии от K&R, который к тому времени был прочитан). Ну и я подумал, что недорос до книжки. Начал читать про плюсы в других источниках и пилить игрушечные проги, чтобы понять как это всё работает.
Когда вернулся и смог нормально первую главу прочитать оказалось, что это всё было "размахивание хуём" и вот сейчас, со второй главы он начнёт объяснять. Я тогда очень долго ржал.
>>2408249 Ну так-то LLVM без проблем можно заменить чистым ассемблером, разница лишь в оптимизациях, а это уже совсем другая история, не связанная с теорией ЯП.
>>2408255 > люблю хвастатся тем, что я читал только одну главу страуструпа Я тоже дропнул его мгновенно на первых 50 страницах, шлюху александреску тоже не осилил - у него вообще пиздец вода. Так ни одной книги по крестам и не прочитал. В давние времена просто ушёл на MSDN и шарп, а потом уже и нахуй книги не нужны стали для вката в кресты, когда документация и гугл есть.
>>2407863 Ошибаешься, я анонимный никто, которого невозможно презирать. Ты презираешь высказанную информацию, правду, т.е. самого себя, но переводишь стрелки. Это стандартный психологический инстинкт.
И недовольство даже не в самой правде, а в серьезном аргументированном изложении которое не легко отрицать, так что ты оказываешься припертым к стенке. Спокойные грамотные аргументы, когда не за что зацепиться чтобы отрицать и игнорировать, чем создается безвыходное положение, не увильнуть от правды. Именно это вызывает настоящую ненависть. А например грубые оскорбления и тому подобные простые бессодержательные посты почти никого не задевают. Скорее наоборот, часто даже нравится так переругиваться, негатива не видно.
Пикрил https://godbolt.org/z/b1e5q8joK не компилится, почему? У первого и второго рейнджа обязательно должны быть одинаковые типы элементов что ли?
Компилятор выдаёт что-то про couldn't deduce template parameter '_Sent2', когда пытаюсь дописать явно шаблонные параметры set_difference<здесь>, то не помогает https://godbolt.org/z/b1e5q8joK
>>2408516 >Компилятор выдаёт что-то про couldn't deduce template parameter '_Sent2' Там несколько перегрузок, эта тебя не интересует > пытаюсь дописать явно шаблонные параметры Для set_difference это невозможно
>>2397264 (OP) Программач поздравь меня, я вроде даже нашёл работу на плюсах. Вот только есть одно - проект. Он выглядит примерно как дом на пике, без документации и прочих человеческих радостей.
Есть ли методы обуздать эту кучу дерьма и с чего начать?
>>2409039 Ну на хх начал слать резюме. Только опыт поставил не нулевой, а от 1 до 3-х лет. Прошёл собесы в апреле-мае. Хрка сказала - согласуем с руководством - сообщим. Я через пару недель подумал что ребята отмазали. Вот уже в июне вышли на свзяь, и приняли.
>>2408975 Да норм, я примерно на таком же проекте работаю, вопрос времени, как во всех комнатах побываешь, за все двери посмотришь, везде стены подкрасишь, будешь как дома. > Есть ли методы обуздать эту кучу дерьма и с чего начать? Бтв с изучения проекта, как только поймешь как проект устроен, что в каких модулях обрабатывается и какими средствами достигается решение, станет легко
>>2409120 Да вроде чистые плюсы (Сам учил. В универе только хелоу ворды писать учили), но придётся ещё ндк подтянуть. А так ещё чутка графики да вот и весь стек.
>>2409155 Хули там смотреть то? Образование - 4 курса без диплома, да и отработка около года в аутсорсной конторе.
>>2409163 Да ни чего такого страшного не спрашивали.
>>2409171 Да сейчас у меня задача закрепиться и наработать хотя бы год два опыта работы. И да ты бы потерпел бы самопальный смарт пойнтер у себя в доме?
>>2409252 > Да ни чего такого страшного не спрашивали. Чел, ну откуда мне значть, что для тебя не страшно. Может ты дифуры решал или писал на листочке хитровыебанную сортировку.
>>2409263 Раньше были векторы, после того, как узнал о плюсах и минусах, применяю по задаче. unordered_set нравится за самую большую скорость большинства операций.
>>2409265 When choosing a container, remember vector is best Leave a comment to explain if you choose from the rest – Tony Van Eerd
Ну про сеты и мапы - я упоминал что в практике не попадались. Вектор на самом деле по ощущениям решает процентов 80 если не 90, задач с которыми я встречался. Плюс его можно быстро скастовать до сишного куска памяти, что полезно при работе с теми же видяхами (занесло меня в геймдев на мобилки) да и процы его не плохо оптимизируют. Но он не идеален. Большой кусок памяти слишком большой - хер ты его выделишь. А так же, при вне плановом расширении итераторы летят по пизде. Лист - имеет проблемы и подводные камни. Наверно самый весёлый - с 11 стандарта size вычисляется за константное время А вставка и удаление за линейное. Но у него есть не явный плюс, что в многопоточности итераторы не проёбываются. Дек - как попытка совмещения сильных сторон первых двух хорош и решает проблему хранения гиганских объёмов данных, но у него есть то же свои проблемы. К примеру он в некоторых ситуациях медленнее на 20 или 30 процентов вектора.
Как-то так чего вспомнил, примерно то же самое рассказал.
>>2409657 >uint8_t Ты внимательнее посмотри на тип. u - обозначает беззнаковое int - целое 8 кол-во бит. Его конечно можно использовать для хранения битовых значений (целых восьми штук!)
Указатель uint8_t хранит в себе адрес ячейки памяти (32 или 64 бита), на которую он указывает. В данном случае ты говоришь компилятору что по данному адресу лежит 8-ми битное число. Но то что лежит там на самом деле - твои проблемы.
Если ты приведёшь его к char указателю, то компилятор работая с ним будет рассматривать эту ячейку как указатель символ.
Объясните, почему этот код работает, я захватываю х по ссылке, должна же быть висячая ссылка. И как мне сделать захват по константной ссылке, например чтобы захватить объект.
>>2409710 > Объясните, почему этот код работает, я захватываю х по ссылке А ты что ожидал? Что у тебя за шиворотом кусок говна окажется из-за этого? Ну говори свой адрес, мы тебе всем тредом это обеспечим.
>>2409811 Читать такое невозможно. Если для того чтобы понять код нужно скролить в начало или даже смотреть в хедер, то это чистейший говнокод. А если там snake_case, то это говно невозможно отличить от вызова конструктора.
Собираю qmake config для qt для кросскомпиляции под orange pi, выскакивает такая ошибка, что делать? Я бы установил просто qt и просто собирал бы на orange pi проекты, но там не откуда qt скачать, во всех ОС все ссылки для скачивания qt не работают
До меня только дошло, что int mai() это просто определение функции, а значит где-то должен быть неявный вызов. Где-то описано для ОС, какая функция будет точкой входа. Не сердитесь, я нуб просто. Также узнал, что string это просто typedef для инстанцирования шаблона родительского класс <char>. Попробовал инстанцировать шаблон для интов, получил строку интов, ощущения как будто залез в подкорку мироздания.
>>2410008 Решил проблему, почему то фаилы лежали не там где надо, помогло создание ярылков ln -s /home/zloyben/orangepipc/sysroot/usr/include/arm-linux-gnueabihf/sys/* /home/zloyben/orangepipc/sysroot/usr/include/sys Все получилось
>>2410032 Лол двачую. Установил себе рядом с виндой дебиан, думал буду изучать особенности программирования под линукс, posix, gcc, вся хуйня. А потом понял, что так может продолжаться долго и решил, что лучше буду специализироваться на винде, чем знать все платформы, но по верхам.
Кстати, а могу я в линуксе напрямую обратиться (не через системный вызов) к клавиатуре например и заставить ее могнуть лампочкой? Винда я так понял только через винапи позволит такое.
>>2410037 > могу я в линуксе напрямую обратиться (не через системный вызов) к клавиатуре например и заставить ее могнуть лампочкой Тебе придётся писать модуль ядра. А API там максимально каловое, почти винапи. > Винда я так понял только через винапи позволит такое. Под виндой наверняка найдёшь либу для своей клавы.
Всем хай. Сейчас изучаю multithreading, но пока не уходил далеко от примеров, которые есть в туториалах. Подскажите несколько вариантов того, что можно заимплементить с мультритредингом? пока что понял принципы работы thread, mutex, conditional variable.
>>2410091 Возьми любую штуку из повседневной жизни. Например реализуй систему заказов в кафе, где посетители асинхронно делают заказы, а ты это автоматизируешь. Пример посложнее придумай
>>2408225 У меня теорию формальных языков читала максимально похуистичная бабуля на кафедре, лабы принимала она и еще какой-то древний доисторический дед. Из курса максимум смог запомнить что такое детерменированный конечный автомат. А так еще конечно было всякое, и про ast, и про нка, теоремы о преобразовании дка <-> нка, лабы оп yacc и lex, которые вроде бы все списали по итогу, и регулрярки, и т д, жалею конечно что на интересный предмет по итогу забил хуй (как и на 90% остального, что нам преподавали), но и преподы у нас говноеды были еще те.
А зачем в linux нужны жесткие ссылки? Я как узнал, прям охуел с тупости этой концепии. Ты удаляешь такое интимное фото, а нихуя, это была ссылка. Или ты портишь файл, думая, что это копия, а потом оказывается что изменения примерились везде.
>>2410348 Все минусы, которые ты перечислил, происходят из твоего криворукого ДНК. А жесткие ссылки - это охуенно, и виндобляди сосать, что так не можете. Это позволяет мне в одно и то же время производить разное деление фотографий на категории, и использоване места на диске от этого не множится. Symbolic сосать, короче.
https://old.reddit.com/r/programming/comments/w2thvo/carbon_an_experimental_c_successor_language/ Поясните за ABI который так не хотят ломать. У меня вообще какой то эффект Манделлы с этой хуиты, будто я перенесся из параллельного измерения. Разве ABI не меняется с каждым релизом компилятора и либ, мажорным-минорным похуй, да буквально с каждым пуком. И по этой самой причине прыщеблядье качает по сотне мегабайт аптейтов каждый день. И еще > ABI is .. mangling .. Разе это не определяется целиком компилятором и ровно для этого придуман "extern C" или как там его.
>>2410356 > производить разное деление фотографий на категории Бля, теперь также хочу. А еще хочу, чтобы у каждого графического файла были вшиты теги, по которым их можно отбирать
>>2409881 Нет, я не против лямбд как таковых, это крутая фича, когда она к месту, а не как у того анона. >>2409984 Думаю это зависит от того что и как ты пишешь, мне как правило ифов хватает.
>>2410037 >Кстати, а могу я в линуксе напрямую обратиться (не через системный вызов) к клавиатуре например и заставить ее могнуть лампочкой? Да, понажимай пальцем на NumLock.
>>2410511 Да всмыыыыыысле, я специально правила искал, нихуя не нашел такого, и много тредов рядом вижу с перекатом на 500. Я думал, вы тут так долго сидите, потому что иногда и до 2000 доходите, ебанутые просто.
>>2410544 Так под правилами я имею ввиду технические особенности всей борды, когда там бамплимит наступает и тред тонет. Это ж не может оверрайдиться для отдельной серии тредов, потому что живые люди перекатывают, а человек человеку человек, может и обосраться, и кончи сглотнуть... Вот есть бесконечные треды, которые сверху режутся на 502 где-то, а про другое не знаю.
>>2410558 А с чем он еще связан, лол? После определенного количества постов дальнейшая активность перестает поднимать тред в списке, и все больше и больше других тредов поднимаются выше него, пока он не выпадает из списка. Перекаты нужны, чтоб тред снова ожил в списке. Не?
>>2410576 Это тебе не /b/. Нужен тематический тред - переходишь в него по тегу. А тред, висящий в топе, привлекает только всяких мимокрокодилов, толстяков и шизиков. Сразу после бамплимита резко повышается адекватность треда.
>>2410593 Ладно, я просто случайно осознал, что для объявления параметра-ссылки не обязательно определение структуры, которая по ссылке, и придумал шутку для шапки.
Анон привет. for (cost auto & it : entries) { auto I = std::distance(entries.begin(), it); } Как взять индекс I в таком цикле, работает при for (auto it=entries.begin(); it! = entries.end(); it++), а в варианте #1 нет. Не то, чтобы проблема, но хочется знать.
Почему считается, что double (IEEE floating point 64 bits) имеет точность до 17 значащих десятичных цифр? На хранение мантиссы отводится 52 явных + 1 неявный бит. Соответственно, получаем, что целое максимальное число, которое точно может храниться в мантиссе - это (2^53)-1, что примерно равно 10^15.955 или 9007199254740990 (16 десятичных цифр). Где ещё одна десятичная цифра?
>>2414684 В данном случае "точность" значит количество знаков, необходимых для точного раунд-трипа string->double->string (15 знаков) или double->string->double (17 знаков). Я давно с флоатами не имел тесных отношений поэтому не могу сказать больше, чем гугл.
Сап, котеки. Надеюсь, тут есть шарящие в теме. Хочу кодить ставить хуки в windows 10 на уровне ядра, дабы ни одна операция на моём компе не могла от меня утаиться. Инфы -- с гулькин уй. Чужие работы 4/5 будут просто некомпилируемы, а последняя будет BSOD триггерить. Вопроса два: 1) какую посоветуете виртуалку именно для отладки и теста драйверов (virtualbox я уже возненавидел и удалил, его даже поставить и использовать без анальной дрочки и гуглинга нельзя) 2) И где можно в принципе почерпнуть опыта современного котенга с реальными примерами, чтоб механику понимать, бсодов избегать и баги не плодить (не дохуя поймёшь трейсингом, когда каждый первый вызов улетает в syscall-ебеня)