Этого треда уже нет.
Это копия, сохраненная 25 января 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
146 Кб, 490x470
Оффициальный™ традиционный® C++ тред #16 #607053 В конец треда | Веб
Взгляни! Взгляни, как красота чужда
Рабам крестов, что слепо уповая,
Стремятся байтоебствовать всегда:

Здесь жаждут скоростей, не признавая,
Что кто-то может прочитать их код,
И уступить удобству не желают.

О боги! Столь несчастен будет тот,
Кто обречен тестировать ту массу,
Что в ста коленах Бьерна проклянет.

А свыкнувшись, сам станет пидорасом.


TL;DR Читаешь https://goo.gl/kVaela , делаешь примеры и суешь в http://ideone.com , ошибки копипастишь в гугл, непонятное ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее. И прочитай FAQ, расположенный ниже, в нем много полезного.

Унаследованная памятка:

Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.

Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode

Старший брат: >>579550 (OP)
Предыдущий: >>597189 (OP)\r\n\r\n

\r\n\r\nFAQ:

Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
+ C++ действительно быстрый - по скорости они вместе с C с большим отрывом уделывают любой другой язык. Замедление относительно C находится в районе 0-20% а в ряде случаев C++ оказывается даже быстрее, причем проявляется только при использовании высокоуровневых конструкций (в крестах ты никогда не платишь за то, чего не используешь).
+ C++ один из наиболее выразительных и мощных языков, позволяющий использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи.
+ C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.

Q: Но он же давно устарел!
A: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по крестам, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".

Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.

Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:

Для нюфань:
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela
Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa

<устарело> Герберт Шилдт - C++. Базовый курс (2010) - https://goo.gl/qMLAFl
<устарело> Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004) - https://goo.gl/QvjR6x

Учимся не писать говнокод:
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все.
Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR

Наиболее детальные описания языка:
Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
<устарело> Бьерн Страуструп - Язык программирования C++ (2010) - https://goo.gl/iZBDiV
Стандарт 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

Тонкости языка (для гурманов):
Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC
Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512

Также для легкого чтения подойдет книжка c историей создания C++:
Бьерн Страуструп - Дизайн и эволюция C++ (1994) - https://goo.gl/FqbPwo

Отдельные аспекты:
Читать по необходимости.
Энтони Уильямс - Параллельное программирование на C++ в действии (2012) - https://goo.gl/qJfBkD
Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
Дэвид Абрахамс, Алексей Гуртовой - Шаблонное метапрограммирование на C++ (2009) - https://goo.gl/isSt7j
Дэвид Вандевурд, Николаи Джоссатис - Шаблоны C++. Справочник разработчика (2003) - https://goo.gl/0M4NpG
Роберт Седжвик - Фундаментальные алгоритмы на C++ (2001) - https://goo.gl/4jwxSl (части 1-4), https://goo.gl/yDuQgG (часть 5)

Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года. Фичи последних стандартов не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.

Q: Ты охуел? В этих книгах по тысяче страниц! Хочу коротких статей.
A: Вот тебе блоги, факи, референсы и всякое такое:

Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru
Блог с хорошо расписанными фичами новых стандартов - http://scrutator.me
Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/ или более подробно на ангельском http://en.cppreference.com/w
Блог Герба Саттера (на ангельском) - http://herbsutter.com
Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru
Куча других блогов (на ангельском) - https://www.quora.com/What-are-the-best-blogs-on-C++
Большой FAQ по C++ (на ангельском) - https://isocpp.org/wiki/faq

Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс:

Видеокурс на тытрубе - https://www.youtube.com/watch?v=atVgLRzl3rI
Еще один - https://youtube.com/watch?v=MOpF5lk3cLY
Среди прочих есть несколько курсов по C++ - https://stepic.org

И еще есть вот такое, если проникся:
Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos\r\n\r\n

\r\n\r\nQ: Я готов начать погроммировать! Куда мне писать код?
A: Под шиндошс удобно использовать IDE Microsoft™ Visual Studio®. Базовую версию (2015 Community) можно бесплатно скачать отсюда: https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия). Чтобы начать писать код, нужно запустить Visual Studio, кликнуть "Файл - Создать - Проект - Пустой проект", после создания кликнуть слева правой кнопкой мыши по пункту "Файлы исходного кода", выбрать "Добавить - Создать элемент - Файл C++". Свои хэллоуворлды писать в этот файл, в дальнейшем можно добавить другие файлы и хедеры. Чтобы скомпилировать и запустить проект, нужно нажать "Сборка - Собрать решение", а затем "Отладка - Запуск без отладки".

Под *nix, как правило, уже предустановлен компилятор gcc (если нет, используй sudo aptitude install gcc), так что достаточно сохранить хэллоуворлд, набранный в текстовом редакторе, и выполнить g++ helloworld.cpp и ./a.out. Но удобнее установить какую-нибудь IDE, например, весьма удобную CodeLite (sudo aptitude install codelite codelite-plugins), и работать в ней. Ее также можно использовать и в шиндошс, но тогда сперва придется установить MinGW (http://mingw.org).

Еще у нас есть IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует - https://www.jetbrains.com/clion

Можно также не устанавливать ничего, а запускать свои хэллоуворлды на http://ideone.com, выбрав в левом нижнем углу язык C++14.

Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:

Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio - http://cppcheck.sourceforge.net
Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
Гугловские утилиты для контроля корректности кода - https://github.com/google/sanitizers
Гугловский фреймворк для автоматизации тестирования - https://code.google.com/p/googlemock

Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:

boost

Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.

Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.

http://www.boost.org - скачать бесплатно без смс.
http://sindicollo.blogspot.ru/2008/09/boost.html - документация к некоторым компонентам.
http://www.boost.org/doc - документация (на ангельском).

Литература:
Ариндам Мукерджи - Learning Boost C++ Libraries (на ангельском) (2015) - https://goo.gl/b0gPN1

Qt

Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.

Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.

В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.

http://www.qt.io/ru - скачать бесплатно без смс.
http://doc.crossplatform.ru - документация к 4.8.
http://doc.qt.io - более полная документация к обеим версиям (на ангельском).

Литература:
Макс Шлее - Qt 5.3. Профессиональное программирование на C++ (2015) - https://goo.gl/aZ66gK
Макс Шлее - Qt 4.8. Профессиональное программирование на C++ (2012) - https://goo.gl/Slb1In (книга) + https://goo.gl/toUDWc (исходники примеров)
Марк Саммерфилд - Qt. Профессиональное программирование (только Qt 4.х) (2011) - https://goo.gl/qpkZFm (книга) + https://goo.gl/LIIECh (исходники примеров)

Другие хорошие библиотеки:

Несколько специализированных библиотек для часто встречающихся задач. Все маленькие, быстрые и простые в освоении:
libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году) - http://curl.haxx.se
SFML - работа с графикой и аудио - http://www.sfml-dev.org
FLTK - графические интерфейсы - http://fltk.org

И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
#2 #607055
#2 #607055
#3 #607061
А вы скажите мне посоны, после книги для ньюфагов от Страуса (2011 г.), что лучше почитать вообще?
Где-то я слышал, что книги Мейерса хорошо дополняют друг друга и было бы неплохо (нужно) начинать читать с первого издания. Поясните в общем.
#4 #607087
>>607017

>volatile


Никакого эффекта.

>А сообщения выводяться?


Индикаторы на порту не мигают, так что видимо нет. Сниферить мне к сожалению нечем.
#5 #607095
>>607087
м... я думал var это типа общая переменная с устройством, посмотрел внимательней - ты ее вроде собрался куда-то отправлять после того как твой do{}while отработает. Так вот, он никогда не закончится, точнее тот код что после него никогда не выполнится.
#6 #607108
>>607095
Да var должен отправится в COM порт где его считывает устройство. А этим do while, я хотел, что бы моя консольная менюшка, банально, не сворачивалась после выбора варианта.
#7 #607112
>>607095
Выполнится после ввода четверки же.
#8 #607139
>>607112
В случае ввода 4 выполнится exit(EXIT_SUCCESS);
#9 #607153
>>607139
Да, не посмотрел в тело цикла, сорян.
#10 #607234
>>607061
Читай последние издания каждой книги. У него их 3 вроде или 4 (эффективное c++, еще более эффективное, stl и C++14)

Мб первые 2 -- одно и то же, не помню уже
#11 #607238
>>607095
Да, чего-то я всё по уебански сделал вчера. Сегодня проспался и сделал более или менее нормально - отправку отдельной функцией, которая принимает значение var из цикла меню.
#12 #607248
Какие есть средства под Windows для создания приложений с GUI на C++, чтобы в 1 .exe собиралось?
QT - много ебли со статической линковкой.
Borland C++ - Платное, много ебли с подключением библиотек, к примеру для serial port.
#13 #607249
>>607248
Желательно без .net. Его у пользователя может и не быть.
#14 #607269
>>607249
ты к нам из какого года? дотнет в коплекте с шиндовсом идет.
#15 #607332
http://ideone.com/4GFT6O
Как заставить это скомпилироваться? Я переопределяю create и говорю - вот так можно создавать объект типа Pair, но он ругается, мол, у базового-то класса нифига не подходит сигнатура.
#16 #607335
Анонизмы, ответьте пожалуйста как снести Visual Studio?

https://2ch.hk/pr/res/607333.html (М)
#17 #607363
>>607332
Твоя базовая фабрика умеет создавать только объекты классов с одним аргументо в конструкторе. Расширеную фабрику ты наследуешь от базовой фабрики для типа pair у которого нет конструктора с одним элементом, следовательно не возможно создать базовую фабрику для типа pair, следовательно нельзя от нее отнаследоваться. Тебе или нужно дать типу pair конструктор с одним аргументом типа int http://ideone.com/yQu8rh или инстанциировать фабрику от другого типа, а не pair.
#18 #607374
Насколько сильно устарел Лафоре? Или лучше начинать с Липпмана или Страуструпа? я про его учебник для ньюфагов
#19 #607378
>>607269
Ок. Тогда не буду ебать себе моск и заюзаю C#.
#20 #607527
>>607234
Не одно и то же, там совершенно разные советы. Поэтому все четыре есть в шапке.
#21 #607529
>>607335
Юзай какой-нибудь Revo Uninstaller. А разгадка одна - тот, кто очищает папку Program Data в погоне за местом, будет страдать из-за удаленных файлов деинсталляторов.
#22 #607532
>>607374
Там годно написано, но нет про C++11, придется переучиваться.
#23 #607640
Несколько вопросов от ньюфага.
1) Obj-C используется только в эплопроизводстве или широко распространён?
2) Чистый Си проще плюсов?
3) Насколько у Си и плюсов различная сфера применения? Можно на одном делать всё то же, что и на другом?
#24 #607643
>>607640
да
да
нет
44 Кб, 621x827
#25 #607683
Дали тестовое задание, надо написать с использованием дирехт х.
Опыта с дирехт х у меня естественно никакого, что почитать по этой теме? С чего начать?
#26 #607684
Если я в курсе Си, вроде бы, то есть ли для меня способ вникания в C++ лучше, чем листание одной из этих книг для совсем начинающих из шапки?
#27 #607692
>>607684
Ты какой-то дурак. Я не знал ни си, ни плюсов, но пошёл и начал ебашить тестовые задания. Быстро вкатился, хоть и было много проблем. Через два года уже пролистал книжку.
#28 #607720
>>607683
а что за специальность? тож хочу писать на ДиректИске
#29 #607774
Копался в своём старом коде, обнаружил такое:

const std::unique_ptr<uint8_t[]> &my_array()
{
static const std::unique_ptr<uint8_t[]> not_temp = some_array();
return not_temp;
}

Нет, я сейчас попробую оправдаться, что some_array() я использую из прикрученной библиотеки, но тем не менее, всё равно на лоботомию?
#30 #607807
Сдал младшего брата учиться в какую-то компьютерную академию, хуй его знает, короче. Так вот, дали там ему тест, который я сам на 10/10 решить не могу, только 8/10. Шозахуйня? Тестрилейтед.

1. Что такое тип данных?
Название переменной
Название константы
Вид содержимого и допустимые операции над ним
Значение переменной или константы

2. Что такое переменная?
Значение
Имя
Именованная область памяти, предназначенная для хранения значения
Именованная область памяти, предназначенная для хранения значения, которое может меняться по ходу работы программы
Идентификатор

3. Что такое литерал?
Значение в памяти
Значение в исходном коде программы
Имя переменной
Имя константы
Тип переменной

4. Что такое оператор?
Вся программа
#include < iostream >
Функция main()
Действие над операндами (переменными, константами, литералами)
cout

5. Правила создания идентификаторов
Любые буквы, цифры, знак подчеркивания, знаки препинания, пробел, не может начинаться с цифры
Латинские буквы, цифры, знак подчеркивания, знаки препинания, пробел, не может начинаться с цифры
Кириллические буквы, цифры, знак подчеркивания, знаки препинания, пробел, не может начинаться с цифры
Латинские буквы, цифры, знак подчеркивания, не может начинаться с цифры
Кириллические буквы, цифры, знак подчеркивания, не может начинаться с цифры

6. Какие действия выполняет оператор присваивания?
Выводит присваиваемое значение на экран
Предлагает пользователю ввести значение с клавиатуры
Объявляет переменную
Помещает указанное значение в переменную
Стирает указанное значение из переменной

7. Как определить константу?
Указать ключевое слово const и ее тип
Указать ключевое слово const, ее тип и значение
Указать ключевое слово const, ее имя и значение
Указать ключевое слово const, ее тип и имя
Указать ключевое слово const, ее тип, имя и значение

8. Размер типа unsigned short
1 байт
2 байта
4 байта
8 байт
Зависит от платформы

9. Размер типа double
1 байт
2 байта
4 байта
8 байт
Зависит от платформы

10. Размер типа int
1 байт
2 байта
4 байта
8 байт
Зависит от платформы
#30 #607807
Сдал младшего брата учиться в какую-то компьютерную академию, хуй его знает, короче. Так вот, дали там ему тест, который я сам на 10/10 решить не могу, только 8/10. Шозахуйня? Тестрилейтед.

1. Что такое тип данных?
Название переменной
Название константы
Вид содержимого и допустимые операции над ним
Значение переменной или константы

2. Что такое переменная?
Значение
Имя
Именованная область памяти, предназначенная для хранения значения
Именованная область памяти, предназначенная для хранения значения, которое может меняться по ходу работы программы
Идентификатор

3. Что такое литерал?
Значение в памяти
Значение в исходном коде программы
Имя переменной
Имя константы
Тип переменной

4. Что такое оператор?
Вся программа
#include < iostream >
Функция main()
Действие над операндами (переменными, константами, литералами)
cout

5. Правила создания идентификаторов
Любые буквы, цифры, знак подчеркивания, знаки препинания, пробел, не может начинаться с цифры
Латинские буквы, цифры, знак подчеркивания, знаки препинания, пробел, не может начинаться с цифры
Кириллические буквы, цифры, знак подчеркивания, знаки препинания, пробел, не может начинаться с цифры
Латинские буквы, цифры, знак подчеркивания, не может начинаться с цифры
Кириллические буквы, цифры, знак подчеркивания, не может начинаться с цифры

6. Какие действия выполняет оператор присваивания?
Выводит присваиваемое значение на экран
Предлагает пользователю ввести значение с клавиатуры
Объявляет переменную
Помещает указанное значение в переменную
Стирает указанное значение из переменной

7. Как определить константу?
Указать ключевое слово const и ее тип
Указать ключевое слово const, ее тип и значение
Указать ключевое слово const, ее имя и значение
Указать ключевое слово const, ее тип и имя
Указать ключевое слово const, ее тип, имя и значение

8. Размер типа unsigned short
1 байт
2 байта
4 байта
8 байт
Зависит от платформы

9. Размер типа double
1 байт
2 байта
4 байта
8 байт
Зависит от платформы

10. Размер типа int
1 байт
2 байта
4 байта
8 байт
Зависит от платформы
#31 #607809
>>607807
Толсто.
#32 #607895
>>607683
Frank Luna
#33 #607896
>>607248

>QT - много ебли со статической линковкой.


http://habrahabr.ru/sandbox/95171/
Вот по этому делал, и все получилось.
http://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW
А тут концовка. Конкретно где в проекте статику и динамику выбирать.

Под winXP.
82 Кб, 1280x720
#34 #607897
Посаны, хочу быть мобайл разработчиком, но в моей мухосрани вакансий кот наплакал, зато есть отличная вакансия в топовую компанию на плюсах, с крутым продуктом для 3д сканеров и принтеров в медсфере, у компании куча офисов в зарубежье, половина ивропы, США и Кореи с Япониями.
Вопрос таков - мне стоит дрочить мобайл в надежде найти работу или лучше пойти на С++ или жабу в компании рядом, получить опыт работы с умными ребятками и потом сделать перекат в интересную мне сферу?
Один успешный погромист из амурики говорил идти в С++ компанию, потому что в 95% реально интересных и крутых проектов даже в мобайле, вебе или подобном всё равно желательно уметь в языки типа си, плюсов или жабы, потому что это СТАНДАРТ, а первые два ещё и закладывают хорошее понимание работы "под капотом".

Ну и приводил в пример вакансии, всюду вроде рили написано в требованиях что-то типа:
- 3 года опыта работы с одним из языков типа C++/Java/C#/Scala/etc
- 3 года опыта работы с Python/Objective-C/etc ну или другой язык по которому вакансия
Карочи, как отдельные пункты.

Он всё правильно мне сказал и рили стоит потратить время на это? Будет ли отдача реальная или сразу в мобайл пиздовать и хуи забить?
Сильно ли прогресс "прокачки скилла" зависит от старших коллег которые будут пинать?
Спасибо.

опыт работы - разработка говна при универе, лол не лаба1, это говно все ещё юзают для документооборота
#35 #607898
>>607897
Ах да, спрашиваю у вас, потому что думаю тут есть те, кто писал на плюсах и сделал перекат или пишет на плюсах и сделал перекат с другого языка, поэтому может поделиться опытом пользы работы с подобными языками.
#36 #607901
>>607897
В мобайл идут не от большого ума - или вакансия попалась (рынок больше), или хотят фрилансить (порог вхождения ниже), но вот специально туда идти... Что такое мобильный софт? Примитивные аппликухи, которые за любым чихом лезут на свой бэкенд через интернет. Редко что-то считается на месте, но тут, опять же, придется портировать код с бэкенда. По сути ты будешь бесконечно дрючить UI, а это на любителя. Игры тут - верх технологичности.
Правильный ответ - идти на С++ вакансию и, если получится, ты сам забьешь хуй на этот мобилософт.
105 Кб, 558x695
#37 #607936
Реально ли реализовать язык запросов для коллекций stl? Как linq в шарпах
#38 #607938
>>607936
Ты бы хоть минимально погуглил.
#39 #607939
>>607938
Бля, помогло. Спасибо, анон
#40 #607982
>>607683
Воу, воу, полегче. Откуда у тебя такая хуйня? Что это? Почему DX, а не OGL?

>>607720
Для тебя и таких, как ты, придумали OpenGL. Который практически никак не отличается. Откуда вы вообще берётесь?

>>607895
Ещё один. Во-первых, не пали годноту, уёбок, пусть OpenGL дрочат. Во-вторых, откуда вообще ты взялся? В-третьих, Франк Луна тут не сильно поможет, ему всё-таки не 3D-модельки нарисовать надо, а интерфейсный элемент. А для этого есть Direct2D с совершенно другими правилами, методами и функционалом.
#41 #607985
>>607896
При статической линковке половина либ же нафиг выкидывается, не?
#42 #608056
>>607896
Скомпилил статическую версию QT 5.4 по инструкции
http://habrahabr.ru/sandbox/95171/, наткнулся на такую ошибку при попытке собрать проект:
:-1: ошибка: dependent 'D:\Qt\5.4\Static\lib\Qt5Widgets.lib' does not exist.
И действительно. Там нет ни одного файла с расширением lib, есть только Qt5Widgets.prl.
Что делать в этом случае?
#43 #608089
>>607982
Какой же ты мудак блять, в вопросе написано, что сделать надо с использование дирехтх, не опенжл, а дирехтх, нет надо выеба гнуть, на говно исходить.

>Почему DX, а не OGL?


Потому что так решили в той фирме, не нравится - скажи им это, они тебе непременно не перезвонят.
#44 #608117
#include <stdio.h>
int main () {
int a, b;
printf (“Введите два числа: \n”);
scanf ( “%d%d” , &a, &b);
printf (“%d\n” , a + b);
return 0;
}

Поясните за %d%d. Что это и зачем юзают?
#45 #608172
>>608117
цифра цифра. Формат ввода обозначают.
#46 #608207
>>608056
Он там пишет что на ошибки внимание не обращай. У меня тоже какие-то писал. Однако все работает.
#47 #608215
>>608207
Да ебанись!
Прочти еще раз внимательно.
Не компилится мой проект со статической версией QT.
100 Кб, 507x779
113 Кб, 382x774
#48 #608223
>>608056
Ну и еще, запусти MaintenanceTool.exe и проверь, точно ли ты установил все библиотеки и их исходники, и той ли версии. У меня все выглядит как на пике. Кстати обнови там все до последней версии через этот же тулз.
#49 #608225
>>608223
Так и у тебя нет .lib файлов.
#50 #608226
>>607982
ну можн и на ogl, только щас на нем нахуй писать, когда вулкан скоро выпустят
#51 #608229
Нужен ГУИ для визуализации графа и управления кнопочками. Есть годный вариант? Желательно с минимальной еблей
#52 #608230
>>608223
>>608215
>>608056
Я проморгал и выбрал микрософтовский компилятор.
#53 #608232
>>608230
Тогда встречный вопрос: как теперь подключить QTгную библиотеку serialport?
349 Кб, 1280x931
#54 #608242
>>608225

>lib


.lib и не нужны. А ты свой какой-то проект выбрал? Попробуй скомпилировать тестовый. У меня задача была разобраться с сокетами. Очень уж тут удобно вся эта тема делается.
>>608230
Ну бывает. Микро под MVS наверное компилируется.
#55 #608255
Поясните за make_shared и move. Вот создаю я объект, допустим конфиг. Реализация мудельной библиотеки в конструкторе переносит через move мой конфиг к себе.

Кодес такого вида:
hui(vasya228 config) : m_hui(make_shared<vasya228>(move(config)))

Собсна, если инициализировать конфиг на стеке я не потеряю эту хуитку после его очистки? я знаю что это всё хуйня и можно не ебать мозга, но ведь 228 оптемезацея скорасть...

И ещё, поясните нахуя нужны конструкции вида &&hui или zalupa при исп. обычных структур/классов, а не двумерных массивов.
#56 #608287
>>607774
Эй, я за интернет плачу, чтобы меня в нём игнорировали?
#57 #608340
>>607807
1. 3.
2. 4.
3. 2.
4. 4.
5. 4.
6. 4.
7. 5.
8. 2.
9. 4.
10. 3.
#58 #608344
Анон, могу ли я в качестве аргумента для функции указать один класс, а передать ему объект второго, производного от первого класса?
#59 #608346
подскажите как вывести в консоль гиперссылку
#60 #608347
>>608340
8 и 10 неправильно, от платформы зависит.
#61 #608352
>>608344
Да, если в качестве аргумента будет ссылка на базовый класс.
#62 #608353
Долбоебы, нахуя вам статически линковать Qt?
#63 #608361
>>608353
Чтобы не таскать за собой кучу dll.
#64 #608364
Есть ли какой-то гайд по FLTK на русском языке? А то очень тяжко на английском, учитывая, что материал для меня совершенно новый, я не формоёбствовал и пока писал только хеллоуворды.
#65 #608536
>>608361
Пиздец, куда таскать?
1. куда вы тащите свое говно?
2. лицензия не позволяет ПРОСТО без задней мысли это делать.
так нахуй весь этот цирк?
#66 #608542
Чуть не умер читая этот тред лол. Конфеткой поводился и она в горле застряла. Я хуй знает как этот леденец оттуда вынул, но я дышать не мог пока он не выскочил.
#67 #608625
>>607053 (OP)

>пик


Но ведь у си не такой уж-то и поехавший синтаксис, вот у крестов да - полный пиздец.
#68 #608627
>>608625

>вот у крестов да - полный пиздец.


Работаю 8 лет с крестами, ни разу не видел пиздеца. А хуевый программист на чём угодно невнятного говна напишет.
#69 #608628
Вот тебе код 2011 года, когда C+0x уже жил и здравствовал:

DPP_DELEGATE2_OBJ(de, void, (const math::Vector2 &v2d),
const math::Vector3::put_delegate_t &, f, // _0
const const_ref<curve::Base> &, _curve, // _1
{
_0(math::Vector3(v2d, _1->sagitta(v2d)));
});
#70 #608630
Он переписывается в auto de = [&](const math::Vector2& v2d) { f(math::Vector3(v2d, _curve->sagitta(v2d))); };

Но тут суть в не этом, а в том, что подобного легаси-говна килотонны. И в каждом проекте каждый делает кто во что горазд. И это таки полный пиздец.
#71 #608638
>>608089
Блядь, а нахуй мне их перезванивание? Наоборот, я хочу, чтобы эта фирма уже никогда не смогла никому перезвонить. Пиздец, в России только человек 5 знают DX на моём уровне, а благодаря этой компании появляются такие >>607720 личности, которые своими "А Я ТОЖЕ ХОЧУ" портят всю элитность DX.

>>608226
Да похуй. Главное, чтобы в мой DX не лезли.
#72 #608655
Вечер в хату, крестаны. Есть два хедера с двумя разными классами, как сделать взаимодействие между ними (преобразования один в другой)? Я пытался объявить хедеры и там и там, в итоге ошибка компиляции по понятной причине. Можно что-нибудь сделать и не пилить отдельный файл для них?
#73 #608688
>>608655
Forward declaration.
#74 #608696
Новый Мейерс на русском, охуенно, спасибо, ОП!

Олсо, анон->>608638, есть кулстори, как в DX вкатился и добрался до такого уровня. Надеюсь не пиздабол. Я не из России, не бойся твоё место не займу
#75 #608703
>>608696

>уровня?


фикс
#76 #608726
Зачем нужно перечислять переменные одного типа через запятую? Я посмотрел адреса, в памяти они последовательно не лежат. Инты, например, лежат не через 4 байта, а через 12.
#77 #608729
>>608726

> нужно


Не нужно, а можно. Это для тех кому лень лишний раз тип переменной написать.
52 Кб, 1106x706
#78 #608730
>>607053 (OP)
помогите пожалуйста разобраться с проблемой в коде, в нём есть базовый класс и 3 производных класса, нужно переопределить метод get_name так, чтобы при его вызове выводилось название производного класса, но почему-то выводится название базового класса, причём код на строках 83-87 работает корректно, а вот код на строках 92-110 уже не работает, хотя вроде всё также пишу
http://pastebin.com/Dtw12vvh
35 Кб, 1126x393
33 Кб, 1054x417
ЧЯДНТ? #79 #608731
Аноны, что я делаю не так?

Переписал пример второго хелловорлда с книги Щупака "Win32 API. "Эффективная разработка приложений."
Программа не работает. Подробности на пике.

KWnd.h - http://pastebin.com/mGgcZnJM
KWnd.cpp - http://pastebin.com/knFzzCjV
main.cpp - http://pastebin.com/EMqQBcFF
#80 #608733
>>608730
Потому что (@ - звёздочка)
T@ mas[N]; - массив указателей (mas имеет тип T@@, грубо говоря, то есть указатель на массив указателей)
а
T@ mas = new T[N]; - массив объектов (mas имеет тип T@, то есть просто указатель на объект)
Итого в твоём примере на строках 92+ or имеет тип instrument@, а значит or имеет тип instrument, т.е. объект, а не указатель
#81 #608735
>>608733

>а значит or[0] имеет тип instrument


походу макаба как тэг сожрала
Бля, как-то сумбурно написал, но может поймёшь
#82 #608740
>>608731
Естт ли визуальные редактора гуя под win32?
88 Кб, 1334x683
#83 #608744
>>608735
а как сделать так, чтобы get_name выдавал имя производного класса? Если писать вот так
http://pastebin.com/59AU70X8
то выдаёт название базового класса
#84 #608761
>>608744
Используй массив указателей на тип instrument http://ideone.com/5wSYGi
Когда ты объявляешь массив элементов типа instrument то в этот массив можно записать только элементы типа instrument, и производные от него конвертятся при записи в базовый.
#85 #608763
>>608740
В студии с MFC, но это чуть повысокоуровневей, чем WinAPI
#86 #608770
>>608696
Да ничего особенного. Ещё до того, как поступил в универ, хотел заниматься графикой. Первые пару лет хватало небольших попыток начать учить OGL, но в Dev C++ подключение сторонних либ не работало, а Visual Studio я считал ужасным проприетарным поделием майкрософта, потому что так сказали в универе. Где-то в конце второго курса сказал друзьям, что всё, этим летом выучу OpenGL, окончательно решено.

Летом, когда я в очередной раз попытался подключить либу в Dev C++ и потерпел неудачу, я решил найти другую книгу. Может, где-то написано, почему у меня выставлены флаги компиляции вида -lgl и -lglut, все либы лежат в папке, но проект не собирается? Может, лучше начать с общей архитектуры построения игровых движков, а уж потом разберусь?

Скачиваю какую-то книгу, русскую, года 2004. По движкам. Где на первой странице указано, что для чтения этой книги необходимо иметь знание DirectX.

И тут меня осенило. А что, если вместо OGL я буду знать DirectX? Это же гениально. Ведь после того, как я освоил Qt, я начал любить WinAPI. А тут мало того, что использование WinAPI было необходимо, так ещё и этот выбор ощущался как переход на тёмную сторону. Что я иду против системы. В то время, как везде говорят об осточертевшей кроссплатформенности, в то время, как все желающие освоить графику выбирают OpenGL, "потому что свободное ПО", в то время, как все инди-игры на OGL и везде, где преподают графику, учат OpenGL, в это время я выбираю DirectX. Наплевав на кроссплатформенность - она не нужна, у меня нет ни одного друга, который бы всерьёз использовал линукс или макось не для рабочих задач. Наплевав на закрытость кода - меня за два года в универе успели заебать промывкой мозгов на тему, какое же хорошее свободное ПО и как же важно использовать линукс. Отсосите. Я ухожу в DirectX!

Ищу литературу. Нахожу книгу некоего Горнакова, по DX9. Начинаю читать, разбираюсь с каждой неясностью, переписываю вручную код, комментирую каждую строчку. Как ни странно, первый проект даже скомпилировался. Иду дальше. Квадрат, кубик, освещённый кубик... Дохожу до главы с выводом текста, застреваю.

Пытаюсь разобраться. Функция в книге принимает три аргумента, функция в документации MSDN - девять. Гугление дало понять, что с тех пор, как книга была издана, эта функция успела поменяться. Что ж, думаю, надо бы тогда попытаться написать в 9 аргументов.

Не заработало. Ибо функция принимает в качестве параметра спрайт, про спрайты в книге ничего нет, а документация ссылается на одну статью, та на другую, та на третью и разобраться в таком количестве информации при недостаточном количестве начальных знаний нереально.

Решил спросить здесь, на дваче. Говорю, вот, есть книга 2003 года, да, она устарела, но всё нормально, после её прочтения у меня будет достаточно начальных знаний, чтобы было всё понятно по документациям в этой области. Отвечают мне, что я даже не представляю, насколько она устарела, что сейчас всё делается по-другому. Дал мне ссылку на книгу(кстати, довольно известного в этой области автора) на английском языке.

Думаю, ладно, английский - не такая уж и проблема. Конечно, это моя первая книга на английском, но надо же когда-то начинать. В любом случае, всегда есть переводчик.

Перед прочтением заглянул в оглавление. Тесселяция! Геометрические шейдеры! Ambient Occlusion! Охуеть! Раньше для меня это были просто красивые сложные термины, а теперь я на самом деле буду в этом разбираться! И использовать это! Я был, как это говорят по-английски, really excited. То есть пиздец в предвкушении. К слову, в книге говорилось, что необходим Visual Studio. Понимая, что это того стоит, я его поставил. Больше я Dev C++ не запускал никогда.

Начал читать. Внимательно, осмысливая каждое предложение и делая каждое упражнение. С каждой главой я всё больше охуевал от собственной крутости. Я понимал, что вот оно, что я наконец-то нашёл то, что мне интересно по уши. Что я наконец-то счастлив, анон.

К тому времени, как закончилось лето, я прошёл несколько глав. Планы по всей книге за лето немного провалились, но я не сильно переживал. Главное, что я встал на правильный путь. Прихожу в универ, говорю друзьям: "Помнишь, я хотел выучить летом OpenGL? Я выучил DirectX!". Как ни странно, они не были сильно удивлены.

Ну а дальше ничего особенного. Как закончил книгу, пошли следующие. Более высокого уровня, с узкоспециализированнымм алгоритмами вроде сглаживания во время постпроцессинга. Названия книг говорить не буду, мало ли кто-то тут их решит прочитать. Пусть сами ищут.

Ну вот как-то так. И да, аноны, в 2016(да и в 2015) году заниматься DirectX несерьёзно. OpenGL объективно лучше - он и кроссплатформенный, и стандарт открыт, и вообще DX не нужен будет, как только выйдет Vulkan.
#86 #608770
>>608696
Да ничего особенного. Ещё до того, как поступил в универ, хотел заниматься графикой. Первые пару лет хватало небольших попыток начать учить OGL, но в Dev C++ подключение сторонних либ не работало, а Visual Studio я считал ужасным проприетарным поделием майкрософта, потому что так сказали в универе. Где-то в конце второго курса сказал друзьям, что всё, этим летом выучу OpenGL, окончательно решено.

Летом, когда я в очередной раз попытался подключить либу в Dev C++ и потерпел неудачу, я решил найти другую книгу. Может, где-то написано, почему у меня выставлены флаги компиляции вида -lgl и -lglut, все либы лежат в папке, но проект не собирается? Может, лучше начать с общей архитектуры построения игровых движков, а уж потом разберусь?

Скачиваю какую-то книгу, русскую, года 2004. По движкам. Где на первой странице указано, что для чтения этой книги необходимо иметь знание DirectX.

И тут меня осенило. А что, если вместо OGL я буду знать DirectX? Это же гениально. Ведь после того, как я освоил Qt, я начал любить WinAPI. А тут мало того, что использование WinAPI было необходимо, так ещё и этот выбор ощущался как переход на тёмную сторону. Что я иду против системы. В то время, как везде говорят об осточертевшей кроссплатформенности, в то время, как все желающие освоить графику выбирают OpenGL, "потому что свободное ПО", в то время, как все инди-игры на OGL и везде, где преподают графику, учат OpenGL, в это время я выбираю DirectX. Наплевав на кроссплатформенность - она не нужна, у меня нет ни одного друга, который бы всерьёз использовал линукс или макось не для рабочих задач. Наплевав на закрытость кода - меня за два года в универе успели заебать промывкой мозгов на тему, какое же хорошее свободное ПО и как же важно использовать линукс. Отсосите. Я ухожу в DirectX!

Ищу литературу. Нахожу книгу некоего Горнакова, по DX9. Начинаю читать, разбираюсь с каждой неясностью, переписываю вручную код, комментирую каждую строчку. Как ни странно, первый проект даже скомпилировался. Иду дальше. Квадрат, кубик, освещённый кубик... Дохожу до главы с выводом текста, застреваю.

Пытаюсь разобраться. Функция в книге принимает три аргумента, функция в документации MSDN - девять. Гугление дало понять, что с тех пор, как книга была издана, эта функция успела поменяться. Что ж, думаю, надо бы тогда попытаться написать в 9 аргументов.

Не заработало. Ибо функция принимает в качестве параметра спрайт, про спрайты в книге ничего нет, а документация ссылается на одну статью, та на другую, та на третью и разобраться в таком количестве информации при недостаточном количестве начальных знаний нереально.

Решил спросить здесь, на дваче. Говорю, вот, есть книга 2003 года, да, она устарела, но всё нормально, после её прочтения у меня будет достаточно начальных знаний, чтобы было всё понятно по документациям в этой области. Отвечают мне, что я даже не представляю, насколько она устарела, что сейчас всё делается по-другому. Дал мне ссылку на книгу(кстати, довольно известного в этой области автора) на английском языке.

Думаю, ладно, английский - не такая уж и проблема. Конечно, это моя первая книга на английском, но надо же когда-то начинать. В любом случае, всегда есть переводчик.

Перед прочтением заглянул в оглавление. Тесселяция! Геометрические шейдеры! Ambient Occlusion! Охуеть! Раньше для меня это были просто красивые сложные термины, а теперь я на самом деле буду в этом разбираться! И использовать это! Я был, как это говорят по-английски, really excited. То есть пиздец в предвкушении. К слову, в книге говорилось, что необходим Visual Studio. Понимая, что это того стоит, я его поставил. Больше я Dev C++ не запускал никогда.

Начал читать. Внимательно, осмысливая каждое предложение и делая каждое упражнение. С каждой главой я всё больше охуевал от собственной крутости. Я понимал, что вот оно, что я наконец-то нашёл то, что мне интересно по уши. Что я наконец-то счастлив, анон.

К тому времени, как закончилось лето, я прошёл несколько глав. Планы по всей книге за лето немного провалились, но я не сильно переживал. Главное, что я встал на правильный путь. Прихожу в универ, говорю друзьям: "Помнишь, я хотел выучить летом OpenGL? Я выучил DirectX!". Как ни странно, они не были сильно удивлены.

Ну а дальше ничего особенного. Как закончил книгу, пошли следующие. Более высокого уровня, с узкоспециализированнымм алгоритмами вроде сглаживания во время постпроцессинга. Названия книг говорить не буду, мало ли кто-то тут их решит прочитать. Пусть сами ищут.

Ну вот как-то так. И да, аноны, в 2016(да и в 2015) году заниматься DirectX несерьёзно. OpenGL объективно лучше - он и кроссплатформенный, и стандарт открыт, и вообще DX не нужен будет, как только выйдет Vulkan.
#87 #608774
Это конечно круто, поздравляю и всё такое. Но я надеялся услышать как ты в работу вкатился. Или ты там сам постигаешь дзэн? Рендеринг и R&D в этой области на постсовке мертво вообще или как? Сам с бульбастана
#88 #608775
#89 #608778
>>608774
Сам дзен постигаю. Вряд ли я бы пошёл на обычную работу со всеми этими дедлайнами, тимбилдингами, корпоративной культурой и прочей чешуёй, которая не даёт почувствовать себя свободно.

Ну и да, где ты видел из России за последние лет 5 что-то, кроме игр на мобилки?
#90 #608780
>>608731
Разобрался сам. Я забыл указать значение поля lpfnWndProc;
#91 #608784
>>608778
Блять, я-то думал ты там бабло на этом пилишь норм и не хочешь, чтобы конкуренты в сферу лезли.
Ну варгейминг тот же. Корабли в Питере, танки в Минске. Да и хватает, наверно, контор с не мобилками и социалками
#92 #608785
>>608778

>из России за последние лет 5 что-то, кроме игр на мобилки?


еще в социалках игрухи
есть еще такая тема как аутсорс игрового контента
еще иногда саппорт долгоживущих проектов типа ммо скидывают (но редко), включая таскинг (багфиксинг и фичреквестинг)
#93 #608786
>>608784
Так если бы я не хотел конкурентов, я бы не только на DirectX ведь смотрел, верно?

>>608785
Ну нельзя превращать любимое хобби в работу.
#94 #608794
>>608770
И с чего ты взял, что ты его на высоком уровне знаешь, клоун.
35 Кб, 604x403
Парни, задачка с собеседования #95 #608828

>Напишите функцию, которая обрезает пробелы в конце переданной ей строки. Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов, оптимизирована по количеству обращений к памяти. Сигнатура: void TrimRight( char *s );


P.S.

: http://ideone.com/gNIlCG

Парни, что ещё можно с этим сделать?
#96 #608847
>>608628
typedef то че не юзаете, в тех случаях когда старом стандарте работаете
вся эта длинная stl поебота заворачивается, включая и итераторы
#97 #608850
Дан файл, в нем содержится набор слов. Отсортировать эти слова по алфавиту, использовать односвязный список, и вывести результат в другой файл и на экран. Обязательно должны присутствовать: класс, конструктор.
Анончики, помогите. Лаба горит
#98 #608866
http://pastebin.com/HZ7gQ4xa
Препод на паре пояснял этот алгоритм создания выпуклой оболочки. Я её пропустил и нихуя не понял. Где можно найти гайд по работе этого алгоритма? Сам пытался загуглить, не нашел.
#99 #608868
>>608866
То бишь назначение программы мне понятно, мне непонятно, как она работает.
35 Кб, 604x403
задача с собеседования [2] #100 #608878

>Напишите функцию, которая обрезает пробелы в конце переданной ей строки. Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов, оптимизирована по количеству обращений к памяти. Сигнатура: void TrimRight( char *s );


P.S.

: http://ideone.com/gNIlCG

ответ, что не так:

>"Несмотря на то, что решение является оптимальным по количеству обращений к памяти, оно во-первых выдает некорректный ответ на некоторых строках, а во-вторых может повредить динамическую память."



Парни, подскажете, что ещё можно с этим можно было сделать?
#101 #608885
>>608364
Ну что же вы, аноны?
#102 #608887
>>608364
у страуструпа в книге есть ращ\здел...
хотя ты наверное итак оттуда
#103 #608890
Несколько вопросов от ньюфага.
1) Obj-C используется только в эплопроизводстве или широко распространён?
2) Чистый Си проще плюсов?
3) Насколько у Си и плюсов различная сфера применения? Можно на одном делать всё то же, что и на другом?
4) Насколько у шарпа и плюсов различная сфера применения? Можно на одном делать всё то же, что и на другом?
#104 #608891
>>608890
1) >>только в эплопроизводстве
2) >>проще
3) >>Можно.
Сфера - у крестов весть линух + вся системщина на современных осях, плюсы - более прикладные и среднеуровневые вещи (обычный гуй софт, сервера, игрушки).
4) >>различная
Не совсем. Шарп - чисто прикладной язык, бОльшая часть софта на сперме, тяжелые игрули 40-60% области плюсов на нем не попишешь.
#105 #608893
>>608891

>Сфера - у крестов весть линух + вся системщина на современных осях


У си, конешно.
#106 #608895
>>608878
Ну дык не реаллоцируй память вообще. Просто замени первый символ в последовательности замыкающих пробелов на \0. И для этого можно идти с конца строки, тогда не обязательно ко всем символам строки будет обращение
43 Кб, 604x340
#107 #608901
Как подключиться к жаббер серваку\отправлять сообщения и подписки? :3
#108 #608904
>>608850

>Отсортировать эти слова по алфавиту, использовать односвязный список


Кто у вас задания придумывает? Это ж пиздец.
35 Кб, 604x403
RE : задача с собеседования [2] #109 #608907
>>608895

> И для этого можно идти с конца строки,



Чтобы идти с конца строки, надо для начала получить индекс последнего элемента. Это делается проходом до конца, если я не ошибаюсь. А применение функции - strlen, это ведь тоже проход до конца?

> Ну дык не реаллоцируй память вообще.



С этим согласен. Наверное не стоило выёбываться.
Но они говорили про оптимизацию и т.д. Подумал, что правильно было бы очистить память, хотя применение релоак тоже тяжкая вещь. кажется
#110 #608928
>>608891
Спасибо, понял.
#111 #608938
>>608828

>переданной ей строки


Как строка передаётся? И куда она должна выводится после обработки?
#112 #608943
>>608938
Это не принципиально - куда должна выдаваться.
хотя .. вот это вроде бы даёт понять :

> Сигнатура: void TrimRight( char *s );

#113 #608949
>>608943
Что значит "не принципиально"? Если надо куда-то в файл выдавать, то и занулять ничего не надо. Если на консоль, можно тоже с помощью функций IO. А откуда она берётся? Начальную длину можно узнать без strlen?
#114 #608953
>>608943
А чем этих людей string не устраивает?
#115 #608955
>>608938
Считай что ты пишешь универсальную функцию, которой похуй что потом с этой строкой будет. Просто вот пиздецки нужна строка без пробелов.
#116 #608968
Хочу с 2016 года начать новую жизнь, и научиться программированию. С чего начать?
#117 #608973
>>608968
С пайтона.
#118 #608977
>>608973
Я слышал что он не очень хороший для написания игр, а я игры хотел писать.
#119 #608981
>>608955
Если пишу универсальную функцию, то передам в неё строку и её длину, а верну из неё длину без пробелов в конце.
#120 #608994
>>608901
cout << "Bump";
#121 #609013
Драйдент - двуруч?
#122 #609060
>>608977
Похуй. Первый язык выбирается не чтоб что-то сделать, а чтоб научиться основным принципам и написать несколько рабочих программок.
Питон для этого норм, простой и без мозгоебства.
Кроме того, не слишком сложные технически игры на нем отлично работают (и даже библиотечки/движки есть), а сложную ты, будучи ньюфагом, не напишешь. А когда уже не ньюфаг - в другой язык перекатиться несложно.
#123 #609073
>>609070
Чему завидовать? Мне нет дела до твоих знаний, ни дх, ни огл не интересны. Просто

>Названия книг говорить не буду, мало ли кто-то тут их решит прочитать.


- это же пиздец, самому-то не смешно разве?
#124 #609098
>>609073
Ну смотри. Сейчас я чувствую себя счастливым. Потому что играю не по правилам - в мире популярности OGL среди любителей и даже многих профессионалов я использую DX. А теперь представь, что я расписал здесь всю годноту. К чему это приведёт? А к тому, что в DX может набежать толпа ололокающих школьников. Которым дали прямой рецепт, как стать илитнее и умнее. Дальше они своим неадекватством начнут дискредитировать DirectX. И в итоге сложится общественное мнение, что на DirectX пишут только ололокающие школьники.

К чему это приведёт? А к тому, что мне даже заикаться нельзя будет про своё хобби. Вместо уважения или прямых посылов нахуй я буду слышать лишь насмешки. И всё, перестану быть счастливым. Поэтому нет, нельзя.

И да, как же я рад, что по DirectX нет нормальной литературы на русском языке. Как же я рад.
#125 #609153
>>609098

>в мире популярности OGL


Лалват? Никто этой хуйней не пользуется практически.
#126 #609171
>>609153
Да ладно, блядь!

Valve, тонны инди-разрабов от Эдмунда Макмиленна до Klei Entertaiment, даже вот Crytek нанимали OGL-разработчиков. Андроид и iOS кодинг - OpenGL. Все университетские курсы в любом МГУ - OpenGL. Научная деятельность - OpenGL. Да блядь, даже запрос "3D Graphics tutorial C++" в гугле выдаёт OpenGL!

На DX пишут только ультра-AAA разработчики. Титаны индустрии. Ну и я.
#127 #609206
>>609176
Но я серьёзно.

>>609177
Если иметь правильные источники информации, возможность практиковаться и достаточно ума и времени, чтобы всё это освоить, то можно овладеть чем угодно. Было бы желание.

Возможность практиковаться в DirectX, к сожалению, есть у каждого. Времени у ололокающих школьников полно. Ум и желание у некоторых экземпляров попадается. Остаётся информация. Нельзя допустить, чтобы любой качественный источник информации стал известен публике. А не то последствия будут непредсказуемы.
#128 #609210
>>609205
Вот, тем более. Значит, я ещё больше иду против системы.
#129 #609213
>>609210

>все едят на ужин еду, а я говно, но на самом деле это круто, ведь только я ем говно, значит я клёвый


Нахуй иди, зелёный.
#130 #609214
Плюсач, подскажи какую-нибудь простую графическую 2D библиотеку, с поддержкой линукса. Не для виджетов/окон, а именно с возможностью отрисовки простейшей графики а-ля фон, спрайты, ну и возможность управлять с клавиатуры(выбирать пункты в меню и пр.). Нашёл много разных, однако самый популярный, а главное, кросс-платформенный, если я правильно понял, SDL. Или же лучше использовать какие-нибудь 2D игровые движки а-ля кокос, оксуген и пр.? Цель - простейшая битва а-ля Final Fantasy. Глаза разбегаются во всём этом разнообразии, пробовал использовать SFML, но в силу разных причин не вышло - рукожоп, однако.
#131 #609219
>>609214
SFML не слишком отличается от SDL. Если будешь писать на плюсах, то бери SFML. Вообще они оба неплохие, но SFML куда более объекно-ориентированный. Плюс это или минус для тебя — решай сам.

Больше я опыта ни с чем не имел, кроме этих двух. ОБа кроссплатформенные, да.
#132 #609223
>>609209
Можешь называть меня как угодно. Но у меня есть знания. Нет, не знания ваших попсовеньких Boost или Qt, не энтерпрайзной параши и даже не OpenGL, информация о котором доступна любому быдлану. Нет, я у меня есть знания закрытого, проприетарного стандарта. Многих закрытость пугает. Многие боятся, что вдруг придётся платить отчисления Майкрософту за любую написанную программу? Но я не такой. Я знаю правду. Я не боюсь. И я охуенно счастлив, что у меня есть DirectX.
#133 #609239
>>609219
Это скорее плюс. Спасибо за ответ. Разобрался, нужно было добавить пару ключей при компиляции. Не подскажешь каких-нибудь годных статей (можно на английском) для начала?
#134 #609240
>>609239
Не знаю, я просто читал документацию с официального сайта SFML.
Начинал я с SDL по туториалам Lazy Foo', потом перекатился в SFML без всяких туториалов, просто читая документацию.

Короче, тут вроде как есть всё, что тебе нужно.
http://www.sfml-dev.org/tutorials/2.3/
#135 #609247
За 10 лет я убедился, что в майкрософт вкладывать свои силы нет никакого смысла. Есть нормальная проприетарщина - матлаб, например, но MS всегда скажет через 2 года, что все, что ты учил - говно.
#136 #609248
>>609240
Да, внезапно документация годная. Спасибо ещё раз, пойду курить.
#137 #609256
>>609247
Под "нормальной проприетарщиной" ты подразумеваешь протухание десятками лет на одном и том же пакете одной и той же версии, делая всё то же самое, что и 10 лет назад?

Ну и в конце концов, посмотри на WinAPI. Потрясающая библиотека. Актуальна до сих пор. А ведь написана в начале девяностых.

И да, у тебя есть своя голова-то? MS скажет. Ну и пусть говорит, что хочет, как это тебя-то касается? Запретить писать на том, что ты используешь сейчас, тебе никто не сможет. Более того, чем больше кодеров уходят на "инновационные средства разработки ПО", тпи более элитен ты.
#138 #609261
>>609256

>Чем больше людей вышло из пещер и натянуло плавкы на зад, тем более илитен ты, сидящий голой жопе на куске говна

#139 #609264
>>609256

>Потрясающая библиотека


С этим не поспорить. Винапи потрясает тем, через какую жопу она сделана.
79 Кб, 1280x1024
#140 #609269
Ребятки, не нужно, пожалуйста, срать сотнями искрометных постов в духе ")))))", даже если вам не нравится, что написал другой анон. Ему вы хуево не сделаете, а тред утопите раньше срока.
#141 #609273
>>609261
Но сидеть голой жопой на куске говна тоже может каждый дурак. А вот писать на WinAPI в 2015 - не каждый.

>>609264
В мире ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ, КОМПОНЕНТНОЙ АРХИТЕКТУРЫ, СТАНДАРТОВ НАПИСАНИЯ КОДА и ПОКРЫТИЯ КОДА ЮНИТ-ТЕСТАМИ за одно лёгкое безумие, которое есть у WinAPI, стоит её любить.
#142 #609276
>>609273
Равно как и жрать говно станет не каждый.
#143 #609279
>>609273
Ты с компграфа штоле, маня? Пока ты дрочишь свою мелкомягкую хуитку, даже тянки успели вкатиться в серьезный бизнес.
https://cs.msu.ru/news/2280
#144 #609281
>>609256

>Потрясающая библиотека. Актуальна до сих пор. А ведь написана в начале девяностых.


Ехал воид через воид
Видит воид в реке воид
Сунул воид воид в дефайн
Цапнул дефайн войд за VOID
Обосрался воед-ВОЕД, создал 10 указателей на строку
А указатели на строку - не просты, а золоты близнецы.

Заразился духом мочератора-муделя, перекатывавшего тред 2 дня, соре.
#145 #609291
>>609279
Ну что, молодец она. Только вот её тема мне не слишком интересна.

>>609276
Не станет, но может. А вот в WinAPI может не каждый.

>>609281
Так это и круто. Капс выглядит брутально. Венгерская нотация выглядит пленительно и сложно. А сама архитектура? Блядь, да в сраном Си использовать полноценные классы! Причём так оригинально - по указателю лежит структура-дескриптор, а за ним данные. А теперь скажите, хоть кто-нибудь, кроме майкрософта, додумался бы до этого? А?
#146 #609294
>>609291

>Не станет, но может. А вот в WinAPI может не каждый.


Каждый может, кому интересна сфера. Но редкий даун жрёт говно, когда оно давно протухло.

>кто-нибудь, кроме майкрософта, додумался бы до этого? А?


Уносите толстого. Восхищаться всяким говном можно сколько угодно. Я ковыряю блядские байты богом забытой игры, которой 20 лет. Я тоже восхищаюсь структурой и всеми ухищрениями и взаимозависимостями, которые так нахожу, реверся код. Это невероятно и охуительно, в это тоже НЕ КАЖДЫЙ СМОЖЕТ, но это нахуй никому кроме меня не нужно и я это понима. И ничего в этом илитного нет. Но ты ещё и слагаешь как мудак.
#147 #609303
>>609291

>использовать полноценные классы


Неполноценные. В отличие от крестов, тут не будет compile-time проверок, а с безопасностью теряется и вся суть классов.
#148 #609309
>>609294

>в это тоже НЕ КАЖДЫЙ СМОЖЕТ, но это нахуй никому кроме меня не нужно и я это понима


Но это богом забытая игра. А это библиотека, о которой знают все. Да если им дать информацию, они, как псы, вцепятся в неё.

>И ничего в этом илитного нет


А вот в этом ты неправ. Даже то, что делаешь ты, вполне элитно. Гордись этим.

>>609303
Но блядь. ЭТО СИМУЛЯЦИЯ КЛАССОВ НА СИ! Это ли не охуенно? Это всё равно, что на микроволновке ездить до магазина. Взрывает мозг.
#149 #609326
>>609309
Ты не понимаешь. Глупо дрочить на фичи, которые ничего не дают и сделаны просто, чтобы все охуели. Классы в си это блажь, потому что в C++ уже есть нормальные классы, но при этом оверхеда перед си нет, что позволяет использовать кресты. А, например, шаблонная ебля в крестах - не блажь, потому что такое есть только в более медленных языках, пусть даже более удобно реализованное. Если тебе нужно просто выебнуться, а не дело сделать, то используй какой-нибудь Brainfuck, с ним все равно будет запутаннее.
#150 #609354
Блядь, такой охуенный пост удалили. Ну и поделом, неча нам тут анрилейт дискас разводить.
8 Кб, 872x509
#151 #609356

>>609342


>Монополию?


Не только. Очень много негативных последствий. И для направления и для развития. Но ты прав, что когда специалистов слишком много, это плохо. Люди перестают цениться, не смотря на то, сколько они потратили времени на обучение и насколько высококлассными они являются.
Тут поможет завышенный порог вхождения, допустим на собеседованиях, принимать по результатам олимпиадных задач, как это делают во всяких гуголах. Но ты ведь сам тогда рискуешь оказаться не у дел, илита.
#152 #609357

>>609352


>не только двигаться дальше, но и облегчить жизнь тому дурака, который пойдет по твоим стопам


Я забыл проаргументировать это.

Так вот — вернёмся к той забытой богом игре. Кажется, в 2000 или около того был один парень, достаточно глубоко разобравшийся в вопросе. Он мало что за собой оставил, поэтому мне пришлось копать свой тоннель. Однажды, я всё же разыскал того парня. Он тогда уже дропнул работу в senile team (старая геймдев контора) и уехал в китай. Я тогда уже запутался, но всё же смог с ним связаться. На мои вопросы он не ответил, сказав, что уже забросил всё это. Не удивительно, ему уже и лет-то дохрена.

Я разобрался во всём самостоятельно, но в любом случае очевидно, что прогресс не представляется возможен без передачи знаний.
#153 #609360
>>607640
3 - можно, да, но некоторые вещи в крестах проще/быстрее реализовать.
262 Кб, 700x467
#154 #609369
>>609357

>ему уже и лет-то дохрена


Тру олдфагов только на с/с++ можно встретить? Вообще к годам 50-60 есть кто продолжает именно кодить?
#155 #609371
>>609369
Саттер вроде кодит еще. Емнип он тимлид в команде Visual Studio.
#156 #609423
Посоны, самая overarchitectured библиотека 21-го века обновилась уже почти как неделю, а тут не слухом не духом.
http://www.boost.org/users/history/version_1_60_0.html
#157 #609426
>>608744
Код не видел (сижу с тостера), но надо просто объявить get_name как virtual и хранить в массиве указатели (а объекты создавать в куче например)
#159 #609812
>>609423
послушай, первое что ты должен уяснить, если хочешь писать продакшен на крестах - не юзать stl
второе - не подключать буст
а теперь иди нахуй
#160 #609821
>>609812
Шта?
А третьим будет - "Писать на ANSI C"?
мимо пять лет на плюсах
#161 #609826
>>609812
Аминь.

>Плюсоебство - это как православие. Когда протестантизм завещает работать над собой и создавать блага, славя величие Господа, православие требует от последователя искупления греха, посредством непрерывного страдания, как страдал Иисус неся свой крест.

#162 #609887
>>609812

>не юзать stl


Хуёвая затея.

>не подключать буст


А вот это уже нормальный подход.

>а теперь иди нахуй


Нет ты.

мимо тот вася которому ты отвечал
#163 #610094
>>609887

>Хуёвая затея.


сделать stl стандартной библиотекой - это была вторая самая большая ошибка страуструпа и комитета
ну а если практически подходить к этому, ведь приложения пишутся на основе какого-либо фреймворка (что куте, что связка atl+wtl, что mfc, что борландовские фреймворки, да мало ли их), а когда вдобавок начинают юзать stl, в результате происходит смешение стилей программирования (и не только на уровне синтаксиса, но и семантически)
самые мерзкие потроха прог что я видел - лапша из stl, си-кода с вызовами стандартной сишной библиотеки, winapi а поверх этого какой-нибудь фреймворк еще
самые охуенные проекты (и соответственно, чуваки которые их делали охуенны) - юзали, положим борландовский билдер, дак они писали собственные пакеты и компоненты, так же как и стандартные пакеты в билдере, а все сторонние библиотеки, что нужно было подключать + все winapi заворачивали в это, получался код единого стиля
или тоже самое, но проекты были запилены на связке atl+wtl
#164 #610103
>>610094
Так ты, блядь, уточняй. У нас, например, ядро проекта запилено на C++ & STL & Boost. Никакого куте, мфц, винапи и прочего. Собирается в толстую dll'ину с известным интерфейсом.
А вот на это сверху уже лепится гуй на куте. И за стл в гуе у нас больно дают по рукам, ибо вот тебе куте - его и люби.
#165 #610118
>>608770

>подсказали книгу на дваче


>коко никаму нискажу идете нохуй йа илито


По-моему, ты пидорас.
#166 #610172
>>610094
Ой бля. Если ты не в курсе, что модульность - одна из главных концепций ООП, нахуй ты что-то пишешь? Если с тобой работают быдлокодеры, которые срут под себя - это не проблема используемых библиотек.
#167 #610181
>>608242

> 2015


> Courier

#168 #610205
>>610181
А чо ща модно на сперме? Анальный консолас?
#169 #610213
>>610172
Малаца
#170 #610231
>>610181
И что?
>>610205
Это XP.
#171 #610302
>>610231

>Это XP.


Ииии... чо?
#172 #610309
>>607248
еби fltk
#173 #610318
>>610103
а теперь открывается первая и самая главная проблема крестов - а именно отсутствие abi, что у вас на границе модулей? - скорее всего, голый сишный интерфейс
и что получается - в библиотеке stl + boost, на границе модуля - голый си, а гуй на qt, итого получается та же лапша
а теперь сравни это с тем когда ты используешь объектные системы сделанные на сях - com под винду и gtk под юникс-семейство
не говоря уж про динамическую загрузку модулей в языках ml-семейства, сборки в дотнете, загрузка классов в ява
#174 #610367
>>610318
Сам ты проблема ходячая.
#175 #610370
>>610172
>>610367
ебать че за утырки
нечего сказать по делу, не кукарекайте
#176 #610538
>>610318
Ты какую-то глупость спизданул сейчас. Лапша будет, если в коде рядом находятся разные концепции. Когда разные модули написаны разными концепциями и даже на разных языках - очень хорошо, потому что в каждом модуле можно использовать инструмент, заточенный под определенную задачу. В самых узких местах нахуярить на си, да с simd-инструкциями, в регулярном коде юзать stl и другие высокоуровневые либы, а гуй вообще запилить на каком-нибудь медленном говне, но зато кроссплатформенный. Различие в концепциях между модулями не должно смущать, ибо если ты осилил одну концепцию/нанял единственную макаку, то тебе энивей все будет казаться гвоздями, и ты получишь более серьезные проблемы, чем НЕОДНОРОДНОСТЬ КОДА.
#177 #610620
>>610538
прямо на твоем примере:
пусть у тебя в либе есть какой-то рассчет - а значит это несколько структур данных + пара алгоритмов, работающих над ними
вы, как умные мальчики, все заворачиваете это в stl+boost c шаблонами, функторами вместо циклов, классами с иерархиями и перегрузками, красота в общем
а потом на границе модуля все это приходится приводить к старому си совместимому интерфейсу, по сути возвращаясь к функциям и void*
а потом в самой проге все это еще раз приводится к qt интерфейсам
получается, что помимо того что нужно закодить, нужно все это еще два раза обернуть, у вас там, как говорять layer код
а теперь сравни - я пищу com-совместимую библиотеку на atl и а гуй рисую на бейсике, примерно то же самое можно сделать на gtk, или пишу сборку на любом дот-нет языке, и юзаю ее в любом приложении на любом дот-нет языке, уж не говоря про возможность динамического подгруза класса в явке, возможность динамически грузить модули в языках ml семейства или делать вообще что угодно с исполняемым образом липс-машины (добавлять, изменять, дебажить одновременно выполняемый код в данный момент)
по сути, хочешь юзать modern с++ сейчас - у тебя один выход, а именно делать так, как сделали в casablanca - все въебашено в один большой исполняемый модуль + а наружу торчат веб-сервисы
#178 #610632
С чего начать изучать Qt?
#179 #610641
>>610620
Ну давай разберем по частям.
1. Гую не нужно знать внутреннее представление, поэтому приводить ничего не надо. Гуй в любом случае должен получить сущность, которую ему рисовать, а хранится она в map, int [] или vasyan_yoba_container - его не должно ебать. Если это происходит, то у тебя хуевая архитектура, поздравляю.
2. Если ты просто хранишь данные линейно, то ты используешь vector/basic_string/что-то подобное. У них есть методы для доступа к внутреннему си-представлению, указатель на которое можно без проблем передать в другой модуль, который понимает си-интерфейс.
3. Если ты хранишь интеллектуально (какие-нибудь множества или списки там), то да, ты не сможешь передать их между модулями, если использовались разные версии компиляторов. Но если ты пишешь то же самое без stl, фактически на чистом си, то ты проделываешь больше работы, чем для простого написания обертки в три строчки. Да еще и багов словишь.
4. "Ну и хуй с ним", - скажешь ты, - "Но запилить ABI-то все равно могли, не убудет же!" А вот нихуя. Если ты посмотришь исходники stl, то увидишь, что там достаточно много платформозависимого кода, плюс его все время перепиливают, чтобы достичь моар прироста в производительности. Если задать жесткую спецификацию, то будет существенная потеря скорости в будущем, этого допустить никак нельзя.
#180 #610651
Анон, раз уж развели срач, поясни за STL. Почему его некоторые/многие недолюбливают, не рекомендуют использовать и пр.?
#181 #610658
>>610651
Потому что в вузах преподы-олдфаги так говорят и почти не преподают его. Потому что раньше до лямбд и auto STL и правда был не очень удобен. Вообще, все проблемы от неосиляторства же.
#182 #610735
>>610651
Спроси ещё, почему старые пердуны визжат про pure c, ебаный закрытый софт и прочую хуету.
#183 #610740
>>610641

>хранится она в map, int [] или vasyan_yoba_container - его не должно ебать


как ты это говно пробросишь через границу dll? (а также классы, исключения, перегруженные функции, шаблоны и прочие "вкусности" с++)
что с того что у вас в dllке нахуярен рокетсайнс на stl+boost, когда это все равно приходится обвязывать сишной обвязкой?
я те про это толкую
нету в крестах стандартного abi, как следствие нету возможности полноценной динамической загрузки кода (а приходится делать си-совместимую)
все это приводит к тому что чуть ли не треть кода - просто тупо код обвязок
на си были запилены охуенные объектные системы, самые известные - это com в винде и gtk в юникс системах
в крестах делали более-менее функционирующий abi - например, mfc - ты не задумаываясь размещал классы в mfc dllки, пробрасывал исключения через модули, еще круче было сделано в борландовском vlc - там ведь была система пакетов, часть из них была даже визуальной и использовалать тупым накидыванием на форму, хотя все ведь это лежало в dll
но проблема в том, что это были не стандартные abi
и еще раз - хочешь юзать modern с++ - делай единый исполняемый модуль, если нужно взаимодействие с ним - пробрасывай какую-нибудь форму rpc или веб-сервис
в остальных случаях будешь жрать говно
#184 #610744
>>610651
потому что изначально stl - это концептуальная библиотека, сделавшая попытку реализовать функциональный подход в языке, который этому не больно то и располагает
и огромной ошибкой было сделать из нее стандартную библиотеку языка
#185 #610747
>>610620
Ерест какую-то пишешь.
Вот есть у меня ядро которое, например, шифрует файл хитрым алгоритмом. Писано на c++ & stl & boost. На вход получает строку имяфайла (да пусть даже указатель на char), каллбэк для прогресса и каллбэк для вывода ошибки. Где там войды и преобразования?
А если требуется та лапша, что ты расписал - то архитектор мудак, а кодер - индус ебаный.
#186 #610754
>>610658
преподы-олдфаги так говорят, чтобы тупая студентота вникала в алгоритмы, а не кидала std::sort куда попало.
А тупая студентота, как обычно, не вникает и решает что стл/буст - кака и трахается с собственными велосипедами.
#187 #610758
>>610740
А нахуй вообще ваш С++ для GUI нужен, можно было бы на node-webkit сделать, как тот же Slack.
Или там на JavaFX или каком-нибудь WPF. А c нативным кодом все равно что у ноды, что у джавы что у дотнета интеграция есть.
#188 #610759
>>610740
Мгм...
class __declspec(dllimport) myAwesomeClass {...}
#189 #610762
>>610740

>более-менее функционирующий abi - например, mfc


Бляяяя, держите ебанутого, я его придушу. В мире нет НИЧЕГО, блядь, хуже мфц. Даже червь-пидор и тот тихо посасывает в сторонке.
#190 #610812
о чем спор касательно dll? Просто никогда не компилил в dll-ки, интересно с чем это все едят.
#191 #610815
>>610740

>нету в крестах стандартного abi, как следствие нету возможности полноценной динамической загрузки кода (а приходится делать си-совместимую) все это приводит к тому что чуть ли не треть кода - просто тупо код обвязок


Вообще не так.
Отсутствие стандартного ABI приводит к тому, что
1. В линуксе приходится собирать пакеты под системный компилятор.
2. В винде проприетарщину (если нужно закрыть код и распространять его как dll) собирают под 2-3 последние версии майкрософтовского компилятора.

И все. Никаких проблем.

А сишные обертки делают не для С++-кода, а для использования другими языками. Впрочем, и это не обязательно, так как есть SWIG (http://www.swig.org/Doc1.3/Library.html#Library_stl_cpp_library).
#192 #610817
#193 #610818
>>610812
пытаюсь объяснить утыркам, почему кресты сосут - а именно нет стандартизированого abi, а значит всю их красоту (классы, перегрузку, шаблоны, исключения) хуй покидаешь за границы динамически загружаемого модуля (в си это механизм dll или so файлов если по простому)
>>610815
вот этот хуй, похоже вообще не понимает о чем речь
#194 #610819
>>610818
Это ты ньюфаг и нихуя не понимаешь. В шапке про тебя написано: "Хейтер сосет члены на пару со своей мамашей.".
#195 #610820
>>610818
А зачем их кидать за границу?
#196 #610822
>>610820
А зачем 10 раз статически линковать какой-нибудь OpenCV? Он должен лежать в /usr/bin/libopencv_core.so. Но он врет. Единственное требование - совместимость версий ABI компилятора.
#197 #610823

>/usr/bin


в смысле /usr/lib
#198 #610849
#199 #610853
>>610740

>com в винде и gtk в юникс системах


Вот ты сам всю суть описал. Нет кроссплатформенности - сразу теряешь 2/3 пользователей. Мне и с либами платформозависимыми ебли хватает, например.

>нету в крестах стандартного abi


Нет, все правильно, и я написал тебе в предыдущем посте, почему это фича, а не баг.

>охуенные объектные системы


Это, мягко говоря, спорное утверждение.

>как ты это говно пробросишь через границу dll


Никак, очевидно же. За всю работу с контейнерами отвечает своя дллка, общение с другими происходит через функции, которые находят элемент/формируют вектор результатов, и уже их передают, например. В нормальной архитектуре так делается, даже если по факту линковка статическая и ты можешь получить доступ к этим внутренностям. Расширяемость, тестируемость, все дела.

Да проще тебе ебало набить, няша. Я ему про Фому, а у него дядя в Кiеве.
#200 #610857
>>610744
Присутствие лучше отсутствия, так-то.
>>610747
>>610754
Двачую.
>>610759
Там емнип есть анальные ограничения, не? Что он должен быть POD или типа того.
>>610822
Ну так перекомпилируй дллки каждый раз при смене компилятора, ты так говоришь, как будто это каждый день происходит. Вообще, настоящая независимость от версии компилятора обычно нужна довольно редко, в каком-нибудь диком легаси, которому уже не помогут вкрапления stl, лол.
#201 #610858
>>610849
Да это не суть на самом деле. Статическая линковка от динамической в плане требований к ABI ничем не отличается - .o файлы от разных версий компиляторов С++ ты точно так же не сможешь слинковать статически, то же касается статических либ, то же и динамических.

То есть почитать ты можешь, но к обсуждаемому вопросу это отношения не имеет. Этот хуй почему-то думает, что код в .dll чем-то принципиально отличается от кода в другом .o файле, а это не так.
#202 #610861
>>610858
Ну нет, я с ним согласен, что проблема проявляется в основном только с dll. Потому что dll распространяют, а объектные файлы - почти никогда.
#203 #610864
>>610857

>Ну так перекомпилируй дллки каждый раз при смене компилятора, ты так говоришь, как будто это каждый день происходит.


Так я об этом и говорю. Я не понимаю, что мелкобуквенный несет вообще.

Бывает только одна проблема - когда проприетарная библиотека откомпилирована под древнюю версию компилятора, а автора давно не существует. Но я такое встречал только во времена C++ Builder 6.
#204 #610867
>>610858
>>610858
Да я в принципе ньюфаг в плане вот этих сборок библиотек, написания мейкфайлов/cmakelist'ов, интересно подтянуть свои знания в этой области.
#205 #610875
простой вопрос: как пробросить класс через dll?
как пробросить исключения через dll?
что делать с шаблонными функциями и перегружеными в dll?
просто подумайте, почему это нельзя сейчас делать общеизвестным методом (считай чтобы был стандарт на это)
и почему это хуево
в конце концов все упирается в то что нельзя на крестах сделать полноценную плагинную систему
на чистых сях - можно, на любой из объектных систем, запиленых на си-интерфейсах (com, gtk) - можно
а на крестах - нельзя
#207 #610878
>>610875
Никак. Эмулировать кодами ошибок. Не перегружать шаблонные функции в dll. Потому что это замедлит язык, а скорость приоритетна.

Еще вопросы?
#208 #610879
>>610875
Пункт 1 в FAQ:

>в крестах ты никогда не платишь за то, чего не используешь


Допустим, меня не ебут никакие dll, я просто хочу слинковать статически свою охуенно быструю софтину. Почему я должен получать замедление из-за того, что какой-то хуй захотел ПЛАГИН?
#209 #610881
>>610875

>простой вопрос: как пробросить класс через dll?


А как ты класс из соседнего .o файла берешь? Пиздец, что за тупой вопрос, #include <class_header.hpp>, и все.
#210 #610882
>>610881
Нельзя так, в этом вся суть. Если бинарные интерфейсы у компиляторов разные, то все сломается.
#211 #610883
>>610853
говна пожри
stl-boost-qt лапша у него нормальная архитектура
#212 #610885
>>610881
ебать, дно пробито
хули тут распыляться, я сворачиваюсь
#213 #610889
>>610885
Объясни мне, каким образом я пользуюсь C++-интерфейсом OpenCV при условии, что он лежит в библиотеке? Может потому что это ты пробил дно своей тупизной?
#214 #610893
>>610889
Ты компилируешь ее вместе со своей программой, одним и тем же компилятором. Ну не тупи, анон, например, gcc делает у членов класса выравнивание условно, а clang - нет. Ты передал указатель и при попытке обратиться к члену получишь гроб кладбище.
#215 #610895
>>610893
Сам не тупи. Я тут >>610815 написал все, что об этом думаю. Сейчас 2015 год, CMake скомпилирует тебе что угодно под что угодно в автоматическом режиме, но нет, не хочу CMake, хочу extern "C" и __AddRef с __Release.
#216 #610899
Cтоит ли попробовать Rust для расширения кругозора, вторым языком?
36 Кб, 1115x478
#217 #610902
>>607053 (OP)
помогите пожалуйста с кодом
http://pastebin.com/9D7MwptS
есть форма, где два элемента TextBox и один Button, мне нужно чтобы когда я вводу в TextBox1 массив чисел, после нажатия на Button в TextBox2 мне выводился преобразованный массив, в котором сначала идут элементы, которые больше или равны нулю, а затем отрицательные элементы, но мне на элемент TextBox2 выводится что-то странное, подскажите пожалуйста, как исправить
#218 #610903
>>610895
Если cmake скомпилирует тебе a.cpp и b.cpp разными компиляторами, а потом слинкует, то работать не будет, базарю.
#219 #610904
>>610903
Ты вот это нахуя ща спизданул? Информационный шум.
#220 #610906
Если же речь о том, что хочется написать ПЛАГИН, который компилируется любым компилятором, то здесь C ABI нужно не потому что у С++ ABI нет, а потому что плагин, внезапно, можно и на любом другом языке писать, который вообще может даже классов не иметь, а быть с ADT и тайпклассами. C ABI в этом плане наименьший общий знаменатель, который поддерживают все нативные языки. Нужно большее - смотри в сторону JVM и .NET. Если же нужен только чистый C++, то проблемы использовать один компилятор нет.
#221 #610907
>>610904
Чтобы до тебя, хуиная голова, дошло, что речь идет не о том, как надо делать, а о том, что будет, если сделать, как не надо.
#222 #610912
>>610907
Я это - >>610815 - для кого писал? Бросай привычку считать собеседника тупее себя.
#223 #610922
О чём на этот раз спорите?
мимо помню как вы на 200 больших постов растянули срач об использовании дебагеров
#224 #610951
>>610889
ты линкуешься с ним статически потому что
в одном екзешнике можешь хоть на ушах стоять, крути что хочешь
разговор за то что кресты в крестах нет стандарта abi, а значит нет динамической подгрузки кода, а значит не сделать полноценную плагинную систему, например
#225 #610957
>>610951

>полноценную плагинную систему, например


Полноценная плагинная система поддерживает любой язык, и было бы странно, если бы clang и GHC имели бы что-то общее, помимо соглашений о вызовах функций (и обычно это не cdecl). А для внутренних дел достаточно использовать один компилятор.
#226 #611144
>>610740
Ну и позорище

>как ты это говно пробросишь через границу dll?


На текущем проекте ~300 dll файлов с с++ abi, ексепшонами, шаблонами, и динамической загрузкой отдельных модулей. Давай расскажи мне что оно не работает.

>на си были запилены охуенные объектные системы


>com в винде


Ясно-понятно, СОМ как предел местаний. Пару лет по работе использовал что-то похожее, говно-говном.

>>610857

>Там емнип есть анальные ограничения, не? Что он должен быть POD или типа того.


Да, кое-какие ограничения действительно есть. Наш эксперт внезапно обнаружил что есть способ прокинуть c++ abi между dll. День прошел не зря, не так ли?

>>610875
>>610951
Я хочу напомнить то в с++ можно линковатся с динамическим рантаймом. В этом случае stl будет в отдельной либе. такие дела. Хуле вы такие тупые, не стыдно?
#227 #611207
>>611144

>~300 dll файлов с с++ abi, ексепшонами, шаблонами, и динамической загрузкой отдельных модулей


и все это у вас компилится одной версией компилятора, под одну платформу
конечно, блядь у вас все работает, но речь то в треде совсем не об этом
#228 #611216
>>611207

>и все это у вас компилится одной версией компилятора, под одну платформу


А зачем использовать разные компиляторы, скажи мне? Какая-то надуманная проблема. Большинство либ идет в комплекте с Cmake, сгенерить make-файлы под нужный компиль не проблема.

>конечно, блядь у вас все работает, но речь то в треде совсем не об этом


То-то для половины треда это настоящее откровение.
#229 #611224
>>611144

> Ясно-понятно, СОМ как предел местаний. Пару лет по работе использовал что-то похожее, говно-говном.


COM на Винде / Gtk в Линуксе / NSObject на Маке - отличная архитектура для системы, лишенной сборщика мусора. Единственное говнокодство в COM это использование GUID'ов вместо строковых имен.
#230 #611237
>>611224
Вот что интересно. В винде и маке COM и NSObject вшиты в систему. Ты пишешь код и точно знаешь, что он запустится у конечного пользователя. А в линуксе либы gtk в системе присутствуют не обязательно. Более того, есть долбоёбы, которые принципиально не хотят ставить gtk, потому что любят кеды. Как итог, под линукс вообще нет смысла писать - зачем, если не на каждой копии этой говносистемы запустится твой код?
#231 #611241
>>611237
На си вариантов нет, Qt требует крестов.
#232 #611242
>>611237
Это одна из причин, почему эта система узкоспециализированная вундервафля для серверов и мамкиных технофашистов.
#233 #611250
>>610902
Подозреваю, что у тебя лютая хуйня вместо перевода строки из текстбокса в числа.
#234 #611352
>>610902
ToString() для массива выводит просто название типа. Тебе нужно или переопределить ToString() (тоесть свой класс создать) или выводить по числу, например сначала все в строку скинуть а потом уже на лейбл хуячить.
#235 #611417
>>611352
Есть же std::to_string, надо просто ее к каждому элементу применить, а не к самому массиву.
#236 #611467
>>611237
У твоего опенсорсного кода gtk будет записан в dependencies твоего пакета. Кто-то арчешкольник, которого ебет наличие gtk-либ на kde-шной системе - кто-то не поставит твой софт.А проприетарный код будет таскать все зависимости с собой, как на той же винде. У меня, например, есть матлаб под линукс, так это йоба-папка размером с гигабайт, в которой даже своя древняя java с собой положена.
#237 #611469
>>611207

>и все это у вас компилится одной версией компилятора, под одну платформу


Да, и еще и устанавливается в одну строчку, типа sudo apt-get install libopencv-dev. А ты думал. Собственно, я знаю, что ты думал. "самые охуенные проекты (и соответственно, чуваки которые их делали охуенны) - юзали, положим борландовский билдер, дак они писали собственные пакеты и компоненты, так же как и стандартные пакеты в билдере, а все сторонние библиотеки, что нужно было подключать + все winapi заворачивали в это, получался код единого стиля". 2015 год, билдер, winapi, компоненты.
#238 #611526
Знаю, что вопрос не для этого треда, но спрошу тут. С чего вы начинаете писать программы? Я пока только учусь и решил для опыта написать аудиоплеер, но теперь сижу и не знаю с какой стороны за это взяться. Нахуярить гуй в Qt дизайнере или сначала понаписать классов для всяких плейлистов, или это все вообще не то и начинать лучше с другого?
6 Кб, 235x215
#239 #611529
>>611526
Сначала вся логика, потом гуй. Вообще как ни странно, но гуй/веб-фронтенд для меня всегда сложнее и дольше писать, чем основной код.
#240 #611532
>>611526
Написал фичу - прихуярил в гуе рабочую заглушку, чтобы ее тестить.
#241 #611778
>>611526
Сначала пишешь libyoba и тестовое консольное приложение к нему. Потом допиливаешь консольное приложение. Потом добавляешь гуй. Вот так - >>611532 не делай ни в коем случае, так только дауны делают с циклом "исправил ошибку, нажал скомпилироваться, запустил и произвел 10 шаманских кликов мышкой, чтобы все протестировать". А цикл компиляция-отладка-тест должен быть по-максимуму автоматизирован. И только с уже отлаженным ядром можно думать о гуе.
#242 #611884
>>607053 (OP)
Коданы, что православней указатели или ссылки? Сам ссылками редко пользуюсь, только при передаче параметров в функции и при перегрузке операторов = и ++. Смартпоинтеры не интересуют пока.
#243 #611897
Тред не читал. Здесь уже говорили, что на пике стоит поменять местами С и С++? Работы оплачиваемой для няшной вроде меньше. Не?
#244 #611916
>>611884
Это ОЧЕНЬ сильный срач, вообще, скорее, вопрос стиля и как принято писать в определенном проекте.
Ссылки - это просто синтаксический сахар над указателями.
#245 #611917
Не подскажите, чем со временем у вас работать? Нужно что-то вроде clock_gettime. Хочу точное время выполнение высчитать.
#246 #611918
>>611917
1) Бери профайлер. Время выполнения через clock не будет точным т.к. измеряет не время выполнения, но разницу во времени, которая может меняться по разным причинам (например, ОС будет чуть больше отдавать времени другим процессам и т.п.)
2) http://www.cplusplus.com/reference/chrono/
#247 #611937
>>611884
std::..._ptr классы
#248 #611997
>>611526
Напиши годный DLNA Renderer только для музыки.
MediaMonkey часто падает и зависает.
#249 #612029
>>611997
Ты это сейчас вообще не тому человеку адресовал. У меня даже самописный калькулятор часто падает и зависает.
#251 #612192
>>611916

>вопрос стиля


Не всегда же. В прошлом или позапрошлом треде уже срались, и я пояснял, как использование ссылок улучшает безопасность передачи аргументов, но ухудшает понимание того, что они мутабельны.
#252 #612198
>>611897
Тогда будет не смешно. Тащемта, в рейтинге TIOBE C на втором месте, а кресты на третьем.
#253 #612250
>>611237
фигня
ну хочешь что поставить емакс на kde-based de, ну притащить он с собой несколько gtk зависимостей, ну и че?
всегда это можно будет удалить, если надо с помощью системы управления пакетами..
#254 #612254

>А зачем использовать разные компиляторы


а как по твоему разпространяются бинарные пакеты с закрытыми патентами алгоритмами? это просто dll или so из которой торчит сишный интерфейс
или com-библиотека, из которой торчит объектный интерфейс
и никого не ебет какой версией компилятора и вообще каким компилятором она сделана, и подключить ее можно к проекту на любом помпиляторе, и даже более того, подключить вообще к любому языку, поддерживающему ffi
блядь, это ебанутый тред
я пишу очевидные вещи, просто очевидные, это как то что хлеб - еда, а кисель - напиток
при этом меня кроют хуями
#255 #612270
>>612033
Это сервер. Рендере проигрывает музыку с этого сервера.
#256 #612305
>>612254
Тебе и было сказано, что в разработке такие "универсальные дллки" это довольно редкий случай, обычно ты ну максимум манкипатчишь собственные старые в уже развернутом приложении. А полноценный проброс классов нужен и того реже, поэтому решено было этим пожертвовать в угоду скорости.

>закрытыми патентами алгоритмами


А это вообще пушка, с учетом того, что в каждом опубликованном патенте всегда есть полное описание алгоритма.
#258 #612356
С завтрашнего дня начинаю учить С++ по книге Страуструпа.
Книгу уже скачал.
#259 #612357
>>612356
смешной ты однако
#260 #612362
>>612357
Почему?
#261 #612364
>>612362
Со Страуструпа не начинают. Страуструпом заканчивают.
Какие-нибудь еще языки знаешь?
#262 #612365
>>612364
этого двачую

>>612356
завтра будешь ебаться с компилятором, не осилишь циклы и условные конструкторы и бросишь программирование.
#263 #612368
Привет, двощи. Стоит задача - необходимо проиндексировать файлы подходящие под определенную маску аля "*.dat". Т.е. я хочу получить массив/список эдаких ссылок на файлы, по которым я могу получить файл для чтения/изменения. Как это сделать быстрее всего ? В винапи есть файловые дескрипторы, это оно ?
#264 #612370
>>612368
Оно. Если не знаком с WinApi, то не берись. На C# это делается быстрее.
#265 #612429
>>612364
>>612365
Ну, я давно изучал пхп (цсс, хтмл, немного явы, на уровне встройки его в пхп код), мог даже что-то неплохое написать. Но сейчас я уже его почти не помню.
А с чего тогда лучше начать?
У вас, просто, в шапке и указан Страуструп для начинающих. Тем более это самая свежая книга.
#266 #612437
>>612368
boost::filesystem
#267 #612455
>>612429

>для начинающих


Можно поинтересоваться, зачем тебе это?
#268 #612456
>>612429
Я с Шилдта начинал. Свежесть не так и важна, если только начинаешь программировать. Вон те же сишники, все еще K&R читают, а ей сколько лет уже! Тебе главное понять принципы, что да как работает. А потом, как наберешься опыта и будешь без проблем (и гугла) решать простые задачи, переходи на Страуструпа, или уже на черновик стандарта.
#269 #612462
>>612455
Не знаю, может работу найти. Меня недавно уволили. А может для себя - напишу программы и игры, стану более компьютерно-грамотным.

>>612456
Ок, а что за черновик стандарта. И с чего, всё таки, лучше начать?
#270 #612468
>>612429
Там первая ссылка самая на книгу для начинающих ведет
#271 #612471
>>612462
Язык программирования - это лишь два слова, которые ничего не значат сами по себе. Значение им придает стандарт, в котором описываться что это значит и как это должно работать. Стандарты принимаются специальными комитетами, которые отвечают за дальнейшее развитие языка. А по этому стандарту пишут компиляторы, которые являются реализациями какого-либо языка. Есть множество различных компиляторов, каждый из которых в чем-то отличается от другого. Ведь каждый может интерпретировать написанное по разному. Но тебе со стандартами С++ стоит ознакомится только тогда, когда ты уже будешь более-менее технически образован, чтобы понять что там написано. Ну и нормальное знание английского, так как ты вряд ли найдешь перевод.
#272 #612478
>>612468
А вот кстати что потом то читать? Ну вот прочитал я книгу для нубов, научился выводить хелоу ворлд в консольку, а дальше куда? Что читать, что писать? Я думал Саттер с его задачами подойдет, но оказалось там пока для меня пиздец. Теперь сижу и не знаю за что хвататься и куда смотреть.
#273 #612481
>>612478
Изучи STL для начала. Затем учись пользоваться какими-нибудь API. А вообще, если ты не знаешь зачем тебе это - это тебе не нужно.
#274 #612489
>>612462
с++ слишком огромный чтобы его изучить весь. Что тебя привлекает, гейдев? Выбери интересную задачу, может просто посмотри на всяких апворках, даже неберясь за нее просто попробуй сам сделать. Почитай как такие задачи решают профессионалы.
Параллельно читай основные приемы, как писать классы, какие библиотеки для твоей задачи уже написаны, как ими пользоваться. А то ты так будешь вкатываться лет 5 лол. И на тот момент уже все что ты прочитал устарело. А текущему работодателю нахуй твой набор библиотек не нужен.
#275 #612566
>>612489
Он несравнимо меньше, чем какая-нибудь модная параша с сотнями фреймворков. Без проблем можно изучить процентов на 70 и иметь неплохое представление об оставшихся 30.
#276 #612570
>>612489
А что изучать в голых плюсах без, простигосподи, STL?
Сам язык легко осваивается за неделю-другую.
Потом начинаешь изучать библиотеки (разумеется, в рамках каких-то задач).
А потом, много позже, приходит понимание.

Если вопрос в том, что точно изучать, отвечаю - базовый синтаксис, STL. Понять что такое boost. Дальше - по желанию.
#277 #612585
>>612566
Написать зэловорд на очередном шаблонном фреймворке и почти узнать его - это, блять, не стл с бустом выучить.
#278 #612617
>>612585
Ну, возможно, что у меня ошибка выжившего, но мне на фоне сотен говнотехнологий, которые непременно требуются на тех же жабовакансиях, stl с бустом показались на порядок однороднее и проще в освоении.
#279 #612618
>>612617
Двачую этого.
#280 #612676
>>612570

>базовый синтаксис, STL


В принципе согласен с тобой. Но ведь есть задачи, где stl вообще не нужен? Может ему понравится делать на Qt игры для андроида. Знать нужно, но там порог вхождения настолько низкий, что можно начинать прямо сейчас, без смс, а все остальное изучать в процессе работы.
#281 #612677
>>612478
Потом надо что-то писать и читать Майерса.
#282 #612713
Чики, двощ. Есть какие-либо стандарты, а лучше книги по С и С++ в которых описано как работают эти языки "изнутри". То есть, допустим, вызывается функция f(T b) {...}, как создается локальная переменная, как определяется тип и тому подобное. Или достаточно почитать что-нибудь общее наподобие драконбук или это компилятора зависит. Раньше вообще не задумывался об этом когда писал лабы на си, а когда столкнулся с С++ с его перегрузками, конструкторами, то стало интересно.
13 Кб, 954x414
#283 #612837
>>612713

>как работают эти языки "изнутри"


Assembler.
Disassembler.
Debugger.
Лучше самому один раз попробовать, чем сто раз об этом прочитать.
Возьми откомпилируй функцию с ссылкой в качестве аргумента и попробуй дизассемблируй полученный файл. Или там в дебаггере по шагам смотри что там куда происходит.
Потом с указателем. С классом. Структурой. Я так по всем типам прошелся в свое время.
#284 #612840
>>612713
У меня сейчас есть:
Andrew Appel — «Modern Compiler Implemenation in C»
Richard Bornat — «Understanding and Writing Compilers»
Terence Parr — «Language Implementation Patterns»
Нарыл в Гугле. И кратко о синтаксических деревьях:
http://www.defmacro.org/ramblings/lisp.html
#285 #612857
Поясните, боги программирования, как смочь в дизассемблирование? Я уже много кого порядокм заебал, но я делаю мод для одной старой игры на ps1.

Так или иначе, я далеко продвинулся, влез очень глубоко, разобрался во всей структуре диска и внутренних файлах, а также полностью освоил внутренний скриптинг локаций и битв.

Проблема в том, что многие вещи приходится реализовывать через жопу вместо аккуратных правок исходников.

Я слишком слаб в той сфере, до которой пытаюсь докопаться. Вот, допустим, мне нужно поменять определенную зависимость в расчётах, которая возникает при считывании определенного байта. Я ставлю брейкпоинт на чтение этого байта из памяти, а что дальше? Ну, я вижу ассемблерный код, я понимаю каждую строчку по отдельности, но в общем и целом нихуя не понимаю, что же он делает. Какая-нибудь небольшая функция может состоять из тысяч операций.

У меня ощущение, что люди с опытом мгновенно видят различные паттерны и шаблоны, когда смотрят на ассемблерный код, но я читаю его строчку за строчкой, так что общую картину не вижу. Ну считалась переменную, на произвелось три тысячи операций над регистрами, ну и что? Как мне понять, что нужная мне функция закончилась и дальше идет уже совершенно другой расчёт? Может, я уже читаю код рендера, а не логики, но не знаю об этом.
#286 #612858
>>612837
Поддвачну.
#287 #612864
>>608287
Да, если рядом абстрактная биофабрика.
#288 #612880
>>609291
Кхм-кхм.

Schreiner A.-T. - Object Oriented C // 1993
#289 #612887
Нужно создать два стека std::pair фиксированного размера. Как это можно сделать? Вот такой код:

std::vector< std::pair<int, int> > v1(size), v2(size);
\t\ts1.swap(v1);
\t\ts2.swap(v2);

не компилируется.
#290 #612898
>>612887
А что такое s1, s2?
#291 #612900
>>612898
Стеки пар.
#292 #612902
>>612887
А зачем тебе swap?
#293 #612903
>>612900
Если я их объявлю, у меня все компилируется. Но тогда это 4 std::pair, а не два, как ты говоришь. Может ты что-то путаешь?
#294 #612908
>>612902
Нужно создать два стека std::pair фиксированного размера. Как это можно сделать?
#295 #612909
>>612908
А зачем?
#296 #612912
>>612909
Динамическое выделение памяти под элементы работает слишком медленно.
#297 #612921
>>612912

>Динамическое выделение памяти


Но ты ведь уже выделил память.

>v1(size)



>работает слишком медленно


Обрабатываешь миллиарды элементов в секунду?
#298 #612923
>>612921

>Обрабатываешь миллиарды элементов в секунду?


Да, поэтому стек должен быть постоянного размера. Известно максимальное количество элементов, которые могут храниться в стеке.
#299 #612935
>>612857
Бамп.
#300 #612980
>>612713
Наверни Inside the C++ object model Липпмана, правда, она на ангельском и старая, но там годно поясняется.
#301 #612988
>>608878
Пиздец, какие же здесь сидят аутисты, я просто поражаюсь. Один становится топ 3 директх программистом в России, прочитав книжку. Другой получает задачу, которую решит 8 классник на собеседовании(!!), так он ещё и пишет какой-то шизофренический код с рандомными отступами, на который без слёз посмотреть нельзя.

>убрать пробелы из КОНЦА


На строке "ss ss" твоё говно как отработает?
#302 #612989
>>612988
Ты ещё и \0 записываешь в предпоследний индекс, а не последний. Забей, программирование не твоё.
#303 #612992
>>612988

>топ 3 директх программистом в России,


кинь ссылку на ладдер
#304 #612994
#307 #613057
Есть ли области работы с С++, где не требуется знание хардкорных алгоритмов и вузовской математики?
#308 #613059
>>612857
Бамп.
#309 #613064
>>613057
Есть ли области работы с молотком, где не требуются слесарные навыки и строительное образование?
#310 #613073
>>613064
Linux kernel
#311 #613074
>>613057
Формошлепство на Qt.
#312 #613096
>>613057
Только преподавание если.
Если боишься матана/алгоритмов то лучше вкатывайся в веб.
#313 #613155
>>613057
99% программ на C++ любом языке общего назначения не используют ни того, ни другого.
#314 #613157
>>613064
Скорее

>Есть ли области работы с молотком, где не требуется езда на одноколёсном велосипеде, с одновременным жонглированием десятью урановыми молотками?

#315 #613170
>>613029
https://ideone.com/3au0jo
Снова байтослесари соснули.
#316 #613223
>>613170

>C


>2160KB


>Scala


>322496KB


УБИТО
#317 #613225
>>613170
Успокаивай себя.
[code lang="cpp"]
void trimRight (const char str) {find_if (make_reverse_iterator (str+strlen(str)), make_reverse_iterator (str), [] (char cur) {return cur!=' '))++ = '\0';}
[/code]
#318 #613241
>>613225
В ответ на нормальный рекурсивный алгоритм, подгоревшая байтомартышка высрала нечитабельное говно на ворохе костылей, ещё и в одну строку запихала, ну лол же.
str.take(str.lastIndexWhere(_ != ' ') + 1)
А сейчас тебя вообще порвёт: str.trim
#319 #613242
>>613170
А теперь то же самое, но не со строкой, а с указателем на символ.
#320 #613243
>>613242
Меняешь String на Array[Char], и... абсолютно нихуя не меняется. Енжой ёр система типов.
#321 #613246
>>613241

>нормальный рекурсивный алгоритм


в школе вы еще циклы не проходили, только рекурсию?
#322 #613249
>>613246

>циклы


>2016


Мартыхан продолжает демонстрировать свою умственную отсталость.
#323 #613250
>>613243
Пришел тралить, а что написано не понимаешь. Причем тут массив? Нужно убрать пробелы в конце строки, не зная ее длину, а зная только указатель на начало.
#324 #613251
>>613249

>маааам, а ведь рекурсия это ведь круче чем циклы???!

#325 #613257
>>613250

>не зная ее длину


>== '\0'

#326 #613259
>>613251
Очередной разрыв императивной мартышки, не осилившей рекурсию.
#327 #613260
>>613259

>мааам, а ведь в императивном программировании же нет рекурсии???

#328 #613268
>>613260
Начинай переписывать дрисню >>613029 в рекурсивный алгоритм, у тебя пять минут. Время пошло
#329 #613270
>>613268

>Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов, оптимизирована по количеству обращений к памяти


>рекурсивный алгоритм


Давай, расскажи, что у тебя стек больше, чем срака твоей мамаши. Кококок хваставая рикурсия конпелятор разбирется.
#330 #613271
>>613268

>маааааам, а ведь у императивщиков какая-то своя неправильная рекурсия, дыыааа????

#331 #613273
>>613270
Болезная опущенка не осилила хвостовую рекурсию?

>>613271
Животное обосралось и перешло на визги. Впрочем, ничего нового.
153 Кб, 1600x900
#332 #613324
>>607053 (OP)

>Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014)



В нем задачки есть или онли поясняют за синтаксис и всю хуйню? Вроде полистал - ненашел нихуя.

Какую студию скачивать?
#333 #613379
>>613259
Вообще-то явное использование рекурсии (вместо комбинаторов) - это дно функционального программирования. Впрочем, что еще ожидать от школьника, выучившего скалу и решившего впечатлить мир этим знанием.
#334 #613404
>>612837
А если поковыряться с llvm и clang? А то ассемблер/дизассемлер меня не очень радует. В дебаггере же просто адреса памяти и что они хранят, но тут я возможно чего-то не знаю.
#335 #613532
>>608878
https://ideone.com/dg3UZV

Меня возьмут?
#336 #613533
>>613532

> for(;;)


Что это за йоба?
Ньюфаг.
#337 #613534
>>613533
while(true)
#338 #613537
>>613533
Цикл for (initialization; loh; ++pidr) состоит из трёх частей, разделяемых между собой двумя ;

Любая из трёх частей может быть опущена (в т.ч. любые две из трёх или все три), но обе ; должны обязательно наличествовать, чтобы компилятор понял, что к чему относится.
#339 #613538
>>613532
Ловите наркомана! Попробуй "a b " сунуть в свою функцию, лол.

>>613225 вот тут же все написано уже.
9 Кб, 180x88
#340 #613561
>>613538
Ты сам-то проверял свой высер? У тебя там даже количество скобок не совпадает.
#341 #613572
>>613225

>char*


>strlen


Двойной проход от начала к концу и и от конца к последнему символу. Можно быстрее. Думайте, кандидат, думайте лучше!
#342 #613574
>>607053 (OP)
что можно на вашем си плюс плюс написать, помимо игор?
#343 #613579
>>613574
Все?
#344 #613587
>>613561
А, ну да, ты же обнуляешь каждый раз, когда не пробел, я не заметил. Пардон.

Но все равно твой вариант нихуя не оптимален. Получается сложность O(длина строки), а можно сделать O(количество пробелов в конце). Вот исправленный высер, например:
http://ideone.com/DpE8tK
#345 #613593
>>613572
strlen обычно инлайнится и будет с оптимизациями O(1) для захардкоженных строк. Так что это спорный вопрос.
#346 #613629
>>613593

>будет с оптимизациями O(1) для захардкоженных строк. Так что это спорный вопрос.


Я б тебе ПЕРЕЗВОНИЛ
76 Кб, 1361x672
#347 #613632
>>607053 (OP)
помогите пожалуйста, как исправить код, чтобы программа заработала?
#348 #613633
>>613404

>llvm


Да, будет лучше. Хотел про него написать, на название забыл. Сам не пользуюсь но наслышан что штука крайне полезная.
#349 #613637
>>613632
Убрать из кода весь WinAPI.
#350 #613638
>>613632
Этот код для C++ Builder и использует библиотеку VCL. Положи там, где взял.
#351 #613639
Сосоны, нужно при помощи бустовского сплита разделить строку с получателями эмейл-сообщений. Пример:

"Alex Gregan" <al.grehan@gmail.com> , "Mirana, Griffith" <dgh@gmail.com>, Вася Пупкин <vasyan@gmail.com>

Проблема в сплите по запятой в том, что иногда бывают имена получателей с запятой, как я написал выше. Может кто подбросит регулярку нужную?
#352 #613640
>>613638
Хотя нет, показалось. Это C++/CLI код. Но все равно, положи там, где взял.
#353 #613641
>>613638
а как сделать так, чтобы эта программа заработала в Visual Studio 2013?
#354 #613644
>>613641
Step-1: File-> New -> Projects -> Templates -> visual C++ -> CLR ->Win32 Console Application -> Ok ->Finish

step-2: RightClick on Source Files -> Add new Items -> Visual C++ -> UI -> Windows Forms (MyForm.h) -> add

Step-3: Click on properties in top-right corner (or) Execute. Done!
#355 #613647
>>613644
я не понимаю, где Properties
#356 #613656
>>613632
ну помогите же, как сделать так , чтобы этот код заработал?
#357 #613709
>>613656
Попробуй скобочки добавить после MyForm
Результат или ошибка #358 #613984
Господа, как максимально годно, красиво, просто и круто в духе Design Patterns решить задачу возвращения в качестве результата работы метода некоторого нечта - либо того результата того типа, который ожидается, либо объекта класса Ошибка? Исключения, передача дополнительной переменной и прочие ужасные решения подобного рода не интересуют. Хочу максимально инкапсулированно и прозрачно для внешнего кода.
#359 #613986
Есть тут знатоки SFML? Вопрос такой: допустим у меня есть 2 слоя с изображениями и один из них я хочу ресайзить так, чтобы второй оставался нетронутым. При этом также желательно, чтобы координаты мыши из них тащились в соответствии с масштабом.
window.view.zoom для этой задачи не подходит, т.к. он ресайзит всё, что находится на экране. RenderTextureы, в которых хранятся эти самые слои, не хотят поддаваться zoom - просто ничего не происходит. Есть ли решение?
#361 #613996
>>613993
Да, это я видел. И либо я спать хочу, либо просто туплю, но не понимаю, как мне потом координаты к единой системе приводить. Каждый раз по клику переключать view затратно.
Вообще, изначально я думал, что всё, что можно применять к RenderWindow, можно и к RenderTexture. Т.е. я взял бы, перемасштабировал текстуру, вывел бы её на экран и при необходимости встроенным методом pix_to_coords, или как там, получал бы какие мне нужно координаты. Но view, фактически, просто на время изменяет масштаб моего окна, а на текстуре это никак не отображается, так что не зная, масштабированная ли в области клика текстура или нет, я ничего толком сделать не могу. Надеюсь, суть я донёс, а то уже сам забыл, что хотел написать. Надо спать идти.
#362 #614018
>>613984
По указателю. Как деды еще делали.
#363 #614021
>>613593
Нахуй триммить захардкоженную строку, наркоман?
Строка приходит от юзера. А там уже О(n).
#364 #614028
>>614021
C++ string хранит длину в себе.
#365 #614081
>>613984
Например, можно возвращать пару или кортеж, где первый элемент технический - ошибка.
Потом, их можно будет легко разделить с помощью std::tie.
Так или иначе ты должен определить один тип возвращаемого объекта, который инкапсулирует и ошибку и возвращаемые данные. Так будет type-safe.

И кстати,

>годно, красиво, просто и круто


противоречит

>в духе Design Patterns

#367 #614152
пацаны, я тут в компанию к Алёне-цепепе нашел Катю-цепепе: https://katecpp.wordpress.com/
#368 #614153
>>613984
Очевидная Either монадка
#369 #614158
>>613984
boost::variant<T, Error>

>Исключения, передача дополнительной переменной и прочие ужасные решения подобного рода не интересуют


>implying исключения это плохо


ты говноед
#370 #614180
>>613996
Ты и правда тупишь, вась.
#371 #614183
>>613996
Это так и делается, на самом деле. Ничего затратного в этом нет, обычные афинные преобразования, на производительность едва ли влияют, хоть 100 слоев двигай.
Как хочешь, в общем.
#372 #614184
>>613996
Блять, я вообще тоже спать хочу. Я так и не понял, что там за текстура :$
#373 #614193
>>614028
Условие читай. Передается char*
#374 #614213
>>614180
Можешь пояснить?

>>614183
Пока не придумал другого решения, буду пользоваться этим. Хотя может и правда, так и нужно делать.

>>614184
Ну взять ту же самую миникарту. Допустим у нас есть 2 RenderTexture, в которых лежит полноразмерный оригинал карты. Одну мы просто выводим на экран, а вторую зумим через view.zoom и тоже выводим, где-нибудь в углу.
Теперь, по щелчку пытаемся определить координаты внутри каждой RenderTexture с учётом зума. Для этого нам нужно просто вызвать внутренние методы pix_to_cords, ну или что-то вроде того.

Но это всё в теории.

На практике, судя по всему, придётся делать по другому, потому что RenderTexture не умеее в view.
Берём нашу текстуру карты, меняем view окна, рисуем миникарту, меняем view обратно, рисуем полноразмерную карту. Теперь, для определения координат внутри миникарьы получаем координаты клика, снова меняем view на миникарту, приводим коорлинаты методом и меняем view обратно.

Как то так.
#375 #614222
>>614158
Вот этого двачую, без исключений самое лучшее, что можно сделать.
>>614152
Неплохой блог, и не мертвый. Добавлю в следующем тренде, будет шапка с тяночками. Надеюсь, что эта Катя не пишет void main, а то нашему коллеге опять порвет, лол.
#376 #614226
>>614222

>void main


А что конкретно плохого, кроме того, что код ошибки не узнать?
#377 #614234
>>614226
БЬЕРННАКАЖЭТ!!!!111
#378 #614238
>>614226
ошибка цомпеляции будет, т.к. в с++ можно только int main
в сях можно воид, да
#379 #614253
>>607053 (OP)
Привет, программач. Дело в том, что мне нужно сделать класс матрицы. Понятное дело, я делаю его через шаблоны, потому что матрицы могут быть 2x2, 3x3, 4x4, 5x2, 1x4 и так далее. Использовать я буду в основном матрицы 4х4. Для них нужно написать повороты, перемещения и другие функции, работающие только для матриц 4x4. Выделять для них целый класс - слишком жирно, я считаю. Как мне указать в шаблонах, что какая-то функция должна собираться, только если выполняется условие, что размер матрицы равен 4x4? То есть такой код не скомпилируется:
Matrix<5, 2, float> mat;
mat.translate(Vector<3, float>(1, 2, 3));

А такой скомпилируется:
Matrix<4, 4, float> mat;
mat.translate(Vector<3, float>(1, 2, 3));
#380 #614258
>>614253
Если ты делаешь шаблонные матрицы, что тебе мешает сделать шаблонные функции поворота и перемещения? А для твоего говноедского решения есть static_assert.
#381 #614261
>>614258
Поворот и перемещение нельзя сделать для матриц, отличных от 4x4. Почему решение говноедское?
static_assert - это рантайм. Мне бы хотелось во время компиляции указать на все ошибки.
#382 #614263
>>614261

>static_assert - это рантайм


Нет. assert это рантайм, static как раз указывает на compile-time.

>Поворот и перемещение нельзя сделать для матриц, отличных от 4x4


Я, возможно, не совсем понимаю, что ты имеешь в виду под поворотом. Транспонирование матрицы? Поворот вектора оператором, определенным матрицей? В обоих случаях привязки к размеру нет. Запили на псевдокоде, что ты имеешь в виду.
#383 #614265
>>614253

> Выделять для них целый класс - слишком жирно


Что ты имеешь ввиду?
#384 #614268
>>614253

>я делаю его через шаблоны


Но зачем?
#385 #614272
>>614268
Наверное, чтобы не выделять память динамически.
#386 #614280
>>614253
Делаешь специализацию для 4х4 с нужными методами, не?
#387 #614291
>>614261
Поворот и прочие преобразования можно делать в любой размерности, ёба

Делай лучше vector3 и Matrix4 и не сношай мозг
#388 #614511
>>614280
Слишком жирно выделять целый класс для 4x4.

>>614268
Чтобы можно было сделать матрицу из многочленов, например.

>>614265
Если есть класс Matrix, то логичнее было бы определить всё в нём, вместо того, чтобы создавать 74654689 классов для частных случаев.

>>614291
Ладно, тогда как сделать, чтобы метод setToIdentity не работал для неквадратных матриц?

>>614263
За это спасибо, попробую. Да, я имею ввиду транспонирование матрицы. Да и вообще все операции, как написано тут: https://open.gl/transformations
#389 #614541
>>614511
Ну так транспонирование определено для любых матриц, а не только для квадратных. Тебе надо сделать метод, который не меняет саму матрицу, а возвращает новую, вообще говоря, другой размерности. Это будет правильное и однородное решение, в отличие от.

[code lang="cpp"]
template <typename T, size_t W, size_t H>
class Matrix
{
\t//...
\tT data_ [WH];
\t//...
public:

\t//...
\tMatrix <T, H, W> transposeMe () const
\t{
\t\tMatrix <T, H, W> output;
\t\tfor (size_t hctr = 0; hctr < H; ++hctr)
\t\t\tfor (size_t wctr = 0; wctr < W; ++wctr)
\t\t\t\toutput.data_ [wctr
H+hctr] = data_ [hctr*W+wctr];
\t\treturn output;
\t}
\t//...
}
[/code]
#390 #614580
>>614511

> вместо того, чтобы создавать 74654689 классов


Классы у тебя создатутся в любом случае (просто по шаблону). То что ты хочешь сделать не совсем моответсвует идеологии, шаблоны изначально предназначаються для того чтобы использовать один и тот же код для разных типов (хотя они уже далеко ушли от этого). Если тебе нужно разное поведение (один тип может что-то делать, другой нет) то идеологически правильно использовать наследование (ну или агрегацию и т.д.). Например, от общего класса матрицы наследуешь квадратную матрицу, которой для надежности даешь конструктор который принимает один аргумент (размерность) и там внутри вызывает конструктор базового с двумя одинаковыми аргументами. Потом переопределяешь или добавляешь нужные методы. Пытаясь на шаблонах придать разное поведение ты не выигрываешь в количестве кода - тебе все равно нужно прописать все отличное поведение. Реальный выигрышь нулевой, только больше пердолинга и высраных кирпичей при ошибках компилятора. Но сделать на шаблонах конечно можно, например https://ideone.com/6J6hwE - компилируется с закоментированой 26 строкой, если ее раскоментировать будет ошибка компиляции. Если интересует такой пердолинг читай книгу Александреску. Кстати в 17 стандарте вроде хотят расширить функционал шаблонов в подобном направлении.
#391 #614593
>>614580

>идеологически правильно использовать наследование


Просто иди нахуй, ООП-мразь.
#392 #614600
>>614593
Структурноблядок подорвался. Иди глобальных переменных посоздавай, глобальные переменные сами себя не создадут.
#393 #614603
>>614600
Т.е. по-твоему по-другому не бывает? Или даунское ООП уровня 80-х годов, или не менее даунский код а-ля фортран?
#394 #614606
>>614600
>>614603
Не ссорьтесь, ребят. Истинная мудрость в понимании того, что все хорошо в меру.
#395 #614607
>>614580

>выигрышь


Марионеткаь?
#396 #614612
>>614606
Использовать наследование при проектировании математики - зло всегда.
#397 #614626
>>614511

>>Использовать я буду в основном матрицы 4х4.


>Слишком жирно выделять целый класс для 4x4.


схуябы?
учитывая фиксированные размеры можно хуячить оптимизации уровня mmx/sse/sse2 а то и выше

>Чтобы можно было сделать матрицу из многочленов, например.


тебе это нужно вообще в данной задаче?

>как сделать, чтобы метод setToIdentity не работал для неквадратных матриц?


std::enable_if
#398 #614638
>>614612
Хотя, можно сделать так http://ideone.com/mzRNf5 . Если ты об этом, то ок. А вот виртуальные методы - зло.
#399 #614651
>>614612
Не согласен, ибо замедления это не дает, а структуру может улучшить. Вот виртуальность да, часто бывает вредна из-за оверхеда, но и в математических либах ее можно воткнуть в некритичные места без особого замедления.
#400 #614678
Concurrency in C++11
Хочу навернуть во время праздников в тишине и спокойствии. Кто читал? Годно ли, стоит того?
Не, я все равно прочитаю, но что ли подзадорьте
#401 #614681
>>614678
Если ты об Уильямсе, то очень годно, одна из моих любимых книг по крестам.
#402 #614698
Как лучше, так
>>614158
или так
>>614081
Я понимаю, что обе реализации будут работать, мне интересно, как лучше. Исключения - это здорово,безусловно, только это непрозрачно для внешнего кода.
#403 #614702
>>614681
Yep.
Спасибо. Пока ещё слабо представляю, как мне эти навыки пригодятся, учитывая что конторы пишут на шинапи с 98 стандартом и пока переходить не думают.
#404 #614703
Пасаны, пасаны, выручайте. Так уж случилось, что я выбрал призванием строить ракеты. Есть у нас в курсе такой распрекрасный предмет - "Численные методы". Ситуация идиотская - нужно написать расчетку по этому предмету, что собстно не сложно (ага, я так думал) на любом языке программирования (препод так говорил). Самое интересное в том, что я, претендуя на автомат, припер преподу расчетку в паскале (язык учил, знаю хорошо, решил не изобретать велосипед), что не понравилось святейшему. Потом я припер ему расчетку на питоне (учу сейчас), что ему тоже не понравилось, так как он на нем не работал. Эта хитрая жопа сказала что автомат мой, если в срок до 12 00 31 декабря я перепишу РР на C++. Кресты учил в 11 классе, по книге, которая что то там про 21 день. Естессно уже нихрена не помню, а вспоминать особо времени нет. Так вот что я хотел от вас спросить: где можно найти более менее краткое изложение математических возможностей ++ с примерами и объяснением?
#406 #614725
>>614703

> Эта хитрая жопа сказала что автомат мой


Ты бы лучше ткнул его носом в то, что слово своё он не держит и вообще лжец.
#407 #614776
Как вкатиться в железники? Хочу программировать низкоуровневые вещи и разбираться в железе, как тот бородач с очками из Silicon Valley. Недавно закончил читать Липпмана "Язык Программирования C++". Не понимаю куда двигаться дальше.
#408 #614789
>>614703
Выложи код на паскале, я прокомментирую аналоги в С++. Должно быть несложно.
#409 #614790
на pastebin.com выложи
549 Кб, 900x853
#410 #614815
http://ideone.com/Kd8bEy
Карочи, эта программа нужна для того, чтобы подсчитывать единички в двоичном представлении числа.
Как сделать так, чтобы они подсчитывались только с 5 по 10 бит включительно?
#411 #614838
>>614815
Поделить входное число на 16, потом взять остаток от деления на 128.
#412 #614840
>>614815
Нужно сделать побитовое and с двоичным числом типа 00001111100000. Только двоичные числа не поддерживаются, поэтому переведи его в шестандцатиричное и напиши n &= n 0xвотэтовотчисло, перед циклом.
#413 #614848
>>614840
А почему не 00001111110000? Пятый бит же тоже включительно.
А так вообще спасибки. Долго ебался, пытаясь сделать and с этим числом в двоичном и десятичном виде, и ещё удивлялся своему фейлу. Теперь всё работает.
#414 #614849
>>614848
Зависит от того, как ты считаешь биты - первый бит у тебя первый, или все-таки нулевой. Поэтому я даже не пытался считать нолики и единички у себя - это твое дело.
#415 #614939
>>614541
Нет, я всё-таки перепутал. Не транспонирование, а поворот. Ну как на том сайте написано жи! Транспонирование у меня определено для всех матриц.

>>614626
1 - Если бы я использовал только матрицы 4x4, то я бы сделал класс для матриц 4x4, но я буду использовать не только их. Я их буду использовать просто чаще других. Алсо, оптимизация без надобности - это не совсем правильно.

2 - Да, я студент-математик. Мне нужно составлять матрицы из комплексных элементов и многочленов.

3 - Вот за это спасибо. Теперь надо выбрать между static_assert и enable_if. Помню, треда 3-4 назад здесь собрались ёбнутые фанатики со своим SFINAE. Это же как-то относится к моей проблеме? Как к ним примкнуть?
#416 #614941
>>614580
С наследованием интересно. Но всё же хотелось бы без него. Насколько корректно решать эту задачу с помощью std::enable_if или что-то в этом роде?
#417 #614956
>>614222
Да плевать мне на половую принадлежность человека, Катя она, Алёна или Жирослав, лишь бы не void main()
#418 #614958
Почаны, подсобите с потоками разобраться, а то хочу в тренде быть.
http://pastebin.com/zAtUdU1p
Есть поток для ввода чисел, которые складываются в многопоточную очередь, откуда берутся и выводятся потоками из пула.
После выполнения что-то не ладится с синхронизацией или типа того.

terminate called after throwing an instance of 'std::bad_function_call'
what(): bad_function_call
zsh: abort (core dumped) ./test


Сама реализация пула взята из
http://stackoverflow.com/questions/26516683/reusing-thread-in-loop-c

Где ж я обосрался?
#419 #614984
>>614222
Только что-то у вашей Кати калька с блога майерса.
#420 #615004
>>614958
стандарт::плохой_функция_вызов
Ты чё блядь тупой? Вызывай функцию хорошо, а не плохо.
#421 #615016
>>614258
>>614265
>>614268
>>614280
Вы все - ебланы, которым в профессии не место. Ему нужно было посоветовать ключевое слово requires и концепты. Пиздец, с кем я сижу на одной борде.

Анон, слушай меня. Гугли requires и всё поймёшь.
#422 #615031
>>615016
Ну толсто же. Во-первых, я ему подсказал, как правильнее решить проблему без проверок вообще, а не какой из способов применить для костыльного решения. Во-вторых, концепты это кусок семнадцатого стандарта, их еще нет официально, и применять их в продакшене сейчас - дурной тон. В третьих, его задача гораздо проще и короче решается одним static_assert (4 == H && 4 == W), концепты ввели для более сложных случаев типа сравнения сигнатур, и писать там потребуется побольше.
#423 #615039
Нормально ли в одном файле объявлять несколько классов или лучше не выебываться и заводить отдельно?
#424 #615041
>>614939
enable_if напрямую не решит твою проблему, это чисто утилита для SFINAE. Для static_assert тебе просто придется написать условие, как вот здесь: >>615031 , если оно не выполнится, то компиляция прервется. В enable_if от условия зависит только наличие typedef'а внутри структуры, т.е. тебе придется городить хуйню из наследования и тому подобного.

Поворот делается почти так же, как в коде для транспонирования, тебе просто, в зависимости от угла поворота, нужно пустить один или оба индекса в обратном направлении. Нарисуй эту хуйню и сразу разберешься, тыжматематик.
#425 #615043
>>615039
Если класс небольшой и используется только главным классом из того же файла, то нормально. Например, какой-нибудь класс ячейки контейнера в файле с классом контейнера.
#426 #615044
>>614984
Ну я посмотрю еще, просто на первый взгляд мне неплохо показалось.
#427 #615046
>>614776
Купи ардуину, установи Arduino IDE. Там писать надо на крестах, вот и пили всякое разное.
#428 #615047
>>614698
Первое, очевидно. Во втором случае будет всегда передаваться лишняя инфа, ибо тебе нужна либо ошибка, либо значение - что-то одно. variant же как раз умеет не хранить лишней хуйни.
#429 #615050
>>615041
А если я хочу, чтобы этой функции вообще не было? То есть для матрицы 4x4 она есть, а для матрицы 4x3 уже нет. Она просто отрезается из кода. Это же SFINAE?

Насчёт поворотов - какие индексы? Ты знаешь, что такое матрица поворота? Это не просто взять и повернуть элементы матрицы. Это совсем другое.
#430 #615051
>>615031
Но почему ты считаешь, что твой способ без проверок более правильный?
#431 #615053
>>615041

>enable_if напрямую не решит твою проблему


template<int N, int M>
std::enable_if<N==M, Matrix<N, M> > Matrix<N,M>::setIdentity()
{ блаблабла }
#432 #615054
>>614958
Где код MyQueue?

Если там нет блокировки для всех методов а так оно и есть, прозреваю, тут io_mutex определен, но не используется, то ты сосешь с синхронизацией.

Алсо, код какой-то пиздецовый, пул вообще не используется, числа выводятся основным потоком. Лучше прекрати блуждать в потемках и наверни Уильямса, как анон выше сделал.
#433 #615055
>>615051
Потому что он будет работать для любых матриц, а не только для 4х4, очевидно же.
#434 #615056
>>615055
Сделай мне метод setToIdentity() для матрицы 4x3 тогда.
#435 #615059
>>615050
Нет, ее и так не будет, без SFINAE это вообще другая совсем тема. Твой класс шаблонный, следовательно, пока ты не обратился к функции, она не сгенерируется. А когда обратишься, она попытается сгенерироваться, и сработает static_assert.

Я знаю, что такое матрица поворота это было моим вторым предположением >>614263 здесь. Но тогда я не понимаю, какое действие ты хочешь совершить с самой матрицей-то? Просто умножить на вектор и вернуть новый вектор, не изменяя матрицу? Тогда это определено для всех квадратных матриц, а не только для 4x4. Я бы на твоем месте выделил класс SquareMatrix, унаследованный от Matrix, и все операции, определенные только на квадратных матрицах, вынес в него. А остальные - оставил в Matrix. Это вполне логичное разделение, ибо свойства квадратных матриц довольно сильно отличаются от общих есть определитель, можно сделать проверку на унитарность, ну ты понел. Так ты сможешь, читая код, сразу увидеть, что в данном месте требуется именно квадратная матрица, а не разбираться с ошибками компиляции, когда сунешь не то.
#436 #615061
>>615053
Не очень хорошо, ты получишь десять страниц ошибок, когда оно не скомпилируется. А в static_assert можно самому задать строку, которая выведется при ошибке.
#437 #615062
>>615056
Что он должен делать? Имя весьма туманное.
#438 #615063
>>615059
А если мне вдруг понадобятся какие-то свойства матриц с соотношением сторон 9:14, то мне и для них новый класс создавать? Нет, хочу всё в 1 сделать. SFINAE жи есть, почему бы не использовать его?
#439 #615064
>>615061
Каких 10 страниц? Там будет около 20 строчек, и в 1 из них будет искомая ошибка. Если ты работаешь через IDE, то вообще без проблем её сдетектить.
#440 #615065
>>615062
Делать матрицу единичной.
#441 #615066
>>615063
Да используй что хочешь, няша, хоть макросы. Ему показывают good practices, а он нос воротит, лол. Я тебе пояснил за преимущества static_assert, дальше выбор за тобой.

Классы на каждый чих создавать глупо, но в конкретном случае слишком много уникальных для квадратных матриц свойств, так что они вполне заслуживают отдельного класса. И так будет легче писать и читать код, он быстрее скомпилируется, хуле тебе еще надо-то?
#442 #615068
>>615065
Вынеси этот метод в SquareMatrix.
#443 #615070
>>615064

>двач, как чистить сортир вилкой? слышал, пару тредов назад тут были адепты вилок, это как-то относится к моей проблеме? как к ним примкнуть?


>на тебе щетку, щеткой чистить заебись. чисти говно!


>неееет, я хочу вилкой, поясните за вилку!


>вилкой чистить неудобно, каждое движение зацепляет мало говна, будешь чистить долго


>да какое там долго, будет около 20 часов всего! если начальник даст большую вилку, то вообще без проблем все почистить

#444 #615072
>>615056
Какой смысл делать это методом, если результат не зависит от самой матрицы, только от размерности. Сделай глобальную функцию, которой передаешь размер, и она создает единичную.
#445 #615077
>>615068
Нет, мы же уже порешали что не нужно плодить 57334534 классов, когда можно сделать всё в 1.
#446 #615078
>>615070
Ты или поясни, чем SFINAE плох, или не пиши хуйни.
#447 #615080
>>615072
Охуительные советы итт. Ты же понимаешь, что генерировать единичную матрицу и копировать её в нужную - это медленнее, чем сразу делать нужную матрицу единичной?
#448 #615085
>>607053 (OP)
Аноны, шапка, конечно намекает
Но можно ли джуну найти вакансии на крестах или лучше идти в другой сиподобный язык и только потом возвращаться на кресты?
#449 #615086
>>615080
Нет, обоссанный байтослесарь, не медленнее.
#450 #615088
>>615085
Кресты нужны для гейдева, ибо лучший язык
А сил и средств реализовывать проект пока нету.
Идти и учить другое, параллельно уча кресты?
#451 #615090
>>615086
Я сказал, почему медленнее. Теперь ты говори, почему не медленнее.
#452 #615091
>>615090

>Я сказал, почему медленнее.


Нет, не сказал, только кукарекаешь из лужи мочи. Вот когда предоставишь доказательства, что это работает как минимум в 2 раза медленее, тогда и кукарекай.
#453 #615094
>>615091

>Вот когда предоставишь доказательства, что это работает как минимум в 2 раза медленее


Тепеь "медленнее" начинается только с "в 2 раза медленнее"?
#454 #615097
>>615078
У меня такое впечатление, что я разговариваю с зеленью, обожающей сказку про белого бычка.
>>615061 - сообщения об ошибке больше и менее читаемые
>>615053 - нужно написать в 2-3 раза больше кода

>>615080
>>615090
Пикрелейтед. Вот этот >>615086 анон абсолютно прав, в эпоху move semantics просто стыдно что-то бормотать про медленность перемещений.
51 Кб, 410x604
#455 #615098
>>615097
Пикчу забыл.
#456 #615099
>>615097
Стыдно - это пошёл ты нахуй. Перемещения медленные. Пока не докажешь обратное - ты пидор и я ебу тебя в жопу.
#457 #615100
>>615099

>перемещения медленные


>два присваивания указателей

#458 #615106
>>615100
у него там размеры матриц в компайлтайме задаются
#459 #615108
>>615094
Вот именно, всё что ниже - хуйня на уровне статистической погрешности, и этим должен заниматься компилятор.
#460 #615109
>>615106
Тогда преимущество достигается только для стековых объектов, а их перемещать нехуй. Не могу себе представить ситуацию, в которой быстрее превратить матрицу в единичную, чем удалить старую с тривиальным-то деструктором и создать единичную уже новую.
#461 #615110
>>615054
Там как раз есть блокировка для всех методов, это мьютекс на вывод в консольку.
И почему пул не используется?

> pool.doJob (std::bind (calculate, el));

#462 #615117
>>615110
Да, я не заметил просто. Энивей, как-то странно у тебя все построено, у тебя, по сути, главный поток является диспетчером для всего, и это будет узким местом для больших данных. Обычно делают метод, который дергает очередь, создают пул потоков, которые все инициализированы сразу этим методом с параметром-очередью, а они уже независимо дергают очередь и смотрят, есть ли там что-то. Короче говоря, примерно как у тебя для чтения сделать и для вывода.
#463 #615143
>>615090
RVO

// Мимокрок
#464 #615242
Поясните за реактивное программирование. С приходом эры квантовых вычислений я подумал начать дрочить эту тему. Но стоит ли?
#465 #615357
Правда ли, что в Qt и Boost похожие API для мультитрединга? Разобрашись с этим в STL, я по идее смогу работать комфортно и с первым, и со вторым? иногда ссылаясь в референс конечно
#466 #615568
>>615242
Я не особо обмазывался этой хуйней, но мне кажется, что это актуально только для узкоспециализированной хуйни вроде электросхем и тех же квантовых вычислений. С нормальной пекарней ты всегда получишь замедление, ибо много лишнего будет пересчитываться при каждом изменении.
#467 #615575
>>615357
В boost треды практически идентичны стандартным. QThread же сильно отличается от них по интерфейсу (бустовые и стандартные минималистичны, а он набит овер 20 методами), плюс сильно заточен под реалии куте (сигналы и слоты). Я бы не использовал QThread вне приложений, которые уже насквозь пропитаны Qt. Такие дела.
84 Кб, 600x600
sage #469 #615624
>>615600
Вот такой.
42 Кб, 700x573
#470 #615626
#471 #615629
#472 #615637
>>612857
У Касперски есть неплохая книжка, старенькая довольно, но основы разжеваны годно. Гугли "Касперски, Рокко - Искусство дизассемблирования". Если вообще не шаришь в ассемблере, наверни какого-нибудь Юрова перед ней.
#473 #615639
>>615637

>Если вообще не шаришь в ассемблере


Что подразумевается под этим? Я без референса понимаю каждую инструкцию, привык к branch delay slot'ам, но мои глаза не видят паттернов на лету. Из-за этого я очень медленно читаю код.
87 Кб, 706x913
#474 #615641
>>615639
Тогда можно сразу читать. Там как раз почти половина книги посвящена детектированию конструкций, которые генерятся высокоуровневыми языками.
#475 #615647
Правильно я понимаю, что для того, чтоб выполнился код, следующий за jr ra, где-то обязательно должен быть branch или jump на него?
11 Кб, 540x210
#476 #615648
>>615647
Отклеилось.
104 Кб, 800x600
#477 #615657
#478 #615697
>>615575
Cпасибо, братишка.
77 Кб, 785x678
#479 #615701
58 Кб, 594x429
#480 #615703
#481 #615705
>>615647
Ну, оно безусловно прыгнет на адрес из регистра. В регистре может быть что угодно, в.т.ч. следующая после jr команда.
#482 #615716
>>615705
Ну, там какой-то очень далёкий адрес, а значит, видимо, откуда-то должен быть переход на область, следующую после jr.
#483 #615718
>>615716
А ты уверен, что этот адрес там безусловно? Возможно, при другой истории выполнения там будет он. Ну или просто это мусор, оставшийся после изменения кода. Маловероятно, что туда идет переход откуда-то еще, хотя чем черт не шутит.
#484 #615721
>>615718

>Маловероятно, что туда идет переход откуда-то еще


Как мне это определить? Выгружал код в ida, она автоматом никаких xref для этого участка не выдала, но я и не весь файл дизасмил.

Суть в том, что мне надо отследить этапа расчёта переменной. Но в процессе расчёта она хранится в разных местах на разных этапах. Вот я и пытаюсь понять, как я пришел в этот кусок кода.
#485 #615728
>>615721
А поставить брейкпоинт в отладчике с последующим запуском?
#486 #615739
>>615728
Брейкпоинт на что? Вот смотри.
Я поставил брейкпоинт на запись значения по заданному адресу. Таким образом я попал в кусок кода, где это значения считывается из другого адреса перед тем как попасть в конечный. Я разобрал этот кусок, а потом поставил брейкпоинт на запись по тому адресу, откуда считалась переменная, чтоб понять, как расчитывалось её значение. Попал в следующий кусок кода, где происходит часть расчёта значения, а потом запись. Я разбирал код построчно, поднимаясь вверх, пока не дошёл до этого jr. Теперь я не знаю, откуда я попал в этот кусок кода.
27 Кб, 674x387
#487 #615740
>>615739
Всё, я слепой уебан, извините.

Там условные бранчи прям перед джампом.
#488 #615773
>>615740
Нет, я снова слепой мудак, это не то, что я искал. Где лучше задавать свои вопросы, касающиеся этого? Сомневаюсь, что с++ тред для этого подходит.
#489 #615804
>>615773
По-моему, тут где-то был неофициальный ассемблерный тред. Хотя, возможно, он уже утонул.
111 Кб, 1439x364
#490 #615822
Помогите неофиту.
Хотел посмотреть, как работает данная дичь без std::ref то бишь убедиться, что она действительно просто создает локальную копию передаваемого объекта но фишка в том, что это говно вообще не скомпилилось, выдавая доселе невиданные ошибки.
ЧЯДНТ?
#491 #615829
>>615822
как тема называется, братюнь
#492 #615839
>>615822

> -std=c++1y


Что за компилятор? Похоже что у тебя чего-то нет, вроде ругается на result_of<T>::type а его только в с++14 добавили. Для тредов отдельно подключал библиотеку? Может библиотека для 14 компилятора, а твой компилятор старее.
#493 #615858
>>615829
Вроде это https://github.com/morhetz/gruvbox

мимокрок
#494 #615860
>>615858
Она и есть.
>>615822-кум.
#495 #615869
>>615839
14 же, не суть. В данном случае 11 с головой.

>для тредов подключал


На пике же видно, -pthread, треды у меня нормально работают, не первая программа.
Тут с передачей по ссылке проблемы, если ее убрать - тогда все будет окич
Но суть-то в эксперименте, конструктор треда пренебрегает передачей по ссылке и тупо копирует объект. В данном случае нужно использовать raw ptr или std::ref. К сожалению, не удалось мне воспроизвести передачу по ссылке. Впрочем, хуй с ней.
#496 #615878
>>615839
c++0x = c++11
c++1y = c++14
c++1z = c++17
#497 #615881
>>615878
А что будит когда версия после 17ого выйдет?
#498 #615883
Аноны , что я делаю не так при нахождении среднего арифметического всех элементов бинарного дерева поиска http://pastebin.com/ASMx7YXh
#499 #615884
#500 #615889
Поздравляю. У нас бамплимит. Где ОП?
#501 #615895
>>615881
с++1ё
#502 #615898
>>615883
Пишешь вырвиглазный код, в котором - прости уж великодушно - не хочется разбираться.
#503 #615899
>>615881
20ый
#504 #615901
>>615898
Ну извини , ну сразу же не становятся гуру .
#505 #615908
>>615889
Я здесь. Все будет в течение получаса.
#507 #616535
Как удалить пробелы в начале файла, не переписывая его ? Т.е. в файле строка " abcde" заменить на "abcde", без буферов и тд.
Тред утонул или удален.
Это копия, сохраненная 25 января 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски