Это копия, сохраненная 19 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Пахнут ньюфаги ленью и злобой,
В перезвоним-треде пахнет злорадством,
В гитхаботреде - вниманиеблядством.
Слабым рассудком, водою и хлебом
Пахнет макака, живущая вебом,
Сишник смердит красноглазьем ночным,
Пахнет обгвидок стандартом двойным.
R-щик разит дата-майнингом скучным,
От джавабляди прет офисом душным,
Пахнут bash-ниндзя парой витой,
А шарпоебы - пиратской вендой.
Смузи и маффином пахнут рубисты,
Пахнут вчерашним борщом хаскеллисты,
Гоферы пахнут Илюши багетом,
Лисперы... впрочем, не будем об этом.
Свифтеры пахнут спекой сырою,
А 1С-ники - красной икрою,
Густо намазанной на доширак...
Лишь крестобоги не пахнут никак.
Старший брат: >>683573 (OP)
Предыдущий: >>692400 (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++ 2014 https://goo.gl/kVaela Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u Бьерн Страуструп Программирование. Принципы и практика использования C++ 2011 https://goo.gl/nAFUXa
Другие обучающие материалы
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: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Ахаха. Типа крестовый ход.
Топовый стих!
Ещё круче. Это ДЕТСКИЙ крестовый поход.
Где ты 17 увидел?
Раньше там ещё можно было не показывать предупреждения или ошибки чтобы навигация по ним была проще.
Тут расписано что уже вошло в стандарт (список не полный), что не вошло и почему, и что возможно войдёт в июне на встрече в Oulu.
> 19:56:48
> 19:56:52
> 19:57:30
Да вы охуели.
For you
Сенькс.
Нахуя 2Д? Решили догнать и перегнать турбопаскаль?
я прочла и ощутила свою ничтожность )
>17
Только в твоих влажных фантазиях.
Алсо, возрадуемся, братья. В этом треде мы обогнали жабу и вышли на первое не считая веб-макак место по количеству тредов!
Говорят, что можно выделить переменную, а потом сделать еще одну переменную, которая будет ссылкой на ячейку памяти той первой переменной. Типа синоним переменной или типа того. Только я все равно нихуя не понял. Если у меня уже есть переменная, с помощью которой можно попасть в ячейку памяти, зачем мне еще одна переменная, которая в ту же ячейку будет указывать?
Говорят, что кур доят.
Емнип, в пыхе надо писать &tvoyamamka, чтобы оперировать самой переменной, а не ее значением. Вот здесь в точности то же самое, указатель это как бы "сама переменная", ее адрес, а не значение.
Вот ты читаешь книгу, тебе там пишут: "Существует хуйнянейм. С ней ты можешь делать то-то, то-то, то-то." Дают простенький пример. И ты задаёшся вопросом: "А зачем мне хуйнянейм в этом примере если и без неё обойтись можно?" Вот в место того что-бы считать себя умнее автора учебника, ты должен запомнить, что хуйнянейм существует, запомнить её особенности, и продолжить читать учебник. В последующих главах, материал и примеры усложняются, автор начинает использовать то, о чём было рассказано в предыдущих. И возможно, тогда, ты поймёшь зачем оно нужно.
Вопрос по MFC.
Я правильно понял, что формошлёпствовать можно только добавляя элементы в диалоговые окна и меню, а для того, чтобы добавить кнопку в основное окно надо всегда вписывать её руками?
Одинаково.
Вся суть крестопидоров. Нужны только чтобы деньги экономить не перенося проект на эфективные и современные ЯП.
Haskell
Swift
Отрок услыхал звон, да не понял, где он.
C++ современный. Последний стандарт в 14-м году вышел, вот-вот стандарт 17-го года выйдет.
Про эффективность я уже молчу.
>вот-вот стандарт 17-го года выйдет
надо эту хуйню убрать из шапки, чтобы не позориться. такое язык даже стандартом не повернется назвать
Зависит от того, может ли у тебя быть null - состояние.
Если нет - по ссылке. Если можно обойтись без указателей - то лучше обойтись без них.
И снова платиновые вредные советы. Уже сколько раз говорилось: указатели могут использоваться для передачи in-out параметров, чтобы не перепутать их со ссылочными обычными. Это, блядь, стандартная практика.
Да и банально использовать переменную без сраных звездочек и амперсандов куда удобнее.
Сократи до рабочего минимума и кидай код. Я нихуя не понял из того, что ты сказал.
>>696774
Я переделал это все в ссылки и новый вопрос и вот код сразу
class yoba {
public:
yoba &yobject;
};
int main() {
yoba yobishe;
yoba yobatest;
yobatest.yobject = yobishe;
};
Так ругается на нет подходящего конструктора по умолчанию и оператор = не перегружен. Делаю конструктор и перегружаю оператор.
class yoba {
public:
int test1, test2;
yoba &yobject;
yoba() {
test1 = 0;
test2 = 0;
yobject????????
};
yoba& operator = (yoba a) {
test1 = a.test1;
test2 = a.test2;
return *this;
};
};
int main() {
yoba yobishe;
yobishe.test1 = 1;
yobishe.test2 = 2;
yoba yobatest;
yobatest.yobject = yobishe;
};
Вот. И что писать на месте "yobject????????" ? Нужно же инициализировать yoba &yobject;, без него не компилится, но как, если объекта класса yoba еще нет и не может быть потому что мы еще даже не сделали класс и конструктор. Поясните ньюфагу.
>>696774
Я переделал это все в ссылки и новый вопрос и вот код сразу
class yoba {
public:
yoba &yobject;
};
int main() {
yoba yobishe;
yoba yobatest;
yobatest.yobject = yobishe;
};
Так ругается на нет подходящего конструктора по умолчанию и оператор = не перегружен. Делаю конструктор и перегружаю оператор.
class yoba {
public:
int test1, test2;
yoba &yobject;
yoba() {
test1 = 0;
test2 = 0;
yobject????????
};
yoba& operator = (yoba a) {
test1 = a.test1;
test2 = a.test2;
return *this;
};
};
int main() {
yoba yobishe;
yobishe.test1 = 1;
yobishe.test2 = 2;
yoba yobatest;
yobatest.yobject = yobishe;
};
Вот. И что писать на месте "yobject????????" ? Нужно же инициализировать yoba &yobject;, без него не компилится, но как, если объекта класса yoba еще нет и не может быть потому что мы еще даже не сделали класс и конструктор. Поясните ньюфагу.
Пиздос - то есть ты создал ссылкочлен, но не придумал что в нем хранить?
Это как? Что за йоба?
Я придумал, другие объекты класса йоба. То есть в объекте класса йоба содержится ссылка на другой объект класса йоба, понимаешь? Но они-то инициализируются после того как я сделаю класс.
Никак. В твоем случае подразумевается вариант null-состояния, ссылки в него не умеют.
Твой вариант - указатели, по умолчанию нулевые.
Хотя можешь попробовать по умолчанию сделать ссылки, замкнутые на this. Хуй знает, скомпилится ли.
Окк, смотри, делаю указатели, разыменовываю где надо.
class yoba {
public:
int test1, test2;
yoba yobject;
yoba& operator = (yoba a) {
test1 = a.test1;
test2 = a.test2;
return this;
};
};
int main () {
yoba yobishe;
yobishe.test1 = 1;
yobishe.test2 = 2;
yoba yobatest;
*yobatest.yobject = yobishe;
}
error C4700: использована неинициализированная локальная переменная "yobatest"
Как так?
Окк, смотри, делаю указатели, разыменовываю где надо.
class yoba {
public:
int test1, test2;
yoba yobject;
yoba& operator = (yoba a) {
test1 = a.test1;
test2 = a.test2;
return this;
};
};
int main () {
yoba yobishe;
yobishe.test1 = 1;
yobishe.test2 = 2;
yoba yobatest;
*yobatest.yobject = yobishe;
}
error C4700: использована неинициализированная локальная переменная "yobatest"
Как так?
Ну йобана, проебал все.
class yoba {
public:
int test1, test2;
yoba звездочкаyobject;
yoba& operator = (yoba a) {
test1 = a.test1;
test2 = a.test2;
return звездочкаthis;
};
};
int main() {
yoba yobishe;
yobishe.test1 = 1;
yobishe.test2 = 2;
yoba yobatest;
звездочкаyobatest.yobject = yobishe;
}
[code]
int main()
{
return 0;
//тест
}
[/code]
Из какого?
Так вот в чем дело:
class CLS1: public QObject {
Q_OBJECT
public:
CLS1(QObject parent = 0) :
QObject(parent) {
... ничего важного
_dialog = std::make_shared<DLG1>();
}
public slots:
kickMe() {
_dialog->show();
}
private:
std::shared_ptr<DLG1> _dialog;
}
class DLG1 : public QDialog {
Q_OBJECT
public:
DLG1(QWidget parent = 0) :
QDialog(parent) {
... инициализирую кнопащки и все такое
}
}
Так вот, стоит мне вызвать слот CLS1::kickMe так у меня сразу всирается Q_ASSERT_X о том, что я не могу вызывать виджеты из левых тредов. Но я блять ничего не трогал, терды не перемещал. Когда запускаю в релизе, периодически окошко-таки повяляется, но отрисовывается по-инвалидски, в других случаях просто зависает (спасибо Q_ASSERT_X, который делает эту хуйню).
Что делать, посоны, ума не приложу
Так вот в чем дело:
class CLS1: public QObject {
Q_OBJECT
public:
CLS1(QObject parent = 0) :
QObject(parent) {
... ничего важного
_dialog = std::make_shared<DLG1>();
}
public slots:
kickMe() {
_dialog->show();
}
private:
std::shared_ptr<DLG1> _dialog;
}
class DLG1 : public QDialog {
Q_OBJECT
public:
DLG1(QWidget parent = 0) :
QDialog(parent) {
... инициализирую кнопащки и все такое
}
}
Так вот, стоит мне вызвать слот CLS1::kickMe так у меня сразу всирается Q_ASSERT_X о том, что я не могу вызывать виджеты из левых тредов. Но я блять ничего не трогал, терды не перемещал. Когда запускаю в релизе, периодически окошко-таки повяляется, но отрисовывается по-инвалидски, в других случаях просто зависает (спасибо Q_ASSERT_X, который делает эту хуйню).
Что делать, посоны, ума не приложу
>Так вот, стоит мне вызвать слот CLS1::kickMe
Как вызываешь? Сигналом, или руками?
Если руками - это надо делать через invokemethod.
И да - за std::sharedptr в Qt проге принято больно бить, там же есть QSharedPointer, ну ебана!
А какие вообще рамки джун/неджун?
Писал на крестах, но про эту хуйню уже позже на сосаче читал.
> invokemethod
Не вышло, то же говно выдает
> сингалом
Вот эта хуйня прокатила, но мне не нравится наличие такого костыля. В чем тут проблема, может быть объяснишь?
> принято больно бить
Да у меня в наследство от прошлого досталась программа, изобилующая std::vector/list ... - это тоже плохо?
>Вот эта хуйня прокатила, но мне не нравится наличие такого костыля. В чем тут проблема, может быть объяснишь?
> invokemethod Не вышло, то же говно выдает
А мне кажется, что ты пиздишь. Потому что сигналы-слоты работают через invokemethod.
Как вызывал то?
>Да у меня в наследство от прошлого досталась программа, изобилующая std::vector/list ... - это тоже плохо?
Лично я в Qt-коде никогда их не использовал. Вектор/Лист еще похуй, (хотя QList уж точно std::list'у за щеку по удобству накидает), а вот сравнивать std::set и QSet без припадков истерического смеха уже невозможно.
Таки вот и не вышел этот invokemethod, даже когда я в своем CLS1 его определил слотом.
Пришлось у класса (пусть будет A), из которого вызывается CLS1::kickMe делать сигнал A::someSig, связывать его с CLS1::kickMe, и только потом его вызывать (emit'ом, естественно)
>Таки вот и не вышел этот invokemethod, даже когда я в своем CLS1 его определил слотом.
У меня фейспалм. Ты должен его поставить там, где сейчас делаешь emit.
И вызывать kickMe. И делать это в queue-режиме.
Код в студию. Я тебе не верю, где-то ты пиздишь/проебался.
Еще раз - когда сигнал дергает слот, он делает именно invokeMethod.
Таки да, пропизделся. На QueuedConnection внимания не обратил, а было DirectConnection.
http://ideone.com/hbwCxA
А ссылки указывающие на свой собственный класс оказываются слишком ограничены по функционалу. Ссылка может быть только константной по смыслу, так как наивная реализация оператора присваивания приводит к бесконечному циклу. http://ideone.com/7BOXIa Можно наверное реализовать оператор присваивания через new с размещением, но хуй знает сколько при этом ног может быть отстрелено и нахуй таким заниматься когда есть указатели.
Пишу менеджер текстур и встал вопрос как лучше сделать:
Сейчас так
Есть мапа в которой ключ это хеш строки имя текстуры, а значение это индекс в векторе.
Ну и сам вектор в котором хранятся текстуры.
Но есть ли смысл в этом?
Может заменить значение на сами текстуры и обойтись без вектора?
>std::set и QSet без припадков истерического смеха уже невозможно
Ты лалка потому что. В STL используется функциональный подход, поэтому для всех операций -, +, |, & есть свои аналоги в алгоритмах. Не то, чтобы это было сильно удобнее чем ООП подход, но неправильно говорить, что в STL контейнеры УРЕЗАННИЕ АХАХА ЛОЛ
сделай std::map<std::string, Texture> и не парься.
"функциональный подход" это когда функция передается в качестве параметра другой функции, не неси хуйни. К примеру map или reduce, применительно к крестам - transform.
Операторы позволяют записать все в читаемом виде, вроде (lal1 + lal2 + lal3) & lal4 | lal5.
Как будет выглядеть эта хуйня с "std::set_difference" и прочим? Как набор отболного нечитаемого говна.
В Qt то "функциональные функции" никуда не делись, просто там есть выбор. А в STL выбор один - жрать говно.
>Может заменить значение на сами текстуры и обойтись без вектора?
Да, есть. А ещё есть смысл заменить map на unordered_map перформанса ради.
почему в шаблоне можно писать const T, а unsigned T нельзя.
когда будут опережающие описания для вложенных классов?
>"функциональный подход" это когда функция передается в качестве параметра другой функции, не неси хуйни
Манька, залезь в википедию и почитай, что значит функциональный подход. То, что ты называешь функциональным подходом, на самом деле является функциями высших порядков.
В STL данные отделяются от алгоритмов и алгоритмы выполнены в виде функций, работающих с итераторами. Т.е. функции, которые принимают возвращают и данные.
Как я уже сказал, что это не всегда лучше или читаемее, чем ООП версия, но функциональность полностью равнозначная. К тому же, кто мешает написать глобальный оператор? Никто.
>То, что ты называешь функциональным подходом, на самом деле является функциями высших порядков.
Нет, манька, это ты залезь уж туда и почитай про функциональную парадигму.
Если в двух словах - использование map/reduce, отказ от циклов в пользу рекурсии, отказ от переменных, чистые функции, которые зависят только от своих параметров.
Короче, типо свести к минимуму побочные эффекты, все зло от них лол.
И в этих "алгоритмах" ничего функционального и близко нет, обычная процедурщина из 80х.
>К тому же, кто мешает написать глобальный оператор?
Из-за такой хуйни кресты и превращаются в говно. Вместо того, чтобы заниматься программой, все пишут велосипеды, и у каждого он свой. Нет строк? Что мешает написать свои строки? И вот и имеет char*, std::string, QString - и без сомнения, список этим не исчерпывается.
Смотря как ты работаешь с текстурами. Может тебе вообще по именам к ним надо обращаться только при загрузке, когда данные инициализируются. В векторе их имеет смысл хранить только если ты итерацию по ним часто делаешь, и тебе нужна производительность за счет локальности данных. Если нет - то проще выделять память для каждой текстуры отдельно, а в хэшмепе хранить указатели.
>QString
Нестандарт.
>char *
Наследие сей, нерекомендуемое к использованию.
Фактически, нет стандартных строк, кроме std::basic_string, и std::string - пророк их. А если кто пишет велосипеды - это его проблемы, а не языка.
>использование map/reduce
std::transform и std::accumulate в чистом виде.
>отказ от циклов в пользу рекурсии
Хвостовая рекурсия есть. Обычная рекурсия наносит ущерб производительности и не должна быть основным инструментом в крестах.
>отказ от переменных
Функции из одного return'а никто не отменял.
>чистые функции
Хочешь чистые функции - пишешь чистые. Никто насильно тебе побочных эффектов не напихает за щеку.
Серьезно, функциональщики-евангелисты, мечтающие сделать из крестов лиспохаскель, запретить и не пущать - это было ново лет пять назад. Сейчас уже даже самые упоротые даунята остыли от хайпа и смекнули, что крайности вредны. Задача крестов - не собезъянничать %языкнейм, а предоставить как можно больше средств и сделать их максимально удобными и непротиворечивыми. Все остальное на совести погроммиста.
Что-нибудь вроде древней рассылки Бобровского http://subscribe.ru/archive/comp.soft.prog.prognull.game/200507/22073836.html , по созданию простой rpg-шки,
или видосов на трубе, типа своего Марио https://www.youtube.com/watch?v=6OHMFwQK44k. Интересуют от игр типа морской бой и выше.
> А если кто пишет велосипеды - это его проблемы, а не языка.
Нет, это проблема языка (точнее, его стандартной библиотеки). Она не предоставляет строки, удовлетворяющие всех.
Это проблема наследия велосипедистов из си, которые ради 0,4 мс на 2000000 итераций пилят свои каштомные строки.
Котаны, в чем приемущество использования функций atol, atof, atoi и т.п. перед sscanf при парсинге текстовых протоколов? Смотрю - в программах под микропроцессоры везде только так и делается.
sscanf использует atol, atof, atoi или что-то подобнее, получается что это лишний вызов, ради большей абстракции.
ну охуеть теперь. вместо того чтобы хорошо зделать нормальный язык из коробки, комитетские дауны предлагают программистам "ну напиши..."
>зделать нормальный язык из коробки
>предлагает добавить в язык unsigned float, unsigned class и т.п.
просто нахуй иди
>>697102
Не повезло что твоя мать шлюха, вот это действительно не повезло.
Отвечу на доступном тебе уровне: ЯП даёт тебе бумагу, а подтирать жопу ты должен сам.
>кого это волнует?
Всех не-долбоёбов.
>unsigned short/int govno
Идиот, unsigned int и signed int это два отдельных типа.
>то, что я не хочу тоже было не известно
unsigned это не type qualifier, в отличие от const или volatile
>а шаблоне видите ли нет?
unsigned это не type qualifier, в отличие от const или volatile
В предыдущем сообщении вставилась какая-то хуйня
воу, у нас здесь фанбойчик говна плюс в треде.
> unsigned float
кто мешает не компилировать такой шаблон?
>unsigned float
У тебя есть отличная возможность сделать через std::enable_if + std::is_unsigned и выпендриться перед коллегами
> unsigned это не type qualifier
это никого кроме зашоренных фанбоев не волнует.
там где unsigned не применим конпелятор спокойно выдаст ошибку во время инстанцирования шаблона
>Не стоит в мапе хранить большие объекты
может наоборот, не стоит хранить маленькие? оверхед три указателя плюс флаг для цвета узла.
> у дурачка сломался мозг из-за типа состоящего из двух слов
Ты не можешь написать "unsigned short/int govno" ты можешь написать или "unsigned short govno" или "unsigned int govno" это два разных типа, имена которых состоят из двух слов.
Да хватит уже его кормить.
так же ты можешь написать unsigned unsigned unsigned int govno;
и конпелятор схавает. т.е unsigned в говне плюс ведет себя как qualifier, но qualifier-ом не является.
мне нужно и прямо сейчас, чтобы убрать знак
[code]
template <class T> struct
{
unsigned T value;
};
[/code]
>так же ты можешь написать unsigned unsigned unsigned int govno;
>и конпелятор схавает.
Написал. Не хавает.
Но нахуя?
каким образом там окажется флоат если я планирую передавать только целочисленные типы?
и кто мешает конпелятору выдать ошибку во время инстанцирования щаблона.
вся суть говна плюс. вместо того чтобы дать возможность программисту написать просто и читабельно:
unsigned T value;
комитет заставляет мазать говно толстым слоем:
typename std::make_unsigned<T>::type value;
Обидься и не пиши на плюсах.
А в языках, которые не говно и при этом имеют шаблоны (или их подобие), писать unsigned T value; можно?
Просто любопытно, может знает кто.
Сканф умеет возвращать ошибку, ato.. - undefined behaviour.
>Ты забыл про wstring и QByteArray
Можно много ещё чего вспомнить, всякие NSSring, CString. Он написал " без сомнения, список этим не исчерпывается."
Я уже исправил на то, что можно.
Вы скучные. Говно какое-то обсуждаете. кроме sscanf но его вы плохо обсуждаете Лучше с этой штукой помогите.
>У D толковые шаблоны. Можно там глянуть.
Ни в D ни в Rust нету модификатора unsigned, там беззнаковые типы начинаются с u (uint, ushort в D и u32, u16 и u8 в расте).
Такое говно пройдёт разве что с текстовыми макросами. Я вот серьёзно не могу понять, нахуй так пердолится если можно просто передать значение нужного типа.
Хотя в вышеперечисленные языки-то хоть завезли контракты и трейты, а семнадцатый стандарт говорит пирдольтись))))
Я правильно понял, что нужно передать данные из того pid где вызывается сигнал в принимающий?
Нет.
Если по хардкору - чтобы внутри функции можно было значение переменной менять, я правильно понял?
В том числе.
> Лучше с этой штукой помогите
Если ты считаешь что "int ans=(a+=b)" (при том что a и b не int) это "красиво" то тебе уже не помочь.
Ссылке надо всегда что-то присваивать.
> Ты забыл про wstring и QByteArray :3
А еще я забыл cv::String
Также можно посчитать количество "умных указателей", лол.
std::shared_ptr, QSharedPointer, cv::Ptr, у буста вроде были... Еще кто вспомнит/назовет?
Та же хуйня с потоками, сигналслотами.... да чем угодно.
Вот и выходит, что чтобы писать на крестах нужно ебаться с велосипедами, а не решать задачу. И велосипедов овер9000 - то, что ты написал на крестах, другой уже хуй прочтет.
По сравнению с D, это кресты - пидорская хуета для любителей сверхжесткой анальной ебли.
D - это кресты, сделаные нормально.
А раст смотрел - не впечатлил, синтаксис пиздец наркоманский.
Поясняю, есть struct User { string a, string b, string c}, есть некий цикл через for { что-то делается + User.a = smth }. То есть, чтобы уже на следующей итерации было поле не a, а уже b.
А зачем тебе это нужно? Цель какая? Так как тянет на отборное извращение.
В свое оправдание сразу хочу сказать, что с крестами знаком буквально час. В текстовом файле в строчку записана информация: ФИО, дата рождения и еще пара пунктов. Я строку кусочно парсю и хочу сразу же на итерации закидывать в соответствующее поле в структуре.
Если бы точнее, то полей 5. И в файле строк, хар-их пользователей, около 5-6, то есть пользователей нормальное кол-во.
Строчку входную парсим по ";" и достаем необходимые поля на каждой итерации и сразу пихаем в поля структуры.
Ш1ИD0W2. Чисти говно блять.
У тебя не закрывается программа/компилятор/дебагер, стандартная спермопроблема.
Как я чистить-то буду? Среди процессов ничего похожего на кодблокс или мингв. Чего-нибудь со словом дебаг тоже не видно.
У кодблокса есть такая хуйня. Когда программу на крестик закрываешь, то она может весеть в процессах. Поищи имя программы или ld.exe.
http://stackoverflow.com/questions/11719538/how-to-use-stringstream-to-separate-comma-separated-strings
>>697596
Хотел промолчать, но другой анон не смог. Пока мне не покажут, как использовать D классы без сборки мусора (хотя бы через подсчет ссылок) элегантно без костылей, я туда не буду лезть. Меня полностью устраивает RAII в плюсах, и с циклическими ссылками я могу справиться сам.
Геттер с нормальным понятным именем. А вообще ты хуйню какую-то делаешь. Если ты уже сделал класс который соотвествует компоненте связности которая сама по себе является полным графом, то это следует понимать как инвариант (иначе это обычный класс для хранения подграфов). Твои объекты класса всегда должны быть полными графами, следовательно когда ты выполняешь какое-то действие которое нарушает инвариант ты должен его тут же востановить. Если ты реализуешь operator+= который соеденияет две компоненты связности, то прямо в том же операторе ты должен добавить все недостающие ребра, чтобы сразу после выполнения оператора результатирующий компонент уже был полным графом.
В чём смысл? Полный (это так называется) граф задаётся только количеством вершин. Количество рёбер -- просто n(n-1)/2, где n - кол-во вершин.
Объединить компоненты -- получится n1+n2, а рёбер надо добавить n1n2. Нахуя тут такой оверинжинирнг, классы-хуяссы, методы.
Братюнь, но для желателей попердолиться из D никуда не убирали malloc и free.
А для сцылок в стандартной библиотеке есть RefCounted.
Ну и если стандартные GC-шные массивы не устраивают - есть std.container.Array, который без GC.
https://dlang.org/phobos/std_experimental_allocator.html
Самый красивый метод на данный момент.
У меня 2 встречных вопроса:
1) Почему тебя ебёт наличие gc, когда говорится о синтаксисе? Это кресты без костылей, в которых есть всё из 17-го которого все ждали, а не который вышел.
2) Где gc будет реальным ботлнеком в области плюсов? В тех же риалтайм рендерах память не аллоцируется и от крестов там только перегрузка операторов и наследование. Всякую системную хуйню вроде сервера на epoll/kqueue проще и быстрее писать на сях чем на бусте. Остаётся ещё пользовательский софт на Qt.
Хотя нахуй я это пишу, ты же фанатик ебаный у которого плюсы единственный инструмент. Вчера вот на лоре был тред, http://www.linux.org.ru/forum/development/12456605?lastmod=1458888841671 — у сишника попа подгорела. Почитай, ты вот так же со стороны выглядишь.
Я так и делаю, но мне нужно знать сколько рёбер прибавилось. И хочется это делать в одну строчку вместе с +=.
Без класса делал. Где-то сделал ошибку и программа иногда работает неправильно. Теперь хочу с классами. С ними понятнее. Перед сложение нужно ещё их в вектор добавить и отсортировать.
>надо добавить n1n2
Точно. Не сразу понял. Их же можно одной функцией считать. А я 3 раза количество рёбер перечитываю когда без классов делал. Щас так попробую. Спасибо.
>раст даёт возможность по-человечески что-то искать в массиве
>кричит что раньше было лучше и жрет дерьмо
>>697633
>видит только высеры про малок
>на конструктивный высер >>697618 ответить не могёт
Он же целый конструктор вызывает!
>будучи тупым фанатиком тыкать объективным человекам про фанатизм
Суть пирдоликав)))
>У оператора new больший функционал чем у malloc
Естественно, он же обертка, расширяющая базовый функционал. Но в D, наверняка, можно сделать еще лучше, ведь туда завезли метапрограммирование.
Но ведь уже показали овердохуя вещей, которые там можно.
Можно юзать малок как в си.
Можно юзать аллокаторы как в крестах.
Можно юзать подсчет ссылок.
Можно блять наконец юзать стандартный ГЦ-шный new.
Тупой фанатик все равно на говно истечет.
Тоже не понимаю его фанатизма. Кресты сейчас используют только из-за переносимости, количества библиотек и лучшего инструментария, а не каких-то особых качеств языка.
>Хотя нахуй я это пишу, ты же фанатик ебаный у которого плюсы единственный инструмент.
Лал, зашел в крестотред со своим самоваром и называет всех фанатиками. Фанатик тут только ты.
Нет, это ты какой-то недоумок.
Дишники по большей части - бывшие/текущие крестовики. Схуяле они не должны сюда заходить?
Про пересекающиеся множества учительница по математике в школе не рассказывала еще?
А у тебя шо, стадное мышление? Язык надо юзать не ради качеств и удобства, а потому что "везде используют"?
Кресты, по секрету - тоже редко где используют нынче. Все больше жаба да пистон.
При чем здесь стадное мышление? Я потрачу 200+ часов, чтобы хорошо разбираться в этом языке. И что дальше? Нигде в коммерческом софте я это не применю. В некоммерческом - тоже (я обычно не страдаю хуйней по написанию велосипедов и вкладываюсь в существующие проекты)
Так вот, нахуя мне тратить столько времени на это? Мне и так есть что изучать вместо не особо востребованного языка.
>Кресты, по секрету - тоже редко где используют нынче
Охуительные истории. Весь фундаментальный софт по типу компиляторов или вебсерверов пишется на C++. Ну или на С.
Памятка ньюфагу, пункт 5. Заходить в тематические треды сраться о языках может только dаун.
Пусть сидят в своем D треде и обсуждают D там. Хотя, по-моему, человеку который предлагает как замену плюсов язык с GC вообще не стоило бы заходить в /pr/
>язык с GC
Вроде же пришли к выводу, что GC можно не использовать.
Но все равно: у языка мало преимуществ перед C++, чтобы его нужно было изучать и использовать.
> можно не использовать
Исходя только из предоставленых ссылок это довольно смелый вывод. То что ты можешь создать один класс не управляемый GC еще не значит что GC не будет использован рантаймом. Если язык разрабатывался с учетом использования GC то при его отключении часть языка неизбежно отвалится. Откуда мы приходим к тому что язык должен изначально быть спроектирован с учетом опциональности GC. И стандартная библиотека должны быть реализована таким образом чтобы не требовать для своей работы GC. И сторонние библиотеки не должны (опционально) его использовать. Ведь какой смысл создавать неуправляемый GC объект, если при передаче его в какой-то метод сторонней библиотеки она инстанциирует несколько десятков классов управляемых GC. Такое поведение нихуя не похоже на "GC можно не использовать".
Я заходил не за этим.
Кто то попросил пояснить за раст и D - я пояснил, а у какого-то фанатика подгорело.
Скажи, зачем нужно не использовать GC ВООБЩЕ? Любишь анальные извращения?
Ну а возможности не использовать его там, где он будет являеться бутылочным горлышком - там учтены.
Ссылку дашь на патчи? Посмотреть хочется.
Дианон чего? У тебя там реальное имя/фамилия в профиле?
И если ты не школьник дениска попов, у йоба-разработчик-компиляторов - чего ты боишься дианона? "Йо посоны, он в шланг патчи шлет - го затравим!" - так чтоле?
Вот здесь: "По сравнению с D, это кресты - пидорская хуета для любителей сверхжесткой анальной ебли. D - это кресты, сделаные нормально.", ты ничего не написал, ты сделал эмоциональный dаунский наброс, как и положено dауну и бабе.
Лал, если бы ты, животное, умело бы читать - увидел бы что изначально вопрос стоял о крестах, потом просто было сравнение и кто-то протёк говном увидев заветные буковки "gc".
>>697677
Просто ответь мне на вопросы из >>697618, gcgovnoistekatel blyat'.
>>697673
>Я потрачу 200+ часов, чтобы хорошо разбираться в этом языке.
Если ты знаком с плюсами - тебе нужно посидеть неделюку по часику поковырятся в справочке, чтобы спокойно писать на нём. И да - 200 часов для программирования это вообще нихуя, достаточно каждый день не посмотреть одну лишнюю серию сериальчика/аниме/не скатать в дотку и всё.
.>>697673
>Весь фундаментальный софт по типу компиляторов или вебсерверов пишется на C++. Ну или на С.
Вот именно что на C. На C++ написан только шланг с llvm, и кусочки gcc перетаскивают. И написаны они на C++ ибо есть такая мода, писать компиляторы для языков на самих этих языках.
Вебсерверы - кругом си, как и остальная системщина. Хайлоад хуйлодыч - си с классами можешь поискать доклад о плюсах с highload++ где челики std::string на char[512] меняли ради 8% ускорения функции. Про рендеры и прочее писал выше.
>>697683
Смешно. В 2020 посмотрим как концепты пошлют нахуй ибо сообщество нипамагло(, макросы будут экспортируемы, а контракты, сеть и прочее пошлют нахуй добавив пару математических фишек с ниебически крутым названием.
>>697693
Попросал для таких же дебилов как ты создан пол года назад, работа идёт, а твой мозг не развивается. Нельзя же сделать gc.disable и чистить когда будет возможность.
Итого: животные, плиз. Все люди как люди, а вы как животные истекаете говном на gc не в силах показать где он вам в конкретно вашей области так МИШАЕТ И СВЕРЛИТ.
Самодеанониться на анонимных бордах - это для идиотов уровня илюши. Если тебе нужны имена, пиздуй на хабр.
Я коммичу в буст и ллвм, а ещё я член комитета СтарыхПердуновПлюс (СПП). Пруфов не будет, а то дианон(
>>697707
>как и положено dауну
Братишка, ну зачем так самокретично(
>и бабе
Как что-то плохое сказал, шовинист ((((
Знаешь, почему туда никто не заходит?
Потому что на нем люди просто пишут и не ебутся. А не ссаные студенты/школьники с вопросами "как на крестах сделать элементарнаяхуйнянейм". И не возникают вопросы как не выстрелить себе в ногу, или какой из костыльных велосипедов предпочесть.
>Я коммичу в буст и ллвм, а ещё я член комитета СтарыхПердуновПлюс (СПП).
Я тебе верю, мне похуй, иди нахуй.
Погоди-ка, clay-мудель, ето ти?
>Смешно. В 2020 посмотрим как концепты пошлют нахуй ибо сообщество нипамагло(, макросы будут экспортируемы
Это же TS, а не следующий стандарт. Оно потому и TS, что рано для 17 и поздно для 20. А вообще твои кукареки уровня гадающей циганки на вокзале.
> люди просто пишут и не ебутся
И только лопаются когда кто-то посмел замахнутся на священную корову GC, и предположить что возможно у программиста должен быть выбор как писать свою программу, а не делать только так как ему сказал его властелин, ведь властелину лучше знать как правильно делать и что смысла не использовать GC нет.
>А вообще твои кукареки уровня гадающей циганки на вокзале.
Ну да. Только нам обещали мажорный релиз а после покормили сладким хлебушком.
Зато можно быть уверенным на 9000% что они будут действовать с позиции Абсолютной Обратной Великой Совместимости (с) и как обычно всё будет сделано как велосипед медведя, едущего задом вверх по лестнице.
Ну если господа плюсовики хоть раз за тред написали бы что-то объективное а не издавали вскудахи вроде "ГЦ ЕТА ЗЛО ЗАСТРЕЛИТЬ УБИТЬ ФУУУУ", то может всё стало бы куда лучше.
> ГЦ ЕТА ЗЛО
Кто пишет что GC это зло? Зло - остутсвие выбора. В плюсах можно использовать полностью ручное управление, можно простой refcounting на смартпоинтерах, можно накатить GC (boehm garbage collector, например). У C++ специфическая сфера применения, и для этой сферы само собой разумеется что у программиста должен быть выбор. И предлагать как замену крестам язык с нулевым выбором, потому что властелин решил не использовать GC смысла нет, ну это глупо.
Можно в массиве указатели на поля класса хранить.
> В плюсах можно использовать полностью ручное управление, можно простой refcounting на смартпоинтерах, можно накатить GC (boehm garbage collector, например).
Блять! В D тоже все это можно.
Просто GC - вариант по умолчанию.
В крестах, если ты не используешь GC то он не используется нигде. Из представленых ссылок по D следует только то что ты можешь вручную управлять только своими классами, а рантайм и библиотеки делают что хотят. Это не похоже на дохуя выбор.
Да не бывает выбора, язык или изначально дизайнится для работы без GC (C, C++, Rust), или изначально дизайнится для работы с GC (C#, D, Go), и эти два типа языков друг с другом не пересекаются.
В библиотеке есть RefCount и Unique.
В библиотеке есть аллокаторы.
А ГЦ можно управлять. И вообще:
import core.memory;
GC.disable();
>изначально дизайнится для работы без GC (Rust)
>изначально дизайнится для работы с GC (Go)
Хм...
Двачую. Разве в русте не ГЦ был изначально, который на сцылки в относительно последний момент заменили?
D also provides the mechanisms to write code where the garbage collector is not involved. More information is provided below.
>дизайнится для работы без GC
Раст изначально был языком со сборщиком, просто сейчас его выпилили нахуй "до лучших времён и редизайна" они просто поняли, что сишная аудитория gc не воспринимает ни в каком виде, даже если он только поможет им в их задачах.
>>697747
>Из представленых ссылок по D следует только то что ты можешь вручную управлять только своими классами
Если у тебя есть серьёзное ограничения к требованиям по требуемой мощности выполнения/скорости и gc не подходит - тебе и на плюсах придётся переписывать/писать самому любую нетривиальную задачу, либо использовать си библиотеки вылизанные до байтика а не крестовые велосипеды от любителей вымазать всю память *stream-ами.
>вызвал gc.collect и насладился.
А в сишечке/++ при твоих условиях пришлось пердолится 2 недели, в ожидании когда же ошибка снова произойдёт и сервер вайпнется нахуй.
Тогда ты получишь просто хуевый язык с GC. Самая большая проблема с GC в том, что он "отравляет" код, если твой код течет, то он течет, и далее переиспользовать его уже в проекте "без GC" ты не можешь. Т.е. у тебя возникает код "YobaLanguage который не течет" и "YobaLanguage который течет". И все, язык распался на два диалекта. И 90% библиотечного кода будет течь, потому что программисты народ по умолчанию ленивый.
>>697757
>они просто поняли, что сишная аудитория gc не воспринимает ни в каком виде, даже если он только поможет им в их задачах.
Ты один-в-один purebasic-кун, который то, что его хуесосят, обясняет тем, что вокруг его одни дебилы. Ну да, вся сишная аудитория - дебилы, один ты такой умный, умеешь сборщиком мусора пользоваться. А раз мы все тут такие дебилы, можешь съебешь в свой тред?
>Ты один-в-один purebasic-кун
Ты на него со своим искажённым восприятием куда больше похож.
Я никому не говорил что кто-то долбоёб, я сказал что кое-кто немножко говноед и мазохист, но к умственным способностям это не относится как и условия на которых мозила начала спонсировать раст :3.
Так сказать, что кто-то долбоеб - это недолго, проблема в том, что ты реально считаешь себя умнее сообщества. Таких дебилов полно в общем-то, и ты один из них.
Пример раста как раз показателен. Сначала хотели сделать йоба-язык который и то умеет, и то умеет, и здесь, и этак (что в общем-то всегда бывает среди авторов языков), а к версии 1.0 выяснилось, что gc controlled указатели нахуй не нужны, стд-либа-то задизайнена на работу без GC.
Проблема только у тебя и только в твоём манямирке, в котором ты видишь что я считаю себя умнее всех, при том мне за весь тред ни разу никто адекватно не ответил чем именно им мешает гц, лол.
Сходи предложи помощь бомжу-алкашу - он отреагирует как крестовик на сборщик мусора. Кому-то нравится ПРЕВОЗМОГАТЬ - и он считает это единственным верным мировозрением ислам.
>>697769
Историю изменения до 1.0 сходи глянь. Она так задизайнена потому что 3 года назад они отказались от сборки и с тех пор пидорасили всё что попадалось под горячую руку два года подряд.
Начиная с DMD 2.067 мусорщик можно вообще выключить нахер.
Посмотрел я, что зависит от него - и в принципе все ясно, по сути - new, встроенные массивы и ассоциативные массивы и делегаты.
И непонятно с последним - как юзать делегаты без GC-то?
Все эти разговоры хуйня, когда нет наглядных сравнений производительности больших проектов с и без gc. А поскольку никто не будет специально одинаково писать большой проект с gc и без него, то появляется такая благодатная почва для специальных олимпиад.
Но несмотря на это, могу тебе привести косвенный пример-доказательство.
Возьмем CLion и QtCreator. Открываем через них какой-нибудь охуительно большой проект, например llvm, GCC или UE4. Начинаем анализ проекта и смотрим на потребление памяти и плавность работы.
Лично для меня вопрос эффективности GC уже снят давно. Я неоднократно видел такие сравнения, которые всегда заканчиваются в пользу native-кода
CLion ещё и может гораздо больше, чем QtCreator, так себе сравнение. Почему просто не сравнить андроид с гейфоном?
>при том мне за весь тред ни разу никто адекватно не ответил чем именно им мешает гц, лол.
С хуя ли перед крестохейтером должен кто-то распинаться в С++-треде? Ты ебаный рак, убивающий его, меня за эти годы на бордах крестохейтеры заебали страшно. Задай вопрос в ньюфаг-треде, я тебе отвечу. В конце концов, я тебе ответил и здесь, но у тебя уже бомбит достаточно, чтобы не воспринимать мои слова: GC мешает тем, что создает 2 диалекта языка, код которых работает в одну сторону: GC-код может использовать не GC-код, а наоборот нельзя - будет память течь. Поэтому есть два варианта, или язык становится неюзабельным говном:
>>697772
>Историю изменения до 1.0 сходи глянь.
>native-кода
Хочу заметить, что тут я сравниваю нативный код с ненативным, т.е. это не совсем корректно и в случае с D результаты могут быть другие.
Но сравнения с нативным кодом с GC нет, так что иди нахуй заранее.
Все его возможности основаны на изменении уже построенной языковой модели. А я предлагал сравнивать этапы анализа кода. Вещи они там делают одинаковые.
>при том мне за весь тред ни разу никто адекватно не ответил чем именно им мешает гц, лол.
С хуя ли перед крестохейтером должен кто-то распинаться в С++-треде? Ты ебаный рак, убивающий его, меня за эти годы на бордах крестохейтеры заебали страшно. Задай вопрос в ньюфаг-треде, я тебе отвечу. В конце концов, я тебе ответил и здесь, но у тебя уже бомбит достаточно, чтобы не воспринимать мои слова: GC мешает тем, что создает 2 диалекта языка, код которых работает в одну сторону: GC-код может использовать не GC-код, а наоборот нельзя - будет память течь. Поэтому есть два варианта, или язык становится неюзабельным говном:
Do not use the array append ( ~= ) operator, or use the .length property to enlarge an array that has already been allocated. These rely on GC to free the old array if it has to be reallocated, since there may be aliasing to it somewhere else in the program.
Do not use builtin associative arrays. The only way to free these is by GC.
Most of Phobos and, I believe, Tango, were designed with the assumption that garbage collection is present. Functions in these libraries may leak memory horribly if used w/o GC.
Do not use D2 closures with GC disabled. (Not that you would anyway, for a game.)
Или же в языке GC становится переусложением, которое выпиливают:
This has not, however, been the case in practice. In reality, since the libraries all use owning pointers (~), Rust programmers have to learn them quickly anyhow. And once Rust programmers learn how to use ~ effectively, they quickly find @ relegated to a marginal role, if it’s used at all. ~ has so many advantages: deterministic allocation and destruction, interaction with the standard library, freedom from GC marking pauses, simpler semantics, appendability where vectors and strings are concerned, and sendability across tasks.
Вот и все. И по этой причине ни Boehm, ни C++/CLI не взлетели - ну кому нахуй нужен C++/CLI код, не совместимый в будущем с С++, когда есть C#. И D не взлетел ровно по этой же причине.
>при том мне за весь тред ни разу никто адекватно не ответил чем именно им мешает гц, лол.
С хуя ли перед крестохейтером должен кто-то распинаться в С++-треде? Ты ебаный рак, убивающий его, меня за эти годы на бордах крестохейтеры заебали страшно. Задай вопрос в ньюфаг-треде, я тебе отвечу. В конце концов, я тебе ответил и здесь, но у тебя уже бомбит достаточно, чтобы не воспринимать мои слова: GC мешает тем, что создает 2 диалекта языка, код которых работает в одну сторону: GC-код может использовать не GC-код, а наоборот нельзя - будет память течь. Поэтому есть два варианта, или язык становится неюзабельным говном:
Do not use the array append ( ~= ) operator, or use the .length property to enlarge an array that has already been allocated. These rely on GC to free the old array if it has to be reallocated, since there may be aliasing to it somewhere else in the program.
Do not use builtin associative arrays. The only way to free these is by GC.
Most of Phobos and, I believe, Tango, were designed with the assumption that garbage collection is present. Functions in these libraries may leak memory horribly if used w/o GC.
Do not use D2 closures with GC disabled. (Not that you would anyway, for a game.)
Или же в языке GC становится переусложением, которое выпиливают:
This has not, however, been the case in practice. In reality, since the libraries all use owning pointers (~), Rust programmers have to learn them quickly anyhow. And once Rust programmers learn how to use ~ effectively, they quickly find @ relegated to a marginal role, if it’s used at all. ~ has so many advantages: deterministic allocation and destruction, interaction with the standard library, freedom from GC marking pauses, simpler semantics, appendability where vectors and strings are concerned, and sendability across tasks.
Вот и все. И по этой причине ни Boehm, ни C++/CLI не взлетели - ну кому нахуй нужен C++/CLI код, не совместимый в будущем с С++, когда есть C#. И D не взлетел ровно по этой же причине.
>И непонятно с последним - как юзать делегаты без GC-то?
Заменять тип на alias и писать всё побочками, либо залезть в анус и выделять память маллоком, перемещать её memmove и вызывать как (*hui)().
>>697779
>Возьмем CLion и QtCreator.
1. Второй делает сасай по работе с кодом и не только, причём раз 10;
2. Сравнивать жяву с нативным языком конечно гениально. Особенно в задачах вроде парсинга, когда она не может обойти массив без проверок и тд., так что там ботлнек далеко не в gc (он может произойти только если настроить clion на несколько гб оперативки, которая будет сканироваться вчено).
>Я неоднократно видел такие сравнения, которые всегда заканчиваются в пользу native-кода
А я неоднократно видел баги и няшности вроде фрагментации кучи, особенно с распространением смартпоинтеров. Бывает, чо.
>>697783
>С хуя ли перед крестохейтером должен кто-то распинаться в С++-треде?
Наверно потому что я не хейтер внезапно действующий плюсовик, а пытаюсь получить ответ.
>Ты ебаный рак
Лан даун)
>Поэтому есть два варианта, или язык становится неюзабельным говном:
Про то, что это можно разделить в отдельные бинарники и тд мы не слышали, ну ладно, ты, даун всё равно читать не умеешь.
>Наверно потому что я не хейтер внезапно действующий плюсовик, а пытаюсь получить ответ.
А ты думаешь мало хейтеров, получающих деньги за кресты? Это самая днищенская порода людей: кресты они ненавидят, но профессиональный скилл слишком низкий, чтобы зарабатывать деньги тем, что они любят. В итоге вместо роста скилла происходит отравление окружающей действительности миазмами своего лузерства.
>Про то, что это можно разделить в отдельные бинарники и тд мы не слышали, ну ладно, ты, даун всё равно читать не умеешь.
Так так, ну-ка поподробнее. И как ты между этими бинарниками будешь общаться, через RPC что ли?
>Так так, ну-ка поподробнее. И как ты между этими бинарниками будешь общаться, через RPC что ли?
Загружу как динамическую библиотеку или запущу с нужными параметрами или воспользуюсь одним из 9000 способов межпроцессного взаимодействия вроде пайпов или общей памяти. Всё лучше и быстрее пишется, чем пихать 2 разных диалекта языка в один анус и сидеть с отладчиком на простате.
>кресты они ненавидят
Умозаключение о ненависти после того, как я сказал что есть что-то лучше? Ещё один господин-манямирок.
>но профессиональный скилл слишком низкий, чтобы зарабатывать деньги тем, что они любят
Эх. Прозвучало ахуенно, но тупо.
>Загружу как динамическую библиотеку
Ну да, ты это имел в виду. Динамические библиотеки - это просто динамически прилинкованный код, который с точки зрения языка мало отличается от статически прилинкованного. И оно здесь тебе ничем не поможет. RPC - поможет, только здесь возникает вопрос, нахуя мне D, когда у меня есть C++, в котором любая (любая) фича языка и элемент стандартной библиотеки работает без GC без всяких компромиссов (включая std::function, например), и, допустим, один из милларда управляемых языков с толстым рантаймом и батарейками - от пайтона до Java?
>Умозаключение о ненависти после того, как я сказал что есть что-то лучше?
"Сходи предложи помощь бомжу-алкашу - он отреагирует как крестовик на сборщик мусора.". Себя ты крестовиком не считаешь, ты оппонируешь крестовикам. Потому что ты сам - dаун, который вынужден пользоваться крестами, ведь деньги-то за D платить не будут.
>няшности вроде фрагментации кучи
Как там в 2007? Если ты встречаешься с такой проблемой сейчас, то ты должен использовать кастомные аллокаторы by design. Проблема высосана из пальца.
>1. Второй делает сасай по работе с кодом и не только, причём раз 10;
>2. Сравнивать жяву с нативным языком конечно гениально.
Как я уже писал выше:
- возможности работы с кодом на этапе парса ничего не решают.
- принеси сравнение нативного gc-языка с просто нативным и тогда поговорим. Ах да, никто же не написал крупного проекта на нативном gc-языке.
Забыл, прости.
>работает без GC без всяких компромиссов (включая std::function, например)
Охуенный пример - std::function срет в кучу если замыкание больше 24 байт. Если ты будешь массово их использовать, производительность у тебя будет хуже, чем со сборщиком, который все убивает за один прием. То же самое с Qt, где ехал пимпл через пимпл. В плане производительности можно топить за метапрограммирование, но тут кресты у ди сосут с причмоками.
http://stackoverflow.com/questions/21094052/how-can-i-create-a-stdfunction-with-a-custom-allocator
> включая std::function, например
Говно твоя std::function
В ди можно ПРОСТО писать вложенные функции, а не создавать over9000 нечитаемого синтаксического шума.
С чего бы это? Это же не текущие кресты с его любимым "segmentation fault"
Схуяли они будут течь, если GC циклические ссылки убивать умеет? Течь будут крестовые лямбы, если поймают смартпойнтеры друг на друга.
std::function - это обертка вокруг лямбда-выражений. Можно легко написать свою реализацию, которая будет работать с памятью, как тебе хочется.
Лалка, а поддержку обычных функций ты тоже хочешь писать? Ну удачи, чо. Я написать обертку на std::function, чтобы удобно передавать аллокаторы и не буду ебать себе мозг.
>нахуя мне D, когда у меня есть C++, в котором любая (любая) фича языка и элемент стандартной библиотеки работает без GC без всяких компромиссов (включая std::function, например), и, допустим, один из милларда управляемых языков с толстым рантаймом и батарейками - от пайтона до Java?
>А В D У НАС НЕ НУЖЕН STD::FUNCTION У НАС ВСЕ КРАСИВЕНЬКО
>Но ведь течь же будет без GC
>ИДИОТ ЭТО КРЕСТЫ ТЕКУТ А В D ЕСТЬ GC
Как видно, уровень dауна не позволяет ему следить за дискуссией вообще.
>>697861
Ввиду того, что вас таких двое, я считаю это не случайным совпадением, а статистикой.
foo = new int;
foo = 1;
goo = new int;
goo = 3;
foo = goo + 3;
foo = goo;
goo = 5;
foo = goo + foo;// я насчитал 11
cout << foo; // а выдаёт 10
Что за хуйня, анон? Как выходит, что в foo оказывается 5, а не 6?
Ты че, ебанутый? Зачем дублировать уже написанную функциональность? Ну не хочешь аллокатор каждый раз передавать, напиши wrapper
на ideone залей
Наверняка у него кучу звездочек сожрало.
Проебался с разметкой, сорри
[code]
int foo, goo;
foo = new int;
foo = 1;
goo = new int;
goo = 3;
foo = goo + 3;// 6
cout << foo;
foo = goo;
goo = 5; // 5
cout << goo;
cout << foo;
foo = goo + foo;// 11
cout << foo;// 10!
[/code]
И вот на всякий случай - http://ideone.com/c4xrBM
Заменить на счетчик ссылок - и не будет течь, схуяле?
>Зачем дублировать уже написанную функциональность?
Затем, что стдлиб++ не всегда можно использовать.
>И оно здесь тебе ничем не поможет.
И почему же?
>фича языка и элемент стандартной библиотеки работает без GC без всяких компромиссов
А ещё это морально устаревший язык, в котором вместо изменений только добавляют костыли. Хочешь плюсы без легасиговна 40 летней выдержки - бери и пиши на D.
>от пайтона до Java
Если не хочешь тащить с собой 300мб вм, получасового прогрева и убивать нахуй производительность/оперативку.
Алсо, я бы посмотрел как ты интерфейсить между друг другом их будешь, особенно когда нужно сделать вызов из плюсов в жяву, а не наоборот.
>>697817
>Себя ты крестовиком не считаешь, ты оппонируешь крестовикам.
Нет, я просто не фанатик как ты. Ты кстати идеально подошёл бы под эту картину, как и 4/5 всех плюсовиков - ничего УБИРПИРФОРМАНСНОГО не пишут, но срут кровью от двух букв одной аббревиатуры. Сказали что синтаксис лучше - говорят сами себе ГЦ и срут кровью. Слышат попытки дискутировать как человеки а не животные - срут кровью на предложившего, он не из их стаи, хотя говорит на их языке.
>Потому что ты сам - dаун
Самое топовое оскорбление, чем больше повторяешь - тем смишнее. Четыре десятка айкью видимо, простора для размышления не дают.
>>697818
>возможности работы с кодом на этапе парса ничего не решают.
Зато решает что на яве банально объекты толще и всё работает через вм, лол.
Когда в qtcreator завезут хотя бы анализ кода на лету (который в лионе не хуже чем в студии, которая кстати почти не лагает) напиши это ещё разок что лион кококо лагаит, а не сравнивай хуй с пальцем.
>Проблема высосана из пальца.
Ну ты иди, создай массив с умными указателями. Позавидуешь скорости питона. И тебя никакой jemalloc в такой ситуации не спасёт.
Препод запретил?
Юзай буст, лалка
Олсо, ты заебешься писать аллокатор для чисто стековой лямбды.
>Зато решает что на яве банально объекты толще и всё работает через вм, лол.
>...
Ты тупая мразь, я сказал, что сравнение некорректно, еще до того, как ты начал свое кукареку. Повторю для тебя-жопочтетца еще раз: неси сравнение GC-native с native и тогда побеседуем.
>Ну ты иди, создай массив с умными указателями.
И? Что произойдет-то? Если объектов мало - похуй. Если объектов много и они помещаются в оперативку - похуй. Если объектов так много, что вылетает bad_alloc, то а хуле ты хотел-то? Юзай пулл с кастомным распределением памяти.
>И? Что произойдет-то?
Почитай что такое фрагментация памяти. И подумай что будет когда хотя бы треть из них удалится.
>Если объектов так много
То что будет когда у каждого СВОЙ счётчик?
>Ты тупая мразь, я сказал, что сравнение некорректно, еще до того, как ты начал свое кукареку.
Сам сравнил и сам обосрался, ок, вопросов нету.
>Повторю для тебя-жопочтетца еще раз: неси сравнение GC-native с native и тогда побеседуем.
Вопрос: как их сравнивать, если одинаковые стратегии работы с памятью использовать некорректно?
>Почитай что такое фрагментация памяти.
Лол, ты сам-то читал? О фрагментации надо заботиться, когда у тебя объекты больше страницы.
>Если объектов мало - похуй
Как минимум GC убьет их сразу, а со смартпойнтерами - по одиночке. А в каждом объекте может тоже быть смартпойнтер на что-то еще.
>И почему же?
Я написал в предыдущем предложении того же поста.
>А ещё это морально устаревший язык, в котором вместо изменений только добавляют костыли.
Ты главное повторяй это почаще. Гляжишь, и работа появится, и D-тред дойдет до бамплимита 26 раз.
>Хочешь плюсы без легасиговна 40 летней выдержки - бери и пиши на D.
Я лучше Scala возьму, на ней хоть работа есть, а общего с С++ примерно столько же. Ну или C# с await/async и linq.
>Нет, я просто не фанатик как ты.
Это я что ли пришел в D-тред и стал нахваливать С++? В чем заключается мой фанатизм? Я отлично знаю достоинства и недостатки С++, и так же знаю, что отсутствие GC - это его killer feature, а никак не наоборот.
>Ты кстати идеально подошёл бы под эту картину, как и 4/5 всех плюсовиков - ничего УБИРПИРФОРМАНСНОГО не пишут, но срут кровью от двух букв одной аббревиатуры.
На С++ я пишу только уберперформанс (мой софт один из самых быстрых в мире на рынке), но с чего ты взял, что я пишу только на С++? Я много на чем пишу, выбирая язык под задачу, у D задач нет, для языка с GC он очень отстал от жизни, без GC он превращается даже не в С++, а в plain C.
>Почитай что такое фрагментация памяти. И подумай что будет когда хотя бы треть из них удалится.
Повторяю для аутистов:
- Если объектов мало - похуй.(мало памяти теряется)
- Если объектов много и они помещаются в оперативку - похуй. (либо потери памяти малые, либо paging устранит последствия фрагментации, либо не устранит и потери большие, тогда см. пункт 3)
- Если объектов так много, что либо тебе не похуй на потери памяти, либо ее уже тупо нет, то юзай пулл с кастомным распределением памяти. Дефрагментирующие процедуры GC тебя в этом случае все равно будут неприемлемы.
>Вопрос: как их сравнивать, если одинаковые стратегии работы с памятью использовать некорректно?
Щито? Тебе говорят, что GC гарантированно увеличивает расход памяти и делает паузы в работе программы из-за очистки или дефрагментации by design. А ты отвечаешь, что все хуйня, GC очень редко делает программу медленнее и все такое. На что у меня вопрос: где найти такую программу на native с GC, которая будет работать хотя бы сопоставимо с обычным native языком?
>О фрагментации надо заботиться, когда у тебя объекты больше страницы.
Точнее, когда будет много страниц, которые только немного заполнены. А если пустые промежутки в фрагментированной виртуальной памяти будут давать пустые страницы, то реальный расход памяти будет сопоставим с логическим. Новый блок памяти будет просто выделен в другой части адресного пространства. Слава б-гу, что адресное пространство 64-битное
Да нет, просто у аллокатора внутре и так пулы под размеры объектов по степеням двойки. Пока ты туда укладываешься, фрагментации нет.
Тогда причем здесь страницы? Это само по себе выполняет дефрагментирующую функцию
там где foo = goo должно быть @foo = @goo (@ - звезда), чтобы было 11
Когда объект в пул не влезает (обычно если он больше страницы), то может уже быть фрагментация при большом количестве таких аллокаций.
Я не пойму, при чем страницы. Пул это просто большой кусок памяти. Если объект не влезает, можно увеличить пул. Но страницы-то здесь причем? Они как и раньше служат для поддержки многоуровневой памяти. И как свойство - некоторые проблемы фрагментации виртуальной памяти могут быть устранены.
>Я написал в предыдущем предложении того же поста.
Хуйню написал.
>Гляжишь, и работа появится, и D-тред дойдет до бамплимита 26 раз.
А ещё на TIOBE в топе висят языки вроде дэльфи, перла и бэйсика, очень показательно показательно.
>на ней хоть работа есть
1 контора на всё СНГ? Особенно много работы на ней будет после того, как её спонсор отмежевался от неё и направился н жяву.
>а общего с С++ примерно столько же
Сколько? Нихуя? Ехал воид имплицит через имплицит?
Ты на самый главный вопрос не ответил:
>Если не хочешь тащить с собой 300мб вм, получасового прогрева и убивать нахуй производительность/оперативку.
>Алсо, я бы посмотрел как ты интерфейсить между друг другом их будешь, особенно когда нужно сделать вызов из плюсов в жяву, а не наоборот.
>На С++ я пишу только уберперформанс
Пропруфай чтоле. Хоть направление скажи.
>отсутствие GC - это его killer feature
>без GC он превращается даже не в С++, а в plain C.
Самое весёлое в том, что весь самый быстрый код на плюсах это няшная обёрнутая классами, а самый производительный и фундаментальный софт пишется на ней. Плюсы были неплохи лет 20 назад, когда альтернативы не было, сейчас они слишком высокоуровенны и слишком низкоуровенны одновременно благодаря неспешности старых пердунов.
>>697916
>А ты отвечаешь, что все хуйня, GC очень редко делает программу медленнее и все такое.
Учебник по русскому языку там -> google.com
>где найти такую программу на native с GC, которая будет работать хотя бы сопоставимо с обычным native языком?
Любой микросервис на Gовне, хз что ещё тебе сказать из реального софта. Иди скорость компиляции dmd посравнивай там с любым плюсовым компилятором, лол.
Сервис Application Experience включи.
Пулы растут постранично. Страницы, отведенные под пулы тоже могут фрагментироваться, но очень медленно. Поэтому пока объекты влезают в пул, фрагментация минимальна. Если объект не влезает в пул, аллокатор выделяет ему нужное количество страниц вне пула. При его освобождении (если заняты следующие за ним адреса), образуется дыра в адресном пространстве, которая может быть занята только объектом меньшего размера. При большом количестве таких дыр память фрагментируется - свободная память есть, но кусочки ее слишком маленькие, что там разместить объект.
>Хочешь плюсы без легасиговна 40 летней выдержки - бери и пиши на D.
Ну да, жаль только что оптимизатора не завезли. И либ. И из-за GC нельзя писать системы реального времени (надеюсь понятно почему?). А так все хорошо, язык будущего, который уже 10 лет на месте стоит. Нахуй этот D нужен когда есть Rust? Он в отличае от D действительно движение в перед.
И кстати, не 40 лет, а 30.
>>697947
>А ещё на TIOBE в топе висят языки вроде дэльфи, перла и бэйсика, очень показательно показательно.
Да, ты прав, перл и делфи люди используют, некорректное сравнение
>>697947
>Самое весёлое в том, что весь самый быстрый код на плюсах это няшная обёрнутая классами, а самый производительный и фундаментальный софт пишется на ней.
Ну это же наглый пиздеж, не стыдно тебе?
>Ну да, жаль только что оптимизатора не завезли.
Сторонние компиляторы с этим прекрасно справляются будто он тебе чем-то поможет где-то кроме какого нибудь рендера.
>И либ.
У вас буст компилятор уронил. Ой, то есть, в кэш процессора нагенерированное им говно не пролезло.
>И из-за GC нельзя писать системы реального времени
У местных GC головного мозга, и каждая задача должна работать в риалтайме, оно понятно. Только все такие системы пишутся на си, ой.
>>697965
> Нахуй этот D нужен когда есть Rust? Он в отличае от D действительно движение в перед.
Движение вперёд в плане "не дать макаке выебать байтики неаккуратно". Это замена сишечке, слишком низкоуровенно чтобы ставить в одну шеренгу с D.
>Да, ты прав, перл и делфи люди используют, некорректное сравнение
Легаси, как и плюсы. Как в коде, так и в голове.
>Ну это же наглый пиздеж, не стыдно тебе?
Ну ты пропруфай обратное, обоссы мудака.
Похоже, что я с копирующим конструктором что-то напортачил, но он-то вроде есть:
#include <unordered_set>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
class Comparable {
public:
int _weight;
std::string _name;
std::string _surname;
Comparable(const int weight, const std::string &name, const std::string &surname) {
_weight = weight;
_name = name;
_surname = surname;
}
Comparable(Comparable &&other) = default;
Comparable &operator=(const Comparable &other) = default;
Comparable &operator=(Comparable &&other) = default;
};
class Hasher {
public:
size_t operator() (const Comparable &c) const {
return c._name.size() + c._surname.size() << (c._weight & 0x0f);
}
};
class SetComparator {
public:
enum class ComparatorType {
CompareByName,
CompareBySurname,
CompareByWeight
};
SetComparator(ComparatorType type) {
_type = type;
}
bool operator() (const Comparable &first, const Comparable &second) const {
switch (_type) {
case ComparatorType::CompareByName:
return first._name == second._name;
break;
case ComparatorType::CompareBySurname:
return first._surname == second._surname;
break;
case ComparatorType::CompareByWeight:
return first._weight == second._weight;
break;
}
}
private:
ComparatorType _type;
};
std::ostream &operator<<(std::ostream &stream, const Comparable &c) {
stream << c._name << " - " << c._surname << " - " << c._weight << std::endl;
return stream;
}
void main() {
std::vector<Comparable> data{
Comparable(10, "Andrew", "Malkin"),
Comparable(12, "Ivan", "Gusakov"),
Comparable(10, "Shamil", "Huil"),
Comparable(15, "Ivan", "Chkalov"),
Comparable(15, "Maxim", "Huil")
};
SetComparator nameComparator(SetComparator::ComparatorType::CompareByName);
SetComparator weightComparator(SetComparator::ComparatorType::CompareByWeight);
Hasher hasher;
std::unordered_set<Comparable, Hasher, SetComparator> set(20, hasher, nameComparator);
std::unordered_set<Comparable, Hasher, SetComparator> secondSet(20, hasher, weightComparator);
set.max_load_factor(0.8f);
secondSet.max_load_factor(0.8f);
std::cout << "Inserting first set: " << std::endl;
std::copy(data.cbegin(), data.cend(), std::inserter<decltype(set)>(set, set.begin()));
std::copy(set.cbegin(), set.cend(), std::ostream_iterator<decltype(std::cout)>(std::cout));
std::cout << "Inserting second set: " << std::endl;
std::copy(data.cbegin(), data.cend(), std::inserter<decltype(secondSet)>(secondSet, secondSet.begin()));
std::copy(secondSet.cbegin(), secondSet.cend(), std::ostream_iterator<decltype(std::cout)>(std::cout));
}
Похоже, что я с копирующим конструктором что-то напортачил, но он-то вроде есть:
#include <unordered_set>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
class Comparable {
public:
int _weight;
std::string _name;
std::string _surname;
Comparable(const int weight, const std::string &name, const std::string &surname) {
_weight = weight;
_name = name;
_surname = surname;
}
Comparable(Comparable &&other) = default;
Comparable &operator=(const Comparable &other) = default;
Comparable &operator=(Comparable &&other) = default;
};
class Hasher {
public:
size_t operator() (const Comparable &c) const {
return c._name.size() + c._surname.size() << (c._weight & 0x0f);
}
};
class SetComparator {
public:
enum class ComparatorType {
CompareByName,
CompareBySurname,
CompareByWeight
};
SetComparator(ComparatorType type) {
_type = type;
}
bool operator() (const Comparable &first, const Comparable &second) const {
switch (_type) {
case ComparatorType::CompareByName:
return first._name == second._name;
break;
case ComparatorType::CompareBySurname:
return first._surname == second._surname;
break;
case ComparatorType::CompareByWeight:
return first._weight == second._weight;
break;
}
}
private:
ComparatorType _type;
};
std::ostream &operator<<(std::ostream &stream, const Comparable &c) {
stream << c._name << " - " << c._surname << " - " << c._weight << std::endl;
return stream;
}
void main() {
std::vector<Comparable> data{
Comparable(10, "Andrew", "Malkin"),
Comparable(12, "Ivan", "Gusakov"),
Comparable(10, "Shamil", "Huil"),
Comparable(15, "Ivan", "Chkalov"),
Comparable(15, "Maxim", "Huil")
};
SetComparator nameComparator(SetComparator::ComparatorType::CompareByName);
SetComparator weightComparator(SetComparator::ComparatorType::CompareByWeight);
Hasher hasher;
std::unordered_set<Comparable, Hasher, SetComparator> set(20, hasher, nameComparator);
std::unordered_set<Comparable, Hasher, SetComparator> secondSet(20, hasher, weightComparator);
set.max_load_factor(0.8f);
secondSet.max_load_factor(0.8f);
std::cout << "Inserting first set: " << std::endl;
std::copy(data.cbegin(), data.cend(), std::inserter<decltype(set)>(set, set.begin()));
std::copy(set.cbegin(), set.cend(), std::ostream_iterator<decltype(std::cout)>(std::cout));
std::cout << "Inserting second set: " << std::endl;
std::copy(data.cbegin(), data.cend(), std::inserter<decltype(secondSet)>(secondSet, secondSet.begin()));
std::copy(secondSet.cbegin(), secondSet.cend(), std::ostream_iterator<decltype(std::cout)>(std::cout));
}
>Любой микросервис на Gовне, хз что ещё тебе сказать из реального софта.
>микросервис
>микро
>реальный софт
Ох лол. Может еще сортировочку посоветуешь сравнивать?
В целом, ты уже расписался в том, что не можешь доказать свои кукареки о невероятной эффективности GC в реальной жизни:
>хз что ещё тебе сказать из реального софта.
Вывод: не создано ни одного крупного проекта на нативном языке в GC. А GC-бляди все наяривают на свои gc-языки без ниши. Найс.
>Вывод: не создано ни одного крупного проекта на нативном языке в GC. А GC-бляди все наяривают на свои gc-языки без ниши. Найс.
Докер на говне ещё. Чё-то никто не жалуется, только ты вскудахтываешь будто пнули под жёпу.
Ну что, пора чистить говно вилкой легаси.
>Docker
>Набор консольных утилит-оберток над cgroups и namespaces
>Размер репы 86Mb
>Крупный проект
Можешь попытаться еще раз
Прости, признаю поражение. Мой список с твоим списком говнолегаси не сравнится, я проиграл.
>Мой список
А где список-то? Ты назови хоть один большой, высокопроизводительный проект на go или d. Их же просто нет. Все серьезное дерьмо пишут на C или C++.
>Хуйню написал.
Просто с каждый постом мне все меньше охота тебе что-то разжевывать. Ну если ты не понимаешь, что такое динамическая библиотека, что мне, лекцию тебе читать?
>А ещё на TIOBE в топе висят языки вроде дэльфи, перла и бэйсика, очень показательно показательно.
Делфи-треда в /pr/ нет, а С++ - есть, потому что это актуальный и очень полезный язык, изучение которого окупится сторицей. У D же есть пара фанбоев, которым настолько скучно, что они тралят С++-тред.
>1 контора на всё СНГ?
Она хотя бы есть, в отличие от работодателей на D. Хотя не знаю, зачем тебе так рынок СНГ принципиален.
>Сколько? Нихуя?
Exactly. Как и у D.
>Пропруфай чтоле. Хоть направление скажи.
Я на анонимной борде, избавь меня от этого мерянья хуйцами своего авторитета. Я предположений от твоей личности не делаю, твоя дурь видна из твоих постов, но ты почему-то о моей - делаешь, и любые твои промахи показывают больше о тебе, чем обо мне.
Последнее, что я написал (вчера) - это GPU-контейнер, который умеет swap'иться в CPU память при переполнении GPU, по определенной стратегии. Это уберперформанс, и D здесь не пришей к пизде рукав.
>Самое весёлое в том, что весь самый быстрый код на плюсах это няшная обёрнутая классами, а самый производительный и фундаментальный софт пишется на ней.
Типичный баттхерт неосилятора, который я слышу уже много лет. К реальности не имеет никакого отношения, просто передается неосиляторами из уст в уста.
>Плюсы были неплохи лет 20 назад, когда альтернативы не было, сейчас они слишком высокоуровенны и слишком низкоуровенны одновременно благодаря неспешности старых пердунов.
Ну вот опять же, вместо того, чтобы слушать мужиков с опытом программирования больше, чем тебе лет, ты уверен, что ты самый умный и понимаешь в программировании хоть что-то. И ты еще смеешь кого-то фанатиками называть.
>Ты на самый главный вопрос не ответил:
>>Если не хочешь тащить с собой 300мб вм, получасового прогрева и убивать нахуй производительность/оперативку.
Да я давно понял, что D метит в нишу Go - легкие микросервисы без ВМ для дешевых инстансов виртуальных машин (в докере, например). Только, вот какая беда, у Go он сосет тоже, причем по-своему. Да и юзкейс это редкий. Ну и в любом случае это оффтоп. Мне на данный момент важно, что нишу С++ dlang не покрывает вообще никак.
>Хуйню написал.
Просто с каждый постом мне все меньше охота тебе что-то разжевывать. Ну если ты не понимаешь, что такое динамическая библиотека, что мне, лекцию тебе читать?
>А ещё на TIOBE в топе висят языки вроде дэльфи, перла и бэйсика, очень показательно показательно.
Делфи-треда в /pr/ нет, а С++ - есть, потому что это актуальный и очень полезный язык, изучение которого окупится сторицей. У D же есть пара фанбоев, которым настолько скучно, что они тралят С++-тред.
>1 контора на всё СНГ?
Она хотя бы есть, в отличие от работодателей на D. Хотя не знаю, зачем тебе так рынок СНГ принципиален.
>Сколько? Нихуя?
Exactly. Как и у D.
>Пропруфай чтоле. Хоть направление скажи.
Я на анонимной борде, избавь меня от этого мерянья хуйцами своего авторитета. Я предположений от твоей личности не делаю, твоя дурь видна из твоих постов, но ты почему-то о моей - делаешь, и любые твои промахи показывают больше о тебе, чем обо мне.
Последнее, что я написал (вчера) - это GPU-контейнер, который умеет swap'иться в CPU память при переполнении GPU, по определенной стратегии. Это уберперформанс, и D здесь не пришей к пизде рукав.
>Самое весёлое в том, что весь самый быстрый код на плюсах это няшная обёрнутая классами, а самый производительный и фундаментальный софт пишется на ней.
Типичный баттхерт неосилятора, который я слышу уже много лет. К реальности не имеет никакого отношения, просто передается неосиляторами из уст в уста.
>Плюсы были неплохи лет 20 назад, когда альтернативы не было, сейчас они слишком высокоуровенны и слишком низкоуровенны одновременно благодаря неспешности старых пердунов.
Ну вот опять же, вместо того, чтобы слушать мужиков с опытом программирования больше, чем тебе лет, ты уверен, что ты самый умный и понимаешь в программировании хоть что-то. И ты еще смеешь кого-то фанатиками называть.
>Ты на самый главный вопрос не ответил:
>>Если не хочешь тащить с собой 300мб вм, получасового прогрева и убивать нахуй производительность/оперативку.
Да я давно понял, что D метит в нишу Go - легкие микросервисы без ВМ для дешевых инстансов виртуальных машин (в докере, например). Только, вот какая беда, у Go он сосет тоже, причем по-своему. Да и юзкейс это редкий. Ну и в любом случае это оффтоп. Мне на данный момент важно, что нишу С++ dlang не покрывает вообще никак.
>Photoshop
>Autocad
>GCC
>llvm
>Chromium, Firefox, Edge, Opera
>KDE
>все AAA игровые движки
>MS Office
>.NET и множество других компиляторов.
>большинство EDA software
Ты не понял. Старый софт на С++ (которому больше 2-х лет) - это говнолегаси. Новый софт на С++ - это исключения, написанные дебилами. Старый софт на С - это няшный софт, которым все пользуются. Новый софт на С - это СМОТРИТЕ ВСЕ ВОТ ЭТО С А НЕ С++.
Самое забавное, что у любого крестохейтера всегда к этому сводится, даже если он программирует на лиспе, c#, теперь вот D.
Есть некий класс, для которого перегружен оператор <<. Вот его определение:
Foo &operator << (uint32 val) { Method1Name( arg ); return this; } (разметку распидорасит немного)
Соответственно, при выполнении строк
Foo foo;
foo << huipizda;
вызовется то, что стоит в определении перегруженного метода, в моём случае это Method1Name с аргументом huipizda
С этим всё ясно.
Но в классе есть также следующее определение:
operator uint32 () { return Method2Name( ); }
Какой оператор перегружается в этой строке? То есть, в каких случаях вызовется Method2Name?
Функтор, гугли function call operator overload
Перегрузка cast оператора. Будет вызываться в этих случаях:
uint32 mamka = foo;
int mamka = foo;
bool mamka = foo;
double mamka = foo;(sic!)
Т.е. везде где нужен либо uint32, либо где возможно неявное преобразование из этого типа.
Ну если про kde еще можно поговорить(хотя на самом деле топовая opensource оконная система),
то все остальные - лидеры в своей сфере.
Нет, я просто не могу осилить D, пытаюсь временами и нравится. Но потом натыкаюсь на какую-то мелкую проблему и бросаю. Опять же, от библиотек сторонних глаза разбегаются. Хочу следующий проект на D начать. Аллокаторы вроде то ли дописывают еще, то ли только дописали. Спасибо, гляну более пристально. Молодые вы... Вам всё легко.
Выключи комплютер, отойди, подойди, включи, удали.
Лол, что!??! Сборщик мусора? Нахуя?
Что по компиляторам? Есть вроде стандартный dmd и надстройка над clang'ом. Что с перфомансом на личном опыте?
Да вы заебали. Пиздуйте в D-тред.
Мой велосипед из треда олимпиадных задач, как ни странно, быстрее работал под dmd.
dmd лучше умеет в стандарты, но ldc и gdc переносимее - конпелял на планшете с убунтой (dmd нету, ldc писало какую-то хрень, gdc заработало)
Спасибо, пояснили. Вы, анончики, выяснили, что главным отличием является GC, но противоречиво вышло. Алсо, что с внутренними механизмами ООП между C++/D?
С крестами вроде хорошо стыкуется, но точно не скажу - на практике не юзал, только читал доки.
С сишкой стыкуется идеально, по сути D включает в себя подмножество сишки и может юзать все ее библиотеки. Пробовал ковыряться с opengl.
Хотя, похоже то же самое. Объявляешь функцию через extern (c++) - и юзаешь ее.
Короче, сам вот почитай
https://dlang.org/spec/cpp_interface.html
Как дергать кресты из D, и наоборот.
Как в D устроен сборщик мусора? Разве для этого не нужно разрывать контекст выполнения?
Двачую этого. Не используя явную аллокацию(new, placement-new), все проблемы внезапно проходят. Если же очень нужно перфоманса ради радотать с памятью руками, то создаёшь отдельный объект/оборачиваешь стандартными поинтерами. Никаких вроблем и GC не нужен.
Более того, это единственный правильный путь. Тягать new/delete не в конструкторе означает то, что код будет течь при исключениях. Просто у каждого неосилятора в программе сплошные циклические графы всего со всем, да еще и в многопоточной среде с shared state.
https://en.wikipedia.org/wiki/Boehm_garbage_collector
>The collector uses a mark-sweep algorithm.
>Разве для этого не нужно разрывать контекст выполнения?
Да, нужно
Да, если будешь билдить без зависимостей в boost::system (вроде каким-то дефайном отключается).
А вообще, бросай это говно.
Боже, серьёзно, если тебе нужна библиотека http клиента даже не смотри в сторону asio. Это оверархитектурнутое говно - для клиентской части слишком низкоуровенно, для серверной - медленно и перегруженно.
А что можно использовать? Я там нагуглил пару вроде простеньких библиотек, но они сходу не скомпилились так как сраная винда, еще и под mingw, так что я их дропнул. У меня маленькая утилитка для личного пользования, она дергает гугл транслейт. Я изначально сделал на винсокетах чтобы по-быстрому. Все было нормально, пока я не решил с этим ебучим юникодом связаться. Но, в принципе, я уже разобрался, там юникод в utf8 перегоняется и через percent encoding отдается.
vibe.d
SEGMENTATION FAULT
лоло, буст в наше время _уже_ стандарт стандарт по факту
во многих конторах за неуважение к бусту расстреливают, а потом разделывают на мясо неугодных
Такой ты кек.
>стандарт по факту
Разве что в конторках с C++98, где без его костылей никуда.
>а потом разделывают на мясо неугодных
Есть пытка повеселее - посадить этих неверных читать код на бусте, особенно со всеми старыми высерами вроде boost::lambda.
>>698300
Casablanca очень приятная, и имеет более высокоуровенный API, посмотри в её сторону.
Вне шинды тащит. Целую хидер-онли библиотеку тащит, лел.
Если нужно написать клиентскую часть она всё равно в 10 раз лучше чистого асио.
http://pastebin.com/jiqEyQCN
Люблю развернутый код, один хуй нормальный компилятор это говно вот так бы и оптимизировал.
Напиши калькулятор, змейку на псевдографике. Все зависит от того зачем ты их учишь.
Хорошо, не пиши
Открываешь любой сайт с задачами и решаешь. Только решай их не как олимпиадные, нормально. По максимуму используй stl. Пиши классы. Реши так задач 25-30. Потом придумаешь проект для себя и пили его.
Калькулятор я уже простенький на винформах накидал, надо будет ему функциональности добавить еще. А вот змейку попробую, только как консоль очищать? system() использовать не рекомендуют, а clrscr() из conio.h у меня ошибку при компиляции выдает.
Только оно под *nix (и, вроде, в cygwin есть).
Напиши консольный клиент сосача, который умеет находить список проксей и писать и читать мессаги в тред, ебя мочу в ротешник.
Сам думаю заделать такую штуку. Или на Qt, или на дишке.
А если сделать сабж как мобильное приложение - и вовсе наверное популярностью будет пользоваться.
Я шарю в крестах на уровне расчёта факториала на этапе компиляции и понимания зачем нужен виртуальный диструктор. Этих знаний точно должно хватить чтобы писать такое. Но я не умею. Что я упустил? Какую книгу прочитать чтобы научиться?
А упустил я что? Я ведь понятия не имею с чего начать и как закончить. Может есть где-нибудь блог где чел по шагам подробно расписывал как он какой-нибудь мелкий но полезный проект пилил?
Нет. Про разработку хочу почитать. Не полуметровые статьи с хабра, а подробные описания.
>с чего начать
Определить функционал, найти инструмент, спроектировать архитектуру, реализовать, протестировать, повторить
Во вот это хочу читать. Давай на примере. И так чтобы код ещё мог прочитать который получился. Чтобы автор пояснял за каждый свой выбор. Почему он сделал так, а не иначе.
Говно выйдет.
>>699195
Анон кстати что-то такое писал. Когда запускал вайп был бешеный. По посту в секунуд.
https://github.com/anon3341/2ch.hk/blob/test/sage/sage.py
Да. После страуструпа очень легко читался. Пример с лошадями не понятный т.к. не смазано где он указатели на объекты взял. Хотя в коде написал this так и не пояснив что это. единственный косяк что заметил.
В книжках про оси обычно неплохо это описывается (в применении к переключению процессов/механизму страниц/etc). Начни с Таненбаума, а потом глянь там в конце библиографию, если не хватит. Инфа сотка, что там найдутся книги или статьи, где конкретно про диспетчеризацию более подробно.
Специально для твоего случая Г-сподь послал годноту в виде книжки Brown, Wilson - The Architecture of Open Source Applications, в двух частях. Там подробно описано, как строятся настоящие приложения, и, главное, почему они строятся именно так.
У всех поначалу выходит говно, это не просто нормально, а даже необходимо, чтобы ты потом мог сравнивать и видеть свой прогресс. Если от своего кода годичной давности тебе хочется блевать, то ты на верном пути. А если ты будешь ждать, пока по волшебству возникнет Страуструп, и своим хуем вобьет тебе в жопу сакральный опыт разработки, то ты так и останешься на уровне лаб. Царской дороги нет, знаешь ли.
>>698933
>>699271
Блять я придумал как оценить качество треда! Ищем в нём количество благодарностей и вежливостей. Потом ищем в ней количество обзывательств и оскорблений. Ещё надо найти гринтекст. Если текст из него есть в посте на который ответили, то это цитата и игнорим. Иначе это может быть цитата из другого места или оскорбление. Если там есть упоминание мамы или других слов-маяков, то это обзывательство. И ещё можно считать количество удалёных ностов, но сохранённых на архиваче. Тогда можно устроить соревнование между другими тредами или в другой тематике. Это будет здорово. Ну, кто сделает?
Слишком удавопопугаисто.
Книга Дракона. Сорцы llvm, gcc.
как можно с ним работать? где почитать как с ним работать?
ну я работал с /dev/dsp* это я понял что файл, а что в нем? как вытащить битмапу?
А раздавать?
Я бы вписался в такое. Надо только продумать метрики получше, а то мы же на двачах, тут даже в полезном/сочувственном/мотивирующем посте нет-нет, а маму выебут.
1. Можно разбивать нити/доски на тематики LDA или HDP.
2. Посмотреть, что за тематики получились.
3. Проранжировать их по шкале/хорошо плохо.
4. ???????????
5. Подсунуть новую доску/нить.
6. PROFFFIIFFTFTIFITI!!111!!IiIFIFITIfkzdfsd!!!!!!1!
Мало того, что с ней идёт куча лишнего для меня говна, так она просто содержит в себе библиотеку как раз нужную мне которую и так можно найти отдельно.
Нахуй так.
1) Найти инструмент для анализа данных больше подходящий чем плюсы;
2) Сказать об этом в треде;
3) Проскролить 200 постов о том что ты ДОЛЖИН ЛЮБИТЬ плюсы;
4) Отправится в след за дишниками.
Профит.
Понятия не имею что это не читая взял с гугла.
http://www.zlib.net/
http://www.libarchive.org/
По-твоему самый лучший тред - это такой филиал Stack Overflow, где отвечают на тупые вопросы за спасибо? Но SO уже есть и в нем система настроена лучше (дубликаты банят, студентов с домашками банят, хейтеров минусуют). Борды совсем не об этом, на них отдыхают.
Можно ещё за длинопосты была треду начислять, а некрасивую орфографию снимать.
Плюсвать будт рбоот.
Есть способ проще. Много постов - тред хороший, мало постов - плохой. А люди голосуют ногами. Вот и все.
Пхп-тред неплох.
>>699389
ну черт.. я так и не нагуглил в каком формате в /dev/video0 валяется видопоток. ну спасите аноны!
огогог.. етить там кода..
Как это исправить?
Телепаты в отпуске :)
Год.
Тредов пять назад анон подводил статистику употребления "тся/ться" по борде. Крестотред был безусловным лидером по грамотности.
Иногда бинды короче и выразительнее.
Но вообще рекомендуют использовать лямбды, даже если получается длиннее.
К тому же, в C++14 у них няшный capture list запилили.
В новых проектах - да. Легаси которое написано с ними легче продолжать компилировать старым комапилятором и писать с биндами, чем пытаться присунуть туда лямбды.
В С++11 были места, где bind был нужен - полиморфные лямбды, capture-by-move и т. п, в С++14, насколько я понимаю, уже все равно.
Есть глобальная static int матрица, ее нужно транспонировать и тут я застрял. Нужно именно транспонировать оригинальную матрицу, не создавая копий всяких, как это сделать?
std::swap
Просто меняешь местами элементы матрицы.
[code lang="cpp"]for (auto i = 0; i < size; ++i) for (auto j = i+1; j<size; ++j) swap (matrix [isize + j], matrix [jsize + i]);[/code]
Это если квадратная. Для произвольной прямоугольной в любом случае будут копии из-за сдвигов, причем в предельном случае с копией единственного элемента будет охуенно избыточная сложность.
Матрица не квадратная точна, транспонирование нужно только если n > m
http://ideone.com/Wg2Ulv
Выдает кучу ошибок, которые мне не совсем понятны. Заного переписывать код?
[code]for(int i=1;i<n;i++)
for(int j=i;j>0 && a[j-1]>a[j];j--)
swap(a[j-1],a[j]); [code]
Блядь, обосрался.
Файловую систему, пара директив компилятора для отключения ворнингов, пара мат. функций, паральльные алгоритмы в STL. Ещё вроде попросал с человеческими кортежами а не ублюдства из stl не отклонили.
https://ideone.com/dqZ5ze
Сначала capacity 0.
запрос на добавление объекта
память выделяется (capacity 1)
добавляем новый объект в конец
запрос на добавление объекта
память выделяется (capacity 2)
копируем старый объект (вызывается конструктор копирования)
старые данные чистим (вызывается деструктор)
добавляем новый объект в конец
Так?
Да.
Что пишу:
[code]
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("acidalia");
db.setDatabaseName("customdb");
db.setUserName("mojito");
db.setPassword("J0a1m8");
bool ok = db.open();
[/code]
Ошибка:
[code]
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
[/code]
Покапавшись с дебагером и в Интернете осознал, что необходимо вручную добавить в соответсвующую папку библиотеку libmysqlclient_r.so.16. После добавления появилась новая ошибка:
wrong ELF class: ELFCLASS32
Суть ошибки в том, что библиотеку нужно компилировать 32 битным компилятором, а не 64, который стоит у меня. Так вот, как мне скомпилировать эту библиотеку на Ubuntu с учетом того, что у меня система 64 и Qt стоит тоже 64 битный? Поиск в Интернете дал много информации, но мало практического решения, хелп анон. Блять, я пак с няшной-няшей тебе отдам, если ты поможешь
Поставить 32 битный компилятор.
sudo dpkg --add-architecture i386
sudo apt-get install libkompilyator:i386
Попробуй же найти скомпилиную.
Начинаю прогать на плюсах, какой софт самый годный для проганья?
Возвращаться на MFC? Покупать за 49 баксов в месяц нет пути.
почему? с 5.6 только LPGLv3 во всех компонентах, а это и квик контролы в том числе.
Для некоммерческого софта достаточно динамической линковки. Коли он коммерческий – или плати, или пиздуй обратно на mfc в 2005.
Лол, где ты взял такое?
LGPL на то и нужна, чтобы юзать свободные библиотеки в закрытом софте.
Хуй знает. По большей части ничего.
Открывать тебе придется патчи, которые ты внес в САМ Qt. Если вносил.
ЕМНИП, суть этой лицензии - пользователь должен иметь возможность заменить опенсорцные либы по своему усмотрению и не зависеть от того, чего ты внутри них намудрил, так что ты должен обеспечить это. Самый простой способ - динамическая линковка, юзер просто подменит либы на свои.
Открывать саму прогу ты не обязан и никогда не был.
Лан, а какого хуя этот петух ты? вообще набухает? Нистатическая линковка, кококо?
Запахло винапи пидором.
Так вот же, ты ведь взял это откуда-то. Они какой-то тарифный план для стартапов добавили еще и 30-тидневный пробный период для ознакомления.
Еее, теперь ты видишь разницу? Если я вдруг решу продавать даже за один рубль, уже мне нужна коммерческая версия. Это паршиво, согласись.
Ты че, ебанутый?
>Если я вдруг решу продавать даже за один рубль, уже мне нужна коммерческая версия.
Сука, откуда ты это берешь?
Ну, вот же
>Коли он коммерческий – или плати, или пиздуй обратно на mfc
Если коммерческий софт пишу, значит надо коммерческую лицензию, не?
Emacs и Arch Linux.
>>700986
Не, ты ебанутый или как? Они по твоему за грязь из под ногтей работают, как Столлман?
>>700976
Пиши конкретней чтоле.
> Если коммерческий софт пишу, значит надо коммерческую лицензию, не?
Прикинь? Не.
Коммерческую лицензию тебе надо если ты собрался сам Qt менять и не соблюдать LGPL. И если тебе нужны коммерческие плюшки. Например, boot2qt или как он там.
В твоем случае, коммерческая лицензия тебе нахуй не уперлась. Я раньше сетовал на то, что в коммерческой был рендер qml софтварный - из-за его отсутствия в опенсорце приходилось жрать qt quick1.
Но сейчас они кучу коммерческой хуйни в опенсорц перевели.
А чем тогда open-source версия отличается в этом? Тем, что библиотеки можно только динамически линковать?
>Коммерческую лицензию тебе надо если ты собрался сам Qt менять и не соблюдать LGPL. И если тебе нужны коммерческие плюшки. Например, boot2qt или как он там.
Тогда норм.
Что-то с кодфлоу не так. Если переменная локальная, то она нахуй не нужна, иначе она доступна вне скоупа.
Тебе результат функции нужен? Студийный отладчик и gdb умеют показывать значение return
http://www.cplusplus.com/reference/istream/istream/seekg/
>off
>Offset value, relative to the way parameter.
>streamoff is an offset type (generally, a signed integral type).
Что за ебаные формулировки? Как понимать "значение смещение, относительное к параметру пути"?
Смещение относительно направления
Ты можешь указать смещение относительно начала, конца и текущей позиции.
Я не ОП.
Ты не понимаешь, у них все быстро из-за популярности технологий и кучи неофитов, мы же тащим за счет неплохого контента, который привлекает не только студентов которые идут на хуй со своими лабами.
И как в таком случае верно заасертить? другой анон
есть пара вопросов..
1) я смотрю на С++ как на мощный инструмент круче которого нет. И наверное связываю свое будующее с ним мимо прыщевод/20лвл/гуманитаростудент/технарь в душе/кун
но помимо написания программ по курсу С++ за 21*10^3 дней я понимаю что нужно сеч в алгоритмах от стабилизации потоков до алгоритмизации чистых иксов в 4ре строки из которых 2 это
>int main()
>return -1; // мать его eror
вопрос по первому -- больше годной литературы по этой штуке
и по работе с сетями на низком уровне, больно тема интересная
2) коль я хочу обмазаться работой за ничего и елду на какую ide смотреть?
мимо смотрел на qt около 5ти месяцев без библиотек qt ща разговор, просто ide ну куйня без задач!
смотрел на эклипс -- годно но настраивает проект очнь тонко я так понимаю такая ide не для работы больше а для сольного проекта
вопрос -- какой ide обмазываться чтобы взяли на работу?
3) популярные либы вопрос к бустоебам в С++11 стоит ли? просят ли работодатели больше STL?
зы: с голоду ппц умираю.. умею по сути только писать код по разжеванному в пиздец тз. за плечами 15к строк только. + я не плохой прыщееб на уровне rm -rf / не вводи, а dd if=/dev/zero of=/dev/ada0 попробуй. Может это спасет меня?
Как мне заполнить массив в асм вставке числами от 0 до 99, юморист?
Ну смотри, выделяешь весь блок и жмёшь бэкспейс, затем пишешь нормальный код на C++
Скажешь, что он совковый дегенерат, а за ассемблерные вставки в 2016 ссут в ротешник
> Лабы идут нахуй
лабы идут нахуй ему говоришь и все
>>701720
у меня в репах кодблок эклипс и кьют.
есть еще что-то?
мне кажется в 2016ом асм вставки в крестах нужны чтобы зажечь светодиод по шине pci-e в куллере видеокарты.
двачюю крч
Для кулеров видеокарты есть говняшная и чистый ассемблер, кресты там вообще не всрались
я погляжу как ты на асме будншь многопоточный рендер писать...
кресты это достаточно низкоуровнневый язык чтобы ебнуть массив данных на шинку и порулить ими на внешнем устройстве а не внутри православного сипию/озу.
чистый асм нужен почти нигде. разве что при написании ос драйвера к фс и бла бла. но есть граб => чистый асм только для великов
> чистый асм нужен почти нигде.
Тем более же. Кресты и говняшная покрывают весь спектр потребностей.
вероятность того сто ты билдишь не кланг а кланг++ и не замечаешб
Вот именно, что нинужна, по крайней мере в любом kernel mode драйвере они нахуй не упали, когда нужен переносимый ассемблер, с прямым как профиль твоей мамаши поведением.
не пробовал.. ща пробну
А я бампану свой вопрос. Заебали обсуждать ебаный асм, просто помогите и я съебу.
Берешь такой, значит, пишешь на C++ сначала, а потом ДИЗАССЕМБЛИРУЕШЬ и КОПИПАСТИШЬ всю эту срань типа ты такой ВСТАВКУ НАПИСАЛ САМЫЙ УМНЫЙ В КЛАССЕ ПРЕПОД ПОСТАВИЛ 5 И ПОХЛОПАЛ ПО ПЛЕЧУ
Джотаттис, пару дней назад просматривал потоки, там заебись написано, с примерам. А вообще этот интерфейс со смещениями еще из C идет, поэтому в C++ обычно такие моменты не объясняют.
>Джотаттис
Сколько вариантов написания его фамилии я видел. И джосатис, и джосьютис, и теперь джотаттис. Давайте выясним правильное написание и будем использовать его в этом треде.
На forvo нет, но нашел это.https://www.howtopronounce.com/josuttis/ С телефона не могу прослушать. Ещё можно на офсайте и вики посмотреть.
Обсуждать D.
> стандартные методы шифрования
Ишь что удумал, пердолься с опенссл, это тебе не джява бездуховная.
Манямирок – это хуйня, которую ты написал, повторив смысл моего поста.
В самих плюсах по сравнению с си кроме виртуальных функций и ритти оверхеда почти нету.
http://hayageek.com/rsa-encryption-decryption-openssl-c/
>>701936
Таблетки принял? Оверхед это лишнее потребление памяти/скорости, а ты кукарекаешь что классы не нужны и лучше жрать байтопортянки.
Однако если бы можно было писать йоба-функциональный-высокоуровневый код не теряя в ресурсах, то все бы делали именно так, а за байтоебство ссали на еблет.
Только оберини во что-нибудь а-ля XorCryptoHuinya от YobaCryptoHuinya. Как-нибудь потом реализуешь SslCryptoHuinya от YobaCryptoHuinya.
Хорошо.
>Однако если бы можно было писать йоба-функциональный-высокоуровневый код не теряя в ресурсах, то все бы делали именно так, а за байтоебство ссали на еблет.
Если ты бы не был таким ебланом, то ты не писал такой хуйни.
неистово арчюю тебя
>>701924
бля ты пиздец как драйвер пишешь?
>#include<boost/dotnet>
>begin кудахтахтах; boost::кукареку; end;
тебя не говорили что си и кресты и что прога на си/крестах будет
1 -- оптимизированнее
2 -- быстрее
3 -- девелоперы gnu ебашат компилятор чтобы он был охуенней твоих "чистых" masm
4 -- байтоебит на си/крестах онли линковщик и то слабее чем ты наговнишь в MASM своём, сажа тебе
ты еблан? я не юзаю это гавно
Люблю кресты и лично Страуструпа за хорошие книжки и веселые задания. А ещё у вас в шапке стихи пишут. Хороший тред.
мимопроходилв/б/
Это копия, сохраненная 19 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.