НЕ МОЖЕШЬ БОЛЬШЕ ТЕГПЕТЬ ТИГАНИЮ ПГАВЯЩЕГО КЛАССА? УСТАЛ ОТ ПОЭЗИИ? ХОЧЕТСЯ ПИСАТЬ КОД, КОТОГЫЙ ДЕЛАЕТ СИГИУС ШИТ? ДОБГО ПОЖАЛОВАТЬ В НОВЫЙ C++ ТГЕД!
1. Почему мы используем именно C++: - C++ действительно быстрый - по скорости уделывают большинство языков, часто с большим отрывом. Замедление относительно pure C находится в районе 0-20%. Замедление зависит от вас, девиз языка: "Платишь только за фичи, которые используешь". - C++ - очень выразительный язык. В него заимствованы большинство существующих парадигм из самых популярных языков. - У C++ очень большое и, самое главное, профессиональное комьюнити. Это так из-за высокого порога вхождения.
Однако C++ очень сложный. Прямая работа с памятью и тысяча способов выстрелить себе в ногу - это про него. Не стоит его использовать всегда: нужно понимать, что используемый язык должен соответствовать поставленной задаче. Да, анон, не нужно писать на C++ скрипты или веб-фронтенд, а потом жаловаться, что C++ говно. Плохому танцору и ноги мешают, как говорится.
2. Литература для начинающих: Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется. - Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela - Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u - Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa
3. Литература для тех, кто осилил предыдущий пункт: Книги про основные подводные камни. Следует пролистать все. - Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO - Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc - Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz - Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR - Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
5. Нюансы проектирования на C++: Следует пролистать все перед переходом от лаб к написанию настоящего софта. - Ален Голуб - Веревка достаточной длины, чтобы выстрелить себе в ногу (2001) - https://goo.gl/fBmuxp - Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BCэто - квинтэссенция ГИБКОСТИ, поэтому стоит прочитать в любом случае, чтобы охуеть от того, как можно делать. - Джеймс Коплиен - Программирование на C++ (2005) - https://goo.gl/Y1WGdU
6. Тонкости языка (для гурманов): - Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S - Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
9. Куда писать код: - Кроссплатформенные IDE: QtCreator, Eclipse CDT, CLion (Последняя платно, но зато энтерпрайз. Легко сбрасывать пробный период, можно купить на торрентах) - Только Windows: Microsoft™ Visual Studio® рекомендуется для новичков - Только OS X: XCode - Уникальный способ для *nix-господ: Компилим через консольку с помощью clang(очень информативный и читаемый вывод) или в крайнем случае gcc (для ценителей). - Все остальные: https://goo.gl/qkujDP - Для тех, кто капчует с домофона: http://ideone.com
По просьбам трудящихся: Инструкция "Как создать проект в Visual Studio" - https://goo.gl/JMd57G
Специальное уточнение для ньюфагов: А вообще, в случае возникновения вопросов по какой-либо IDE не брезгуйте чтением офф. документации. Все подобные вопросы там освещаются.(Ведь ее же для этого и пишут!). Так что сначала читаем доки, а только потом задаем здесь вопросы. Найти доки можно в пункте меню "Справка". Либо нажать F1, лал.
10. Code Quality: - CppCheck. Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio. - http://cppcheck.sourceforge.net - Clang Static Analyzer. То же самое, но встроено в одноименный компилятор. Активно пилится Google и Apple. - http://clang-analyzer.llvm.org - PVS-Studio. То же самое, но энтерпрайз. Для пиара пишут годные статьи. - http://www.viva64.com/ru/pvs-studio/ - Visual Leak Detector. Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com - Google Sanitizers. Гугловские утилиты для поиска утечек, дедлоков, гонок, неинициализированной памяти и некорректного доступа - https://github.com/google/sanitizers - Valgrind. То же самое, но медленно.(Очень. По сути, это - виртуальная машина) http://valgrind.org
11. Годные библиотеки: - Standard Library. С недавнего времени(С++11) стала годнотой. Например, теперь можно писать кроссплатформенный распределенный код, не подключая boost. Что очень хорошо. Кстати о бусте. - Boost (http://www.boost.org) - бесспорно, самый популярный набор C++-библиотек. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. Boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки. Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонентов boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки. - Qt (http://www.qt.io/) - свободный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонентов (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу. Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации. В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага. - И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
Итого: Вопросу по синтаксису идут на хуй. Лабы идут на хуй. "Как мне сделать Х на чистых крестах без библиотек" идут на хуй. Стихоебы идут на хуй Все идут на хуй. Хейтер, ОП сосет члены на пару со своей мамашей.
Такие дела. В одном классе в контейнере хранятся пары в map в виде <socket, player_id> . В другом классе должны храниться собственно плееры, к которым должен быть доступ по id с первого класса. Как это лучше всего сделать, чтобы исключить повторения и т.п.? Я не знаю, как лучше всего это обустроить.
>>676275 Ну айдишники рандомные могут повторяться. Можно поставить инкремент - но теоретически они могут дойти до максимума unsigned short int'a и ФСЁ.
Хочу в С++ вкатиться.Аноним04/03/16 Птн 20:41:11#18№676295
>>676033 (OP) >Qt Надумал таки вкатиться в С++. Но вкатываться решил (в предыдущем треде посоветовали) не через Visual Studio, а через Qt Creator. Какие подводные камни?
>>676292 Ничего не понятно, опиши подробнее. С какой целью тебе нужен map<socket, id>, почему там могут быть повторы player_id, и почему ты вообще их допустил, раз хочешь избежать повторений?
>>676304 Объясни подробнее. Я до этого писал только текстовую базу данных под линуксом. Просто часто вижу, что на C++ в функцию передается адрес строки через оператор &.
>>676231 Это все очевидно, конкретизирую вопрос: - Пользователь должен работать в другой программе, а на переднем плане постоянно должен быть счетчик активности. Скрин релейтед. - Как сделать задание пользователем нужной области для слежения? Типа рамку может чтобы он по экрану перетаскивал и детектилось строго внутри нее.
>>676315 - Можно сделать скриншот всего экрана - Можно текстово задать две точки, которые определяют прямоугольник. Можно через рисование в прозрачном окне. Тут ничего не скажу конкретно
>>676375 >Самое то, чтобы писать отзывчивые интерфейсы Да, но он же в кресты вкатыватся. Другого нет и Qt для этого подходит, но кресты не для отзывчивых интерфейсов.
>>676379 Зачем ты принес это устаревшее говно сюда? В 2010 много чего не было, ты бы еще притащил пасту Торвальдса о том, какое C++ нестабильное говно.
>>676350 Так подожжи, Qt - то всего лишь библиотека, чтобы мона было GUI-приложения лепить, не заморачиваясь с WinAPI. Или я что-то не правильно понимаю? >>676369 Для чего кресты нужны?
>>676380 В смысле, биндингов Qt к любому другому языку? Спору нет, но я не только про гуевый софт же интересовался, а про область применения самого C++. Ну, если легаси всякое отбросить, само собой. >>676385 Для чего? >>676390 А что кардинально поменялось? Кластерфак парадигм разросся до такой степени, что в нем запутался сам создатель, как Кодзима в сюжетах своих игр?
>>676431 Ну да. Как бы поэтому и пошутил. Пидору наверно шапка без стишка не понравилась, а этот хуй на то же самое жалуется. Ты шутку похоже не понял.
Привет революционерам. Недо-qt-дипломом снова тут.
Забавно, но стоит признать что я разобрался с моделями (включая прокси), БД подцепил, это все. Час назад даже немного озарился на тему передачи объектов по ссылке / значению. Вопрос, кстати, примерно об этом.
(вырезал кучу всего, оставил только относящееся к делу)
На примере в документации с QSqlRelationalTableModel - открывается норм. Попытался перенести на "прод" - внезапно оказалось что после подключения ничего не отображается. Нихуяшеньки. База заполнена, проверил - на том же примере и проверял (там же и подгонял удаление столбцов в прокси).
По ссылке выше уже прошли следующие мучения: - Начал "обращаться напрямую" к переменной. - Отдельно прописал db_view в начале.
В общем, я уже не знаю что здесь не то. Если не впадлу, посмотрите, плиз. Подозреваю обосрамс с областями видимости (поэтому в models_prepare там прокся назначается тоже напрямую), но не знаю как проверить наверняка.
>>676680 Неправильно, раз ты не знаешь, почему так. Ты-то может и угадаешь, но в следующий раз можешь не угадать. Открывай стандарт и читай, только так.
>>676699 А еще он внутри реализовывается через те же !(a<b). Но главная моя мысль была о том, что нехуй о таких вещах вообще думать, пока не посмотришь в профайлере.
>>676757 перегружать операторы не обязательно. это делается исключительно для удобства и интуитивности. как ты думаешь, будет ли интуитивно перегрузить < и не перегружать >=? сколько бы wtf/sec словил бы ты?
>>676761 а если точку не добавлять, то ничего не считается. да, решим. какой-то ты слишком нюфажистый. иди книжке из шапки почитай. разберись с хотя бы с lvalue/rvalue терминологией и минимально с типизацией
>>676763 да вот, с типами вроде знаком и с приведением типов тоже. Но спорить по-поводу нью бессмысленно. Как раз строструпа сейчас прохожу. В задании на "исправь ошибку" и нашел это. Вроде и исправил легко, но стало интересно копнуть глубже
А как сделать шаблонную функцию, которая будет принимать параметры типа std::vector<std::vector<std::vector<...>>> и т.д. Ну то есть неизвестно какой размерности вектор.
Сука сдохни ёбаный Qt. Делаю сраный хэловорд по простейшему гайду https://netbeans.org/kb/74/cnd/qt-applications_ru.html#creating , а в итоге пикрелейтед. Собирать собирает, а при запуске это говно. Чему там вообще, блядь, вызывать ошибку сегментации? Тьфу, блядь, говно.
Да ты уже охуел в конец, что за, блядь, легитимный ОП? Это уже вахтерство в терминальной стадии. Чтобы анон понимал, что происходит: Предыдущий ОП у нас жуткий собственник и вахтер. Он ленивый и не перекатывает тред от полусуток и более. Также очень рьяно защищает свою шапку. Хуй его знает почему, но факт остается фактом: - он не публикует разметку своей шапки, чтобы можно было сделать перекат без него - он методично игнорирует существование той же шапки, но нормально оформленной, и методично пихает старую. Да, соглашусь, в новой шапке есть небольшие изменения, на которые можно подискутировать. Но во-первых, кто мешает поправить шапку самому, а во-вторых, я и сам исправлял шапку, соглашаясь с критикой.
Также наш предыдущий ОП обладает доступом к функциям модератора(лично или через кого-то) и использует их в своих интересах. Например, предыдущий перекат он просто снес(как и мои вопросы "из-за чего") и потом через полдня запилил свой. Очень по-взрослому, что тут сказать.
Сейчас же наш ОПчик подгорает и поэтому запустил голосование, через которое пытается приватизировать право создавать треды, что, конечно, очень соответствует атмосфере "свободного общения". Еще и просмотр результатов закрыл. Ну охуеть просто.
Вывод: НЕ ДОПУСТИМ УГНЕТЕНИЯ СВОБОДЫ СЛОВА В НАШЕМ ТХГЕАДЕ. МОДЕГАТОГА - В ОТСТАВКУ, ОП-ПОСТ - НАГОДУ, С++17 - В МАССЫ!
P.S. Мне вообще похуй, кто будет эти треды создавать, лишь бы не сидел народ без переката. Именно поэтому я и выкладываю каждый раз исходники шапки, чтобы любой мог просто и быстро запилить перекат. Я также против этой нечитаемой шапки, а еще меня люто бешено бесит вахтер-прошлый-ОП. Независимо от голосования я буду и дальше пилить перекаты, если другой ОП не будет чесаться, и буду вставлять лучше оформленную шапку из имеющихся. Чего и вам, друзья, советую.
P.S.S Легитимность - вахтерское дно, которое к правилам раздела не имеет никакого отношения. Зобанить за это нельзя, я гарантирую это!
(Автор этого поста был предупрежден.)
>>677103 > Также наш предыдущий ОП обладает доступом к функциям модератора(лично или через кого-то) и использует их в своих интересах. Например, предыдущий перекат он просто снес(как и мои вопросы "из-за чего") и потом через полдня запилил свой. Очень по-взрослому, что тут сказать.
Новый модер просто а крестотреде сидит и следит за ним. Не хочет чтобы треды сразу плодили. Я бы тоже снёс. Кстати можно шапку твою, а стишок его. А ещё он говорил что пилит новую шапку и можно его поторопился когда выйдет на связь и увидит что тут происходит. И оп-пик он ещё где-то тырить. Может поэтому долго не перекатывает.
>>677103 >ОПы отнимают друг у друга погремушку и бугуртят мне в жалобы >дали анону возможность выбрать того, кто больше нравится >КОКОКОКОК ВРЕЕЕЕЕОООООТИ МОЧА ВАХТЕРЫ РИВАЛЮЦИЯ Ты какой-то неадекватный, братюнь, давай полегче тут.
>претензии ко второму ОПу Ну так к нему и обращайся, чтобы пофиксил, от меня-то чего хочешь? Тебе нравится одно, другим анонам - другое. Я оставлю того, кого выберет большинство, не больше и не меньше.
>предыдущий перекат он просто снес Это я снес, была жалоба на нелегитимность. Вас, крестоблядков, не разберешь, у других треды как треды, а тут драма вечная, лол.
>очень соответствует атмосфере "свободного общения" Нет, блядь, давайте каждый создаст по треду и будет в нем сидеть. Такая-то атмосфера будет.
>Независимо от голосования я буду и дальше пилить перекаты Пили, коли хочешь. Нелегитимные треды в случае жалоб будут тереться, рецидивисты - баниться. Такие дела.
Ок, признаю, что проебался с детектом моче-ОПа. Примите мои извинения, настоящий мод и прошлый ОП.
Но вся эта идея с легитимными тредами - хуйня, высосанная из пальца. Зачем вообще это все надо? Создали тред - сидим в нем. Дубликаты сносятся. Ну можно еще сносить совсем неадекватные перекаты с пустой шапкой или с каким-то рандомом в шапке.
Ты, мод, сам и поощряешь всю эту драму, реагируя на жалобы о легитимности и устраивая разборки с голосованием.
В случае введения этой хуйни - старый ОП как и раньше будет перекатывать по 2 дня тред и никто другой не сможет влиять на шапку.
А в случае введения правила "Кто первый встал, того и тапки" будет некая саморегуляция сообщества и все будет как в других тредах: без драм и какашкозакидательства. Быстрые перекаты и регулярные обновления шапки.
>>677177 Я хотел голосовать за того у кого голосов меньше так чтобы ничья была, но из-за того что не вижу результат не могу так сделать. Наверно он правильно сделал что закрыл результат.
>>677210 Да ну заебали. Мне, например, похуй на эти стихи. Меня бесит слоупочность предыдущего ОП-а и кривая шапка. Можно сделать голосование о стихах и в случае, если это реально важно, пусть старый ОП сочиняет стихов на несколько перекатов вперед и все будут довольны.
>>677203 Ладно, давайте посмотрим, что скажет ОП-стихоплет. Вообще, было бы хорошо выработать консенсус какой-то, мне тоже не доставляет удовольствия разбираться в этой склоке уровня /pr. Возможно, вы сможете сделать общую шапку лучше обеих прежних (кстати, если будет надо впилить нестандартную разметку, то могу это устроить).
>>677213 Нет. В стихах сюжеты прошлых тредов. Помнишь стишок про артиста который с текстурами ебался? Представляешь что оп про этот тред напишет? Пусть он будет опом, а шапку вместе писать будем. На гуглдокс например.
>>677223 >кстати, если будет надо впилить нестандартную разметку, то могу это устроить Вот тогда питонодауны соснёт со своей гитхаб шапкой! Вот это многоходовочка! Ай оп малаца!
>>677242 Я поддерживаю идею. Если договоритесь между собой, что это приемлемо, запилю отдельный гитхаб для шапок официальных тредов. Потом сможете при перекате дергать меня, чтобы я заливал актуальную версию шапки.
Это опять я >>676295 У меня такой вопрос. Тут на википедиях пишут, что тысячи программ во всем мире написаны с использованием Qt. Есть какие-то яркие примеры? Я пока нахожусь в сомнениях - вкатываться мне в Qt или засесть за WinAPI
>>677425 Ты мне лучше за такую штуку поясни. Мой exe-шник helloworld.exe (написанный с использованием Qt) запустится у моего друга Васяна, если я ему его по скайпу скину?
>>677223 >>677203 Другой ОП на связи. Посоны, я не спорю, что немного слоупочу с перекатами, но это же все ради вас. Я обещал зделать улучшенную шапку, с учетом ваших пожеланий, а работы навалилось оче много, поэтому я в очередной раз прошляпил подход бамплимита и необходимость таки доделать ее. Кроме того, как заметил >>677148 , я стараюсь каждый раз подыскать приличный оппик, да и стихи не всегда получается запилить заранее. Прошу прощения, если долгие перекаты кого-то столь сильно напрягают. Согласен, что в этом случае проблему надо как-то решать.
Вот это >>677242 я двачую когда-то я вроде и сам предлагал пилить шапку коллективно, если мод согласится так сделать, будет заебца. По идее, хитрое форматирование например, спойлеры может решить проблему длинной нечитаемой шапки, и выносить ничего не надо будет. Моя версия новой шапки практически готова, я могу быстренько набросать вариант со спойлерами на ее основе и закоммитить в модовский гитхаб или типа того.
Стихи заблаговременно пилить я тоже могу, в принципе примерно в половине случаев стихи-филлеры не ссылаются на события тредов. Но это, наверное, не так интересно будет, потому что я напилю стихов на несколько тредов, все их прочитают и дальше будут скучать. Можно какое-то закрытое хранилище стихов зделать, чтобы мод брал оттуда при перекате, или еще как-нибудь.
>>677630 Ты мне кароч даёшь экзешник и я как счастливый юзер могу использовать всё это один день, пока курс не изменится, да? Запили ка ты нормальный класс Money с соотв. перегрузкой операторов. Шоб было что-нить навроде:
>>677636 Извините, я пока еще учу язык. Как выучу - сделаю программу, которая бы онлайн курс ловила бы и выводила для валюты на выбор. (почему-то я думаю что таких прог уже 100+ есть)
Просто, показываю что сделал, если какие недоработки и т.д. Вообще, когда в сообществе что-то делаешь, то тяжелее бросить начатое - я так считаю.
>>677638 Ну молодец, что осваиваешься, чего еще сказать. Попробуй смотреть в сторону прикручивания http-библиотеки, чтобы оно курс брало с какого-нибудь сайта автоматически. Тогда получится если не полезная программа, то уже что-то похожее на полезную.
>>677645 Похвалы? Ты шутишь? Осиль switch-case, а то от elif'ов рябит в глазах. Нормальную абстракцию и напиши что-нибудь полезное. Тогда, может быть, тебе не обосрут. Похвалы, лол. Мы тебе не родители и не тянка твоя.
>>677644 >>677642 Кстати, поясните вот что, у меня в папке проекта лежит дебаг с расширением .ехе, он работает как программа, которую я написал. Но, если я запускаю этот файл на другом компьюторе, то он ругается на отсутствие каких-то библиотек, которые, как я понял, идут с вижуалом. Как я понял, потом я уже узнаю как делать экзешник и вшитые в него билиотеик?
>>677242 Перенеси щас питонерам шапку с гитхаба. Посмотрим как это выглядит. Алсо как происходит вставка хтмлэля в пост? Может они тебе бота для автопереката запилят?
>>677687 А как релиз билд сделать? Я на вижула_студио пишу, пишут что вроде самая удобная иде для разработки. Я, конечно, еще много чего не понял, и интерфейс громоздкий и н слишком удобный... А ты на нём пишешь? У меня была бы пара вопросов по интерфейсу.
>>677687 >Если у тебя студия, то там запрещено вообще распространять дебаг-версии. >>677690 Вот тебе пруф, если хочешь: > Debug versions of an application are not redistributable, and debug versions of the Visual C++ library DLLs are not redistributable. You may deploy debug versions of applications and Visual C++ DLLs only to your other computers, for the sole purpose of debugging and testing the applications on a computer that does not have Visual Studio installed. https://msdn.microsoft.com/en-us/library/aa985618.aspx
Итак, почему память, выделенная под одну строку высвобождается за считанные секунды, а столько же памяти выделенной в сумме для нескольких строк, и высвобождение идёт по строкам, протекает в 10 раз медленнее и как это можно ускорить?
>>677932 Очевидно один, которому бомбануло от новой шапки и он решил сделать скрытое(!) голосование и пощеголять с модтегом. Только вот он не знает, что за это пизды дают похоже.
Аноны, а книга Джефф Элджер - C++: Библиотека программиста годнота или нет? Я просто посмотрел там много про работу с памятью написано. Может есть что поновее?
Сап, анон. http://ideone.com/df6V1p Суть такова: пользователь создаёт файл A, в который пишет целые ненулевые числа. Положительных столько же, сколько и отрицательных. Программа создаёт файл B, в котором эти числа записываются так, чтобы рядом не стояло двух чисел с одинаковым знаком (т.е. положительные и отрицательные чередуются), но отдельный порядок следования сохраняется как для положительных, так и для отрицательных чисел. Вопрос: какого хуя эта хуерга не работает, блядь? Я напутал что-то с указателями? Вчера весь вечер ебался с ней, в итоге не доебал.
Так там как понял без этого никак. Это для CUDA C, конструкция (void)&a. Что значит каст, ни разу такое не использовал на обычном С++. На приведение не похоже, на взятие адреса тоже.
>>676295 WinAPI лучше Qt. Сам несколько лет назад решил освоить какую-нибудь библиотеку для всяких гуёв. Выбор пал на Qt. Потихоньку осваивался, переписывал свои старые программы под GUI, но с каждым разом разочаровывался в Qt всё больше и больше. Реализация простейшей хуйни требовала создание абстрактного класса листенера события и использование парадигмы MVC. Про один экзешник можно забыть - нужен ещё и Qt5Core.dll, Qt5Widgets.dll и т.д. Программы не всегда делали то, что я хочу - например, не могли создать объект QImage размером больше гигабайта, а без QImage я тогда обойтись не мог. Поведение некоторых элементов было не такое, какое следовало ожидать. Где-то тогда же я узнал про WinAPI - древнюю, могущестенную библиотеку, когда-то бывшую доминантой, но теперь забытую за всеми этими фреймворками и абстрактными парадигмами. Уже тогда, не зная её вообще, я называл её "лучшей библиотекой в мире". А когда решил выучить её - понял, насколько же я был прав. Один экзешник, маленького размера. За счёт отсутствия нагромождения абстракций код на WinAPI получатся даже короче. Делала библиотека всё, что нужно, я до сих пор удивляювь, когда узнаю, что в ней есть яички для моей сегодняшней задачи. Вдобавок в Visual Studio был охуительный шрифт и сама архитектура WinAPI-программ взрывали мозг. Он охуителен.
>>678002 А вообще её за месяц-полтора можно как-нибудь освоить?? Ну, даже не освоить, а реализовать проект. Дело в том, что я никогда не писал приложения с гуи, а тут вот понадобилось и чтоб таблица была и картинки...
>>678002 Блядь, ты там ебанутый нахуй? Пошел ты в жопу с такими дебильными пастами. Бинарник у него один, бля. Если этот хуила не знает про статическую линковку, понятно какое ценное у него мнение.
>>678023 Знаю я, блядь, про статическую линковку. Как и про то, что ты ОБЯЗАН распространять программу под GPL, если слинкуешь статически. Я уж молчу про то, сколько всякого говна надо ставить, чтобы пересобрать Qt под статическую линковку.
>>678004 По документации можно, но только если ты умеешь читать документацию.
>>678066 >Я уж молчу про то, сколько всякого говна надо ставить, чтобы пересобрать Qt под статическую линковку. Сколько? Qmake и компилятор C++? (Которые в составе Qt SDK идут, лол). Даже 200 мб библиотек – лучше чем привязывание ануса к одной платформе и пожирание сишного говнолегаси из 70-х (винапи).
Алсо, я так понимаю поставлять бинарник в комплекте с 2 дллками – слишком трудно.
>>678066 >ОБЯЗАН Проиграл чёто. К тебе на хату завалятся, отпихдят и свяжут, потом будут натягивать кишки на скалку, крича -"ХУЛИ ТЫ КУТЮ СТАТИЧЕСКИ СЛИНКАВАЛ ПИДАР".
>>677932 2. Старый и новый. Новый в крестотреде обычно всё трёт и на звязь часто выходит, а старый лихорадочно закрывает треды и молчит вечно хотя в ГОвнотреде раньше появлялся чтобы всех побанить за срачи..
Линковать qt статически можно, если лицензия коммерческая. Если open source, то да, нельзя. Но, честно говоря, я не вижу проблемы поставлять либы вместе с бинарником.
Про то, что код на winapi короче и проще, - это вообще пушка. Ну покажи нам этот код, хули.
>>678083 Как ты можешь распространять не свободно свою программу и нигде не указать свой телефон? Ситауция такая что ты начинаешь распространять свою программу за $10, другие парни начинают продавать ее за $5. Ты пытаешся подать на них в суд - общественности становится известна твоя личность. К тебе подъезжают люди от Столлмана для разговора.
>>678094 Это хорошо что ты определился с целями своей жизни и решил что ничего больше laba2.cpp ты не напишешь - тут действительно можно линкануть статически с маловероятными последствиями. Но анона, возможно, интересует написание серьезных коммерческих проектов. И писать их с нарушениями лицензий недальновидно.
>>678092 Если будешь делать коммерческий софт – уж будь так добр заплатить и за Qt и не выёбываться. Это не студия с ценником от 1,5к до 6к$, всего-то 300$ для коммерческого проекта – не много. Ну а если у тебя очередное васяноподелие для 2-х человек – не вижу смысла ебать мозги.
>>678101 Но тогда он и купит коммерческую лицензию на qt и точно будет поставлять свой продукт не одним бинарником. Так что его аргументы выглядят весьма вскукаречно.
>>678101 Для сурьёзного проекта 300$ – не деньги. Только это всё высер твоего манямирка, в попытках оправдать сказанную тобой тупость. >>678097 Что с этого будет-то? Кто-то усрётся и наспамит тебе на почту что ты хуесос?
>>678115 Уменьши обороты манямирка, дефектное. Ты впаривал нюфагу про то, что ДЛЯ СУРЬЙОЗНОГО ПРАИКТА НУЖНА ПЛАТИТЬ, ИНАЧИ ПАЗВОНЯТ ДЯДИ И СКАЖУТ ЧТО ТЫ ДОЛЖИН ЖРАТЬ ГРЯЗЬ ИЗ ПОД НОГТЕЙ КАК СТОЛЛМАН))). И что-то не заметно, чтобы тебя ебало, что на статическую линковку васяноподелия без крупной базы (тем более если оно некоммерческое – тебе даже по закону сделать в СШП нихуя не смогут) всем похуй.
>>678002 Ты двинулся. Эта бибка сишная, которая по существу эмулирует сишными же средствами ООП. Чего в этом хорошего, учитывая, что всё это досталось со временён третьих Окон?
Подобный подход может быть обоснованным разве что в kernel space, но никак в user space, где аноны пилят гуйню.
Алсо, что не так с MVC-парадигмой? Давай разложи по полочкам, мамкин проектировщик.
>>678004 Гуи на гуёвых языках. Если очень хочется писать на плюсах и иметь gui, то как вариант пиши плюсовую бибку, которая дёргается из графического фронт-энда, написанного на C++ .NET.
>>678067 Насколько я помню, git, msys, ruby, python, Cygwin и что-то ещё. А, ну и Qmake и mingw. По крайней мере, в 2013 было так.
Да, таскать за собой лишний мусор - это пиздец. Лучшая программа - та, что распространяется в одном .exe. Всякие zip-архивы с rar-архивами мусора не нужны.
>>678091 Да, вот только с WinAPI тебе вообще не нужно ни за что платить, чтобы нормально распространять программы.
Код бы показал, да вот Qt давно не стоит, чтобы написать аналогичный для сравнения.
>>678109 Это не троллинг. Когда устал от паттернов абстрактных фабрик синглтонов(а Qt ими наполнен), то WinAPI кажется невероятно охуительным. В нём всё так неправильно, так непривычно. И это круто.
Там, блядь, ООП НА СИ! Без крестов! ООП! НАСТОЯЩИЙ! НА СИ! И ВСЁ ПРИ ЭТОМ РАБОТАЕТ! Это же венец творения!
Каждый дурак может написать ООП на C++. ООП на сях могут написать только самые крутые чуваки с инженерным мышлением.
MVC-парадигма? Да всё с ней нормально, только заехал этот ДИЗАЙНЕРСКИЙ АРХИТЕКТУРНЫЙ ПОДХОД. Хочется чего-то неправильного. Того, что нарушает правила по разработке ПО.
А ведь в WinAPI помимо всего этого ещё и синтаксис охуителен.
>>678119 Дело даже не в том, что где-то следят какие-то дяди. Дело в собственном ощущении лицензионной чистоты.
>>678232 >Насколько я помню, git, msys, ruby, python, Cygwin и что-то ещё. А, ну и Qmake и mingw. По крайней мере, в 2013 было так. На ШIИD0W2 так и до сих пор. Блять, даже в OSX позиционирующейся как ОС для домохозяек это всё есть из коробки. >Да, таскать за собой лишний мусор - это пиздец. Лучшая программа - та, что распространяется в одном .exe. Всякие zip-архивы с rar-архивами мусора не нужны. Когда у тебя большой софт - намного удобнее положить хуй и слинковать динамически. >Да, вот только с WinAPI тебе вообще не нужно ни за что платить, чтобы нормально распространять программы. А ещё тратить на создание банального окна сотню строк кода. Ладно, если пары кнопок нету нихуя, но на любом банальном листе который нужно заполнить данными из интернета ты повесишься. Если уже на бесплатном, то и на сокетах наверно весь десктопный софт пилить предлагаешь? >Код бы показал, да вот Qt давно не стоит, чтобы написать аналогичный для сравнения. Ясен хуй, что ты просто вбрасываешь потолще. Молодец, заглотни хуйца и слейся до конца. >Это не троллинг. Когда устал от паттернов абстрактных фабрик синглтонов(а Qt ими наполнен), то WinAPI кажется невероятно охуительным. В нём всё так неправильно, так непривычно. И это круто. Учитывая что всё это облегчает код во всех аспектах - попизди ещё что ты не жирный ублюдок. >Каждый дурак может написать ООП на C++. ООП на сях могут написать только самые крутые чуваки с инженерным мышлением. Эээ, блять, кек. Чтобы писать на Goвне теперь тоже нужно инжинерное мышление. Создал структурку, в хидерах маскируешь её под void* и мартышки НИПАНИМАЮТ))))) АХУИТЬ КЛАССНА))) >Дело в собственном ощущении лицензионной чистоты. И при этом тебе нравится измазываться говном Билли 30-ти летней выдержки?
>>678245 Да чего ты с ним разговариваешь, лол? Это же тот поехавший с охуительными историями про его превозмогания винапи. Его еще зимой тут хуями накормили.
>>678245 >На ШIИD0W2 так и до сих пор. Блять, даже в OSX позиционирующейся как ОС для домохозяек это всё есть из коробки. Но блядь, нахуя мне одноразовый мусор в системе? Ещё и из коробки, охуеть просто. Мусора вообще быть не должно. Если ты не ruby-кодер, то нельзя ставить ruby для подобных задач ни при каких обстоятельствах. Всё, что у меня стоит на компьютере, так или иначе мной используется.
Поэтому никакой статической линковки.
>Когда у тебя большой софт - намного удобнее положить хуй и слинковать динамически. А потом искать нужный файл в нужной папочке, и только попробуй потерять хоть один файлик из нужных.
Ладно я, который знает, как это было написано и что нужно для работы. Но пользователи! Ни в коем случае нельзя создавать пользователям неудобства.
>А ещё тратить на создание банального окна сотню строк кода. Ладно, если пары кнопок нету нихуя, но на любом банальном листе который нужно заполнить данными из интернета ты повесишься. Если уже на бесплатном, то и на сокетах наверно весь десктопный софт пилить предлагаешь? Тебя удивить? В Qt та же сотня строк кода. Только они уходят не на очевидные действия, а на всякое наследование абстрактных классов и перегрузку методов листенеров. Скууууука! >Ясен хуй, что ты просто вбрасываешь потолще Да, конечно, можешь не замечать того, что я написал строкой выше. Только меньшей правдой оно от этого не становится. Давай так - вбрось-ка сам сюда код на Qt. >Учитывая что всё это облегчает код во всех аспектах - попизди ещё что ты не жирный ублюдок Это не облегчает код, это вызывает жуткое уныние. По сложности абсолютно то же самое. >Эээ, блять, кек. Чтобы писать на Goвне теперь тоже нужно инжинерное мышление. Создал структурку, в хидерах маскируешь её под void и мартышки НИПАНИМАЮТ))))) АХУИТЬ КЛАССНА))) Хуйня какая-то, подумаешь, под void замаскировать. А вот WNDCLASS::lpfnwndproc(я от одного этого названия кончаю) - это интересное и замысловатое архитектурное решение. >И при этом тебе нравится измазываться говном Билли 30-ти летней выдержки? Это не говно тридцатилетней выдержки, это древний диалект, который на сегодняшний день помнят лишь немногие. Охуенно быть в числе немногих.
>>678270 Что-то я не помню такого, помню лишь, что никто так и не смог доказать, чем их %либанейм% лучше WinAPI.
>>678272 Такие пишу только я. Смотри, например, тебе нужно, чтобы пара твоих знакомых посмотрело, какую охуенную штуку ты написал. Дальше 2 сценария: Сценарий 1. -Смотри, что у меня! -Ладно, давай посмотрю. Принимает. Не запускается чёт, Qt5Core.dll какой-то требует. -Эээ... Ладно, подожди, я кинуть ещё. -Скучающий вздох Ладно, давай. Принимает. Опять требует что-то. -Ой-ой, ща. -Да ладно, забей, потом как-нибудь.
Сценарий 2. -Смотри, что у меня! -Ладно, давай посмотрю. Принимает. Вау, чувак, это круто!
>>678302 >Такие пишу только я Не думал, почему так? Собственно, я уже точно знаю, что ты больших проектов в глаза не видел. Достопочтенным господам в крупных проектах нужно: - Кроссплатформенный GUI и код в целом. - Скорость работы отладчика - Скорость работы IDE на проекте - Внешняя конфигурация работающего приложения - Плагины - Простота доставки обновлений - Расшаривание функциональности между несколькими бинарниками.
Поставлять приложение одним бинарником - это бред, никто так не делает. Использовать непереносимую библиотеку GUI на десктопе это тоже бред.
>>678319 >Кроссплатформенный GUI и код в целом Не нужно. У меня нет ни одного знакомого, который всерьёз бы использовал линукс. А это вполне нормальная выборка, чтобы сделать соответствующие выводы. >Скорость работы отладчика И на Visual Studio она очень высокая. А на Qt вообще где-то до 5.1 был просто отвратительный отладчик. >Скорость работы IDE на проекте И тоже достаточно высокая. >Внешняя конфигурация работающего приложения Есть. >Плагины Уточни - плагины для IDE(потому что в Visual Studio, в отличие от Qt Creator, они есть) или плагины для твоего же приложения? Если второе - то идеальному приложению вообще плагины не нужны, оно выполняет все необходимые задачи. >Простота доставки обновлений Заменяешь бинарник и всё, делов-то. >Расшаривание функциональности между несколькими бинарниками А что ты имеешь в виду? Нахуй несколько бинарников?
>>678328 > У меня нет ни одного знакомого, который всерьёз бы использовал линукс. Андроид твои знакомые тоже не используют? >И на Visual Studio она очень высокая. А на Qt вообще где-то до 5.1 был просто отвратительный отладчик. Qt вообще-то нормально работает под Visual Studio.
>>678369 А нужен ли им вообще твой софт для начала? Девочки с макбуками - весьма специфическая аудитория. Если твой софт для них, может, тогда виндовая версия вообще не нужна?
>>678376 >Андроид твои знакомые тоже не используют? Прости, но Android - это вообще не десктоп. Мобильные приложения - совершенно другая среда. Они по-другому распространяются, по-другому пишутся, по-другому работают и по-другому используются. Я уж молчу про то, что только идиот будет писать приложение под андроид не на Java(хотя Java - ужаснейший язык). >Qt вообще-то нормально работает под Visual Studio Только вот он там не особо нужен.
>>678397 Мобильные приложения другая среда только для winapi-дрочеров. Ничего особенного в них нет для тех, кто умеет писать кроссплатформу. Ты просто программист ниже рангом, вот и все.
>>678283 Нет. Тут 3 профи сидят 2 могут в асм 1 в js. Оп студент последнего курса возможно работает в бодишопе и когда говорит от своего имени часто называет остальных няшеми ещё олдфаг или луркоёб. Другой отвечает даже на глупые вопросы и использует vim, а третий использует класс tvoymamka и часто материться тогда что-то поясняет похоже что это алчан и теперь он куда-то сбежал. Остальные не очень активные. Раньше похоже модер сильно не выделялся как и новый оп т.к. их не помню. Алсо предлагаю затролить мода и устроить бамплимит до 8ого марта и это где его посты? Нахуя потёр всё?
>>678449 Не. Я точно этих трёх запомнил. А до нашего опа опом был алчан кстати. Это он писал в шапке чтобы все шли нахуй и свой скрипт для [code] в шапку пихал.
>>678328 >Не нужно. У меня нет ни одного знакомого, который всерьёз бы использовал линукс. А это вполне нормальная выборка, чтобы сделать соответствующие выводы.
Это просто ультратолсто. Ты уже давно не помещаешься в этот тред. Давай тоньше, а то не интересно.
>И тоже достаточно высокая. Охуительные истории ITT. Ты хоть раз открывал солюшн с 170 подпроектами? Я открывал. Мне не понравилось. Помимо того, что code assistant работал довольно медленно, так он еще и хуево работал. В Eclipse ситуация намного лучше, но все равно на таких объемах кода разработчики иногда включают распарс только на проектах, на которых работают. А если у тебя еще нет SSD, то это просто блять обязательно, иначе можешь идти пить чай, пока анализ кода не завершится. >Есть. В реестре, лол? А я думал, в отдельном файлике, который рядом с бинарником лежит. Вот ведь не задача-то!
>Если второе - то идеальному приложению вообще плагины не нужны, оно выполняет все необходимые задачи. Ага, попизди тут еще, макака ебаная. А если эти плагины платные и кастомеру все они не нужны? А если это моды к играм? Я же говорю, ты никогда не работал с крупными проектами, а пиздишь, будто ты Макконелл.
>А что ты имеешь в виду? Нахуй несколько бинарников? Ну ты поставляешь консольную и gui-шную версию приложения, например. Ах да, в твоем манямирке такого не предусмотрено.
>>678463 Ну да. Я же это и написал. Только не помню почему так решил.
>>678459 Про последний курс да. Но он не говорил что он ОП. В одном из тредов 1 хуй какие-то лекции по архитектуре компьютера советовал когда другой реквестил аналог таненбаума покороче. Там у него спросили аспирант ли он, а он ответил что студент. Про последний курс не помню, но судя по знаниям последний. Было это летом или весной. Раньше всё записывал, но проебал файл. Ухожу на архивач освежить воспоминания.
>>678476 >Только не помню почему так решил. Всё. Вспомнил. У него они на одном гитхабе лежат. А ещё возможно это он этот тред вайпал т.к. там же и какая-то универсальная вайпалка лежит https://github.com/ololoepepe/wipe.js
>>678412 >Мобильные приложения другая среда Блядь, я тебе как пользователь это говорю. У десктопа и у мобайла совершенно разные задачи. Там, блядь, даже браузеры разные.
Кроссплатформы "мобайл-десктоп" не бывает. Назови мне хотя бы одно приложение, которое одинаково работает в обеих средах.
>>678499 Да ладно. Кстати дочитываю первый тред. Там как-раз оп и говорит что те лекции у них на 2ом курсе читают. Значит Он минимум 3ий курс. А задедектил его по спойлерам. Оп их любит.
>>678522 А как я узнаю какие байты принадлежат функции?
Вот ещё нашёл. >Статический метод попадает туда же, куда и обычные методы - в сегмент команд. Суть в том, что методы не копируются для каждого объекта класса. В смысле размещения все функции "статические", потому что все функции, которые вызываются хотя бы один раз, записываются в память и не дублируются. static-методы отличаются только тем, что они не принимают неявно первым параметром указатель на объект, и поэтому их можно вызывать не только от имени объекта как mamka.ebat (), но и вообще при отсутствии объектов класса, от имени всего класса: TvoyaMamka::ebat ().
Тут же дохуя проблем может быть. Например если эта функция будет обращаться к другому методу или переменной в классе, а объект не создан. Знаю что можно попробовать проверить, но могут быть проблемы о которых я не подумал. Где на столько подробно за кресты поясняют?
>>678526 Он увидел спагети в шапке и тред который 2 дня в бамплимите и решил стать новым опом.
>>678516 >Зато бывает мобайл-мобайл Да, но мы говорим о десктопе. Мне похуй, что там в мобильной разработке, всё равно интересных средств там нет. >Ну давай ты накинешь сравнений Ну отлично, кидай код на Qt, а я его сравню с винапишным.
>>678531 Ну там изи, если немного разобраться. Можно прочитать про формат бинарника для своей архитектуры и отрезать от существенных байтов заголовок и всякую хуйню. Или просто взять таблицу машинных кодов и перегнать ассемблерный код вручную в машинные команды.
>Тут же дохуя проблем может быть. Например если эта функция будет обращаться к другому методу или переменной в классе, а объект не создан. Так нельзя. Объекта же нет.
>Где на столько подробно за кресты поясняют? Страуструп/стандарт
>>678531 Если статическая функция попытается обратиться к нестатическому члену, то код просто не скомпилируется. Почитать можно книги из шапки, те, что более хардкорные.
>>678550 >те, что более хардкорные. >Литература для тех, кто осилил предыдущий пункт >Наиболее детальные описания языка: >Тонкости языка (для гурманов) Какие?
>>678561 Хуй его знает, почему я выкинул этот раздел. Помню только, что "Параллельное программирование" выкинул как нерелейтед, хотя сейчас понимаю, что зря. Вероятно, случайно забыл добавить.
>>678540 Хорошо, подожди часик и я напишу WinAPI-код. Только уточни для начала, ты вот эти вот QML+JS тоже считаешь? Ибо QML+CPP как раз и занимает у тебя примерно столько же кода, сколько винапишный эквивалент.
Анон, поясни заходящему сюда раз в пару лет мимо-пасквилянту, какую оптимальную версию MS Visual С++ покупать на торрентах для начала? Свистелок и маус-кодинга не хочу, меня интересует просто создание 32-разрядных оконных приложений с нуля, поэтому ранние версии предпочительней. Чтобы программа не требовала левых библиотек в рабочей папке и всяких богомерзких установленных пакетов типа MS Visual C++ Redistributable 20хх, и чтобы не вылетала на старых осях типа ХР без причины. Например мои программы, написанные на Delphi 4.0 (1998 года) нормально, быстро и без проблем работают и на Win10 x64, поэтому от плюсов я жду того же, на всякие фичи типа использования 64-разрядности или многоядерности проца я не претендую. И еще: мне когда-то посоветовали хороший учебник по сабжу от одного из майкросовтовских разработчиков Visual C++, но я пролюбил PDF-ку и в упор не могу вспомнить имени автора, могу точно сказать, что это не Страуструп и не Мейерс, других авторов из ОП-поста пока не гуглил. Есть идеи?
>>678738 Чтобы если программа упадет от чтения в неположенном месте, вывелось все, что успело вывести, а не подохло вместе в буфером. Какой длины - узнать x86 код ассемблерной команды RET и заменить цикл на while. Ну или в отладчике посмотреть disassembly и прикинуть сколько байт там будет.
>>678652 Чем свежее - тем лучше. Вот в 2015 Visual Studio добавили профайлер памяти встроенный, и, насколько я понимаю, добавили туда поддержку стандарта C++14. Что касается свиньи (шиндоус хр) и прочего старого хлама - то это там можно, да. Стандартная библиотека сейчас очень даже ничего, но кк ни крути, редист качать надо будет, даже для старых версий компилятора. Таки дела.
>>678763 Но если функция, которую хотят прочитать и функция, которая читает находятся в одной секции, то да, в случае PIC все сработает. Но я все равно не понял, зачем ты упомянул PIC
>>678724 Формошлепством уже давно не интересуюсь, все руками делаю. >C++ Builder. Ты про борландовский цпп? Да ну его нах, после нескольких лет дельфоебства я теперь на пушечный выстрел не подойду к их кривому софту. В фак-треде на 100% верно про них написано: >Если интерес не поиграться, а работать, то не нужно следовать за массовыми истериями. Выбирай язык с кучей библиотек, туториалов и проверенными временем фреймворками под твои нужды. Иначе будешь тратить время на велосипеды и поиск багов в чужих пакетах. Я несколько лет страдал изобретением велосипедов, правкой их багов и обходом вредных свистелок, в то время, когда нормальные люди учились нормальным языкам и не тратили время. >>678752 Спасибо, наверное стоит попробовать с 2015 Visual Studio. А что насчет классической MS Visual C++ 6.0? У меня самого железо - старый хлам, когда нормальный ноут помер, я собрал на скорую руку свое нынешнее помойное ведро и ХР на нем работает нормально, чаще даже под ней приходится сидеть, чем под Семеркой. Меня, если что, не интересует на данный момент ничего кроме создания простейших приложений с окном и простым циклом обработки сообщений. На дельфе все это есть, но хочется поближе к системе, и чтобы без гигантских и глючных объектных нагромождений поверх простых вещей.
>>678897 >Я несколько лет страдал изобретением велосипедов, правкой их багов и обходом вредных свистелок, в то время, когда нормальные люди учились нормальным языкам и не тратили время. >Меня, если что, не интересует на данный момент ничего кроме создания простейших приложений с окном и простым циклом обработки сообщений. Ты ебанутый и так ничего и не понял. Голое winapi в 2016 - это трата времени.
>>678900 Ебанутый здесь толькот тот, кто считает, что для программы, где нужен только WinAPI, нужно использовать что-то кроме него. А обучение нужно начинать с основ, а не с наворотов. >2016 Ох уж эти форчково-школьные ракомемы. Тебе лет-то сколько вообще? Если нечего сказать, так ничего не говори.
>>678906 >Ебанутый здесь толькот тот, кто считает, что для программы, где нужен только WinAPI, нужно использовать что-то кроме него. WinAPI просто не нужен, нужны кроссплатформенные объектно-ориентированные фреймворки. Qt, wx, fltk если так охота что-то от MS, то winforms, но MS давно забила на гуй для нативного С++. >А обучение нужно начинать с основ, а не с наворотов. WinAPI - это не основы, это устаревшая хуево задизайненная библиотека. Весь пиздец в том, что ты пишешь "изобретением велосипедов, правкой их багов и обходом вредных свистелок, в то время, когда нормальные люди учились нормальным языкам и не тратили время", и при этом хочешь делать что-то с WinAPI, вместо того, чтобы послушать нормальных людей. >Ох уж эти форчково-школьные ракомемы. Тебе лет-то сколько вообще? Мне 27. При чем тут мемы я не понял.
>>678929 >>678931 Ах, да. > POSIX says that the behavior of mprotect() is unspecified if it is applied to a region of memory that was not obtained via mmap(2).
Так что, для надёжности, замени UC w[100]; на выделение куска памяти через mmap(). Заодно и флаги, разрешающие исполнение укажешь при вызове mmap().
>>678936 >>678936 > Написано он устанавливает защиту > mprotect() changes protection Что-т ты пиздишь. > Пример не понял Забей на mprotect(), выдели место, куда будешь копировать код функции, с помощью mmap() с флагами PROT_EXEC, PROT_READ и PROT_WRITE
>>678939 >Что-т ты пиздишь. Да. Случайно. >Забей на mprotect(), выдели место, куда будешь копировать код функции, с помощью mmap() с флагами PROT_EXEC, PROT_READ и PROT_WRITE Щас сделаю.
>>678944 >Щас сделаю. Заметь, я перечислил не все флаги, которые тебе будут нужны. Только те, которые сделают возможным запись и исполнение. Ну и да, mmap() это POSIX. Если у тебя сперма, тот там свои функции для управления защитой памяти.
>>679009 А как это сделано у других? JIT который выше кидали вроде что-то похожее делает. И это ведь не зависит от компилятора? Только типа процессора и ОС?
Прочитал абсолютно все книги из шапки, только про qt и boost, и прочие либы не знаю, спокойно решаю задачи на cppquiz. Что мне теперь делать? В тредах пишут работу хуй найдешь. Кстати, я только в консольке код писал. Не могу в гуи, еще всяких терминов типо тех.лид, фронт енд, бек енд не понимаю.
Сап аноны. У меня очередной ламерский вопрос. Читая раздел в учебнике, посвященный различным контейнерам и массивам, столкнулся с понятием "указатель (итератор) на элемент после конца массива (контейнера)". Вопрос, что это за такой "элемент после конца" и нахрена он нужен? Почему не возвращается указатель (итератор) просто на последний элемент? И, тем более, в учебнике сказано, что значение этого самого "элемента после конца" не может быть получено. Короче, что это за хуйня такая? Я так понимаю, если у нас массив типа int (кстати, сколько там оно занимает? Ну пусть будет 4 байта), то "указатель на элемент после конца массива", это то же самое, что и указатель на последний элемент + 4 байта? В чем смысл этого понятия, я не понимаю. Может кто-нибудь объяснить? Пикрелейтед, одно из упоминаний.
>>678272 >>678302 >Сценарий 1. >-Смотри, что у меня! >-Ладно, давай посмотрю. Принимает. Не запускается чёт, Qt5Core.dll какой-то требует. >-Эээ... Ладно, подожди, я кинуть ещё. >-Скучающий вздох Ладно, давай. Принимает. Опять требует что-то. >-Ой-ой, ща. >-Да ладно, забей, потом как-нибудь. Перед нами школьник. Сам также грустил лет пятнадцать назад.
>>679293 В основном указатель на следующим за последним элементом возвращается из соображений удобности.
Итератор же это обобщение указателя - штука, которая позволяет обойти элементы заданного множества. Открой документацию для приличия. Там ты увидишь различные классы итераторов, которые по своим свойствам сильно отличаются от обыного указателя.
>>679304 Я понимаю, что такое итератор и что такое указатель. Я к тому, что в чем тут удобство, возвращать указатель (итератор) на элемент (которого на самом деле нет) после последнего? В том, что тебе цикл for проще писать или где?
Учебник кстати из шапки, вот этот: Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014)
Неужели придумали еще одну сущность ("элемент после конца") только ради того, чтобы цикл for писать было "удобно"? Как по мне, так это полный пиздец, если так.
Ну смотри, на пикче, которую я скопипастил из учебника написано про позицию за последним элементом массива или контейнера. Т.е. последний элемент (про который ты говоришь), это элемент, находящийся на позиции: результат функции end() - 1. Не проще ли сразу было сделать эту функцию, возвращающей итератор или указатель на последний элемент? Я пытаюсь понять, зачем нужен "элемент идущий после последнего" вместо "последний элемент"? Нахуя мне элемент, идущий после последнего? Согласно тому же учебнику, я его значение получить не могу. Это просто итератор, либо указатель, указывающий куда-то за конец контейнера либо массива. На-ху-я он мне нужен? Он мне нахуй не нужен. Покажите, если кто знает, где он нужен, кроме цикла for. Я не понимаю.
>>679312 Как часто ты используешь последний элемент? Покажи программу где end() возвращающий итератор на последний элемент полезнее чем тот end() который сейчас. И есть всякие push_back которые упрощают работу с разными контейнерами.
Говорят, невозможно забыть свою первую женщину и своего первого программиста. И это так.
У меня это произошло осенью. С друзьями мы сидели в клубе "Golden Dolls", болтали, пили абсент, смотрели стрип-шоу, когда ко мне подошел Ганс и сказал: - Пора, мой друг.
Я сразу понял, что он имеет в виду - все-таки готовился все лето - но переспросил на всякий случай: - Пора - что?
- Пора валить программиста! - засмеялся Ганс.
Мы пошли на улицу, на парковку, где стоял джип Ганса. Он открыл заднюю дверь, и я увидел разложенное оружие - пистолеты, снайперскую винтовку, разнообразные карабины, дробовики, автоматы - целый арсенал.
В нашем тире я учился стрелять из всех видов оружия, даже из тех, которых тут не было, но сейчас - от неожиданности - не знал, что выбрать. Ганс заметил мою нерешительность.
- Из автомата валить программиста неинтересно, - сказал он. - Разве что из "узи", но тут надо уметь разрезать его пополам, тогда прикольно. А так просто решето получается - некайфовое. Из пистолета - тоже требуется навык, чтобы засадить программисту пулю между глаз. Снайперская винтовка - для девчонок. А вот карабин большого калибра - самый то. Да еще пуля с тупым наконечником. Если засадить программисту в голову, она разлетается на кусочки, как арбуз, а если в грудь - он смешно так подпрыгивает и отлетает. Так что советую - карабин.
Я послушался совета Ганса - все-таки он уложил уже с десяток программистов, одного даже из арбалета. Поэтому взял карабин и мы поехали на окраину. За руль джипа, конечно, сел я.
Программисты ездят на метро, велосипедах и дешевых машинах-развалюхах. Поэтому и ловить их надо в соответствующих местах. Я выбрал метро. Время было позднее, программисты уже вернулись с работы, попадались в основном старичье, стайки негламурной молодежи с банками пива в руках, противные тетки. Я уже думал ехать к район хрущевок, где программиста можно найти, когда он выносит мусор, но тут повезло. Из метро вышел одинокий программист. То, что это он, я понял сразу - средних лет, одетый в какое-то потертую куртку китайского или турецкого производства - буэээ! - стоптанные ботинки, какая-то кожаная кепка на голове. С ноутбуком в руке. Да, да, с ноутбуком!
Он прошел мимо ларьков, свернул за угол дома, и пошел через площадку в сторону большого длинного дома, в котором программисты живут как в муравейнике в том, что они называют квартирами.
Так как я заранее покатался вокруг этой станции метро, я знал, что надо делать. С места врубил на полную, выскочил на площадку между домом и программистом, ударил по тормозам прямо на протоптанной программистами тропинке и одновременно развернул машину на 180 градусов, так, что моя дверь оказалась как раз напротив него. Программист замер, не понимая что происходит. А я уже взял зажатый между коленями карабин, передернул затвор, открыл дверь "джипа" и выскочил из машины. Все это заняло у меня от силы две-три секунды. Программист ошалело смотрел на меня, и тут я к своей радости увидел на нем очки. Во повезло-то, успел подумать я. И всадил ему пулю в грудь. Программист взмахнул руками, ноутбук упал в сторону, а сам он улетел метра на два или три от меня - вот что значит большой калибр! - и лишь его кепка плавно спланировала на то место, где он только что стоял.
С другой стороны джипа вышел Ганс, неторопливо подошел к лежащему в грязи программисту: - Точно, с одной пули, молодчина!
Он вернулся к машине, протянул мне фляжку с коньяком. Было прохладно, коньяк пришелся очень даже. А сам Ганс стал обзванивать всех, кого надо. Сначала прилетела съемочная группа "НТВ", довольно симпатичная девушка-журналист расспросила меня, какие чувства я испытываю после того, как убил своего первого программиста. Я от волнения плел что-то невнятное - потом, когда смотрел в наших новостях по кабельному, было даже немного стрёмно, но мама сказала, что я выглядел очень мужественно с карабином в руках. Потом приехала полиция, Ганс дал им по 100 баксов, старшему пятьсот, и они принялись заниматься формальностями. Уже после того, как труповозка увезла тело программиста, ко мне подошел старший, кажется, капитан, отдал честь и сообщил, что программиста звали Степанов, и работал он на заводе C++'ником. Даже Ганс позавидовал мне - такого кристально чистого программиста не всегда удается завалить.
Тут принялся разрываться мой телефон. Позвонил отец, поздравил меня с первым, сказал, что завтра меня ждет сюрприз. Сюрпризом, кстати, оказался новенький "Бентли". Потом начали звонить друзья - сообщение о том, что я завалил программиста, да еще такого, быстро разлетелась по всему твиттеру.
Когда мы вернулись в клуб, там началось просто ликование. Знакомые и незнакомые бизнесмены, политики, депутаты, сенаторы, журналисты, писатели, визажисты, музыканты и певцы подходили ко мне, жали руку, целовали, оставляли свои визитки. Позвонил лучший друг отца, который тогда работал вице-премьером по социальным вопросам и сказал, что он гордится, что у его друга вырос такой замечательный сын.
Праздновать дальше мы потом поехали в наш поселок на Рублевке и вот там ко мне подошла наша соседка, отдыхавшая у родителей после учебы в Гарварде. Я давно на нее положил глаз, но до этого дня она казалась мне Снежной Королевой. А тут подошла сама и прошептала на ухо: "Я хочу тебя".
И потом, уже под утро, у меня был с ней такой секс, какого никогда еще не было в моей жизни. Все-таки не зря говорят, что когда уложишь программиста - потом такая эрекция, как после травы или кокса. А уж тем более - после первого программиста.
До этого я читал книжку (дошел до раздела по STL и решил, что надо бы обратиться к более современным трудам) по крестам 2004 года от Роберта Лафоре. Там такой функции не упоминалось, да и вообще такого понятия не было. Поэтому в паре программ, которые я написал, эту вещь я не использовал.
Я к тому, что с точки зрения новичка (кем я являюсь), непонятно, нафига придумали эту сущность.
Для меня вот это словосочетание "элемент следующий после конца контейнера" это просто абстракция. Причем, так оно и есть. И я не могу понять, почему сделали именно так, а не иначе.
Неужели только для того, чтобы цикл for писать типа удобнее?
>>679331 > Неужели только для того, чтобы цикл for писать типа удобнее? Да. Для итератора может быть не определена операция >, как тогда узнать, в какой момент надо прервать цикл? С невалидным последним элементом цикл выглядит так: for (auto it = begin(); it != end(); ++it){...}
А последний элемент валидный, то нужно писать специальный метод, чтобы узнать, когда он будет невалидным. for (auto it = begin(); it.vaild(); ++it){...}
Сделать-то так можно было, но ребятам больше понравилось первое решение. В принципе, я видел и второй вариант в одном коммерческом коде. Это всего лишь решение, а не догма или правило.
>>679312 > зачем нужен "элемент идущий после последнего" вместо По каким-то причинам было принято решение что функционал итератора (в том числе синтаксис) должен полностью повторять функционал указателя (и естественно быть шире). Вполне возможно это для того чтобы функции из <algorithm> можно было без всяких промежуточных сущностей использовать с указателями. Тоесть можно использовать std::sort как с итератором, так и с старым добрым указателем на массив. А исторически (почему-то) так сложилось что указатели перемещают именно таким образом - проверятся не то что указатель показывает на последний элемент, а то что на элемент следующий за последним. Эта хуйня еще с С тянется.
Работаю в топовой компании. Сую мнение, что самый лучший язык - это си, а не си-п-п. Работаю и с тем и с тем, но код на си всегда проще, понятнее, и быстрее. Всякие джавы , питоны, и си шарп - вообще параша. Только си и гну.
не знаю сюда или нет делал по видео гайду https://www.youtube.com/watch?v=aTZIJc-_nq4 и получил пикрезультат где там прописывать кодировку? сразу не посылать в хуй, я только начинаю познавать этот мир
>>679433 Работаю в топовой компании. Сую мнение, что самый лучший язык - это си-п-п, а не си. Работаю и с тем и с тем, но код на си-п-п всегда проще, понятнее, и быстрее. Всякие джавы , питоны, и си шарп - вообще параша. Только си-п-п и гну.
>>679433 Работаю в топовой пекарне. Сую мнение, что самый лучший хлеб - это черный, а не белый. Работаю и с тем и с тем, но черный хлеб всегда пропекается лучше, поджаристее и быстрее. Всякие булки , коржики, и пицца - вообще параша. Только черный хлеб и вода.
сап, программач! вопрос, символ | и ctrl+z заканчивают полностью программу или как? в учебнике Стровструпа указано заканчивать ввод подобным методом. Каким образом предотвратить окончание всей программы изза такого?
>>679550 да но мне надо не чтобы я вводил два раза число в разные переменные. А чтобы я один раз с клавы ввел число, и мне его записало сразу в int и в ch! на 2 в 2 а 1 в 2
>>679569 Работает. https://ideone.com/lEEftE Только как ты собрался читать числа? И зачем? Ведь если считывать число как чар, то он первую цифру считывает.
>>679569 Короче. Вводи число. Проверяй поток на fail. Если fail, то в потоке символ. Вызывай clear и вводи символ. Потом преобразуй и всё. Правда я не знаю зачем тебе это нужно.
>>679591 в переменной будет старое значение. В потоке будет fail. >как проверить? int a = 0; char ch = '\0'; std::cin >> a; if(std::cin.fail()) { std::cin.clear(); std::cin >> ch; a = static_cast<int>(ch); } else { ch = static_cast<char>(a); }
>>679603 int a = 0; char ch = 's'; cin >> a; // вот только чтобы тут одновременно значение записывалось в и в "a" и в "ch"! т.е. в обе переменные! а вводить пришлось только 1 раз.
>>679627 Модули не рассматривались на этой конференции и modules TS не имеют сейчас никаких установленных сроков работы. Плюс есть некоторые срачи на форуме стандартизации по поводу этой фичи. С другой стороны clang и MSVC уже сделали кое-какие реализации модулей, что вселяет надежду, что на следующей конференции рабочая группа уже будет иметь какой-то опыт использования этой хуерги и может быть к чему-то прийдет.
ребят в чем беда такой проверки? по идее должно же заканчивать цикл только когда temp[0]==numbs[0] и т.д. правильно? почему тогда просто выходит с цикла?
>>679712 ооо, вот оно что, чаю этому господину. Помогла замена && на ||... Сначало не понял почему, но потом сразу допер..... Пока a1!=b1 ИЛИ a2!=b2 ...т.е. как сразу несколько значений для выхода, а если && то при исполнении любого выйдет из цикла, верно? или я опять не прав? )
>>676033 (OP) вопрос к знатокам я интересующийся есть ли путь программить на c++ кроссплатформенные приложения? что?где? и как для этого нужно. или как я понял c++ это сугубо компиляторо зависимый язык как в принцепе и все остальные т.е. на каждой платформе свой c++ и подружить их чтоб они понимали друг друга весьма проблематично, так? ЕСТЬ ЛИ КРОССПЛАТФОРМЕННЫЙ КОМПИЛЯТОР C++?
>>679826 >ranges Что за ranges? Это типа для того, чтобы написать range(max), range(min, max) и range(min, max, step) нужно разрешение Комитета и благословление Страуструпа?
>>679871 >>679865 Анон ты щас ахуеешь. Я думал что это я придумал это слово и зафорсил. В псковского порно треде одно из парно называлось татушки, а я его долго случайно называл титушки. А потом стал часто видеть это слово. Только сейчас загуглил.
Захотел я, значица, посмотреть, что там у вас за с++ такое. Скачал visual studio. А оно мне и грит, мол, ты - хуй, винда у тебя старая и вообще эксплорер 11й не стоит. С хуев, думаю, старая, если 7я? Ну ладно, скачал эклипс, какой-то хеллоу ворлд из книжки туда переписал. А он мне такой "бинари нот фаунд". Какие на хуй бинари? Мне никто не говорил, что надо писать бинари. Я, блджад, не знаю, что это такое. Мне, наверное, не надо пытаться в кресты, да?
>>679944 Тебе надо перестать смешивать язык и IDE.
Начни скромно, аскетично, пох-ристиански: Notepad++ или ещё что с постветкой, компиль командой из консолечки. Авось за твое смирение Бог будет милостив к тебе.
Что за хуйня у меня тут при попытке деструкта, сложна, нихуя не понятно, нихуя! Конструктор работает, методы работают, а у этого значит "???", что за язык-то такой нипонятный!
>>679970 class Sqmatrix{ int x; int (звездочка)(звездочка)elem; public: Sqmatrix(); Sqmatrix(int x); ~Sqmatrix(); void show(); void opred(); void transpor(); };
Sqmatrix::Sqmatrix():x(2),elem(new int [x]) { for (int i = 0; i < x; i++) { elem = new int[x]; } for (int i = 0; i < x; i++) { for (int j = 0; j < x; j++) { elem[j] = j + i 2 + 1; } } }
мэйн cin >> max_size; Sqmatrix arr = new Sqmatrix*[max_size]; arr[0] = new Sqmatrix(); for (int i = 0; i < max_size; i++) { delete []arr; } delete[] arr; }
>>680087 Особо код не смотрел, но, как я понял, ты после удаления можешь ещё раз удалить данные (один раз в методе и в деструкторе). После удаления присвой указателю nullptr. Иначе ты пытаешься удалить уже удаленное. А вообще запускай отладчик и смотри на какой строчке вылетает.
>>679321 >- Из автомата валить программиста неинтересно >Так что советую - карабин. >пуля с тупым наконечником >он улетел метра на два или три от меня - вот что значит большой калибр Надо ртутный нож было использовать.
>>680098 Не, метод не вызывается, эт я просто проверял, чистится ли таким образом. А ошибка после delete[] arr[something], при входе в ~деструктор, что-то ни краев ни содержимого не видит
>>678752 Неправда, редистры можно статически линковать поменяв всего лишь одну опцию в параметрах проекта visual studio. Бинарник немного увеличится, но это не проблемма.
Анончики, а почему в шапке нет этого https://www.youtube.com/user/VladimirMozhenkov И да, я помню, как он дрочил на камеру, но видео у него намного лучше, чем у того школьника, который в шапке.
>>680208 Бля да ну прекрати реагировать на такую толстоту. new и delete появились потому, чтобы не было ошибок при использовании malloc, когда sizeof берется неправильно
Мужики, почти заканчиваю читать Страуса для ньюфагов. Хочу буста навернуть особенно iostreams библиотеку. Ну вот вопрос, как написано в шапке, если не использовать бОльшую часть библиотек, то лучше отказаться от использования буста. Окей, а чем можно заменить, если тебе что-то нужно конкретно или писать свои костыли каким-нибудь образом?
>>676033 (OP) Учусь по этому гайду: >- Еще один - [YouTube] Уроки по С++.1 урок.Как создать программу? Уже уроверь 5 - циклы.
Поясните мне вот что: есть циклы for, while, do while. С первым вроде всё ясно. Со вторым тоже ясно и там можно добавить break. Но нахуя нужен третий если всё можно сделать в первых двух? Объясните разницу.
>>680378 В смысле что нужно? Библиотека iostreams или ты имеешь ввиду для чего? Поиграться, там же много всяких свистелок, я думаю. Потом хочу asio обмазаться, правда придется комп. сетями ещё. В общем не суть. >>680385 Не всю, а это помешает мне с библиотеками буста играться?
Установил тут VS15, она вытянула 12гб всякого говна и это я еще по минимуму галочек поставил, только то, что к крестам относилось. Еще и лэнгпак на 2гб, что они туда напихали?
>>680442 Её в 15 студии-то не завезли, куда там. Можно попробовать заменить компилятор на последний из Windows SDK, только. Совместимы ли там флаги и тд – другой вопрос.
>>680396 >Библиотека iostreams или ты имеешь ввиду для чего?
Да, для чего это тебе нужно? Если просто потоки, то почему бы не использовать их из стандартной библиотеки. Если для networking, то чего ты сомневаешься в использовании asio? В чем, собственно, вопрос-то?
Задача из K&R: >Modify the programs entab and detab (written as exercises in Chapter 1) to accept a list of tab stops as arguments. Use the default tab settings if there are no arguments.
Что надо написать-то? Что такое list of tab stops as arguments? Формулировки здесь иногда выносят мозг.
Товарищи, объясните мотивацию выбора текущей реализации универсальных ссылок. Сейчас, чтобы написать обобщенный код для rvalue и lvalue ссылок, нужно писать так:
Во-первых, нахуя здесь нужен std::forward, если после сворачивания ссылок _t и так имеет тип либо T&&, либо T&.
Во-вторых, это ебучее сворачивание ссылок приводит к тому, что нельзя написать такой код >template<typename T> class A{ > typedef T&& RVALUE_REF_T; >} с явным намерением выполнить destructive read.
Почему нельзя было нахуй выкинуть сворачивание ссылок и ввести вместо этого явное обозначение универсальной ссылки типа &&&? Тогда бы и std::forward был бы не нужен, и не было бы сраного references collapsing
>>680666 Эээ, ты, даун, спутал дебика который предлагает делать гуй на винапи, и адекватных людей, интересующихся околосистемщиной. Как минимум 1 мой коммент про Д. Рихтера не семёновский.
Создан экспериментальный гитхаб для совместного запила кастомных шапок. Для начала на основе шапок от двух ОПов слеплена кастомная, принимаются пулл-реквесты в нее. Если все пойдет как надо, то для всех оффициальных тм тредов появится возможность перехода на кастомную шапку. Схема работы следующая: ОП треда делает перекат с ОП-пиком и неповторяющейся информацией (например, стихи в C++-треде) и дергает меня при помощи формы жалоб, после чего я добавляю к ОП-посту тело актуальной версии шапки с гитхаба.
До завтра вылизываем новую шапку (при объединении могли проскочить ошибки), дальше делаем перекат и переходим на новую систему. ОП-стихоплет должен поторопиться, если хочет успеть на этот поезд, лол.
>>680653 >>680655 Thx >>680666 Нет, я чувак, который хочет поучаствовать в GSoC в ReactOS. У этих наркомановняшек пакетный менеджер использует winapi, код написан без комментариев вообще, но вроде несложный.
>>680752 >Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. >Visual Studio >Visual >Studio Более хуевое автодополнение я видел только в notepad'е
Бля, ньюфаги, вы если вы ковыряете свои лабы в студии, то может оно и нормально работает. Но на больших проектах индекс вечно битый. И сейчас оно только сильнее лагать начало.
Машины у всех dev'ов были i7 haswell. Размер кода не помню, компилилась эта байда 1 час 20 минут на -j8. Единственной IDE, которая нормально жрала исходники, была eclipse cdt. Как по скорости анализа, так и по функциональности и скорости навигации. Как там type hierarchy с call hierarchy поживают на студии, лол? Рефакторинг тоже тормозил и частенько лажал: вот это вообще самая мякотка была, откатывать эти изменения. Короче, студия была только у ценителей работы без ассиста, но зато с нормальным дебагером.
ВНЕЗАПНО решил обмазаться плюсами, знаю только похапе, опыт разработки года полтора-два. Легкое гугление предложило мне установить на мой арч qtcreator. Шапку треда прочел, хочу каких-нибудь пожеланий, советов от опытных анонов. Хочу в кроссплатформенную разработку.
>>676379 1) Темлейты тормозят компиляцию - значит можно не бояться остаться без работы, именно поэтому все любят и боготворят буст! 2) РТТИ сосёт, потому что делает не то что от него тербуется - значит можно не бояться остаться остаться без работы, необходимо пробовать велосипеды с первых трёх ссылок на стэкоферфлоу. 3) Классы сосут, потому что надо выкладывать хэдеры - значит можно не бояться остаться без работы, нужно будет засунуть каждый класс большого проекта в пимпл.
Котаны, хочу сделать "WebGUI" на QT. Но сделать это хочется по простому, есть страница с элементарным гуи на html и логикой на javascript. Статей нормальных не нашёл. Отправлять команды на javascript я знаю как, но как можно принимать команды от javascript(может можно каллбеки какие-поставить и т.д.)?
Товарищи, вопрос ньюфани. Нужно что-то вроде деки, добавление/удаление с конца/начала. Как добавить и удалять так, чтобы не терять указатели? В гугле нашел только через массивы Пробовал вот так : http://pastebin.com/67huiePb Осторожно, C++/CLI, но видно что то теряю
Ребзя. В общем, мне послезавтра идти на работу, где я напиздел, что могу немного в С++. От меня многого не ждут, но тем не менее нужно вкатиться максимально быстро и чуть-чуть глубже чем "Hello World". Помогите ресурсом или советом как можно за сутки достичь того уровня, что я описал.
ДОБГО ПОЖАЛОВАТЬ В НОВЫЙ C++ ТГЕД!
1. Почему мы используем именно C++:
- C++ действительно быстрый - по скорости уделывают большинство языков, часто с большим отрывом. Замедление относительно pure C находится в районе 0-20%. Замедление зависит от вас, девиз языка: "Платишь только за фичи, которые используешь".
- C++ - очень выразительный язык. В него заимствованы большинство существующих парадигм из самых популярных языков.
- У C++ очень большое и, самое главное, профессиональное комьюнити. Это так из-за высокого порога вхождения.
Однако C++ очень сложный. Прямая работа с памятью и тысяча способов выстрелить себе в ногу - это про него. Не стоит его использовать всегда: нужно понимать, что используемый язык должен соответствовать поставленной задаче. Да, анон, не нужно писать на C++ скрипты или веб-фронтенд, а потом жаловаться, что C++ говно. Плохому танцору и ноги мешают, как говорится.
2. Литература для начинающих:
Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
- Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela
- Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
- Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa
3. Литература для тех, кто осилил предыдущий пункт:
Книги про основные подводные камни. Следует пролистать все.
- Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
- Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
- Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
- Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR
- Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
4. Наиболее детальные описания языка:
- Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
- Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
- Стандарт C++14 - https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
- Стандарт C++17 - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4567.pdf (черновик)
5. Нюансы проектирования на C++:
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
- Ален Голуб - Веревка достаточной длины, чтобы выстрелить себе в ногу (2001) - https://goo.gl/fBmuxp
- Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC это - квинтэссенция ГИБКОСТИ, поэтому стоит прочитать в любом случае, чтобы охуеть от того, как можно делать.
- Джеймс Коплиен - Программирование на C++ (2005) - https://goo.gl/Y1WGdU
6. Тонкости языка (для гурманов):
- Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
- Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
7. Годные ресурсы по C++:
- Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru
- Блог с хорошо расписанными фичами новых стандартов - http://scrutator.me
- Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/ или более подробно на ангельском http://en.cppreference.com/w
- Блог Герба Саттера (на ангельском) - http://herbsutter.com
- Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru
- Блог еще одной тянки, много о Qt и оптимизации (на ангельском) - https://katecpp.wordpress.com
- Куча других блогов (на ангельском) - https://www.quora.com/What-are-the-best-blogs-on-C++
- Большой FAQ по C++ (на ангельском) - https://isocpp.org/wiki/faq
8.Видеоуроки: (для совсем уж ленивых пидорасов)
- Видеокурс на тытрубе - https://www.youtube.com/watch?v=atVgLRzl3rI
- Еще один - https://youtube.com/watch?v=MOpF5lk3cLY
- Среди прочих есть несколько курсов по C++ - https://stepic.org
- Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos
9. Куда писать код:
- Кроссплатформенные IDE: QtCreator, Eclipse CDT, CLion (Последняя платно, но зато энтерпрайз. Легко сбрасывать пробный период, можно купить на торрентах)
- Только Windows: Microsoft™ Visual Studio® рекомендуется для новичков
- Только OS X: XCode
- Уникальный способ для *nix-господ: Компилим через консольку с помощью clang(очень информативный и читаемый вывод) или в крайнем случае gcc (для ценителей).
- Все остальные: https://goo.gl/qkujDP
- Для тех, кто капчует с домофона: http://ideone.com
По просьбам трудящихся:
Инструкция "Как создать проект в Visual Studio" - https://goo.gl/JMd57G
Специальное уточнение для ньюфагов: А вообще, в случае возникновения вопросов по какой-либо IDE не брезгуйте чтением офф. документации. Все подобные вопросы там освещаются.(Ведь ее же для этого и пишут!). Так что сначала читаем доки, а только потом задаем здесь вопросы. Найти доки можно в пункте меню "Справка". Либо нажать F1, лал.
10. Code Quality:
- CppCheck. Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio. - http://cppcheck.sourceforge.net
- Clang Static Analyzer. То же самое, но встроено в одноименный компилятор. Активно пилится Google и Apple. - http://clang-analyzer.llvm.org
- PVS-Studio. То же самое, но энтерпрайз. Для пиара пишут годные статьи. - http://www.viva64.com/ru/pvs-studio/
- Visual Leak Detector. Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
- Google Sanitizers. Гугловские утилиты для поиска утечек, дедлоков, гонок, неинициализированной памяти и некорректного доступа - https://github.com/google/sanitizers
- Valgrind. То же самое, но медленно.(Очень. По сути, это - виртуальная машина) http://valgrind.org
11. Годные библиотеки:
- Standard Library. С недавнего времени(С++11) стала годнотой. Например, теперь можно писать кроссплатформенный распределенный код, не подключая boost. Что очень хорошо. Кстати о бусте.
- Boost (http://www.boost.org) - бесспорно, самый популярный набор C++-библиотек. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. Boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонентов boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
- Qt (http://www.qt.io/) - свободный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонентов (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
- И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
Итого:
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Стихоебы идут на хуй
Все идут на хуй.
Хейтер, ОП сосет члены на пару со своей мамашей.
Старший брат:
Предыдущий: