Это копия, сохраненная 11 июля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
На фирме "GalleySollution"
Однажды случился обвал...
На баги, фреймворки сырые
Мой верный товарищ упал...
Скажи мне, Галера Крутая,
Ужель это смерть настает?
Я молод, а где-то работа
Меня в Калифорнии ждет.
Но вышел приказ из конторы --
На помощь спускаться не сметь!
Сказал управляющий людям
Нет дела до этого мне.
За смерть С++-ОПа-поэта
Я выдам полтинник жене...
Старший брат: >>749121 (OP)
Предыдущий: >>759279 (OP)
TL;DR
Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.
Памятка ньюфагу
- Вопросы по синтаксису идут на хуй
- Лабы идут на хуй
- "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
- Все идут на хуй
- Хейтер сосет члены на пару со своей мамашей
Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.
FAQ
Мотивация
Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
- Скорость
C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором. - Мощь
C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментовпростреливания ногирешения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искусственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства. - Популярность
C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
-
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Автор(ы) Название Год Ссылка Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u
Другие обучающие материалы
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три
Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:
- Годный блог, в котором все просто и понятно тян не нужны кококок борщ
- Блог с хорошо расписанными фичами новых стандартов
- Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
- Блог Герба Саттера (на ангельском)
- Блог Скотта Мейерса (на ангельском)
- Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
- Куча других блогов (на ангельском)
- Большой FAQ по C++ (на ангельском)
- Видео с CppCon (на ангельском)
Софт и библиотеки
Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
Платформа | Название | Описание | Ссылка |
---|---|---|---|
Windows | Microsoft™ Visual Studio® | Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда | https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия) |
Все | CodeLite | Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM | http://codelite.org/, "sudo aptitude install codelite codelite-plugins" для установки под *nix |
Все | CLion | IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует | https://www.jetbrains.com/clion |
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Т.е. есть 3 int'a, и в одном while надо все 3 std::cin >> сделать.
Лол. Неправильно прочитал что тебе надо.
Можно как-то во время дебага смотреть значения переменных, указателей, членов классов кароче говоря?
Чёт не могу совладать с интерфейсом кутэ криэйтора.
Откуда вы такие лезете только. С поинтерами и классами он смог совладать, а с гуглом и настройкой кутэ нет.
Что за наплыв джавадаунов. Ты как потом эту память будешь освобождать? Выделяй просто на стеке. Foo bar;
Она тогда сама удалится, а мне потом надо ее использовать.
Ок, а если я не сохраняю объект, а сразу передаю его в конструктор?
Foo foo = new Bar(*(new Baz()))
Контексты разные же. Например, ты не можешь проверить существование метода с определенной сигнатурой в типе, который имеет заданное выражение, пользуясь одним только auto.
Есть структура. В ней декларированы только члены этой структуры. То-есть, нету ни конструкторов, ни деструкторов.
Сейчас я получаю segfault в деструкторе этой структуры(дефолтный).
Почему такое происходит/как чинить?
Там много кода.
Могу сказать, что динамически там ничего не создаётся.
>>764930
Ты имеешь ввиду, что там может быть где-нибудь один и тот же указатель/массив или что?
Хейтеры же.
Да и он нихуя не правильный изза > вместо >>
Затем, чтобы в шаблонах можно было одинаковый код писать, не боясь, что на инте все сломается.
Затем что оператор приведения типа.
Система Ubuntu 14.04
IDE Eclipse.
Проект внезапно C++.
Каким образом в этой IDE подключать библиотеки к проекту. Какое расширение у библиотеки должно быть .a или .so ?
Кроме подключения хедеров и библиотеки в свойствах проекта нужно ли что-то ещё?
В этой библиотеке определено пространство имен. Когда вызываешь из контекста при наборе кода, IDE его видит, а при компиляции нет.
Сейчас появилась необходимость написать код, который работает с небольшими POST и GET запросами сайта обновление страницы, получение каких то числовых данных - попробовал погуглить, но по запросу "POST GET запросы C++" нихуяшеньки нет, либо речь идёт о каких то библиотеках.
Раньше писал подобное, но на Delphi.
Собственно, ткните носом, что читать по этому вопросу.
На qt наверняка есть. А вообще тебе в пхп тред, но оттуда мало кто возвращался
>>765178
Но я же в тред по крестам написал, значит мне не нужен питон.
>>765196
А с помощью встроенных библиотек никак?
Или curl просто устанавливаешь и через инклюды подключаешь потом?
>>765217
Vibe.d
google:// простой веб сервер на c++
>он по русски почти никак не читает.
Передай ему, что мол нехер выпендриваться, патриот конченный.
>Короче все, я понял. По-любому надо поинтеры юзать.
Выучи сишку сначала, потом в кресты лезь. Кресты не шарп, или откуда ты там прикатился.
>Или curl просто устанавливаешь
Не надо устанавливать, просто кидаешь в ту же папку, там в гайде все описано. Алсо, если у тебя VS, то через NuGet от в один клик подключается.
Страус неплох, но его нужно читать вместе со стандартом, ибо весьма много неточностей, недомолвок и даже ошибок мелких, даже в 4 издании. Не говоря уже о ранних.
>ибо весьма много неточностей, недомолвок и даже ошибок мелких
СТРАУСА УНИЖАЕТ СОБСТВЕННЫЙ ЯЗЫК!!1 А ЧЕГО ДОБИЛСЯ ТЫ?
>Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь,
Ответил на всё с одной ошибкой в красном вопросе ЧЯДНТ?
Ты, видимо, не понял что я написал, болезный. Я сказал, что из 69 вопросов на cppquiz допустил только одну ошибку. Что мне дальше читать? :D
Лалка ето ти. Их не более 200 и я ответил на все практически.
Написал этому дауну недавно на почту письмо с обнаруженными опечатками в 4 издании. Даже спасибо не написал, пидор.
А теперь читаю документацию к одной либе. Каждый день как пытка. Иногда получается прочитать не более одной-двух страниц настолько уебански все написано. Верстки, системы, оглавления нихуя нет. Видно, что писал тот же мудель, что и саму либу. Косноязычный аутист. Сука, ненавижу.
У меня такая же хуйня с опечатками в ISO'шном FAQ недавно была. Но и похуй, главное, что исправили быстро.
Код:
int foo(int a){
return a?1:2;
}
const int c2=foo(0);
foo не constexpr, тогда почему это работает?
Как это понивать?
При чём тут constexpr?
У тебя и c2 не constexpr же, просто инициализируется в рантайме неконстантным выражением.
Зачем нагружать и без того сложный язык этой хуйней, если я и сам могу написать что то типа
void assert(bool a){
if(!a){
exit(1);
}
}
Чтобы в больших проектах не городить дохуя своих assertов.
Именно поэтому в конторе должны быть надсмотрщики над программистишками. Чтобы пиздить их беспощадно и постоянно.
Фирме нужны технические писатели, корректоры, редакторы, верстальщики, редакторы стайл-гайдов и дизайнеры HCI. Только так софт начнет решать задачи людей, а не программистишек.
Дай программистишке волю он насрет кучу кода и скажет: "Документацию мне писать лень, ебитесь сами. Если че непонятное — то прямо в коде посмотрите там. А я пошел писать новый говнокод."
Ты не понимаешь сути C++. Он не призван сделать жизнь программиста легче или лучше. Он призван наполнить стандарт всем говном, которое только придумали. Это легко наблюдать по плавному переносу всего boost-говна прямо в стандарт. Сделать так, чтобы проекты разрабатывались годами и требовали для своего поддержания орды высокооплачиваемых макак, которые постоянно лепят ассерты и ебутся с отладчиком. Если софт будет писать легко, он не будет не иметь проблем с освобождением памяти — то кто в здравом уме будет платить кодерам их сегодняшние зарплаты? С++ идеальный после Java язык, для развода инвестора на бабки.
assert не так прост. Это макрос, он отключается в релизной сборке, когда N_DEBUG не определен.
#define NAHOOI_ASSERT
void assert(bool a){
#ifdef NAHOOI_ASSERT
if(!a){
exit(1);
#endif
}
}
Тоже так могу.
Прихожу к решению, что он нахуй не нужен
То есть просто защита от возможных отрицательных индексов?
А почему с auto выведется int? Ведь size() возвращает size_type.
Предусловие. Нельзя работать если скажем:
assert(boost::algorithm::all_of(values, less_then(threshold)));
У индекса вектора тип - size_t, а не int. Технически, это неверно.
По умолчанию тип целых чисел - int, поэтому auto ix = 0 выдаст int. auto выводит тип из правой части.
ты не можешь написать auto(vec.size_type())
Нет, дружочек. Для assert еще гарантируется, что в случае ошибки диагностика будет содержать текст строки, которую ты вторым аргументом укажешь, а также номер строки с ошибкой, имя объемлющей функции и единицы трансляции. И вызывает оно не exit, а abort, это существенно в плане вызова деструкторов.
Не совсем понял, в чем суть кода, но decltype и auto используются для того, чтобы меньше приходилось менять код в нескольких точках одновременно и уменьшить касты между типами везде, где только можно.
Завместо деклтайпа, можно написать: auto i = 0u;
Да и вообще, лучше завести для себя такое правило: если переменная всегда будет равна нулю или больше нуля, то использовать size_t
И у тебя будет unsigned вместо size_t. Это разные типы, они могут иметь разный размер, если что.
для безопасности. Выполняется, но что-то в коде не то.
https://ideone.com/pSk805
Тут виртуальный деструктор нужен? Помогите пожалуйста.
Не знаю, но я слышал что для безопасности надо чтобы в каждом классе деструктор был определен, это правда?
Создай string из любого другого типа с помощью stringstream.
Или просто загугли int to string.
>stringstream
Сложно.
>загугли int to string
Говорит to_string есть, но с++ почему-то его не находит.
Но я написал свою. Спасибо.
А вообще это какая-то неудобная штука opencv. Как будто дли си писали. Нет бы сделать эту функцию методом класса изображение. Всё было бы в разы удобнее. Почему так не сделали?
>но с++ почему-то его не находит.
Может потому что ты проебался и не подключил <string>/забыл про неймспейс?
>является
Нихуя у тебя не является, у классов по умолчанию приватное наследование, ты реализацию только унаследовал. Пиши Classic : public Cd { ...
Точно. Не заметил эту деталь. Благодарю за помощь и потраченное время.
делаю децентрализованный игорь на андройд ndk.
вроде графика и физика изи но сетка это вообще пиздец. но это не важно Вопрос по STUN.
Я понял что мне нужен stun уже успех
но http://ideone.com/knBvgP почему не рабит?
гайды за 2 дня гугловки не нашел и действовал в идеоне по логике. На локал хосте рандомный порт открывется сокетом и листится. но ответки с Stun не приходит. Q3 работает. поэтому думаю проблемы в NAT нет. В чем косяк?
порт рандомный листится. работает. может я не знаю чего о STUN запросах?! выручайте аноны
Как подключить библиотеку к CodeLite/CodeBlocks чтобы он ее видел как <Libname>?
Ну будьте же вы людьми, хотет автокомплит и прочие преслести промышленного программирования.
>преслести промышленного программирования
Так нахуй брать эти школоподелки?
Серьезные люди в продакшене юзают:
- MS VS
- Eclipse CDT
- XCode
- Qt Creator
- CLion
- Vim
Всем, кто советует иное, можешь плевать в лицо без раздумий.
Какой-то фанбой Codelite его пили, а всем остальным лень отправлять pull-реквест в репу шапки
Eclipse CDT
Qt Creator
Vim
они вроде все на vim нет? просто обвесы ide в qt заточены на qt а в eclipce на всё, я прав?
Нет, конечно. Что за бред? vim - это отдельный консольный редактор, не связанный ни с одной другой IDE.
>766270
>вроде текстовые редакторы в qtcreator и eclipce это vim и открою тайну vim бывает гуёвым
Лалка, они поддерживают режим ввода текста, как в vim и не больше. Код из vim они не используют. Особенно Eclipse, которая написана на Java.
А называть gui версию vim настоящим gui текстовым редактором - это вообще охуеть.
1. Подними stun на виртуалке и потести в виртуальной сети.
2. Почитай доку к сокетам
3. Почитай подробнее у Таненбаума про протоколы, с которыми собрался работать.
Вот это просто уровень Илюши, так деанониться.
if (x1, x2, y1, y2 > 7)
Это будет работать?
inb4: Иди на хуй
сидеть под 15 визуалкой с вимовым анальным расширением. полёт заебись. нахуй мне ваши ответы не нужны
Тонко.
Не хватает только надписи "типичный обитатель кретотреда" на каждой фотке.
Ну разве что с намеком на лабодаунов. Не надо хороших крестанов так шкварить.
Спасибо Абу, за удобную капчу.
иногда
И что мы им напишем? Задал глупый вопрос в тематике? Надо просто каждый тред напоминать кто тут сидит и что делать с лабадаунами.
Грег.жпг
ОП-не-стихоеб.
Если бы он тебе вставил меч в жопу или хотя бы киберунизил, ты бы до сих пор следил за ним.
Я на линуксе пользуюсь консольными командами с г++, а на шинде, я смотрю, только 20 гигобайтный вижуал?
Можешь cygwin накатить, если тебе нужен не только компилятор, но и более-менее POSIX-окружение.
> Там старая версия что ли?
Пиздец. Читать не умеют — уже к компилятору тянутся.
https://sourceforge.net/p/mingw-w64/wiki2/History/
И это C++-тред...
Ты так или иначе всё равно будешь работать с плюсами. Qt нужен для написания гуи, но логика какая-то же тоже должна быть. Сначала набей руку в плюсах, а потом немножко почитай Шлее или Саммерфилда по Qt и кури доки по Qt, они у них хорошо написаны.
В плюсах вкатиться куда-либо невозможно, не зная сами плюсы. Для Qt надо очень хорошо владеть адванцед понятиями, типа pointer ownership, построением хорошей архитектуры и тд.
Why not both? std::thread дает доступ к хэндлу оси, можно использовать его со своими классами.
Что же в КТ такого, что там нужно интенсивное использование pointer ownership?
std::thread, раз ты не знаешь, как тебе пригодятся нативные средства.
надо это понимать, иначе ты будешь память выливать на каждый чих
std::thread, если нужно большее - boost::thread
class A
{
int arr[100];
};
и вызову
A * instance = new A;
Массив arr у меня будет в куче?
вроде по доку сокет сделал. он листит rnd порт на 0.0.0.0
>>7671>>767213
Ясен хуй
>Подними stun на виртуалке и потести в виртуальной сети.
мне нужно обойти nat, как мне поможет виртуалка? на ней тестовый nat собрать?
>>766343
я делаю реализацию peer-to-peer на цпп и там надо на листинг сокеты ставить в тредики ченить собирать... а какое отношение лабы имеют к цпп треду?
Пытался вот этот http://sourceforge.net/projects/pdcurses/files/latest/download?source=files
собрать. Ниасилил, компилятор пишет "Точка входа в процедуру libintl_setlocale не найдена в библиотеке DLL: (дальше идет путь к компилятору)".
Ну сишка это облегченные кресты, так что можешь начать с нее, да.
понял вас.. Таненбаум и собрать nat. и stun сервак. буду работать
нет
c::foo(int const const a, const std::vector<const int const const> const * const b, const const const const const const c) const ? const : const
Не ебу что делают эти консты потому как никогда их не использовал.
Ну если ты уверен что они тебе нужны, то, боюсь, ничего.
class TvoyaMamka;
using pTvoyaMamka = * TvoyaMamka;
using cpTvoyaMamka = const pTvoyaMamka;
Ну ты понел.
точняк спс
А в студии он через .h нормально добавляется?
Я в mingw пишу и как туда добавить .lib понятия не имею, весь гугол перерыл уже.
Если просто закинуть .lib и .dll в папку с проектом и добавить в код заголовочный файл, ничего не работает.
Вроде-бы просто так работает. И если ты собираешь его в .lib то никакого .dll нет.
Тебе нужно только кинуть curses.h и pdcurses.lib в папку проекта, добавить pdcurses.lib в зависимости твоего проекта и #include "curses.h", тащемта всё.
Выучи си , а кресты не учи
>Я в mingw пишу и как туда добавить .lib понятия не имею
Никак, у mingw .a вместо .lib. Или собирай либы сам под mingw, или ищи уже собранные в дистрах линукса.
как там 0.5% среди десктопов? вас не видно
Сколько человек из желающих ВКАТИТЬСЯ в плюсы и/или сишку реально вкатилось хоть на уровень джуна?
Судя по борде, то у каждого второго планы изучать сие.
поищи настройки линкера и добавь туда. либо полный путь, либо добавь путь в настройки проекта/солюшна и тогда только имя либы линкеру
Я в феврале первый раз зашел в этот тред.
В апреле уже нашел работу. Но на плюсах для себя пишу уже давно.
>Каждая задача выполняется на отдельном потоке.
Неправильно выразился. Каждый поток выполняет одну задачу. Пул потоков короче.
Хуй там. На миддла надо больше пахать. За пару лет только макакой станешь.
> терять зря время потока
Время ты не теряешь. Система поставит на выполнение другой поток вместо остановленного и все. Ебаться есть смысл только если количество остановленных задач может приближаться к размеру пула потоков - тоесть проблема в том что могут кончиться потоки в пуле. Если я правильно тебя понял (каждая остановленая задача приведет к созданию нового потока) то твое решение так себе. Проще увеличить размер пула.
>Время ты не теряешь.
Ну как не теряю. Изначально я создаю n потоков по количеству ядер (допустим 4). Нагружаю все 4 ядра. В одном вызываю sleep(3) нагрузка на CPU - 75%, пока поток спит.
> Проще увеличить размер пула.
Это я и хочу сделать, но в риалтайме. Создал новый поток, а старый после завершения освободил. Одновременно рабочих у меня будет столько, сколько у цп аппаратных потоков.
Вот этот >>767400 анон прав, видимо, подружить mingw и .lib не получится. Там в папке lib все сплошь с расширением ".а".
>>767517
Да знаю я что это компилятор.
Есть еще и одноименная IDE - MinGW developer studio.
Имелось ввиду что у тебя есть некоторое количество заранее созданых потоков (пул). Ты не создаешь и освобождаешь потоки (это тяжелая операция), а переиспользуешь старые. Когда задача отработает поток не уничтожается, а возвращается в пул. Когда нужно запустить задачу то из пула берется уже готовый свободный поток. Когда нужно приостановить задачу ее поток останавливается и на выполнение отдается другая задача. Когда можно продолжить то вместо запуска новой задачи снимается с паузы старая задача.
(Автор этого поста был предупрежден.)
Ахахахахахах, блять.
Хочется поставить себе долгосрочную задачу с конкретным результатом, поебаться с разными сложностями и алгоритмами как в детстве, когда решал задачки на тимусе.
Если тебе один раз нужно вызвать std::какая-то_срань, то вовсе необязательно using.
Берешь sfml и пилишь, всё необходимое уже за тебя зделано.
Ты каждый день тратишь кучу денег на деликатесы, девушек и друзей. С двумя последними ты сутками зависаешь в клубе и пьянствуешь неделями. От скуки ты скупаешь машины и квартиры. Пора положить конец такой жизни!
Удали все контакты из телефона, продай всё, кроме самого необходимого и обратись в веру. Благодаря вере ты сможешь искупить свои грехи и возможно поможешь обратиться другим.
Начни прямо сейчас!
Можно и то и то. Если не смущает юнити (например фактический вендорлок на виндоуз, хотя с этим пытаются бороться, может даже поборют) то лучше в юнити пойти - ты там быстрее к результату сможешь прийти. А так-то и на плюсах можно, если есть желание именно ими заниматься.
>>767799
Глобальное пространство имен раздувается кучей идентификаторов которые все не упомнишь - появляется вероятность конфликтов.
Вот код: http://pastebin.com/fdcNPYb9
Почему-то иногда в получающемся массиве представлены не все числа по разу, а дважды повторяется 0. Помогите отловать ошибку.
std::vector<int> v(N);
for(size_t i = 0; i!=v.size(); ++i)
v = i;
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
constexpr ненужное гавно, очень редко используемое.
Вот изза таких вещей как constexpr, prvalue и так далее изучение новых крестов превращается в ад
почитай Мейерса, нахуй он книжку писал, если ты не читаешь, бля?
ну забыл учесть эту парашу, ну и что? Один хуй, что vim'ом, что emacs'ом мало кто пользуется.
Зависит от того, на чем преимущественно ты хочешь писать в итоге. Вкатываясь в кресты после няшной, довольно трудно избавиться от навязчивого чувства, что 80% фич крестов — ненужное (и даже вредное) говно. Так что если твоя цель кресты, то лучше с них сразу и начать, не набирая вредных (для крестопрограммера) привычек из сишечки.
>навязчивого чувства, что 80% фич крестов — ненужное (и даже вредное) говно
Охуительные истории. Надо быть совсем упоротым утенком, чтобы так думать.
"Ух епт, теперь не надо высчитывать размер для маллока? Говно, нинужно".
"Ух епт, теперь не нужно ебаться с макросами для обобщенных функций и типов? А нее, говно, нинужно".
"Ух епт, теперь не нужно каждый раз городить vptr вручную? А нее, говно. Не жили хорошо, неча начинать".
Вообще везде пишут, что кресты надо очень долго учить, и лучше все-таки начинать с С. Ты уверен в своих словах, анон?
Ну иди пойди уже поучи что-нибудь. Если ты ньюфаг, что 80% инфы для тебя будет одинаково новой, что в учебнике по си, что в учебнике по крестам.
Есть сущность скилла (умения). У скиллов есть эффекты, некоторые со сложной логикой. Метод "use" получает все необходимые данные (id, player, world).
Где мне описывать логику эффектов? Делать нагромождение if (id == 1) ... else if (id == 2) ... ?
Finite-state machine
Охуел что ли. Если ты не понимаешь, для чего нужна фича, то это не значит, что она не нужна.
Если сложна, то иди учи бейсик.
>>768153
const может быть просто фиксацией любого значения, типа "Вот это пользователь не должен менять".
constexpr показывает, что выражение может быть рассчитано во время compile-time, если ему переданы constexpr. В ином случае выражение будет рассчитано в рантайме.
const, например, нельзя использовать, как параметр шаблона, а constexpr можно.
> Делать нагромождение if (id == 1) ... else if (id == 2) ...
Когда ты сталкиваешься с ситуацией "нужно сделать нагромождение ифов" это верный признак что можно применить ООП. Это конечно не значит что его нужно пименять. В конечном счете нагромождение ифов может оказаться более простым и понятным вариантом.
MinGW w64 отлично линкует x32 *.lib
Вот даже микропруфы: https://sourceforge.net/p/mingw-w64/wiki2/Answer 64 bit MSVC-generated x64 .lib/
Интересно, что на работе у меня без задней мысли линкуются .lib x64. При этом почти никаких проблем. Но там используется чистый Си.
А у нас бывает runtime-компиляция? Она-то бывает, конечно, но смысл constexpr это никак не меняет.
А что с ОПом то случилось?
Как там в 2000? llvm уже 16 лет пилят, хотя JIT для С++ не так давно делать начали. Да и то, всем похуй на него.
LLVM довели до юзабельного состояния только 5-6 лет назад (как начали спонсировать). До этого легче было писать самому кодогенерацию.
>В ином случае выражение будет рассчитано в рантайме.
>const, например, нельзя использовать, как параметр шаблона, а constexpr можно
Ты путаешь понятия "constexpr" и "constant expression". Второе может храниться и в const (например, если ты пишешь const int x = 1) и прекрасно использоваться для размеров массива и параметров шаблона, ибо тоже рассчитывается в compile-time. Но не любой const хранит constant expression, поэтому ввели constexpr, который это форсирует.
Ничего не путаю, но да, с const я промахнулся.
На тебе покушать про рантайм с constexpr-функциями:
http://ideone.com/STL0Xm
У constexpr для функций вообще другая семантика же. Там даже константность не гарантируется для методов.
constexpr-данные ~ гарантированно константное выражение литерального типа
constexpr-функция ~ функция над литеральными типами, которая вычислится в константное выражение при условии, что аргументы будут константными выражениями.
Хотя ты это уже написал, я в глаза долблюсь.
Хелпаните. Вот простейший расчет времени, вот по идеи он должен мне больше 24 часов не выводить.
Подскажите гуру чему деление часов с остатком работает через жопу?
cin >> sek;
day = sek / (86400);
hour = (sek % (60 60)) / 24; //здесь надо //sek /3600
min = (sek % (60 60))/60;
SEKONDS = sek % 60;
> он должен
Кому должен? Ты берешь остаток от деления на 3600, что может оставлять от 0 до 3599 и делишь на 24. Что дает результат от 0 до 149.
Чтобы ОС написать нужно знать только с++ и ассемблер?
Но я могу просто взять 16 битник с хабра за основу и просто глянуть в код. Или ядро от пингвина посмотреть.
Ну, а смысл пердолится? Я имею ввиду, если глядя на ядро системы ты быстрее поймешь что к чему?
Хотя, не напрягайся, понятно что ты очередной шутник про Попова.
смотри на Minix. специально для обучения создан. с него начинался Linux
>Я имею ввиду, если глядя на ядро системы ты быстрее поймешь что к чему?
Ха-ха-ха, блядь. Быстрее всего ты поймешь, если будешь читать умные книжки и писать свою недосистему ради ознакомления с основными тонкостями.
Иди почитай, сразу поймешь что к чему https://github.com/torvalds/linux/blob/master/mm/memory.c
Категорически протестую. Эти теоретики со своими концепциями придумали Minix, MULTICS и стек OSI (да блджад, это не просто "модель OSI", которую в универчиках изучают, ни сделали работающую имплементацию - но работает TCP-IP вместо их красивых построений).
Практики сделали UNIX, TCP-IP и оно работает.
Я надеюсь ты так тралишь. Танненбаум описывает работу с памятью на 90 страницах, а дока к freebsd на двух.
Seems legit.
БЛять ну ты и пидорас! Ура получилось, не зря я ебался час с с лишним.
http://ideone.com/SlrlDR
Рапортую, посоны.
Ну ты понел, добра тебе анон. Вот что я хотел сказать.
>да блджад, это не просто "модель OSI", которую в универчиках изучают, ни сделали работающую имплементацию - но работает TCP-IP вместо их красивых построений
Они-то теоретики, а ты - самый настоящий кукаретик. В OSI только TCP-IP реализованы, ну охуеть теперь.
Я же сказал книжку а не огрызки с энторнетов.
Работе с памятью посвящены страницы со 117 по 190
>В OSI только TCP-IP реализованы
TCP, IP и примкнувший к ним ICMP реализованы сами по себе, OSI-модель вместе с нихуя не работащим OSI-стеком от теоретиков к ним не относится НИКАК.
Используй асинки, а не потоки.
Почти любая ОС лучше чем Unix
Not organized to be able to just throw out a reference and many disappeared over time as old web faded. It's more something you see relative to other OS's than an absolute. I really need to try to integrate all the examples sometime. Here's a few, esp from past, that give you an idea.
Historical look at quite a few http://brinch-hansen.net/papers/2001b.pdf
Note: A number were concurrency safe, had a nucleus that preserved consistency, or were organized in layers that could be tested independently. UNIX's was actually a watered down MULTIC's & he's harsh on it there. I suggest you google it too.
Burrough's B5000 Architecture (1961-) http://www.smecc.org/The Architecture of the Burr...
Note: Written in ALGOL variant, protected stack, bounds checks, type-checked procedure calls dynamically, isolation of processes, froze rogue ones w/ restart allowed if feasible, and sharing components. Forward thinking.
IBM System/38 (became AS/400) https://homes.cs.washington.edu/~levy/capabook/Chapter8.pdf
Note: Capability architecture at HW level. Used intermediate code for future-proofing. OS mostly in high-level language. Integrated database functionality for OS & apps. Many companies I worked for had them and nobody can remember them getting repaired. :)
Oberon System http://www.projectoberon.com/ http://www.cfbsoftware.com/modula2/Lilith.pdf
Note: Brilliance started in Lilith where two people in two years built HW, OS, and tooling with performance, safety, and consistency. Designed ideal assembly, safe system language (Modula-2), compiler, OS, and tied it all together. Kept it up as it evolved into Oberon, Active Oberon, etc. Now have a RISC processor ideal for it. Hansen did similar on very PDP-11 UNIX was invented on with Edison system, which had safety & Wirth-like simplicity.
OpenVMS https://en.wikipedia.org/wiki/OpenVMS
Note: Individual systems with good security architecture & reliability. Clustering released in 80's with up to 90 nodes at hundreds of miles w/ uptime up to 17 years. Rolling upgrades, fault-tolerance, versioned filesystem using "records," integrated DB, clear commands, consistent design, and great cross-language support since all had to support calling convention and stuff. Used in mainframe-style apps, UNIX-style, real-time, and so on. Declined, pulled off market, and recently re-released.
Genera LISP environment http://www.symbolics-dks.com/Genera-why-1.htm
Note: LISP was easy to parse, had REPL, supported all paradigms, macro's let you customize it, memory-safe, incremental compilation of functions, and even update apps while running. Genera was a machine/OS written in LISP specifically for hackers with lots of advanced functionality. Today's systems still can't replicate the flow and holistic experience of that. Wish they could, with or without LISP itself.
BeOS Multimedia Desktop http://birdhouse.org/beos/byte/29-10000ft/ https://www.youtube.com/watch?v=BsVydyC8ZGQ
Note: Article lists plenty of benefits that I didn't have with alternatives for long time and still barely do. Mainly due to great concurrency model and primitives (eg "benaphors"). Skip ahead to 16:10 to be amazed at what load it handled on older hardware. Haiku is an OSS project to try to re-create it.
EROS http://www.eros-os.org/papers/IEEE-Software-Jan-2002.pdf
Note: Capability-secure OS that redid things like networking stacks and GUI for more trustworthyness. It was fast. Also had persistence where a failure could only loose so much of your running state. MINIX 3 and Genode-OS continue the microkernel tradition in a state where you can actually use them today. MINIX 3 has self-healing capabilities. QNX was first to pull it off with POSIX/UNIX compatibility, hard real-time, and great performance. INTEGRITY RTOS bulletproofs the architecture further with good design.
SPIN OS http://www-spin.cs.washington.edu/
Note: Coded OS in safe Modula-3 language with additions for better concurrency and type-safe linking. Could isolate apps in user-mode then link performance-critical stuff directly into the kernel with language & type system adding safety. Like Wirth & Hansen, eliminates all the abstraction gaps & inconsistency in various layers on top of that. JX OS http://www4.cs.fau.de/Projects/JX/publications/jx-sec.pdf
Note: Builds on language-oriented approach. Puts drivers and trusted components in Java VM for safety. Microkernel outside it. Internal architecture builds security kernel/model on top of integrity model. Already doing well in tests. Open-source. High tech answer is probably Duffy's articles on Microsoft Midori.
So, there's a summary of OS architectures that did vastly better than UNIX in all kinds of ways. They range from 1961 mainframes to 1970-80's minicomputers to 1990's-2000's desktops. In many cases, aspects of their design could've been ported with effort but just weren't. UNIX retained unsafe language, root, setuid, discretionary controls, heavyweight components (apps + pipes), no robustness throughout, GUI issues and so on. Endless problems many others lacked by design.
Почти любая ОС лучше чем Unix
Not organized to be able to just throw out a reference and many disappeared over time as old web faded. It's more something you see relative to other OS's than an absolute. I really need to try to integrate all the examples sometime. Here's a few, esp from past, that give you an idea.
Historical look at quite a few http://brinch-hansen.net/papers/2001b.pdf
Note: A number were concurrency safe, had a nucleus that preserved consistency, or were organized in layers that could be tested independently. UNIX's was actually a watered down MULTIC's & he's harsh on it there. I suggest you google it too.
Burrough's B5000 Architecture (1961-) http://www.smecc.org/The Architecture of the Burr...
Note: Written in ALGOL variant, protected stack, bounds checks, type-checked procedure calls dynamically, isolation of processes, froze rogue ones w/ restart allowed if feasible, and sharing components. Forward thinking.
IBM System/38 (became AS/400) https://homes.cs.washington.edu/~levy/capabook/Chapter8.pdf
Note: Capability architecture at HW level. Used intermediate code for future-proofing. OS mostly in high-level language. Integrated database functionality for OS & apps. Many companies I worked for had them and nobody can remember them getting repaired. :)
Oberon System http://www.projectoberon.com/ http://www.cfbsoftware.com/modula2/Lilith.pdf
Note: Brilliance started in Lilith where two people in two years built HW, OS, and tooling with performance, safety, and consistency. Designed ideal assembly, safe system language (Modula-2), compiler, OS, and tied it all together. Kept it up as it evolved into Oberon, Active Oberon, etc. Now have a RISC processor ideal for it. Hansen did similar on very PDP-11 UNIX was invented on with Edison system, which had safety & Wirth-like simplicity.
OpenVMS https://en.wikipedia.org/wiki/OpenVMS
Note: Individual systems with good security architecture & reliability. Clustering released in 80's with up to 90 nodes at hundreds of miles w/ uptime up to 17 years. Rolling upgrades, fault-tolerance, versioned filesystem using "records," integrated DB, clear commands, consistent design, and great cross-language support since all had to support calling convention and stuff. Used in mainframe-style apps, UNIX-style, real-time, and so on. Declined, pulled off market, and recently re-released.
Genera LISP environment http://www.symbolics-dks.com/Genera-why-1.htm
Note: LISP was easy to parse, had REPL, supported all paradigms, macro's let you customize it, memory-safe, incremental compilation of functions, and even update apps while running. Genera was a machine/OS written in LISP specifically for hackers with lots of advanced functionality. Today's systems still can't replicate the flow and holistic experience of that. Wish they could, with or without LISP itself.
BeOS Multimedia Desktop http://birdhouse.org/beos/byte/29-10000ft/ https://www.youtube.com/watch?v=BsVydyC8ZGQ
Note: Article lists plenty of benefits that I didn't have with alternatives for long time and still barely do. Mainly due to great concurrency model and primitives (eg "benaphors"). Skip ahead to 16:10 to be amazed at what load it handled on older hardware. Haiku is an OSS project to try to re-create it.
EROS http://www.eros-os.org/papers/IEEE-Software-Jan-2002.pdf
Note: Capability-secure OS that redid things like networking stacks and GUI for more trustworthyness. It was fast. Also had persistence where a failure could only loose so much of your running state. MINIX 3 and Genode-OS continue the microkernel tradition in a state where you can actually use them today. MINIX 3 has self-healing capabilities. QNX was first to pull it off with POSIX/UNIX compatibility, hard real-time, and great performance. INTEGRITY RTOS bulletproofs the architecture further with good design.
SPIN OS http://www-spin.cs.washington.edu/
Note: Coded OS in safe Modula-3 language with additions for better concurrency and type-safe linking. Could isolate apps in user-mode then link performance-critical stuff directly into the kernel with language & type system adding safety. Like Wirth & Hansen, eliminates all the abstraction gaps & inconsistency in various layers on top of that. JX OS http://www4.cs.fau.de/Projects/JX/publications/jx-sec.pdf
Note: Builds on language-oriented approach. Puts drivers and trusted components in Java VM for safety. Microkernel outside it. Internal architecture builds security kernel/model on top of integrity model. Already doing well in tests. Open-source. High tech answer is probably Duffy's articles on Microsoft Midori.
So, there's a summary of OS architectures that did vastly better than UNIX in all kinds of ways. They range from 1961 mainframes to 1970-80's minicomputers to 1990's-2000's desktops. In many cases, aspects of their design could've been ported with effort but just weren't. UNIX retained unsafe language, root, setuid, discretionary controls, heavyweight components (apps + pipes), no robustness throughout, GUI issues and so on. Endless problems many others lacked by design.
Вот объявил я, к примеру, несколько переменных:
int chislo = 42;
double pi = 3.14;
MyYoba xui("pizda");
Как потом достаются значения переменных? Выталкиваются в обратном порядке, а потом снова запихиваются? Или просто указатель стека перемещается?
При вызове каждой функции она берет себе от стека столько памяти, сколько нужно для локальных переменных. В этой памяти переменные и инициализируются. При выходе из функции память возвращяется.
В смысле "достаются"? Переменные достаются чтением учатска памяти. Разницы в чтении памяти между кучей и стеком нет. Стек автоматически освобождается, а куча - нет, и все.
Запусти дизасм хоть раз в жизни и посмотри как все устроено.
А как мне завести цикл на повторение программы?
Ну, понятно что черед do while.
Вот например,
do{
cout" Повторить выполнение,(y/n)?"
while( cin quit&& quit =='y')
}
А как на начало всей программы будет перевести выполнение ?
Берешь и все тело main () обрамляешь этим циклом, очевидно же. Тащемта, это единственный в хостовых реализациях, в каком-нибудь freestanding типа Arduino есть init () и loop () вместо main () вариант сделать повторения, ибо управлять рантаймом до и после работы main () ты не можешь, и вызывать ее вручную тоже запрещено.
О как спасибо, анончик. Боббра тебе.
И еще, этот файл example.c хранится в недрах оперативной памяти или сохраняется на диск? Как его сохранить на диск?
В vim хистори есть на вверх/вниз. Ну или можно на ctrl+z сворачивать vim и через fg разворачивать.
Хелп, анон. Сегодня решил попробовать хардкорно попердолить консольку, в терминале. Ввожу я значит emacs example.c, открывается редактор быдлокода, все хорошо, оборачивайся сучара я тут голый стою сосать у тебя хочу а ты к этому еблану идёшь наркаман штоле ща перееду камазом мозги прах выпотрошу вытащу селезёнку и съём ах не идешь пидорас ну погоди сука я как дам по ебалу ахуеешь хуй ебанный какашку свою в жопу засунь как высунул все задыхаются смотрят на нас и ржут а я стою тебе в рот сру сука тупорылая иди нахуй чтоб я не видел тебя на моей улице уёбок блять ах ты бить будешь ну всё сучонок пизда тебе я тебе череп оближу выебу трахпну дурак и сделаю из него скворечник нахуй потом вытащу киши кровь говно расчленёнка оргия чёрный властелин айдар печёнка селезёнка вылезла и по жопе ползает хуйло блять лучше раздразнить собаку, нежели бабу а собака блять тебя за ногу хуяк оторвала кровищща хлещёт ты орёшь бегаешь к бабе прибежал а та там с мужиком в постели ебётся ты её бах нахуй из пестика везде кровь баба обосралась а собака прибежала и начала говно жрать а говно то сука радиактивное собаку разорвало на куски на лает пиздёшится всю на куски распидорасчило а ты её по жопе на сука за то што меня кусала мужик стал в окно вылезать бабы увидели защекотали нудиста до смерти а я их всех выебал кишки в супе сварил съел в помойму выбосил бомж увидеел выпрыгнул орёт ты чё пидарас охуел ко мне в дом дерьмо всякое кидать изнасиловал меня в жопу кончил на спину облизал и….блевать сука мозги искры из глаз кровь говно кишки хуй пизда джигурда оргии крловавые негры саус парк гомер симпсон трахнул мо а сайдшоу мел смотрел и аплодировал а я ему хуяк кость в жопу нехуй орать всё правильно сделал так ему пидорсу повар.итог моралевый блеыять дразните баб а то ебутся с кем попало шмары вонючие ненавижу сук
Нет ничего более уебищного чем qtcreator.
Пиздец как можно быть настолько отбитым дауном, чтобы не догадаться загуглить блять библиотечный перевод чисел в строки.
Ууу, я в линуксе немного нью фаг, поясни, пожалуйста, что происходит в этой строке :)
А как между редактором и вводом команд то переключаться?
Первая команда сохраняет файл, как переключаться здесь >>769608
Раз ньюфаг, иди читай доки терминала.
Эмбедовка же ж. Глобальные переменные (синглетоны) решают. А ещё темплейты. Включаешь оптимиздатор и он режет всё говно и код становится маленьким. Без нью спокойно - это ж не гуйню хуярить.
emacs забыл
>>769647
Что-то не работает ctrl+z...
В видео уроке чувак пишет пишет код, а потом как-то вдруг прописывает :wq и дальше как в обычном терминале vim Makefile...
Скрины приложил. Как он это делает?
в виме вводишь :wq и нажимаешь enter. Он там из вима вышел, просто он остался на виду как и предыдущие команды терминала. Ты это на степике проходишь курс, я так понял.
Вот тебе по виму туториал https://ru.wikibooks.org/wiki/Vim
А вообще в виме есть внутренний свой мини-туториал хороший vimtutor
тоже этот курс прохожу, параллельно с линупсом
Спасибо, анон, я разобрался наконец. А что за курс линукса там, поделись ссылкой, пожалуйста.
https://stepic.org/course/Основы-программирования-для-Linux-548/syllabus эти русскоязычные ссылки...
Там же не так много курсов в принципе чтобы все проскроллить
>Может в твоем линке что-то дополнительное происходит
Тупо gcc собираю (не g++, он плюсовую либу линкует). Вот ldd
linux-vdso.so.1 (0x00007ffc29954000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f303cf94000)
/lib64/ld-linux-x86-64.so.2 (0x00007f303d335000)
Я тоже раньше юзал gcc. Кажется под coocox'ом. Как только переключался на g++ код раздувался на лишних килобайт сто из-за stdlibc++.
Однако! Перешел на eclipse, казалось бы какая разница, но может наконец правильные опции подобрал, но теперь компилю и линкую честным g++ и код все равно маленький. Я на армовских МК на голом железе.
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -flto -Wall -Wextra -g3 --std=gnu++11 -fabi-version=0 -fno-exceptions -fno-use-cxa-atexit -fno-threadsafe-statics
ну и естественно нанолиб вместо libc.
Все работает отлично, код компактный, надо только попробовать запилить туда new.
>но не сработало - начало все сыпаться
Ты конструкторы не забываешь вызывать через placement new?
хм, первый раз слышу про placement new. в чем фишка для моего случая? быстрогугл не прояснил.
а, ну понятно, сам указываю где аллоцировать. не понятно правда почему обычный new не сработает, если его на malloc зарутить, malloc то нормально работает, он знает где heap и тд
._user_heap_stack :
{
. = ALIGN(4);
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(4);
} >RAM
поэтому по идее malloc из libc должен правильно работать? зачем placement new?
Placement new только конструктор вызывает по переданному адресу. Обычный new видимо что-то еще делает, что от сислибы зависит. Надо стандарт ботать.
http://ideone.com/vYMETm
Первая версия - с ней помог анон, но она громоздкая и много лишнего. Вторую написал я, но она все равно не вытаскивает и делает это даже хуже, чем писал анон. Что не так бля? Косяк возникает на классах из которых надо вытащить 3 имени. Т.е. более двух зависимостей
http://ideone.com/7wA5C8
>>770353
Ставь build-essential, затем идешь курить g++ или ставишь ide. На твой выбор.
а можно бат файл запилить
Суть в том, что много лишних действий. Мне надо за один шаг вытащить имена из строки. Не надо разбираться где кто и кем приходится. Достаточно просто вырвать имена и все. Моя просьба была в том, чтобы анон пояснил что не так с моим выражением и почему оно не берет 3 имени и более
Суть в том, что много лишних действий. Мне надо за один шаг вытащить имена из строки. Не надо разбираться где кто и кем приходится. Достаточно просто вырвать имена и все. Моя просьба была в том, чтобы анон пояснил что не так с моим выражением и почему оно не берет 3 имени и более
>>770390
>>770391
Капчуриться будет только одна группа. То есть ты сможешь выбрать либо только первый, либо только последний класс, от которого идет наследование.
>эти русскоязычные ссылки...
https://chrome.google.com/webstore/detail/copy-url/mkhnbhdofgaendegcgbmndipmijhbili
Есть классы, которые образуют сраную иерархию. Т.е. даже не иерархию, есть один базовый класс и от него 50 отнаследованных. Это нужно только для того, чтобы запихивать эти классы в один список и дёргать у них с пяток функций.
А в остальном классы довольно сильно различаются набором параметров, которые я оставил торчать наружу public.
Короче, мне не нравится. Говнистая архитектура.
Что можно сделать?
Возможно имеет. Файлы могут на разных винтах лежать например. Или с рэйда-зеркала читаться. Либо вообще с сетевой СХД.
>Ну если много дисков, то это понятно. А если один?
А если одни, то сперва тебя будет синхронизировать арбитр шины dmi, а потом - арбитр шины sata, а затем - средства ОС, которые маппят диск в адресное пространство. Так что можешь забыть про параллельность здесь.
>арбитр шины sata
А ничего что у шины SATA есть зачем-то своя очередь и у SATA-диска довольно нетривиальная прошивка, которая почему-то очень сильно влияет на его производительность?
Как ты думаешь, зачем они существуют и не связано ли это каким-то образом с поставленным вопросом?
Я имел ввиду конкретнее что за объекты и что за задача. Слишком абстрактно сейчас.
Я вот в ДС получаю 125к, и не знаю много это или мало. Походил по собесам - сразу 120 легко дали.
Тоже дс, си/плюсы, криптография. Тоже 125к, считаю пиздецки мало, пока скидываю на свой возраст (23 лвл). Куда дальше идти - хз. Думаю стать начальством в своей шаражке, нежели прыгать из фирмы в фирму.
> Мне 28, и я бугурчу, что в 23 у кого-то ЗП 125к. Потому-что я это время бездумно проебал на WoW
Все будет, няш. Я вот, например, не смог нормально насладиться ммошками. О чем жалею. Максимум это 42 лвл в пв, в вов и подавно 12.
>Тоже 125к, считаю пиздецки мало
Совершенно не жаль тех программистов, которых убивают в новостях.
>Ну у меня опыта полтора года всего. Но мне кажется, будь у меня опыта поболее - денег бы больше не стало
Ну так а резюме какое-то? Какие там навыки/знания?
Сасай, лалка. Сколько знаешь - столько платят.
А я фрилансер 300к / сек. Это мало, посоны? Вьебываю 4 часа в неделю
> Ну у меня опыта полтора года всего. Но мне кажется, будь у меня опыта поболее - денег бы больше не стало
Кстати, верно. Потолка быстро достигаешь, работая на дядю. А дальше доказать, что ты - нужная макака, уже тяжело.
Семен, угомонись
Полтора года крестов, линукс-хуинукс, гцц, студия. Могу в qt, 11\14 стандарты, чистый си, немного в php\js, немного в шарпы. Ниче интересного.
>771556
>Полтора года крестов, линукс-хуинукс, гцц, студия. Могу в qt, 11\14 стандарты, чистый си, немного в php\js, немного в шарпы. Ниче интересного.
Конкаренси, сетевое программирование умеешь?
>Конкаренси, сетевое программирование умеешь?
И еще, было такое, что не отказывали в отклике на hh?
Чего я спрашиваю: у меня похожее резюме, но опыта побольше и вот меня конкретно так игнорят. Правда, я в Мухосрани.
мимо
>>771778
Про Concurrency теорию знаю, там про мутексы хуютексы, атомики и прочие треды.
В сеть тож чутка умею.
Я кидал резюме в 2 конторы, обе меня взяли вообще без проблем. В итоге правда в своей остался, начальник хуями покрыл и дал +к ЗП(вот и стало 125).
Если я верно понимаю, то крестовику в мухосрани делать вообще нечего. Я сам из ДС6, пришлось в ДС переезжать, т.к. в моем городе было 3 крестовых вакансии с ЗП до 60к потолок.
>Я кидал резюме в 2 конторы, обе меня взяли вообще без проблем.
Бро, скинь эти вакансии, буду очень благодарен.
>Вот сюда на мидла прошел
Чет не вижу там мидла. Ты имеешь в виду старшего разработчика? Там вроде 3+ лет нужно. Накинул себе в резюме?
>Могу тебе даже спалить чо спрашивают, если хочешь
Спали
То, что не младший и не старший - миддл.
Спрашивают много по сетям (Модели OSI надо знать), много по наследованию (виртуальному в том числе), Эксепшены и эксепшен-сейф код, создание\разрушение хитрое. Ну и оверолл мучают по алгоритмам\структурам. Мне понравилось, годное собеседование.
>Спрашивают много по сетям (Модели OSI надо знать)
Можешь описать поподробнее? В каком объеме спрашивают? Т.е. к примеру, надо обзорно знать все основные протоколы или подробно рассказывать о них, уметь использовать и накидать псевдокод за пять минут?
Надо понимать что это и как работает. Чем UDP отличается от TCP и от ICMP например. Что такое ARP.
Ставлю BPX ON ACCESS на твой рот)))
http://ideone.com/7zTMUs
Но компилятор выдает ошибку:"no viable conversion from '(lambda at ..)' to 'const QStringList'"
Что не так то?
Ну так ты лямбду в функцию пихаешь вместо QStringList.
QstringList получается из Лямбды, если ты оператор() дернешь
В с++14 не обязательно круглые скобочки ставить у лямбды, если нет параметров
понял, спасибо.
>>772207
я использую с++11, просто в идеоне его не было.
>>772204
ты про отступы, пробелы и скобочки?
Это еще в C++11 было же.
>я использую с++11, просто в идеоне его не было.
А зачем вообще такой кусок вставлять в идеон, если он не 100% скомпилиться. Есть же gist и pastebin
>ты про отступы, пробелы и скобочки?
Я про создание объекта в лямбде, а не во внешнем скопе
с чего это вдруг?
class X {
public:
X() {
val = new Y(...);
}
~X() {
delete val;
}
private:
Y *val = nullptr;
};
Ой, табы
class X {
public:
X() {
val = new Y(5);
}
~X() {
delete val;
}
private:
Y *val = nullptr;
};
как раз таки в классах голые поинтеры и используют.
Тут можно не использовать указатель. Тогда ты будешь писать конструктор так:
X(): val(5) {}
Вообще, использование списков инициализации предпочтительнее.
Я думаю, ты уже знаешь, что использование глобальных переменных - моветон.
Либо используешь синглетон, либо умный указатель (например, unique_ptr), который сам за тебя все почистит, если что. Но второй вариант только для c++11 и дальше.
>>772338
Зачем создавать еще один си с костылями, если уже есть? Да и новые фичи достаточно полезны, и не такие сложные. Если ты просто не можешь вкатиться в них, то используй старый стандарт, никто не запрещает. Но смысл писать так - непонятно.
>то используй старый стандарт
Я его и так использую. И планирую еще использовать лет 10. Мне ваше говно нафиг не всралось. У меня уже есть 100к строк старого говна.
голые указатели блядь ваще заебатая вещь. просто есть пидоры, которые в них путаются, поэтому в стандарт 11 года добавили unique_ptr, shared_ptr и weak_ptr.
это всё классы, которые за тебя создают поинтеры и в деструкторе разрушают указываемый объект. где использовать смарт поинтеры, а где голые - думай сам. но есть один рул оф самб :" используй смарт поинтеры везде, где это возможно. в остальных случаях используй голые".
например, из функции ты смарт поинтер не вернешь.
> Когда Erlang стал популярным, нас часто спрашивали, “является Erlang ОО-языком?”. Конечно же, правильный ответ – “Нет, конечно, нет”. Но мы не говорили это вслух – пока мы не придумали серьезные нестандартные пути ответа на вопрос, что было бы, если бы Erlang поддерживал ОО, чего на самом деле нет (если вы услышали то, что мы на самом деле сказали и умеете внимательно читать мелкий шрифт).
> Здесь мне вспоминается ключевая речь главы IBM во Франции, которая была адресована аудитории 7-й конференции IEEE Logic programming в Париже. В IBM Prolog было добавлено большое количество ОО-расширений. На вопрос “зачем”, он отвечал: “Наши заказчики хотят ОО prolog, вот мы и сделали ОО prolog “.
Ясно, спасибо, буду использовать unique_ptr.
> Я думаю, ты уже знаешь, что использование глобальных переменных - моветон.
Знаю, но мне кажется, что это лучше чем в каждом классе добавлять параметр log и пропихивать его туда. А по поводу синглтона: я не вижу чем он лучше глобальной переменной.
Последний вопрос. Погуглил, нашел презентацию
"don't fucking use pointers". Автор пишет, что
huge_object build_new_object() {
huge_object ret = new huge_object;
…
return ret;
}
можно заменить на
huge_object build_new_object() {
huge_object ret;
…
return ret;
}
Но при этом же вызывается конструктор копирования. Разве это норм копировать огромный объект?
Звездочки съелись, но я думаю, понятно по смыслу.
Так пиши на си и не выёбывайся, коли не нравится.
Если каким-то образом huge_object меньше в размерах, чем указатель на него, то да, можно заменить.
но блядь в 99% случаях поинтеры меньше объектов че за даунскую презентацию ты смотришь
В сишке в подобной ситуации не было бы копирования. Подозреваю, что и тут точно так же, разве что потом еще вызывается конструктор (обычный).
>don't fucking use pointers
Крестобляди не осилили поинтеры, поэтому решили украсть объекты из смаллталка, смартпоинтеры из фортрана и ламблды из лиспа. А всего-то надо было нормально освоить поинтеры.
>>772372
Во втором случае, как правило, не вызывается конструктор копирования. Здесь компиляторы могут применять оптимизацию, которая поддерживается почти везде. Читай про RVO / NRVO.
>>772383
Если конструктор копирования не вызывается, то почему http://ideone.com/2VL9o5 выдает
> use of deleted function 'X::X(const X&)'
?
С другой стороны, конструктор копирования действительно не вызывается http://ideone.com/eZBJD3
wtf?
Посоветуйте пожалуйста идею для сайдпроекта, после которого можно будет вкатиться на позицию джуна/мидла на позицию нормального системного программиста.
Что-нибудь достаточно масштабное, но не слишком муторное. Чтобы нужно было использовать треды, читать большие файлы, экономить память, и все такое.
Бекграунд: касался C++ только на первый курсах университета, где нам преподавали C++11. Он тогда очень понравился, но к сожалению я пошел в скриптовые языки.
Пойди интерном в какую-нибудь контору. Все равно небось у мамке борщи ешь.
мамки
Я вебмакак.
Определи move-конструктор и он станет альтернативой rvo.
Либу для клиент серверного обмена сообщениями зашифрованными с помощью OpenSSL.
Запили сервак, на котором можно регистрировать динамические либы, которые содержат обработку определённый запросов.
Алгоритм сервера такой:
1. Создаётся сервер.
2. Загружает динамические библиотеки (libcalc).
3. Библиотеки регистрируют свой коллбэк на запрос. Запрос вот такой, например: 'module:libcalc data:1+1'.
4. Если приходит запрос от клиента и нужный модуль есть, то управление передать модулю. Если нет, то вернуть клиенту ошибку.
В итоге должно выглядеть так:
Client -"module:libcalc data:1+1"-> Server
Server -"1+1"->libcalc_exec_callback;
libcalc_exec_callback -"res:2"-> Server
Server --"module:libcalc res:2" -> Client
При таком примере отлично поработаешь c либами на сях(OpenSSL), с сетевым уровнем(socket), с сериализацией/десериализацией(json, xml, ...), динамическая подгрузка функционала(либы для обработки запросов), потоки для распаралеливания исполнения запросов.
Вот как-то так. Задача не самая простая, но позволит подкачать скилл.
А так не мешай системное, клиентской и т.п.
Тоже системное, зачастую, почти целиком состоит из Си. Т.к. АПИ осей обычно на Си, а не С++. И это лучше смотреть именно в апи. Определение подключения устройств, перехват вызовой, драйвера и т.п.
Память экономить нужно в эмбедеде. В остальных случаях, как драйвера, модули ядра и т.п. нужно ПРЕДЕЛЬНО правильно её использовать.
Необходимость супер охуенно оптимизированного чтения громадных файлов пока ни разу не возникала. Ну я и не в биг дате, так-то.
Ну а умение писать хороший многопоточный код станет громадным плюсом везде.
Либу для клиент серверного обмена сообщениями зашифрованными с помощью OpenSSL.
Запили сервак, на котором можно регистрировать динамические либы, которые содержат обработку определённый запросов.
Алгоритм сервера такой:
1. Создаётся сервер.
2. Загружает динамические библиотеки (libcalc).
3. Библиотеки регистрируют свой коллбэк на запрос. Запрос вот такой, например: 'module:libcalc data:1+1'.
4. Если приходит запрос от клиента и нужный модуль есть, то управление передать модулю. Если нет, то вернуть клиенту ошибку.
В итоге должно выглядеть так:
Client -"module:libcalc data:1+1"-> Server
Server -"1+1"->libcalc_exec_callback;
libcalc_exec_callback -"res:2"-> Server
Server --"module:libcalc res:2" -> Client
При таком примере отлично поработаешь c либами на сях(OpenSSL), с сетевым уровнем(socket), с сериализацией/десериализацией(json, xml, ...), динамическая подгрузка функционала(либы для обработки запросов), потоки для распаралеливания исполнения запросов.
Вот как-то так. Задача не самая простая, но позволит подкачать скилл.
А так не мешай системное, клиентской и т.п.
Тоже системное, зачастую, почти целиком состоит из Си. Т.к. АПИ осей обычно на Си, а не С++. И это лучше смотреть именно в апи. Определение подключения устройств, перехват вызовой, драйвера и т.п.
Память экономить нужно в эмбедеде. В остальных случаях, как драйвера, модули ядра и т.п. нужно ПРЕДЕЛЬНО правильно её использовать.
Необходимость супер охуенно оптимизированного чтения громадных файлов пока ни разу не возникала. Ну я и не в биг дате, так-то.
Ну а умение писать хороший многопоточный код станет громадным плюсом везде.
Пропиздоглазил твой бэкграунд, прощу прощения.
Боюсь, что тогда задача будет очень-очень трудная.
Попробуй свои врапперы написать вокруг тех же сокетов.
Покопай в сторону виндового WMI.
В линях смотри демоны.
В маке посмотри апи по работе с девайсами разными.
Получишь представление, как выглядит АПИ разных осей. И поймёшь, как можно писать кроссплатформу при необходимости.
Но, на мой взгляд, твой бэкграунд очень слабоват, чтобы активно лезть на мидла системного программиста.
Лучше его не трогать, пока не будешь хорошо чувствовать себя в С/C++.
>Но, на мой взгляд, твой бэкграунд очень слабоват, чтобы активно лезть на мидла системного программиста.
Ничего-ничего. Я возьму, спасибо.
мимо-c++-джун
class yoba {
yoba &yobj;
yoba() {
???
}
};
Съеби-ка ты нахуй, ньюфаня. auto_ptr для этих целей всю жизнь использовали. В 11 стандарте его заменили на unique_ptr, который используется точно с той же целью. И это если не упоминать shared_ptr.
>>772555
Спасибо большое. Да, на мидла я особо не расчитывал. Попробую все же реализовать эту задачу, пока только для линукса. Ведь подразумевалась кроссплатформенная либа, так?
спасите
я про именованные смарт поинтеры, которые объявляются в скоупе функции.
std::unique_ptr<std::string> func ()
{
std::unique_ptr<std::string> ptr(new string("hey"));
return ptr;
}
Попробуй. Даже, если не выйдет, то полезного опыта будет с головой.
Да, имеет смысл делать её кроссплатформой. Большинство кода на С/С++ имеет смысл писать кроссплатформой. Либо использовать кроссплатформенные либы. Но без фанатизма.
Если интересно про кроссплатформу, то посмотри как пишутся cmake файлы для проекта. На мой взгляд, это самый удобный способ иметь кроссплатформенный проект.
Например, QtCreator и CLion отлично поддерживают формат проекта в виде cmake.
Самое главное, что можно удобно ветвить настройки проекта в зависимости от ОС. Например, линковать ос зависимые либы и прочие радости.
Ввторе - симэйк проект можно собрать на винде, на лине, на маке в пару команд:
cmake <project dir> -G "MinGW/Unix/... Makefiles" && make
Я могу за 2 месяца пройтись по Java и устроиться за 100к+ java-кодером,
А могу учить ссылки-хуилки,смарт-поинтеры boost, stl, и еще хуй пойми что с кучей неочевидных нюансов. И для того, чтобы выдать норм код, надо лет 5 херачить, а по зарплате не сказать что больше. И даже енсли прочитать книгупо крестам страниц, то повезло, если хотя бы треть запомнишь.
Итак, где тут секрет?
Возможно я не понял что ты хочешь донести.
Вот пример твоего кода:
http://ideone.com/duWnfD
Если чего-то не понимаешь, то могу рассказать и написать пример.
А коли я дурак, то хоть зря не буду писать лишний раз полотно.
Да, примерно так и есть.
Так нельзя, как ты хочешь.
Т.к. ссылка не может быть пустой. Т.е. тебе нужно будет задать какое-то изначальное значение этой ссылки. А поскольку чтобы заполнить эту ссылку тебе нужен экземляр твоего класса, то выходит рекурсия. Для создания объекта тебе УЖЕ нужен объект.
Для этого лучше использовать сырые указатели или умные (std::unique_ptr, std::shared_ptr).
http://ideone.com/yJgJdi
Тебе лучше глянуть на структуру данных - список.
https://ru.wikipedia.org/wiki/Связный_список
>Т.к. ссылка не может быть пустой. Т.е. тебе нужно будет задать какое-то изначальное значение этой ссылки. А поскольку чтобы заполнить эту ссылку тебе нужен экземляр твоего класса, то выходит рекурсия. Для создания объекта тебе УЖЕ нужен объект.
ну я так и понял, но думал мож что-то предусмотрено для этого
понял
Это - ручное решение, а не GC.
shared_ptr работает как подсчёт ссылок.
получается, что вот это: auto name = func(); вызывает move constructor..... значит значение , на которое ссылается unique_ptr ptr в функции func() действительно удаляется, но это делает move constructor, который перед этим копирует значение.
https://stackoverflow.com/questions/25885065/how-can-a-unique-ptr-be-returned-by-value-without-stdmove
спасибо, что указал на мою ошибку.
GC не нужен. Если у ресурса нет явного владельца, который управляет его временем жизни, то у тебя проблемы с архитектурой.
OpenSSL @ 2ol6
С любой архитектурой сложнее хеллоуворлда рано или поздно возникают проблемы.
GC есть даже в gcc и ядре linux, инфа 100%
ЙОБА НОВЫЙ ГРПЦ
Теперь SBCL
https://lbolla.wordpress.com/2010/12/05/sbcl-quicker-than-c/
во первых, шансов стать 100+к джава-кодером за два месяца очень мало.
во вторых, рынок джава-кодеров переполнен, каждый второй студент идет в джаву. конкуренция, демпинг, снижение средней зп.
в третьих, плюсовый рынок наоборот страдает от голода, вакансий много, зарплаты можно очень годные получать, конкуренции мало.
иди в джаву, будь крутой макакой в тырпрайзе. мне больше работы и денег с плюсов будет.
> uclibc++ на них почему-то перекатыватся не стали.
> library will focus on space savings as opposed to performance
Цель этих бибилиотек в том, чтобы создавать софт размером в 64к. Перекатываются на них только создатели электронных брелков размером с коробок.
Как мне это сделать?
>Хочу избавиться на рантайма CRT, НО оставить std библиотеку.
>Как мне это сделать?
Лол, а printf, malloc, free из воздуха возьмутся?
Ну или если нельзя избавиться от рантайма, есть ли опенсорс аналог для винды?
>Все эти функции и другие я могу реализовать вручную с помощью вин апи.
Нахуя? Stdlib использует сишную библиотеку. Ну уберешь ты стандартную и напишешь свою, что ты изменишь?
>Ну или если нельзя избавиться от рантайма, есть ли опенсорс аналог для винды?
Glibc кое-как портирована на винду в виде gnuwin32, но опять же нахуя? Libc и stdlib в теории имеют одинаковые интерфейсы, хоть на практике на разных платформах есть свои нюансы.
По факту, stdlib еще более не совместима, чем libc. И вообще ты какой-то хуитой страдаешь.
Освоить ассемблер.
Это нормально, если стримы в моей библиотеке будут работать с std::endl? Например mylib::myvar() << "Hello" << std::endl;
Или лучше сделать свой mylib::endl?
Я вижу 3 варианта и они все мне не нравятся.
1) Я прочитал про RVO. При определенных условиях объект не копируется когда возвращается из метода. Если запретить копирование, то конпелироваться не будет несмотря даже на RVO, я проверял. Но я не хочу разрешать дефолтное копирование, потому что это будет не копирование вовсе (2 указателя буду указывать на один участок памяти).
2) Можно специально переопределить конструктор копирования и операцию =, чтоб моя матрица относительно этих операций вела себя как std::vector. Но это тоже тупо. Зачем писать то, что я заведомо не буду использовать из-за неэффективности?
3) В качестве матрицы-параметров принимать смарт пойнтеры и всегда возвращать смарт пойнтеры. Типа
friend std::unique_ptr<Matrix> operator звездочка(const std::unique_ptr<Matrix> A, const std::unique_ptr<Matrix> B)
Ну это мне вообще не очень нравится.
А, ну и 4 вариант. Определить что-то типа UnsupportedOperationException и кидать его из конструктора копирования и операции =. Тогда RVO сделает свое дело и у меня будет определенная степень уверенности.
Зато я могу под андроид фрилансить, а не гнить 5 на 8 следующие 40 лет, а вот фриланса на крестах просто нет
RVO/NRVO это всего лишь перестраховка, чтобы ускорить случаи, когда конструктор копирования есть, но можно не копировать. Ты всегда можешь создать в операторе локальную матрицу с результатом произведения, наполнить ее, а потом написать return std::move (matrix); В этом случае сработает конструктор перемещения, и все будет нормально.
RVO не гарантируется, уже поясняли ведь. Ты так добьешься того, что у тебя смогут появляться совершенно рандомные исключения.
>в третьих, плюсовый рынок наоборот страдает от голода, вакансий много, зарплаты можно очень годные получать, конкуренции мало.
ппц, не пали годноту лохам
Бля, охуенно, я не знал про move constructor. Все получилось именно так как я хотел. От души братан.
Не хочу чтобы в моей программе была проприетарная параша в виде CRT от майкрософт, которая занимает дохуя места. И да, динамическая линковка мне не подойдет
Почему первое чем озабочен каждый семиклассник, написав свой первый хеллоу ворлд - это именно этими вопросами?
Не проводились ли на эту тему какие-то исследования социальными психологами?
Тащемта, это показательно. Те, кто не был совращен Столлманом в период сосничества, обычно становятся устойчивыми к этому дрочу на швабодку и не ведутся. А дети страдают. Может, предложить законопроект, приравнивающий GNU к педофильскому лобби?
>хлебушка невозможно найти
>Standard Chartered заебал уже в Сингапур хаскелеров искать, и нанимает и нанимает, все ему мало
Где связь гц с статическими конструкторами и багом в дебаггере?
std::vector<std::array<MonthЗВЕЗДА,12>> date;
как это теперь в деструкторе удалить?
да.
пока что сделал так, но нет возможности проверить с линковкой в QT что то не так
for (int i = 0; i < date.size(); i++)
for (int j = 0; j < date.size(); i++)
delete date[j][];
Что это, очередной клон Ганса?
Спермоблядок, ты всё неверно интерпретировал.
Социсследования интересовали про то, почему каждый семиклассник озабочен ужатием своей говнопроги с двух до полутора килобайт. И начинается такое не со Столлмана, а с MASM-а.
>Социсследования интересовали про то, почему каждый семиклассник озабочен ужатием своей говнопроги с двух до полутора килобайт
Эх, вспомнил свои нулевые и журнал Ксакеп. Я столько говна тогда понаписал...
http://pastebin.com/ktyP0u7L
>ЗВЕЗДА
Пизда, ептваю. Компилятор не обязан поддерживать в именах алфавитные символы, которых нет в базовом наборе, а именно _ и a-zA-Z.
>проприетарная
Я вот про это говорил. Путь байтоеба и путь красных глаз во многом пересекаются, но это не одно и то же. В погроммистском аду байтоебы находятся приблизительно во 2-3 круге, а гнутые евангелисты - в восьмом.
ааааа вот оно че
mov, sub, jge. Если подразумевается ввод-вывод, то плюс int. Если допускаются конфигурирование прерываний, то, очевидно, достаточно mov и int.
GPL разрешает линковку с проприетарной сишной библиотекой.
>Если допускаются конфигурирование прерываний, то, очевидно, достаточно mov и int.
Почему? Из чего будут сделаны обработчики, если доступны только int и mov?
Нет, я как раз имел в виду, что в прерываниях может быть ординарный код. Энивей прерывания, например, для обменов с устройствами, стандартизованы, и им не получится обрезать количество инструкций. То есть, ты можешь работать с mov, sub, jge как с "брейнфаком для бедных" и эмулировать биты отдельными байтами, но чтобы тебя понимали внешние устройства, тебе по любому понадобится работать с побитовыми инструкциями внутри прерываний.
newThread ->start();
Yoba yoba; //ёба наследуется от QObject
yoba.moveToThread(newThread );
Почему у ёбы дважды вызывается конструктор? Почему при этом если в конструкторе вызвать QThread::currentThreadId() выдаёт главный тред приложения, а не newThread?
Как вообще сразу поселить объект в другом треде, чтобы он там создался и не ебал мозг?
Ноль.
> This is a proof by construction that the Intel MMU's fault handling mechanism is Turing complete
>Почему у ёбы дважды вызывается конструктор?
Ага, блядь, это потому что я дебил и создаю объект ещё раз в qml, нужно было заместо qmlRegisterType пользоваться setContextProperty.
>Почему при этом если в конструкторе вызвать QThread::currentThreadId() выдаёт главный тред приложения, а не newThread?
Вопрос снимается, на это похуй, убрал всё из конструктора, повесил на thread.started() метод init(), всё работает.
Использовать std::move при возврате из функции не рекомендуется, потому что в этих случаях компилятор точно не применит RVO. Лучше вернуть просто matrix, а там уже само решится - либо rvo, либо move-конструктор, либо move-присваивание, либо и то, и другое.
Если ты делаешь move из функции - ты возвращаешь референс на удаленный обьект, и это UB
А я и не говорил возвращать ссылку или указатель.
Неправильно прочитал. Так ведь наоборот же говорю не использовать move. Но если что, rvalue-ссылки это ссылки на объекты, которые вот-вот будут удалены, так что это вполне можно делать, если есть на то причины.
Да ничего, нормально. Твоя как?
Вот думаю кодлайт установить. Можете помочь, если что?
У тебя линукс стоит?
Я, просто, думаю попробовать писать что-нибудь видеоигры на ++, но не знаю с чего начать. Вот ДЕ выбираю.
игры это либо писать движки (самый хардкор)
либо писать скрипты на готовых Unity, Unreal Engine и т.д (самое легкое)
либо с помощью готовых фреймворков мутить SFML, SDL. (хуй ты че серьезного сделаешь с этим, но по сложности средне)
линукс, хотя бы на виртулке, обязателен.
насчет ide - попробуй Code::Blocks на линуксе, и Visual Studio или тот же Code::Blocks на винде.
а, стоп, на десятке же bash in windows есть. если он работает, то можно линукс не ставить.
bash in windows это всего лишь название. Линупс все равно понадобится.
Нету. Ubuntu for ШNНD0W2 есть, но в офф. поставке отсутствует – нужно трахаться с установкой, и это преальфа.
Не нужен ему линукс если он не планирует что-то под него писать/нормально юзать вим.
А у тебя какая виртуальная машина стоит? Я смотрел, все платные.
Альсо, вон в гд: https://2ch.hk/gd/res/256276.html (М)
Кто-то 1 с 0 написал движок и игру на нём.
И еще, что лучше >Code::Blocks или codelite?
Я смотрю по сравнению они одинаковы.
Его свежие версии есть только в дистрибутивах вроде федоры, остальное LTS говно ничем не отличается от шиндового студийного и мингв.
>А у тебя какая виртуальная машина стоит? Я смотрел, все платные.
Virtualbox, например.
>Кто-то 1 с 0 написал движок и игру на нём.
ну красава, хули.
>И еще, что лучше Code::Blocks или codelite?
не знаю, но опять же, советую именно Code::Blocks.
wmvare триал 30 дней, а говорят он лучший.
typical C++-tшread
ну поставь оба и сравни.
так то выбор ide это вещь тривиальная. я бы особо не парился на эту тему.
какой твиттер? человек спрашивает по теме, а я отвечаю.
погугли инфу про виртуалбокс. что это такое, как использовать и т.д.
поймешь намного больше, чем если бы я тебе пояснил как я его использую.
Ставь Visual Studio, не вижу смысла использовать что-либо другое на винде.
>насчет ide - попробуй Code::Blocks на линуксе, и Visual Studio или тот же Code::Blocks на винде.
Как же ты заебал со своим code::blocks, маркетолог ебаный. Тебе уже ответили: >>766247
А нехуй всяких пидорасов слушать. Юзай qtcreator для начала, чтобы все было из коробки, а потом перейдешь на то, что душе угодно.
> qtcreator для начала, чтобы все было из коробки
Помню, тут была целая эпопея, где я полтреда помогал анону заставить QtKreakl подцепить тулчейн.
блядь, какая разница человеку, которому иде этот нужен просто чтобы примеры из книжки позапускать?
Подцепить тулчейн для креатора из бандла? Или то был ебанутейшей редкости баг, либо ты пиздишь. В любом случае твое говно ни в какое сравнение не идет с qtcreator с точки зрения интеграции.
Разница в том, что ты советуешь хуиту, которая не может работать из коробки. Советовал бы VS или qtcreator никто бы слова не сказал.
>твое говно ни в какое сравнение не идет с qtcreator
Моё говно это CLion. QtKreakl-у до которого как до Луны пешком.
Не, clion - норм тема, но не бесплатная же.
https://ideone.com/inFryJ
Есть сабж http://pastebin.com/TBQ6VEKN
Суть - с помощью QtNetwork отправить пост на сосачик.
По-простому ([1]) работает, через QHttpMultiPart ([2]) - нихуя.
В чем проблема? Я где-то налажал, или это баг в культях?
> Network Serialisation and Visualisation of Game State
> It’s probably obvious by now how this can be achieved: use serialisation to a byte buffer that is optionally compressed and send that to your endpoint - most likely binary and versionable. With the addition of an attribute that describes network transient fields, this allows you to make some very powerful editing tools.
> The main class of tool is an editor that connects to a live game, edits an intermediate data representation and broadcasts changes to a live game. There are many benefits to this approach:
> You get live updates of any changes on PC or console.
> Design is multi-threaded due to the nature of network communication, making for some graceful UI tools.
> You can iterate on your tool code without bringing the live game down. If the tool crashes, it doesn’t bring down the game.
> If your game gets into a state that is deemed incorrect, you can connect and visually see the state of all your objects.
> If you want to write your tool code in C# or embrace the era of the Internets and write in a combination of Javascript, HTML, CSS, etc. you only need to write the equivalent of the above serialisation code in that language to allow editing and communication. Each C++ container type you support will need to map to an equivalent in the tool language.
Кто-нибудь работал в компаниях, занимающихся написанием инструментов для трейдинга? В чем суть, какие задачи обычно решаются?
ВИжуал студия весит 10 гб, а кодблокс 80 мб.
Да там дохуя всего же.
Фреймворки, инструменты какие-то и пакеты еще к нагету и вообще блядь еще лес всего.
нет
Говно, пользуйся герычем.
так ведь пользуюсь
Для C++ есть нормальные фреймворки уровня Symphony, Django, Rails для веба, чтобы их еще кто-то использовал, ну и вообще экосистема для веб-разработки? Можно ли найти работу в таком направлении?
Можно ли найти работу фрилансером или на удаленке? Или весь с++ - это обязательно пот, прыщи и поедание мозолей?
Можно ли разрабатывать со скоростью, сравнимой с с#, java, python?
Прочитал статьюю и загорелся идеей разработки игры, планирую начать с изучения с++, а дальше написания игры своей мечты с поборами на патреоне. Взлетит?
Дропнешь разработку. Но идею все равно не дропнешь, как я, например.
Производительность, лаконичность кода, предсказуемые типы данных. А потом, это весело.
Возьми и перекати. Я вот уже 2 раза перекатывал. В этот раз предоставлю это почетную обязанность кому-то еще.
Я вообще ньюфаг, иногда сюда за вопросами забегаю, просто нашёл тред на дне, вот и спросил.
Я работаю прямо сейчас. Дохуя математики но мне в кайф. Есть и другие задачи, вот сейчас за стенкой ебутся с коррекной работой прилаги на 8 мониторов.
Зп? Место работы? Сложно?
Осиль уже auto и STL
http://ideone.com/sNY8Da
Я не могу редактировать код. Только а вводить.
А void main() и return 0; он тоже поставил, потому что ему именно так нужно?
Код менять нельзя. Только а. А там double в float конвертится и с константой забыл какого типа сравнивается. То есть надо подобрать такую строку чтобы после её конвертирования в float и сравнения с той константой в ифе получилось тру.
Ты вообще понимаешь, что ты пишешь? У тебя код не от a не выполняется, а от того, что ты float с double сравниваешь. Так нельзя.
> float с double сравниваешь
Именно. И это сравнение убрать нельзя. Нужно подобрать такое значение для а чтобы сравнение прошло.
А я, кстати, думаю, что задачку можно решить. Но надо поебаться с битовой логикой этого дерьма. Топик-стартер, запусти это дерьмо под дебаггером. Посмостри че там происходит в момент float b = strtod(a,0);
мимо-крокодил
Это копия, сохраненная 11 июля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.