Сохранен 524
https://2ch.hk/pr/res/392779.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

cpp

 Аноним 05/10/14 Вск 18:17:50 #1 №392779 
14125186707130.jpg
Вы охуели, где тред?

Здесь мы будем ненавидеть наш любимый язык.

Медитируем над сайдэффектами, насилуем SFINAE, меряемся длинной лога ошибок.

Для затравки: А вот ты, да ты, продавил 11й стандарт в продакшн своей говноконторы?
Аноним 05/10/14 Вск 18:39:45 #2 №392794 
>>392779
Поток новых людей в С++, Java, C# пренебрежимо мал, сейчас все вакансии на PHP/JS/Python/Ruby, потому все учат PHP/JS/Python/Ruby. Хочешь говорить о С++ - воскрешай мертвецов и звони друзьям-пенсионерам.
Аноним 05/10/14 Вск 18:43:53 #3 №392799 
>>392794
Это очередное доказательство того, что статика сосёт у динамики.
Аноним 05/10/14 Вск 18:44:12 #4 №392800 
>>392794
Если ты еще скажешь, что системы с жизненным циклом больше года НИНУЖНЫ, я тебя обоссу.
Аноним 05/10/14 Вск 18:45:06 #5 №392801 
>>392794
А теперь поговорим о вакансиях от сотки.
Аноним 05/10/14 Вск 18:46:53 #6 №392803 
>>392799
Это очередное доказательство, что динамопараша импонирует тому, что объединяет посредственных бизнесменов и посредственных быдлокодеров: неумение видеть дальше сиюминутной выгоды.
Аноним 05/10/14 Вск 18:48:04 #7 №392804 
>>392800
>с жизненным циклом больше года
Как будто на PHP/JS/Python/Ruby нельзя сделать.

Хуева туча всяких социалок, сервисов, тырпрайзов, сетевых демонов и т.д на этих язык работает по 5+ лет и переписываться не будет никогда.
Аноним 05/10/14 Вск 18:48:09 #8 №392805 
>>392801
Поток новых людей туда 0й.
Аноним 05/10/14 Вск 18:49:54 #9 №392807 
>>392803
Два Бурбона этому джентльмену.
Аноним 05/10/14 Вск 18:55:25 #10 №392809 
>>392803
Пока ты там будешь пердеть над типами, динамико-волшебники уже выкатят продукт с достаточным функционалом, срубят все бапки, напишут тесты, отрефакторят и забудут, переходя к новому приложению. Жизнь слишком коротка, чтобы писать на статике.
Аноним 05/10/14 Вск 19:00:01 #11 №392811 
А ты пожалуй прав.
Стартапопараша любого уровня пишется на динамике.

"Обычная" промавтоматика пишется на специализированных языках от вендора железа.

Геймдев никому не интересен.

Только очень взрослый критикалаппликейшн сегодня обоснованно использует плюсы. Обычно некое подмножество, выбранное так, чтоб не злить богов бедствия и несчастий.
К сожалению, люди оттуда не капчуют.
Аноним 05/10/14 Вск 19:03:55 #12 №392812 
Кто-нибудь юзает  Emscripten? Расскажите про общие впечатления.
Аноним 05/10/14 Вск 19:06:34 #13 №392814 
14125215945110.jpg
>>392803
>>392799
Эй, тут элитный клуб любителей плюсов "Голубая устрица"

Стато-динамо-срачь разводите по-соседству.
Здешние завсегдатаи давно определились
Аноним 05/10/14 Вск 19:13:14 #14 №392815 
>>392812
А тебе для чего? Правда интересно.
В моей практике все достаточно ценное легаси-говно, которое сложно переписать, таки не предполагает использование через клиентский веб.
Аноним 05/10/14 Вск 19:14:41 #15 №392816 
Пишу на крестах, когда нужна СКОРОСТЬ. А она нужна часто.
Аноним 05/10/14 Вск 19:28:08 #16 №392824 
>>392815
а ноду мы не используем азаза.
По укурке галлюцинировал следующее - емскриптить все легаси и запускать на JavaEE сервере через втроенный жаваскрипт, а не через jni, как сейчас. Пьюр джава, ебтыбля.

Но как-то очень через жопу выходит.
Аноним 05/10/14 Вск 19:29:03 #17 №392825 
Эту пара еще кто-то использует? Даже ваш гуру ссыт на вас:
http://www.youtube.com/watch?v=48kP_Ssg2eY
Аноним 05/10/14 Вск 19:34:45 #18 №392827 
14125232856380.jpg
>>392825
Мейерс и Александреску однажды наиграются и вернутся в лоно истинной церкви.
Аноним 05/10/14 Вск 19:36:15 #19 №392828 
>>392816
ГДЕ БЕНЧМАРКИ, СУКА?!
Что ты понимаешь под скоростью?
На каком основании ты приимаешь решение, что в данном случае скорости динамопараши не хватит?
Аноним 05/10/14 Вск 19:44:50 #20 №392833 
>>392801
В моем мухосранске на С++ два типа вакансий: 20к студентота, 70к+ матаноебля. 100к и С++ не виделни разу пока, Питон и ява по соточке зато были. Сам сейчас занимаюсь матаноеблей за 80к.
Аноним 05/10/14 Вск 19:47:10 #21 №392834 
>>392833
На моем опыте плюсы от 100 - это матаноебля в обнимку с жабапрайзом.
Аноним 05/10/14 Вск 19:47:55 #22 №392835 
>>392816
В новых проектах пишут прототип на питоне, заменяют черезчур медленный код сишечными биндингами и/или Cython-ом. С++нужен тут только как дополнительный навык.

В старой легасипараше нужна не производительность, а "умение разбираться в чужом коде"
Аноним 05/10/14 Вск 20:04:42 #23 №392839 
>>392815
для тридэ игор
Аноним 06/10/14 Пнд 01:40:00 #24 №392958 
>>392779
Страуструп всегда в кроссовках ходит?
Аноним 06/10/14 Пнд 02:51:48 #25 №392969 
14125495082420.jpg
IDE сравнений го. Юзаю нетбинц+clang 3.4, всем доволен. Подскажите, почему я соснул, должен перейти на кутэкриэйтор/еклипц/vim? Кто пробовал клион от jetbrains, как он, когда будет коммунити версия?
Аноним 06/10/14 Пнд 02:56:13 #26 №392970 
>>392835
И получают в поддержке тормозную кашу с дублированием логики (эта часть в нативном коде, давайте лучше налепим сверху еще один сриптовый воркэранунд).

А cython/shedskin - ограниченно рабочие, чтобы их заставить работать нужно Александреску звать как в фейсбуке с PHP сделали.
Аноним 06/10/14 Пнд 08:17:35 #27 №392991 
>>392970
>
>И получают в поддержке тормозную кашу с дублированием логики
Если писать изначально полностью на крестах, то ничего не получают в поддержке ибо проёбывают все сроки
Аноним 06/10/14 Пнд 16:11:30 #28 №393095 
>>392969
Юзаю xcode, поудобней всяких Нетбинов и кодблоков (особенно с учетом того, что последний не умеет в ретину). На стационарнике юзаю VS. Как универсальный вариант кьютикриэйтор неплох, но там несколько непропорциональный интерфейс, часть рабочего пространства в никуда пропадает, кривоватые шрифты. Большей частью это настраивается, но всеравно не слишком удобно. К тому же он слишком частно выдает бесполезные алерты, навроде предупреждения о сравнивании разных типов переменных.

>>392991
>Если писать изначально полностью на крестах, то ничего не получают в поддержке ибо проёбывают все сроки
Если есть мозги, то ничего не проёбывают. Си++ и вправду не лучший вариант для фронтэнда, но для бэка подходит как нельзя лучше.
Аноним 06/10/14 Пнд 17:30:33 #29 №393106 
>>392969
Зачем тебе коммунити? Бери ультимейт на торрентах. А лучше идею ультимейт + плагин.
Аноним 06/10/14 Пнд 18:55:21 #30 №393122 
Посоны, поясните за PIMPL. Как работает, нахуй нужен?

читал статью нихуя не понял
Аноним 06/10/14 Пнд 19:23:19 #31 №393134 
>>393122
Если коротко, то единственным прайвит-членом твоего класса становится указатель на вспомогательный объект, где уже содержатся все остальные нужные тебе данные. Тогда, как бы ты не менял внутреннюю логику работы класса, (без изменения паблик членов), у тебя не изменится ни интерфейс класса, ни размер объекта этого класса. Удобно при разработке библиотек, особенно если ты их кому-то передаешь без исходников, Если в новой версии меняется только внутрення логика классов, никто ничего не заметит, можно просто переподложить либу.
Аноним 06/10/14 Пнд 19:28:07 #32 №393138 
>>392969
Как ни странно связка VS+cmake плагин почти идеальна по эргономике. Жаль, только под винду.

Под прыщи Eclipse+опять же cmake плагин. В нетбинсе почему-то тормозит подсказка.

Ах да. Система-сборки-срач го! Cmake дает на ротан всем остальным.
Аноним 06/10/14 Пнд 19:34:30 #33 №393144 
>>393138
Xamarin + clang лучше вашего говна для веб-даунов
Аноним 06/10/14 Пнд 19:36:48 #34 №393145 
>>393138
Ну а cmake и вправду лучший, тут не поспоришь
Аноним 06/10/14 Пнд 19:38:08 #35 №393147 
>>393138
Как выучить cmake? Есть ли какие-то must have туториалы и т. д.?
sageАноним 06/10/14 Пнд 19:48:45 #36 №393154 
>>393147
man cmake
Аноним 06/10/14 Пнд 19:52:41 #37 №393155 
КО-КО-КО-КО, Я БАЙТО-ДРОЧЕР БЕРИТЕ МЕНЯ, КО-КО-КО-КО, Я СВЕЖЕНЬКИЙ! КО-КО-КО-КО!!! Я НИМАГУ В НОРМАЛЬНОЕ ОПП, Я МОГУ ТОЛЬКО В ДРОЧКУ, КО-КО-КО-КО!!!
Аноним 06/10/14 Пнд 20:22:30 #38 №393162 
>>393155
>cpp
>байтодрочево
Как там, в 2001?
Аноним 06/10/14 Пнд 22:16:00 #39 №393196 
>>393122
Статью opaque pointer почитай в википедии, это оно и есть. Чтобы отделить мух от крестов, посмотри исходники libtidy на няшной сишечке, там оно активно используется. Суттера про пимпл читай только до того места, где темплейты начинаются, дальше идет муть местечковая.
Аноним 06/10/14 Пнд 22:18:43 #40 №393200 
>>393106
Религия не позволяет, ну и в идее коммунити все есть что мне нужно, надеюсь коммунити клион тоже не будут обрезать сильно.
Аноним 06/10/14 Пнд 22:24:37 #41 №393203 
>>393138
симейк неплох вообщемта, но невероятно раздражает список файлов в каждой папочке - привет из 80-х. Если файлы для каждой платформы положить в свою ветку гита, то простого нерекурсивного мейка более чем достаточно.
Аноним 06/10/14 Пнд 23:43:29 #42 №393260 
>>392779
берешь, выкидываешь удобные плюшки из С, прикручиваешь на саморез в паре мест ООП, мешая семантику и текст с помощью тупого компилятора, делаешь абсолютно неинформативной отладку, пихая всюду, где можно эксепшены в hex, бесполезные сообщения компилятора и выкидывание тебя с access violation в stl вместо твоего кода, охапку дров и С++ готов!
Аноним 07/10/14 Втр 00:14:28 #43 №393302 
>>393260
Можно список выкинутых сиплюшек?

Если ты про:

void fun1(a, b) {
int a;
void b;
}

то это больше похоже на сладкий хлеб, чем на плюшку.

А про сообщения компилятора - будь мужиком, добавь их в GCC сам какие надо - https://gcc.gnu.org/ml/gcc/2014-10/msg00040.html
Аноним 07/10/14 Втр 00:18:26 #44 №393306 
>>393302
как насчет tagged structure? Тоесть по поводу остального возражений никаких нет?
Аноним 07/10/14 Втр 00:35:18 #45 №393311 
>>393306
> tagged structure
> выкинутых
Здесь ошибка компиляции, нельзя выкинуть то, чего нет, в одном из самых распространенных компиляторов (угадать с 1 раза) даже в 2013 версии их нормально не сделали.

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

А stl ты зря обидел, у Степанова какая-то особая трава и stl-коллекции (за исключением vector<bool> который торчки из исоцпп добавили) на удивление трезвые и приземленные.
Аноним 07/10/14 Втр 14:29:59 #46 №393402 
>>393162
> Как там, в 2001?
> подразумевая, что на С++ можно сделать что-то нетривиальное, ни разу не напоровшись на segfault или что-нибудь похуже
Аноним 07/10/14 Втр 14:48:33 #47 №393410 
>>392835
Зачем, можно же всё на Scala написать, если делать это с умом, то всё заебись будет, ведь там можно даже обобщённую арифметику запилить без потерь скорости, используя тайпклассы.
Аноним 07/10/14 Втр 15:37:09 #48 №393429 
>>393410
Только нужную иерархию тайпклассов придётся запилить самому, потому что стандартные не делают @specialize, а следовательно, боксят все инты, флоаты, и прочие примитивы для арифметических операций и сравнений.
Аноним 07/10/14 Втр 16:01:07 #49 №393442 
>>393095
>Си++
>для бэка подходит как нельзя лучше.

В голос.
sageАноним 07/10/14 Втр 17:00:51 #50 №393460 
>>393442
Кто ж виноват, что пидорасы навроде тебя не умеют в нормальное ООП...
Аноним 07/10/14 Втр 18:05:31 #51 №393488 
>>393402
Да можно. Ручное управление памятью для быдла.
Аноним 07/10/14 Втр 18:08:32 #52 №393490 
>>393311
двачую адеквата.
Аноним 07/10/14 Втр 18:09:07 #53 №393491 
>>393203
Не понял тебя, какие списки файлов?
Например....
Аноним 07/10/14 Втр 19:11:49 #54 №393513 
>>393491
Думаю, он имел ввиду CMakeFiles и CMakeCache
Аноним 08/10/14 Срд 03:44:37 #55 №393580 
>>392779
Крестопетухи должны страдать
sageАноним 08/10/14 Срд 06:20:36 #56 №393588 
14127348362010.jpg
Потрогал я ваши си с крестами в большом проекте игорь, FPS. И почувствовал небывалую фрустрацию, депрессию и задушенное на корню творчество. Всё что ни хочется - всё ооочень долго, сложно, муторно и норовит сломать существующий функционал. DRY послан решительно нахуй. Байты выебаны по самые помидоры, аж на пару миллионов строк, хотя видимого функционала глючного как пиздец максимум на 100к. В итоге там делает всю работу 1,5 индуса, остальные только цвета с текстурками поправляют.
Аноним 08/10/14 Срд 14:04:37 #57 №393639 
>>393588
но ты сейчас наехал на говнокод игрули, а не на кресты.
Аноним 08/10/14 Срд 14:07:20 #58 №393640 
>>393513
Дык это все можно в отдельной папке иметь.
Делай сборку в отдельном каталоге, при этом папка с сорцами чиста как 12летняя девственница.
Никогда не позволю ушлепкам, собрающим прямо в папке с исходниками, принять участие в моей жизни. Гоните их, насмехайтесь над ними.
Аноним 08/10/14 Срд 19:45:35 #59 №393723 
>>392779
> продавил 11й стандарт
http://ideone.com/kWzz9x
sageАноним 08/10/14 Срд 19:50:12 #60 №393725 
>>393723
1e1 ;DD
Аноним 08/10/14 Срд 19:53:50 #61 №393726 
14127836305280.jpg
>>393155
>Я НИМАГУ В НОРМАЛЬНОЕ ОПП
"Нормальное" ООП уже лет 10 как умерло.
Аноним 08/10/14 Срд 20:02:38 #62 №393728 
Запощу в профильный тред, так как в ньюфаго треде меня заигнорили. В общем суть.

Антоны, снова вопрос про читерство в игре freelancer. Суть, можно написать аимбот, даже не написать, а просто каким то образом перехватить функцию в игре. Вот нашел копипасту.

> since ive been asked many times how to do it, here a short tut:
> you should be skilled in using C/C++ and some Assembler.

> 1. Locate the function CEGun::Fire() with a disassembler of your choice in common.dll
> 2. Hook it
> 3. In the hook call CEGun::ComputeTgtLeadPosition() with the given thisptr to calculate the Target Vector
> 4. Overwrite the Vector given as Parameter to CEGun::Fire with the calculated one
> 5. Call the original function
> 6. if you want 360° fire, check the returnvalue and replace if necessary - you may do rapidfire etc. with this too.

В общем суть в том, что нужно написать хук на функцию наверно, я не разобрался особо, ничего сложнее вычислительных методов не делал. Инжектор есть, нужно написать саму библиотеку, но как это делать, я не знаю. Посоветуйте кто что может.
Аноним 08/10/14 Срд 21:13:39 #63 №393755 
Мне нужно использовать некоторую библиотку, написанную на Си из кода С++. Как это нужно правильно делать? Как-то хитро нужно подключать файлы?
Аноним 08/10/14 Срд 21:58:20 #64 №393781 
>>393755
extern "C"
{
#include "sishnaya_huita.h"
}
Аноним 08/10/14 Срд 22:31:30 #65 №393790 
>>393639
Вот именно так и отмазываются перлоговноеды от справедливой критики перла.

Да, на с++ можно писать хороший код, но писать говно слишком просто по сравнению с альтернативами.
Аноним 08/10/14 Срд 23:28:34 #66 №393802 
>>393781
Окей, спасибо.
А ты можешь объяснить, как это работает? А то я не очень понимаю.
Аноним 09/10/14 Чтв 10:13:01 #67 №393891 
>>393802
Работает так, что линковщик знает, что функции внутри extern надо подключать как сишные, а не плюсовые.
Аноним 09/10/14 Чтв 18:07:19 #68 №393983 
Как мне не порвав пердак сделать сериализацию в крестиках? Бустоговно не предлагать.
Аноним 09/10/14 Чтв 18:10:16 #69 №393985 
Сосаны, а это правда, что даже c++11 нет нормального кроссплатформенного юникода? Недавно начал пердолиться с плюсами, почитал стековерфлоу и охуел -- 2014 год и нет нормальных кроссплатформенных юникодных строк. И щито делать, как вообще пишут?
Аноним 09/10/14 Чтв 18:25:44 #70 №393990 
>>393985
>>393983
Даа
Крестопидоры должны страдать.

Для сериализации ProtocolBuffers подойдет, возможно.

Нормальный уникод - через boost::locale или какую велосипедную парашу. Стандартного пути нет
Аноним 09/10/14 Чтв 19:26:51 #71 №394008 
>>393985
У них вообще нормальных строк нету, не то что юникодных.
Аноним 09/10/14 Чтв 20:30:39 #72 №394022 
14128722395230.jpg
14128722395231.jpg
c-string
Аноним 10/10/14 Птн 07:05:36 #73 №394165 
>>393990
>ProtocolBuffers
Там богомерзкая кодогенерация без поддержки существующих классов. Не нужно.
Аноним 10/10/14 Птн 07:59:43 #74 №394177 
14129135836460.jpg
>>394022
Оно в сраку вставляется или между булками зажимается?
Аноним 10/10/14 Птн 08:11:11 #75 №394179 
>>394177
Это как ободок для волос, держится за силы сжатия
Аноним 12/10/14 Вск 01:06:37 #76 №394760 
>>394008
Вспоминаю один мой проект на крестах. В нем пришлось иметь дело со следующими видами строк:
1. const char
2. std::wstring
3. ATL::CString
4. BSTR
5. QString

И все это нужно было перегонять между собой. Тут-то я и призадумался.
Аноним 12/10/14 Вск 01:07:33 #77 №394762 
>>394760
>const char естественно
Аноним 12/10/14 Вск 01:13:04 #78 №394768 
14130619847230.png
>>394760

Очевидно же, надо было сделать свои нормальные строки.
Аноним 12/10/14 Вск 01:22:57 #79 №394772 
>>394762
Лал.
Аноним 12/10/14 Вск 01:27:16 #80 №394774 
>>393311
>stl
Этим говном стало можно пользоваться с последнего стандарта, когда лямбды появились. До этого на каждый std::transform нужно было определять целый класс для предиката. Класс этот использовался один раз и определялся далеко от места использования. Каждый раз думаешь - да ну нахуй, я лучше цикл for ебану. В 95 процентов случаев так и поступал. iostream, fstream - это вобще за гранью добра и зла.
Аноним 12/10/14 Вск 01:29:09 #81 №394775 
>>394772
Вакаба съедает звездочку.
Аноним 12/10/14 Вск 13:23:46 #82 №394877 
>>394165
А как ты в языке без рефлексии сделаешь нормальную сериализацию готовых объектов? Страдай.
Аноним 12/10/14 Вск 13:35:35 #83 №394881 
>>394877
Метод запилю.
Аноним 12/10/14 Вск 19:26:23 #84 №394977 
>>394774
Язык с уебищной стандартной библиотекой. Нихуя нет. То что есть - в большинстве своем говно. В итоге все пилят свое. Как результат - несвязанность и отсутствие совместимости. Дискасс.
Аноним 12/10/14 Вск 22:26:27 #85 №395036 
>>393122
Чтобы спрятать детали реализации из хедера.
Аноним 12/10/14 Вск 22:55:04 #86 №395049 
>>394977
>Нихуя нет.
Нихуя нет, потому что запросы у всех очень разные. Стандартная библиотека пытается угодить всем, и в результате не устраивает никого.
Аноним 13/10/14 Пнд 22:27:26 #87 №395374 
>>395049
Просто язык старый и успел широко примениться в то время, когда еще не пришло понимание, что язык без платформы столь же полезен, как половинка проскогубцев. Время было упущено, и проекты, пытавшиеся компенсировать нехватку платформы, типа Qt, так и не стали стандартом. Сейчас уже легче допилить что-нибудь типа D, чем делать полноценную платформу на C++
Аноним 13/10/14 Пнд 22:28:47 #88 №395375 
>>395374
самофикс: плоскогубцев
Аноним 14/10/14 Втр 00:07:05 #89 №395419 
>>395374
>язык без платформы столь же полезен, как половинка проскогубцев
Си - самый популярный язык на tiobe, живет без всякой платформы.
>чем делать полноценную платформу на C++
Зачем? Кому нужен жирный фреймворк, берут Qt. Остальным нужна сишечка с наворотами. К тому же отсутствие искаробочных батареек компенсируется богатством сторонних библиотек.
Аноним 14/10/14 Втр 00:08:30 #90 №395421 
Кстати, кто не видел, Страус предлагает еще сахарку подбавить http://isocpp.org/files/papers/N4174.pdf
sageАноним 14/10/14 Втр 00:55:36 #91 №395445 
>>395421
Прочитал первую страницу. Страуструп увидел паршиал классы в C# и решил, что их=то С++ и не хватало.
Аноним 14/10/14 Втр 01:12:38 #92 №395452 
14132347587600.jpg
Почему страус занимается онанизмом вместо того чтобы зделать реально полезные вещи? Форвард декларации для вложенных класов уже 15 лет жду.
Аноним 14/10/14 Втр 07:09:31 #93 №395492 
>>392827
Александреску высрал STL в качестве диверсии и сбежал.
Аноним 14/10/14 Втр 07:21:16 #94 №395493 
>>393311
Что не так с vector<bool>?
Аноним 14/10/14 Втр 07:50:32 #95 №395496 
http://pastebin.com/ynzQxFuh
Я уже не помню, в чём была проблема, но стоит это запостить. 3898 строк выхлопа GCC.
sageАноним 14/10/14 Втр 08:27:04 #96 №395497 
>>395496
мож скобку где забыл?
Аноним 14/10/14 Втр 10:49:26 #97 №395522 
>>395497
Да, но здесь стоило бы указать на возможную ошибку со скобками, а не выблёвывать все возможные ошибки stl в надежде, что одна из них окажется подходящей.
Аноним 14/10/14 Втр 10:58:11 #98 №395525 
>>395522
Ты впервые с stl ошибку делаешь?
Аноним 14/10/14 Втр 20:21:25 #99 №395642 
14133036854370.jpg
>>392779
Это еще актуально?
sageАноним 14/10/14 Втр 20:23:47 #100 №395644 
>>395642
Знаешь, как это выглядит со стороны?
Представь ситуацию. Господа в смокингах и цилиндрах сидят в обедне и пьют чай, обсуждая катаморфизмы, анаморфизмы, параморфизмы наконец. Тут к ним вползает пьяный вдрызг кучер Ванька. Отплевывая лошадиный навоз, он ссыт под себя, одновременно блюя на пол прокисшим борщом. Затем достает задроченный томик Александреску, найденный на помойке. "Modern C++ Design - вот где мыслЯ, блеать, вот где красота и свежесть!". Смеясь, господа растегивают ширинки и мочатся быдлу в рот. Зовут дворника Ваську - местного лисп-задрота, он спускает крестохолопа с лестницы. Он делает это с удовольствием - хоть зачем-то сгодился элите. Поднимаясь за похвалой, он начинает зациклено бормотать про жидов. Господа для острастки ссут на него, после чего возвращаются к своим светским беседам.
Аноним 14/10/14 Втр 20:28:43 #101 №395646 
>>395642
Это всегда актуально. Думаю, это первая мейнстримная книга о программировании, в которой со всеми пикантными подробностями демонстрируется реализация списков на тайплевеле и операций над ними.
Аноним 14/10/14 Втр 20:32:02 #102 №395648 
>>395644
Ну зачем же так? Это неуважение к ветеранам метапаттернов.
Аноним 14/10/14 Втр 20:33:37 #103 №395649 
>>395642
У АНДРЕЯ всё всегда было через ЖОПУ.
Аноним 14/10/14 Втр 20:37:14 #104 №395650 
>>395649
Не пизди, он делал лучшее, что можно было выжать из С++. Книга начинается с привития читателю философии тайпклассов и демонстракции техник как программировать в таком стиле через специализацию шаблончиков.
Аноним 14/10/14 Втр 20:38:47 #105 №395651 
>>395642
А есть тут кто это прочитал и ПОНЯЛ как эти пользоваться?
Аноним 14/10/14 Втр 20:43:43 #106 №395652 
>>395651
С++ не для неосиляторов языкодроча и метаабстракций. Я не встречал ни одного работающего программиста на С++, не знающего хаскеля и агды. Думаю, таких просто никуда не берут. Это легко сдетектировать по неумению/нелюбви к boost.
Аноним 14/10/14 Втр 23:47:45 #107 №395703 
14133160651230.jpg
>>395652
Андрюха, конечно, умный мужик(без иронии). Предложенные им техники - прекрасная теоретическая проработка возможностей языка. Я когда до буста дорвался - у меня глаза горели. Хотелось использовать все. Это происходило во времена буста версии 1.37. Я начал использовать boost::mpl, boost::lambda, boost::spirit... Программа компилировалась все медленней и медленней, отлаживаться становилось все труднее и труднее. Собщения компилятора не помещались на экран. Я даже не пытался их читать - просто тыкал в то место, где ошибка и понялся понять в чем проблема, анализируя код. Все это стоило мне очень больших затрат нервов и времени. Короче через пот и кровь я уяснил, что в бусте есть очень практичные библиотеки, а есть те, от которых стоит держаться подальше. И зависимость примерно такая - чем эта библиотека ближе mpl и заветам Александреску, тем от нее стоит держаться подальше. Дети, не повторяйте моей ошибки. Если вам нужна сложная логика и высокий уровень абстракции - используйте Хаскель.
Аноним 15/10/14 Срд 00:00:04 #108 №395706 
>>395703
Не слушайте неосилятора. Сейчас все эти штуки из boost'а даже в стандартную библиотеку потихоньку перетекают (type_traits, например). Всё, что связано с дизайном программ, с архитектурой, абстракцией (mpl, typeerasure, concepts, variant) - усугубляют компиляцию не больше, чем использование всяких стандартных vector. От чего действительно стоит держаться подальше - это от библиотек spirit и lambda - вот они без проблем повесят компилятор на ночь в рекордное количество строк кода. А всё почему? Потому что там адова метамагия и программирование неограниченных алгоритмов на шаблонах. В отличие от этих экспериментально-трюкаческих штуковин, использование шаблонов для концептов/тайпклассов и прочих архитектурных вещей о которых было сказано ранее практически никогда не раскрывается с неконстантной сложностью.
Аноним 15/10/14 Срд 00:08:14 #109 №395709 
>>395706
>Сейчас все эти штуки из boost'а даже в стандартную библиотеку потихоньку перетекают (type_traits, например).
Я не против буста, я сам его много его использую.

>Всё, что связано с дизайном программ, с архитектурой, абстракцией (mpl, typeerasure, concepts, variant) - усугубляют компиляцию не больше, чем использование всяких стандартных vector.
Осбенно 5 лет назад, особенно на тех компьютерах, особенно на 2003 студии. Или когда ты пытаешься сделать AST на вариантах. И по мере расширения языка у тебя возможное количество альтернатив boost::variant ВНЕЗАПНО упирается в ограничения библиотеки. Вот это реально нежданчик.

>От чего действительно стоит держаться подальше - это от библиотек spirit и lambda - вот они без проблем повесят компилятор на ночь в рекордное количество строк кода.
Бежать как от огня, тем более сейчас есть нормальные лямбды(ну по стандартам нормальности мира С++ конечно).
Аноним 15/10/14 Срд 00:24:28 #110 №395714 
Единственные 2 автора книг по C++, которых стоит читать - Страуструп и Мейерс. Дискасс.
Аноним 15/10/14 Срд 00:32:05 #111 №395718 
>>395706
И да, кстати. Идея С++ - хуярьте шаблоны, итераторы и прочие абстракции, компилятор сам догадается и уберет лишние слои, там где надо заинлайнит. Так вот - нихуя, акуратное кодирование вручную - почти всегда оказывается быстрее, часто сильно быстрее. Специально проверял. Тут я имею ввиду компилятор от вижуал студии. Другие не проверял. Кагбе в теории - оно красиво получается, а на практике не очень. Ну это если вам нужна суперкорость, конечно.
Аноним 15/10/14 Срд 00:42:20 #112 №395720 
>>395718
Шаблоны тупо текстово раскрываются, так что это нулевой оверхед by construction. Так не могут появиться какие-то дополнительные вызовы или аллокации в отличии от генериков в С#/Java и т.д.
Аноним 15/10/14 Срд 00:48:38 #113 №395722 
>>395720
>>395720
>это нулевой оверхед by construction. Так не могут появиться какие-то дополнительные вызовы или аллокации в отличии от генериков в С#/Java и т.д.

Будет время и желание - я накидаю тебе пример. Сейчас уже спать пора.
Аноним 15/10/14 Срд 00:56:44 #114 №395723 
Зачем вам шаблоны? Они для библиотек.
Аноним 15/10/14 Срд 01:14:25 #115 №395726 
>>395720
>нулевой оверхед by construction
Ты про кэш инструкций забыл, например. Темплейтное программирование адово размер бинарника раздувает.
Аноним 15/10/14 Срд 01:15:45 #116 №395727 
>>395723
Так мы здесь все обобщённые программисты, нам интересно только написание библиотечных вещей космического уровня абстракции. Зачем прикладную хуйню обсуждать? Там и так всё понятно.
Аноним 15/10/14 Срд 01:32:06 #117 №395730 
>>395727
>Там и так всё понятно.
Писать простой читаемый код с необходимым минимумом абстракций очень сложно.
Аноним 15/10/14 Срд 01:38:20 #118 №395731 
>>395730
Не сложно, а трудно - потому что скучно.
Аноним 15/10/14 Срд 01:47:03 #119 №395732 
Тем более "необходимый минимум" - это абсолютно субъективное понятие. Для кого-то никак-не-обходимый минимум - это сишка, потому что у него мышление так устроено, для кого-то - можно больше абстракций, если кода становится меньше, для кого-то - можно больше абстракций, если код становится общней (кто-то скажет, что считается только такая общность, которая с вероятностью выше какого-то порогового значения будет полезной в данном конкретном проекте), для кого-то - ещё что, а кто-то скажет, что вот да, так может и короче и лучше, но нам трудно и вообще лень изучать эти концепции и либы, потому давайте оставим как есть.
Аноним 15/10/14 Срд 01:54:43 #120 №395735 
>>395732
>никак-не-обходимый минимум - это сишка
Для большинства крестовых проектов сишка - самый правильный уровень.
>но нам трудно и вообще лень изучать эти концепции и либы
Проблема в том, что концепции и либы часто компонуются только титаническими костылями, а "общный" код на практике оказывается сложно перепиливать в непредвиденном направлении.
Аноним 15/10/14 Срд 11:57:45 #121 №395786 
>>395493
содержит в себе не байтовые булы, а битовые
удачного каста
Аноним 15/10/14 Срд 16:31:57 #122 №395844 
Самый лучший С++ это Ада. Там есть все необходимое, и нет крестовых излишеств.
Аноним 15/10/14 Срд 21:42:44 #123 №395936 
>>395735
>Для большинства крестовых проектов сишка - самый правильный уровень.
Иди-ка ты нахуй мудак, имел я как-то удовольствие участвовать в чисто сишном проекте. Разработка на сях обязательно заканчивается переизобретением с++, только еще более кривого. В пизду такие развлечения.
Аноним 15/10/14 Срд 22:00:01 #124 №395943 
>>395786
И самая жопа - даже битовые операторы не определены. Ну вот нафига нужен такой bitset, которому нельзя сделать and? Какой тогда в нем смысл-то вообще? Весь его функционал можно сделать на vector<unsigned> и 10 строках кода для вытаскивания битов. И на этом хотя бы битовые операции можно будет делать, и на диск сохранять, и вообще.
Аноним 15/10/14 Срд 22:57:04 #125 №395965 
>>395844
Поясните ещё за Аду. Несколько дней назад от скуки немного почитал про неё и что-то загорелся желанием выучить. Тут вроде и ООП, и какой-то продвинутый менеджмент памяти/объектов, и встроенная многопоточность, и многое сделано для контроля ошибок как на этапе компиляции, так и в рантайме. Потестил немного компилятор (gnat) - выдает код всего лишь немного уступающий в производительности аналогичному сишному. И вроде всё хорошо, единственное, что пока не очень понравилось (или я что-то не очень понял) это то, что при использовании именованных типов аксесс-к-функции иногда получается ошибка "subprogram must not be deeper than access type", при этом с аналогичными анонимными типами всё норм. В общем вопрос в следующем -- нет ли в языке каких-нибудь не очевидных сразу недостатков, которые могут потом заставить меня разочароваться в нем? Просто хочется учить только безупречные языки (не обязательно универсальные, главное -- без серьезных косяков в дизайне, например вот сишка -- безупречный язык).

мимо-сишкоёб-любитель
Аноним 15/10/14 Срд 23:08:09 #126 №395968 
>>395936
>обязательно заканчивается переизобретением с++
Такое случается от переизбытка ООП в мозгу.
Аноним 16/10/14 Чтв 09:19:11 #127 №396053 
14134367519300.png
Ничего не понимаю... И это программисты. Говно какое-то, пидоры, блядь. Sun им дала Java — программируй! Программируй на яве, блядь! Не хочу, хочу жрать говно! Что такое? Это сообщество? Это сообщество? Суки, мудачье — программисты. Память освобождают вручную, говно жрут — пидоры, блядь ебаные...
Аноним 16/10/14 Чтв 10:51:31 #128 №396063 
14134422919320.png
>>396053
Раздался голос со стороны параши.
Ты уже научился элемент в массиве искать?
Аноним 16/10/14 Чтв 11:01:04 #129 №396066 
>>396063
>шёл 2014 год
Аноним 16/10/14 Чтв 12:28:11 #130 №396070 
>>396063
Нинужна.
Аноним 16/10/14 Чтв 12:31:13 #131 №396071 
>>396070
Память экономить и о кэше думать тоже нинужно. Нужно хуярить фабрикиабстрактныхфабрик.
Аноним 16/10/14 Чтв 12:41:38 #132 №396074 
>>396071
Больше байтоёбства!
(int)(ptr) -> a = (int)malloc(i)
ЭТО ЖЕ, ОЧЕВИДНО, СЭКОНОМИМ ЦЕЛЫХ ДЖВА БАЙТА В ПАМЯТИ, И НИ РАЗУ НЕ ТЕЧЁТ
Аноним 16/10/14 Чтв 12:42:13 #133 №396075 
аж с разметкой обосрался
Аноним 16/10/14 Чтв 13:02:55 #134 №396079 
>>396074
На пик >>396063 посмотри внимательно. Оверхед памяти 75%. И в джаве такое везде. Обходится жуткими костылями, поскольку примитивные типы из джававского ООП-мирка выпадают. Компактно данные в памяти ты хранить не можешь, то есть опять же костыли в виде оффхип или массивов примитивов. Значит с производительностью тоже можешь смело прощаться. По крайней мере, до 10-й джавы. И это реальные недостатки, которые никак не обойти, в отличие от сахарка на http://соснули.рф/
Аноним 16/10/14 Чтв 13:06:54 #135 №396080 
14134504143230.png
Вот еще соснулей для джавапетуха. Кококо докупи памяти память дешевая.
Аноним 16/10/14 Чтв 13:07:24 #136 №396081 
>>396079
>Оверхед памяти 75%
Kek. Как часто удваиваются объемы памяти? (Ответ: часто) Как часто удваиваются объемы джавазадач? (Ответ: не часто. Потому что они завязаны на количчество инфы, которую может обработать человек, которое почти не меняется)
Этот оверхед перестал иметь значение много лет назад
Аноним 16/10/14 Чтв 13:08:57 #137 №396082 
>>396079
>Оверхед памяти 75%.
Какие 75%? Возьми пустую строку - будет ОВЕРХЕД 100% ШОК СЕНСАЦИЯ.
Алсо, про STL то молчишь?
Аноним 16/10/14 Чтв 13:09:39 #138 №396083 
И про дешевизну памяти. Память дешева по сравнению с трудом разработчика. Сколько стоит день разработчика? Хотя бы 100 усд, иначе ты хуй простой. Сколько на эти деньги можно купить памяти? Выгодны ли оптимизации по памяти?
Аноним 16/10/14 Чтв 13:11:34 #139 №396084 
>>396081
Это все хорошо для интерпрайза, который сервачков докупить всегда может. На десктопе же у джавы непрерывное сосание. Никто не хочет терпеть калькуляторы, жрущие по 256Мб и запускающиеся 10 секунд.
Аноним 16/10/14 Чтв 13:14:33 #140 №396086 
>>396082
>Возьми пустую строку
Посчитай какой оверхед будет у хэшмепа <String, Double> на 64 битах, например.
>Алсо, про STL то молчишь?
Потому что она гвоздями не приколочена к рантайму.
Аноним 16/10/14 Чтв 13:16:46 #141 №396087 
>>396083
>Сколько стоит день разработчика?
Сколько стоит час в день терпения тормозов для миллионов пользователей, ты посчитал?
Аноним 16/10/14 Чтв 13:28:47 #142 №396088 
>>396083
>Память дешева по сравнению с трудом разработчика.
Например, эклипсом пользуется около 10млн. пользователей. Каждому надо докупить планку памяти на 60 баксов. Получается 6 миллиардов баксов убытков от джаваговна.
Аноним 16/10/14 Чтв 13:30:05 #143 №396090 
>>396088
600млн, сорри
Аноним 16/10/14 Чтв 14:02:33 #144 №396098 
>>396087
Нисколько. Они вынуждены жрать говно, потмоу что если они уйдут к другим, у них не будет работать вообще нихуя пока ничего не разарботано.
Аноним 16/10/14 Чтв 14:05:44 #145 №396100 
>>396088
> Каждому надо докупить планку памяти на 60 баксов.
Логическую ошибку сам найдешь? Нет, наверное, не найдешь.
Во-первых, у большинства памяти уже достаточно. Потому что иклипс не единственная жрущая память программа. Есть еще браузер, написанный, внезапно на сях, игоры, на крестах и прочее, что также требует памяти.
Во-вторых, многие согласны терпеть тормоза, лишь бы не тратить бабло.
Вот и получается, что цифра 600 млн - это огромное преувеличчение.
Аноним 16/10/14 Чтв 14:14:59 #146 №396103 
>>396100
>у большинства памяти уже достаточно
>джава
>достаточно памяти
лол
>не единственная жрущая память программа
Она обычно основная рабочая. К тому же с течением времени, сюрприз, требования к памяти у софта растут. У джава-софта тоже, причем быстрее рынка. Так что лишнюю планку памяти надо будет докупать каждый апгрейд.
>браузер, написанный, внезапно на сях
Память там жрет джаваскрипт.
>Во-вторых, многие согласны терпеть тормоза, лишь бы не тратить бабло.
Получается, деньги тратятся на простой и нервы пользователя. Что вполне возможно дороже планки памяти.
>600 млн - это огромное преувеличчение
Это только для одной программы, заметь.
Аноним 16/10/14 Чтв 14:16:28 #147 №396104 
>>396098
>Нисколько
Вспомни об этом, когда будешь стоять в очереди в госучереждение.
Аноним 16/10/14 Чтв 14:18:12 #148 №396106 
>>396103
> основная рабочая.
Браузер же
> У джава-софта тоже, причем быстрее рынка.
без пруфов ты хуй простой
> Получается, деньги тратятся на простой и нервы пользователя. Что вполне возможно дороже планки памяти.
Конечно дороже. Точно так же как и простои на оптимизацию. QED
Аноним 16/10/14 Чтв 14:19:03 #149 №396107 
>>396104
Лол, постоянно вспоминаю. А дело в чем? В отстутствии конкуренции.
Аноним 16/10/14 Чтв 14:35:17 #150 №396114 
>>396106
>без пруфов
Тебе привели примеры расхода памяти у джавы. На типовых коллекциях оверхед в 75% - рядовое явление.
>простои на оптимизацию
Оптимизация только на компе разработчика вызывает простои, а тормоза неоптимизированной программы - у всех пользователей.
Аноним 16/10/14 Чтв 14:36:46 #151 №396115 
>>396107
>постоянно вспоминаю
И по-прежнему считаешь, что время пользователей ничего не стоит? Это ведь часто и твое время тоже.
Аноним 16/10/14 Чтв 14:45:47 #152 №396120 
>>396115
"Я говно жру - пусть и все жрут"
Аноним 16/10/14 Чтв 15:29:41 #153 №396125 
>>396114
Ты сказал, что потребности джава программ в памяти растут быстрее рынка. Пруфани.
> а тормоза неоптимизированной программы - у всех пользователей.
Только на сервере.
>>396115
Пускай купят железо. Это реалии.
Аноним 16/10/14 Чтв 15:32:14 #154 №396127 
>>396086
>Потому что она гвоздями не приколочена к рантайму
Ты и на жабе можешь брать массивы примитивов
Аноним 16/10/14 Чтв 16:07:52 #155 №396131 
>>396125
>Ты сказал, что потребности джава программ в памяти растут быстрее рынка
Потребности джава программы = потребности нативной программы + оверхед. Потребности нативной программы вырастают на мегабайт, джава программы - два.
Аноним 16/10/14 Чтв 16:11:12 #156 №396132 
>>396127
>Ты и на жабе можешь брать массивы примитивов
Структуры - уже не можешь, без ебли байтбуфером. Плюс из-за отсутствия возможности хоть как-то завернуть работу с примитивами в абстракцию, ебля с ними получается гораздо хуже байтоебства в сишечке.
Аноним 16/10/14 Чтв 16:53:28 #157 №396139 
>>396131
Геометрическая прогрессия, ты можешь в нее?
Сегодня у меня 16 ГБ памяти.
Нативная программа потребляет 1 ГБ, джава программа 2 ГБ.
Завтра у меня будет 32 ГБ памяти, нативная программа будет потреблять 2 ГБ, джава 4 ГБ.
Проценты остались теми же.
Аноним 16/10/14 Чтв 17:35:07 #158 №396143 
>>396139
>Завтра у меня будет 32 ГБ памяти
Вот тогда джава может и взлетит на десктопе. Хотя не факт, учитывая что свинг врожденно тормозной, свт уродлив, а javafx как-то не сильно используют. Олсо, каждой проге на джаве надо запускать свой экземпляр jvm. Это долго, и опять же приводит к повышенному расходу памяти.
Так что у джавы года до 17, когда десятку допилят, шансов на десктопе мало.
Аноним 16/10/14 Чтв 17:38:58 #159 №396145 
>>396143
Ой, лан, 4 ГБ хватает чтоб в майнкрафт поиграть и в идее покодить.
Аноним 16/10/14 Чтв 17:50:28 #160 №396150 
>>396145
Майнкрафт, я думаю, МС теперь на крестах или сисярпе перепишет.
Аноним 16/10/14 Чтв 17:57:39 #161 №396156 
>2014
>десктоп

Аноним 16/10/14 Чтв 18:02:07 #162 №396158 
>>396156
Ты на планшетике код пишешь или с телефона?
Аноним 16/10/14 Чтв 20:24:02 #163 №396173 
>>396150
Лучше 2.
Аноним 16/10/14 Чтв 20:29:03 #164 №396175 
>>396079
Зато пока ты выебешь пару байт (а скорее они тебя), я уже выкачу бету продукта. Потому что код - это инструмент. И если я могу положить на оверхед и память - я это сделаю, зачем мне тратить время на еблю с инструментом. Если я могу топором забить гвоздь - я не буду тратить время на отливку молотка из болванки, и вытачивание к нему ручки (потому что покпокпок зато ты можешь вылить болванку идеально подходящую к нужному тебе типу гвоздей, и эргономичную атропедическую ручку выстругать. И похуй что тебе придется на это дохуя времени потратить, ТЫ ЖЕ МОЖЕШЬ). Как то так.
Аноним 16/10/14 Чтв 20:29:12 #165 №396176 
>>396150
>сисярпе
Та же жаба, только в профиль
Аноним 16/10/14 Чтв 20:37:50 #166 №396180 
>>396176
> только удобнее с кучей ништяков от .NET
Аноним 16/10/14 Чтв 20:47:41 #167 №396183 
>>396080
Овер 80% расходов любой нормальной IT фирмы идет на . Так что не выёбывайся, а иди покупать память.
Аноним 16/10/14 Чтв 20:48:22 #168 №396185 
>>396183
>идет на
на зарплату, конечно же
Аноним 16/10/14 Чтв 21:33:23 #169 №396192 
>>396175
>пока ты выебешь пару байт (а скорее они тебя), я уже выкачу бету продукта
Пока ты неделю ебешься с уродливым говносвингом, чтобы сделать простейшую вещь, я делаю все на Qt за вечер. Пока ты долго и старательно пишешь обертку с байтбуферами для работы с сырыми данными, я легко и быстро все делаю указателями. Пока ты вечер сидишь с профайлером, выискавая утечку ресурса, и подсчитывая ссылочки вручную, я пью кофе, потому что RAII работает с ресурсами за меня.
>если я могу положить на оверхед и память
Быстро нахуярить можно и на С++. Более того, на нем это удобнее делать, чем на жабке, где постоянно приходится спотыкаться об ограничения языка.
Смотрим, например, сюда: https://en.wikipedia.org/wiki/ICFP_Programming_Contest
Посчитай, сколько раз там жабка упоминается.
Аноним 16/10/14 Чтв 21:38:21 #170 №396194 
>>396192
> Пока ты неделю ебешься
> чтобы сделать простейшую вещь
> Пока ты вечер сидишь с профайлером,
> и подсчитывая ссылочки вручную
> где постоянно приходится спотыкаться об ограничения языка.
Ага, точно описание С++
> я легко и быстро все делаю указателями
У тебя потекло.

http://habrahabr.ru/company/xakep/blog/235629/
А это тебе, посчитай, сколько раз Java упоминается.
Аноним 16/10/14 Чтв 21:49:07 #171 №396195 
14134817471280.png
Бляядь, как же я обосрался с ебаного буста. Сука, несколько часов дебажил, гуглил, пытался понять, в чем проблема тут
[code]
#include <boost/spirit/include/qi.hpp>

#include <iostream>
#include <string>

namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;

const auto doubles_parser_global = qi::double_ >> (',' >> qi::double_);

int main() {
const auto doubles_parser_local = qi::double_ >>
(',' >> qi::double_);

const std::string nums {"3.14, 3.15, 3.1415926"};

std::cout << std::boolalpha;

std::cout
<< qi::phrase_parse(
nums.cbegin(), nums.cend(), doubles_parser_local, ascii::space
)
<< std::endl; // sometimes works fine (actually has undefined behaviour too)

std::cout
<< qi::phrase_parse(
nums.cbegin(), nums.cend(), doubles_parser_global, ascii::space
) // this segfaults
<< std::endl;
}
[/code]

Единственное, что нашел - это http://boost.2283326.n4.nabble.com/Problem-with-parser-and-auto-td3354271.html

Чето там коко кукареку dangling references. Просто пушка. Я уже не могу просто инициализировать правило из литералов и констант, потому что оно там чето по ссылкам передает, и они остаются висеть. Вообще охуеть.
Аноним 16/10/14 Чтв 21:51:03 #172 №396196 
>>396195
Спасибо абу за поломанную разметку
Запастбиненный код - http://pastebin.com/04rrjL8R
Аноним 16/10/14 Чтв 21:51:59 #173 №396197 
>>396192
> Посчитай, сколько раз там жабка упоминается.
6 раз. Да и вообще, толсто это всё. Жабка и удобнее С++, и может в библиотеки, в отличии от. Пока ты на одну задачу каждый раз с нуля пишешь специализированные версии всех структур данных и алгоритмов (потому что шаблоны тормозят и ошибки нечитабельные), джавист решит уже 100 таких, 10 более сложных, и напишет ещё 1 библиотеку, которая только усугубит отсос цпп.
Аноним 16/10/14 Чтв 21:56:03 #174 №396198 
>>396194
В С++, как раз, утечки памяти ловятся на раз. Тут для этого куча инструментов. В джаве ты утечку ресурса заебешься ловить, особенно в каком-нибудь монструозном фреймворке.
>потекло
А у тебя OutOfMemory, увеличь хип. Потом увеличь его еще раз. Ведь ты не можешь подсчитать, сколько памяти съела программа. Надо надеяться на лучшее, и увеличивать хип. И докупать память.
>посчитай
Это похоже тот самый один раз, что на ICFPC появился.
Аноним 16/10/14 Чтв 22:01:14 #175 №396200 
>>396195
ну так и в чем дело то?
Аноним 16/10/14 Чтв 22:02:13 #176 №396201 
>>396198
> А у тебя OutOfMemory, увеличь хип. Потом увеличь его еще раз. Ведь ты не можешь подсчитать, сколько памяти съела программа. Надо надеяться на лучшее, и увеличивать хип. И докупать память.

Вернулись сюда вот: >>396175
Аноним 16/10/14 Чтв 22:03:10 #177 №396203 
>>396197
>джавист решит уже 100 таких, 10 более сложных
Скорее, джавист все еще будет писать бесконечные HuyPizda<Ebat, Kolotit> huy_pizda = new HuyPizda<Ebat, Kolotit>();
Аноним 16/10/14 Чтв 22:05:58 #178 №396204 
>>396200
http://boost-spirit.com/home/articles/qi-example/zero-to-60-mph-in-2-seconds/

Какой-то уебанский дизайн библиотеки, пиздец. Можешь почитать комментарии к статье выше. Что-там ссылается друг на друга по ссылкам, кококо, выходит из скоупа, висячие ссылки, кровь кишки распидорасило. И это в моем C++11/14, с rvalue, ага. Не хочу нормальные перегрузки операторов для rvalue - хочу говно с висячими ссылками жрать. В общем насколько я понял из той статьи, надо использовать макрос BOOST_SPIRIT_AUTO, который делает deep copy всех этих спиритовских хуйнь и затем вызывает BOOST_AUTO - костыль/замену auto из буста, сделанный до того, как C++11 стал существовать. Автор спирита вроде как обещает починить это в Spirit 3.
Аноним 16/10/14 Чтв 22:07:45 #179 №396205 
>>396201
У тебя размер памяти ограничен сверху, дурилка. И точно сказать сколько памяти съела программы ты не можешь из-за особенностей jvm. Можно только сидеть, и надеятся, что памяти хватит, или увеличивать хип.
Аноним 16/10/14 Чтв 22:12:08 #180 №396207 
>>396205
>И точно сказать сколько памяти съела программы ты не можешь из-за особенностей jvm
Нука поподробнее расскажи мне, как так я не могу узнать сколько памяти у меня процессу выделено.
Аноним 16/10/14 Чтв 22:15:45 #181 №396211 
>>396207
Ты знаешь сколько памяти всего, но не знаешь достоверно сколько осталось. А добавить еще памяти ты не можешь, без перезапуска jvm.
Аноним 16/10/14 Чтв 22:21:36 #182 №396213 
>>396211
Правильно, лучше сожрать не только всю физическую, но и вритуальную память. Чтоб прям new/malloc нуль пойнтер возвращал.
Аноним 16/10/14 Чтв 22:25:39 #183 №396216 
>>396213
Ага, прочем system-wide. Вот смеху-то будет!
Аноним 16/10/14 Чтв 22:27:07 #184 №396218 
>>396213
>но и вритуальную память
В джаве ты ограничен значением xmx, а не размером виртуальной памяти.
Аноним 16/10/14 Чтв 22:32:58 #185 №396220 
>>396218
Именно. Зато в С++ умелым "менеджментом памяти" можно отстрелить ногу по локоть, всей системе
Аноним 16/10/14 Чтв 22:34:26 #186 №396222 
>>396220
Это как?
Аноним 16/10/14 Чтв 22:44:14 #187 №396227 
>>396222
Займи всю виртуальную память. Тогда все программы, которые не проверяют абсолютно все выделения памяти на хипе попадают к хуям. Hint: таких программ большинство.

Это не говоря уж о том, что тормозить будет абсолютно всё.
Аноним 16/10/14 Чтв 22:45:48 #188 №396228 
>>396227
Я хз, что такое виртуальная память. Это которая в куче? Сомневаюсь, что они попадают - вроде ядро следит за этим и как-то там хитро выбирает в таких случаях кого прибить.
Аноним 16/10/14 Чтв 22:48:13 #189 №396229 
>>396227
>Займи всю виртуальную память.
Как ты это сделаешь на 64 битах? Или ты про то, что у системы физическая память кончится?
Аноним 16/10/14 Чтв 22:52:53 #190 №396230 
>>396229
У тебя своп 4 Тб?
Аноним 16/10/14 Чтв 22:58:13 #191 №396232 
>>396230
Своп - это физическая память. Виртуальной как раз дохуя на 64 битных системах. Олсо сожрать всю память можно и на джаве. Только в нативе я этот процесс могу контролировать, а в jvm - нет. Если только тилибонькать System.gc() на каждый чих и молиться.
Аноним 17/10/14 Птн 03:24:29 #192 №396272 
У меня как-то комп с гигом памяти не потянул netbeans/eclipse (не помню что из этого). Там ещё в интерфейсе был индикатор сборщика мусора и можно было нажать, чтобы началась сборка мусора и всё тормозило.
Аноним 17/10/14 Птн 03:33:54 #193 №396275 
>>396150
>Майнкрафт, я думаю, МС теперь на крестах или сисярпе перепишет.
Есть же http://minetest.net/
Там не особо заметко чт
Аноним 17/10/14 Птн 03:34:33 #194 №396276 
>>396275
..обы он летал по сравнению с майнкрафтом.
Аноним 17/10/14 Птн 10:05:20 #195 №396307 
>>396272
У тян недобук с 2 ГБ и спермой не тянет хром и скайп, аты мне про иде и джаву.
Аноним 17/10/14 Птн 14:43:39 #196 №396369 
>>396307
Выкинул бустоговно(serialization, log) из проекта и бинарник сократился в 3 раза, время линковки раз в 10. Фу блядь, хоть жабу иди учи.
Аноним 17/10/14 Птн 22:35:12 #197 №396489 
>>393990
Обесни за юникод-строки в boost.locale ? Я наверное слишком лоботомирован жабой, но за 5 мин строк там не нашел.

В плюсах icu::UnicodeString использую, брат жив, хотя isBogus и .c_str() для конвертации std::string в icu::UnicodeString мешают. Зато с кроссплатформенностью проблем нет.

Хотет UnicodeString со всеми операциями обернутыми в бросание эксепшенов, может такая есть где в бусте?
Аноним 17/10/14 Птн 22:43:38 #198 №396491 
>>394774
iostream и fstream это не STL, их за 10 лет до STL написали, когда еще эксепшенов не было. И не юзабельные они вообще - фейлбит, названия методов идиотские, нахер не нужный форматированный вывод (строки, сука, конкатенируй же их) и прочая хуита.

Для стримов есть кошерный boost.iostreams - header-only, std:: стримы понимает как родные, есть магический iostreams::read который читает все подряд, указание списка фильтров через pipe и т.п. Я до него считал что буст - это для наркоманов-любителей-spirit-и-mpl. А в итоге оказалось что без iostreams никуда.
Аноним 17/10/14 Птн 22:48:05 #199 №396492 
>>394877
Сгенеришь все на этапе компиляции конечно же, рефлексия - это читерство для тряпок и не крестопуть.

https://github.com/Loki-Astari/ThorsSerializer

Правда тебя за такое на работе побьют (а если удаленщик - то приедут и побьют), поэтому пиши методы сериализации@юзай jansson
Аноним 17/10/14 Птн 22:52:47 #200 №396493 
>>395492
Блджад, причем здесь STL вообще, когда STL писали, Александреску еще люлей от молдован получал после уроков в своей румынской школе.

Он в начале 2000-х высрал пособие по изнасилованию компиляторов и ушел пилить D2, где компиляторы такое делают по согласию.
Аноним 17/10/14 Птн 22:55:47 #201 №396496 
>>395965
Фатальный недостаток - нету открытой и бесплатной реализации (у GNAT какая-то муть в лицензии), отсюда нету коммунити, библиотек, IDE - вообще ничего нету вообщем.
Аноним 17/10/14 Птн 23:03:37 #202 №396503 
>>396132
Два чая адеквату. Байтоебство на жаве - это возможно, но очень больно. Задалбывает отсутствие структур и все API завязанное на объекты - например числа из ASCII потока можно парсить без создания String, но в API только String - как я буду парсить, руками руками парсь, парсь.
Аноним 17/10/14 Птн 23:07:41 #203 №396509 
>>395419
Тиобе - ебанаты, считают статистику по запросам в гугле, соответственно в С там С++, С# и Objective-C входят.

С за пределами ядра линукса - мертв, даже GCC плюсокомпилятором собирают. Сравни уровень хайпа вокруг C++11 и C11 стандартов (inb4, а что есть С11).
Аноним 18/10/14 Суб 00:40:47 #204 №396535 
Написал кейлоггер на крестах. Теперь я успешен?
Аноним 18/10/14 Суб 00:49:25 #205 №396538 
>>396535
Нет. Сначала подсади его своей ЕОТ, укради у нее пароль от вконтакта и потребуй от нее эротических фотографий за возвращение пароля. Фотки выложи сюда как пруф. Тогда ты станешь успешным.
Аноним 18/10/14 Суб 01:02:20 #206 №396540 
>>396535
Только если в кейлоггере есть вариадик темплейты, полиси-бейзд дизайн и отправка кликов по сети через буст.асио. Иначе - безуспешен и мог то же самое на петоне с пивин32 написать в 8 раз быстрее.
Аноним 18/10/14 Суб 01:07:57 #207 №396541 
>>396540
Он записывает нажатия клавиш в лог и отправляет его по smtp мне на мыло. Определяет раскладку клавиатуры, кейлоггера не видно, при первом запуске копирует себя на диск С:\ и добавляет в автозапуск.
Аноним 18/10/14 Суб 01:08:56 #208 №396542 
>>396538
>ЕОТ
Ну ты понял.
Аноним 18/10/14 Суб 03:00:28 #209 №396552 
>>396541
>при первом запуске копирует себя на диск С:\
А User Account Control не против?
Аноним 18/10/14 Суб 03:52:29 #210 №396555 
>>396535
На Дельфи?
Аноним 18/10/14 Суб 06:29:01 #211 №396559 
>>396496

Это всё печально, но для меня не выглядит таким уж фатальным. Лицензия gnat, как я понял, позволяет конпелять опенсурс софт бесплатно (и всё, что угодно - платно), а мне большего и не нужно. Вместо IDE у меня vim, да и вроде есть же GPS какой-то. Вот то, что комьюнити и библиотек нет, это плохо конечно.
Аноним 18/10/14 Суб 06:46:38 #212 №396561 
>>396559
Btw, сейчас ещё почитал про gnat и лицензии, версией gnat-fsf (бесплатной) из состава gnu compilers collection можно конпилять что угодно, в т.ч. и закрытые коммерческие программы.
Аноним 18/10/14 Суб 06:49:49 #213 №396562 
Ебучий буст. Жру его, жру, но то и дело вылезают НЕДОДЕЛКИ, когда оказывается, что он не вполне приспособлен даже к 11 сиплюсплюсу.

В этот раз у меня вылезла вот такая хуйня:
https://stackoverflow.com/questions/22963967/using-boostmake-recursive-variant-with-tuple

Оказывается, их boost::make_recursive_variant полноценно с вариадик-темплейт типами не работает.
Аноним 18/10/14 Суб 08:11:47 #214 №396564 
>>396552
Кейлоггер копирует себя не в корень диска, а в папку юзера "документы".
Аноним 18/10/14 Суб 10:44:50 #215 №396579 
>>396561
Дело не в компиляторе, а в стандартной библиотеке. В GNAT она бесплатная, у AdaCore - бесплатная только для некоммерческого использования.
Аноним 18/10/14 Суб 13:01:45 #216 №396599 
>>396579
>>396561
Вот я и говорю, муть там в лицензии. GNAT вроде-бы свободный, а пилит его компания, которая живет с продажи адского рантайма. Значит где-то подвох и ограничения бесплатно без смс.

В крестах все так хорошо с компилерами, так как GCC (RedHat), Clang (Apple) и MSVS (райнтайм и компилятор, в pro тулзы за деньги) пилят забесплатно, так как для бизнеса полезно. А запилить компилятор и рантайм к нему - это не фунт изюма, почитай почему MS не могли 3 года вариадик темплейты добавить в stdlib. Там какая-то нереальная запредельная стоимость тестирования изменений (я где-то читал про десятки миллионов зелени на 1 цикл тестирования). MinGW вот шипают без тестирования, поэтому в больших кроссплатформенных проектах плачут, плюются, но юзают MSVS.
Аноним 18/10/14 Суб 13:28:51 #217 №396605 
>>396599
>>396579
Они там продают в основном техподдержку как я понял, плюс их IDE (студия) для коммерческого использования доступна только платно (вроде). По лицензиям там 3 версии:
GNAT Pro (платная, компилер, IDE, поддержка) => GNAT-Modified GPL
GNAT GPL (бесплатная, компилер, IDE) => GPL version 3
GNAT FSF (бесплатная, только компилер с либами) => GPL version 3 with GCC runtime library exception

1 и 3 лицензия - аналоги LGPL, т.е. сама софтина GPL, но на исполняемые файлы, слинкованные со стандартной библиотекой GPL уже не распространяется.

Хотя в любом случае такой пиздец может отпугнуть кого угодно.
Аноним 18/10/14 Суб 13:31:07 #218 №396606 
>>396599

Эпл уже забила на шланг.
Аноним 18/10/14 Суб 13:39:20 #219 №396609 
>>396606
С чего это?
Аноним 18/10/14 Суб 13:56:17 #220 №396611 
>>396609

http://www.opennet.ru/opennews/art.shtml?num=40832

Аноним 18/10/14 Суб 14:26:10 #221 №396616 
>>396611
Так это про LLVM. Думаю, им нынешнего уровня развития хватает. А clang и swift они точно не бросять - у них весь тулчейн на них.
Аноним 18/10/14 Суб 14:29:09 #222 №396618 
>>396616

Новость коряво написана. Именно ллвм они, конечно, не бросят, ибо их новые свифт на нем написан. А вот шланг т.е. конпелятор c++ для llvm им теперь нахуй не нужен. Хотя, может просто временно перекидывают разрабов, чтобы добилили свифт.
Аноним 18/10/14 Суб 14:42:49 #223 №396622 
>>396618
Clang - это еще и компилятор Objective-C. С их количеством кода на ObjC, он еще долго будет поддерживаться.
Аноним 18/10/14 Суб 15:13:34 #224 №396625 
У студии вообще есть преимущества перед Qtcreator/KDevelop/CodeBlocks? Не приходилось есть пользоваться, а изучать долго же.
Аноним 18/10/14 Суб 15:15:49 #225 №396627 
>>396622

Поддерживать и развивать вещи немного разные. Очевидно, что всем, кроме эппла нужно второе.
Аноним 18/10/14 Суб 15:20:21 #226 №396630 
>>396627
Я думаю, баги править, и поддержку стандарта развивать там точно будут. На С и С++, уверен, у них тоже кодобаза не маленькая.
Аноним 18/10/14 Суб 16:29:43 #227 №396650 
>>396625

Я бы сказал, что студия удобнее, но это личные вкусы.

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


Лучше поддержка cmake (плагином конечно, но все лучше чем в qtcreator'е - там пиздец, все руками)
Аноним 19/10/14 Вск 00:05:07 #228 №396748 
>>396650
Рефакторинг нормальный из коробки туда уже засунули?
сть у тебя солюшен с кучей проектов. Вот попереходил ты по объявлениям методов (по F12), например, залез в ебеня, а как теперь узнать, в каком проекте ты оказался? Студия тебе только путь до файла покажет, а не проект, в котором он находится (не обязательно проекты по отдельным папкам раскиданы, что в этом случае делать?)
Аноним 19/10/14 Вск 02:48:15 #229 №396774 
>>396748
Запустить нетбинц, открыть проекты в нем, залезть в ебеня, нажать Alt+F1 - в дереве проектов выберется текущий файл.
Аноним 19/10/14 Вск 08:37:49 #230 №396789 
>>392779

Бьярне: "Я глянул, а у него там вот такой хуй!"
Аноним 19/10/14 Вск 08:48:23 #231 №396791 
>>396789

Внезапно нахлынуло продолжение:

Саттер: "О! Опять про члены. Это же моя любимая тема!"

STL: "Я даже одним глазом смогу заценить этот размерчик."

Ханс: "Ya, ya!"

Александреску: "Бля, куда я попал! Тут одни пидары!"
Аноним 19/10/14 Вск 19:30:19 #232 №396923 
14137326193600.jpg
>>392779
нахуя С++ вообще описания ошибок придумал? Писал бы просто "У тебя тут программа сломалась, почини", и строку бы в код в случае дебага крайнем случае написал - один хуй ничего непонятно, когда у тебя выскакивает ошибка вида "%projectname.exe% has triggered a bearkpoint", вылетая где-то в коде stl, а когда ты проходишь по стектрейсу - ты вообще оказываешься в точке конца скоупа, и следующая точка в стектрейсе - это деструктор std::vector, а дальше в стектрейсе твоего кода нет вообще. Нахуя вообще нужен дебаггер, если все равно тебе придется как будто alert'ами угадывать, де у тебя ошибка в коде, потому что хуй что тебе полезного даст информация из эксепшена или стектрейса при дебаге. Почему когда другие языки пытаются облегчить написание кода, и ускорить процесс отладки, выдавая понятные сообщения о том, что пошло не так, в ++ считается нормой срать разработчику в лицо HEX кодами и адресами в памяти (из которых понять можно разве что нихуя), и выкидывать тебя в коде stl или другой стандартной и отлаженной библиотеки, отношения к которой ты имеешь чуть меньше чем никакого? А потом еще удивляются, что разработчики бегут на нормальные инструменты, а тут остаются только самые задроты, готовые целыми днями зубрить HEX коды сообщений, и читать дампы упавших программ, которые ты сам и разработал.
Аноним 19/10/14 Вск 21:05:30 #233 №396990 
>>396774
> нетбинц,
Но ведь мы про студию сейчас говорим.
Аноним 19/10/14 Вск 21:39:49 #234 №397003 
>>396923
>ошибка вида "%projectname.exe% has triggered a bearkpoint"
В голосяндру. Это не ошибка, это ты брейкпоинт в своей говноиде поставил.
Аноним 19/10/14 Вск 22:46:09 #235 №397020 
>>397003
Ты тут самый умный штоли?
http://stackoverflow.com/questions/22125539/c-console-application1-exe-has-triggered-a-breakpoint
Например + у гугла можешь спросить. И в этом все С++ - triggered a breakpoint означает не то, что ты подумал сначала, как и большинство сообщений компилятора/в рантайме, которые ты получишь.
Аноним 20/10/14 Пнд 00:58:15 #236 №397046 
>>396923
Все проще - не шипай юзерам сырое @ пиши тесты @ пускай под valgrind'ом @ юзай тулзы по статическому анализу (говорят в кланге годные)

В такое говно, как ты написал, обычно undefined behaviour вещи падают, которые под валгриндом сразу будет видно. Пиши тесты к кускам программы, пускай тесты под валгриндом, ..., профит.

А то, что у эксепшенов нет стектрейсов - это да, грустнота. Но дорогие они слишком - стектрейсы. Для своих эксепшенов их можно руками собирать (вместе с именем файла, строкой, именем функции и т.п.).
Аноним 20/10/14 Пнд 15:21:01 #237 №397158 
Как правильно предварительные декларации делать? На все мои потуги Incomplete type, а иногда получается случайно.
Аноним 20/10/14 Пнд 17:10:10 #238 №397185 
14138106102090.jpg
Нужно написать небольшую программу, записывающую в файл структуру данных. Вот кот, который я написал: http://pastebin.com/2g8vQAQz. Пишу в MS VS 2010.

Сначала была проблема в том, что по завершении ввода (после ввода группы) программа сваливалась в бесконечный цикл, причём даже не останавливаясь для ввода новых данных, т.е. тупо начинала ебашить вывод "Имя: Фамилия: Год рождения: Группа:", в общем скрин прилагается. Спросил у одного анона что делать, посоветовал перед вводом выбора "Продолжить/прекратить" сделать очистку потока, поэтому добавил сin.sync(); (позже добавил его и с конец функции). Но теперь проблема преобразилась: теперь в цикл функция сваливается не всегда, а лишь иногда. Первый и второй раз программа ведёт себя адекватно, а вот после 2-го (иногда после 3-4-го, т.е. не всегда именно после 2-го) ввода данных вновь сваливается в цикл. Аноны, что делать, подскажите?

В плюсах чайник, вообще туго в них соображаю.
Аноним 20/10/14 Пнд 17:36:06 #239 №397198 
>>397185
http://ideone.com/60JPod
Аноним 20/10/14 Пнд 17:50:29 #240 №397204 
>>397198
Ты зачем говняшный код притащил в крестотред?
Аноним 20/10/14 Пнд 18:32:19 #241 №397222 
14138155398110.jpg
>>397204
Аноним 20/10/14 Пнд 20:56:08 #242 №397252 
>>397158
Бамп вот этому. Есть два класса стула:

http://pastebin.com/SDvpyrLE


Как сделать, чтоб это работало?

"Присутствует слово из спам листе - это еще что за хуйня? Даже /pr/ банить за ++ лексеммы начал?"
Аноним 20/10/14 Пнд 21:24:23 #243 №397261 
>>397252
Как-то так http://pastebin.com/9UaKJewk
Аноним 20/10/14 Пнд 22:09:59 #244 №397274 
>>397261
А разве здесь ты не сделаешь сасай, потому что неполный тип не даст вызывать метод?
Аноним 20/10/14 Пнд 22:10:56 #245 №397275 
>>397274
void::Qwe()
{
aMbr->Amthd ;
}
Аноним 20/10/14 Пнд 22:55:40 #246 №397287 
>>397274
Обязательно сделает. Поэтому в таких случаях надо Amthd и Bmthd делать интерфейсами, и объявлять в третьем файле, а потом включать уже их в A.h и B.h, и наследовать от них А и В. Или делать через темплейты.
Аноним 20/10/14 Пнд 23:12:47 #247 №397299 
>>397287
> C++
> ООП
И ведь продолжают на нем писать...
Аноним 20/10/14 Пнд 23:18:18 #248 №397301 
>>397287
Это правда? Ладно гуарды - их я еще терпел. Ладно, разносить .h и .cpp. Но вот так-то зачем делать? Почему нельзя было дать компилятору немного мозгов? Ну флаг компилятору как минимум какой-нибудь для этого, если ты совсем трясешься над каждым тактом и байтом, чтобы "не платить за то, что не используешь". Ты временем своим за это платишь! Ну вот как такая херня может быть оправдана?
Аноним 20/10/14 Пнд 23:41:55 #249 №397305 
столкнулся с ошибками компиляции
[code]
// LinkedListData - store data in a linked list of objects

#include <iostream>
#include <string>
using namespace std;

// NameDataSet - stores a person's name (these objects
// could easily store any other information
// desired.
class NameDataSet
{
public:
char szName[128];

// the link to the next entry in the list
NameDataSet pNext;
};

// the pointer to the first entry in the list
NameDataSet
pHead = 0;

// add - add a new member to the linked list
void add(NameDataSet pNDS)
{
// point the current entry to the beginning of
// the list...
pNDS->pNext = pHead;

// point the head pointer to the current entry
pHead = pNDS;
}

// getData - read a name and social security
// number; return null if no more to
// read
NameDataSet
getData()
{
// read the first name
char nameBuffer[128];
cout << "\nEnter name:";
cin >> nameBuffer;

// if the name entered is 'exit'...
if ((stricmp(nameBuffer, "exit") == 0))
{
// ...return a null to terminate input
return 0;
}

// get a new entry to fill
NameDataSet pNDS = new NameDataSet;

// fill in the name and zero the link pointer
strncpy(pNDS->szName, nameBuffer, 128);
pNDS->szName[127] = '\0';
pNDS->pNext = 0;

// return the address of the object created
return pNDS;
}

int main(int nNumberofArgs, char
pszArgs[])
{
cout << "Read names of students\n"
<< "Enter 'exit' for first name to exit\n";

// create (another) NameDataSet object
NameDataSet pNDS;
while (pNDS == getData())
{
// add it onto the end of the list of
// NameDataSet objects
add(pNDS);
}

// to display the objects, iterate through the
// list (stop when the next address is NULL)
cout << "Entries:\n";
pNDS = pHead;
while(pNDS)
{
// display current entry
cout << pNDS->szName << "\n";

// get the next entry
pNDS = pNDS->pNext;
}

return 0;
}
[/code]
LinkedListData.cpp:44:37: ошибка: нет декларации «stricmp» в этой области видимости
LinkedListData.cpp:54:42: ошибка: нет декларации «strncpy» в этой области видимости
Как исправить?
Аноним 20/10/14 Пнд 23:43:42 #250 №397307 
>>397305
stricmp - такой хуйни ни в плюсах, ни в c нет.
А для std::strncpy тебе нужно заинклюдить cstring.
Аноним 21/10/14 Втр 00:40:52 #251 №397338 
>>397301
>Но вот так-то зачем делать?
Если у тебя случилась такая взаимная ссылка, то это у тебя беда с архитектурой.
>Почему нельзя было дать компилятору немного мозгов?
Как ты это сделаешь? Чтобы класс А включал поле класса В, он должен знать его размер. А как он его узнает, если В включает А, размер которого еще неизвестен и зависит от В?
Аноним 21/10/14 Втр 03:19:32 #252 №397369 
>>397301
Если у тебя в классе A должен быть член класса B, а в классе B - член класса A, то это невозможно. А вот по указателю или ссылке - возможно. Рекомендую использовать boost::recursive_wrapper.
Аноним 21/10/14 Втр 07:21:03 #253 №397390 
>>397274
С чего вдруг неполный, там же инклуд с полным классом перед ним.
Аноним 21/10/14 Втр 07:58:19 #254 №397391 
>>397338
Что не мешает в C# и Java мне создавать такие вещи.
Вот тебе вполне нормальная задача: в объекте А создается объект В, на который объект А подписывается. Дальше в объекте В создается тред, в котором что-то делается, и периодически вызывается метод А. В шарпе, жабе я могу обойтись двумя классами. И это задачу решит.
Аноним 21/10/14 Втр 08:41:08 #255 №397401 
>>397338
>Как ты это сделаешь?
Двухпроходный компилятор, как во всех нормальных языках.
Аноним 21/10/14 Втр 09:12:55 #256 №397408 
>>397401
Там же не ссылки, а целиком классы друг в друга включены. Бесконечная рекурсия.
Аноним 21/10/14 Втр 10:26:34 #257 №397425 
>>397391
Да, форвард декларейшены это не дохуя изящно. Терпи.

http://pastebin.com/FPaShSSg
Аноним 21/10/14 Втр 13:59:08 #258 №397479 
>>397252
http://pastebin.com/zaPSRAue
Аноним 21/10/14 Втр 18:12:29 #259 №397541 
Может ли GCC сейчас сам проставить константные ссылки там где объект не изменяется?
Аноним 21/10/14 Втр 18:32:01 #260 №397546 
>>397541
GCC 4.8.1 походу нет: http://ideone.com/lN3Dy3

Вчера столкнулся с этим говном, в MSVC нормально работает без const, в GCC - жеппка.
Аноним 21/10/14 Втр 21:55:27 #261 №397605 
>>397408
непонял? Там в объекте А лежит объект Б. А в другом объекте Б лежит объект А.
Аноним 21/10/14 Втр 21:59:38 #262 №397607 
>>397605
А все, теперь кажется понял - в ++ же конструктор Б сработает при создании объекта А в любом случае - ну да, тогда ссылки. Но всеравно, даже по ссылке разве неполный тип мне даст вызвать метод?
Аноним 22/10/14 Срд 02:00:05 #263 №397670 
>>397607
К тому моменту (к файлу с имплементацией), когда ты начнешь описывать, какие там методы у ссылки члена на объект другого класса вызывать, тип уже будет полным.
Аноним 23/10/14 Чтв 11:37:21 #264 №398012 
>>392779
Люблю вставать по утрам обмазываться сообщениями компилятора:

Ошибка 7 error LNK2001: неразрешенный внешний символ ""public: __cdecl MultiCameraDistance::MultiCameraDistance(class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0MultiCameraDistance@@QEAA@AEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@2@Z)"


Аноним 23/10/14 Чтв 13:35:12 #265 №398031 
>>396079
Интересно, жабахейтеры всегда политобляди?
Аноним 23/10/14 Чтв 14:14:14 #266 №398050 
>>398012
Это ошибка линкера, мальчик. Ошибка компилятора спокойно может превысить лимит символов в сообщении здесь.
Аноним 23/10/14 Чтв 14:17:06 #267 №398051 
>>398012
Борис?
Аноним 23/10/14 Чтв 14:18:28 #268 №398052 
>>398051
Ахмед?
Аноним 24/10/14 Птн 01:13:43 #269 №398307 
14140988232190.png
Анон, обесни, зачем в boost::iterator_facade метод dereference (который собственно значение текущее возвращает) сделали const ? http://www.boost.org/doc/libs/1_56_0/libs/iterator/doc/iterator_facade.html#implementing-the-core-operations

Это же ебануться, итератор же дереференсят сразу после создания - т.е. после создания он сразу должен на первый элемент указывать и при dereference не имеет права внутреннее состояние менять. Но блджад, мой итератор всякое говно из сокета читает, я не хочу в конструкторе сокет открывать раньше времени, хочу открыть только когда юзер попросит значение. (можно создать 10 "пассивных" итераторов, которые полезут за данными только когда их реально начнут читать, а не сразу после создания).

STL итераторы без проблем такую штуку позволяют - operator() не обязательно const. Нахрена наркоманы из буста в своих наркоманских NEW ITERATORS здесь const учудили? Ну уебки же. iterator_facade для того и придуман, чтобы можно было всякое говно простым образом оборачивать в итератор. И такие идиотские ограничения.

Я не один такой - http://wordaligned.org/articles/boost-iterator-facade#tocwrinkles , но я так и не понял, как эту проблему по ссылке решили, что блджад значит make mutable, какие нахрен mutable внутри const метода?
Аноним 24/10/14 Птн 01:47:46 #270 №398316 
>>398012
не подкличил какую-то библиотеку из состава opencv. В этой параше они как-то хитро взаимозависимы, поэтому проще сразу все подключить, лол.
Аноним 24/10/14 Птн 05:16:44 #271 №398333 
>>398307
>что блджад значит make mutable
http://www.geeksforgeeks.org/c-mutable-keyword/
Аноним 24/10/14 Птн 14:47:09 #272 №398420 
Как распространять на линуксах не открывая исходники?
Аноним 24/10/14 Птн 14:57:12 #273 №398424 
>>398316
не совсем - просто самописная функция значение не возвращала, вот и не скомпилилась.
Аноним 24/10/14 Птн 15:01:11 #274 №398425 
>>398420
То есть вот я скомпилил бинарник на своём i386, а через ldd можно посмотреть что он ссылается на кучу либ. Как сделать, чтобы он запускался на другой архитектуре с либами других версий?
Аноним 24/10/14 Птн 15:03:36 #275 №398426 
>>398424
Или нет, наврал, тут конструктор. Но такое же вылазило при нескомпиленной функции, а тут я вообще не помню уже, что не работало.
Аноним 24/10/14 Птн 15:28:24 #276 №398440 
>>398425
собирай статическую
Аноним 24/10/14 Птн 15:42:20 #277 №398444 
>>398031
По ссылке не ходи, сразу в тред пиши. Эталонный жабодебил и ньюфаг.
Аноним 24/10/14 Птн 22:26:08 #278 №398581 
>>398333
Спасибо, это оно. Костыли, но здесь так и задумано похоже. Бустоавторы могли бы и упоминуть эту штуку в описании.

Я похоже познал дао - если нужна какая-нибудь библиотека, то она уже есть в Java (и не одна). А если нужна фича языка (virtual base class лол или static polymorphism), то она уже есть в крестах.
Аноним 25/10/14 Суб 00:03:58 #279 №398614 
>>398581
>Бустоавторы могли бы и упоминуть эту штуку в описании
Схуяли они должны упоминать про ключевое слово языка?
Аноним 25/10/14 Суб 00:15:56 #280 №398619 
>>398440
>Линукс
>Статическая линковка
Ты вообще с этой планеты?
Аноним 25/10/14 Суб 00:30:49 #281 №398621 
>>398619
>Линукс
>Бинарные блобы
А ты?
Поставь виртуалку со старой федорой года 2007, и собирай там.
Аноним 25/10/14 Суб 01:11:37 #282 №398628 
>>398621
Удачи с построением списка зависимостей и с мейнтейном.
Аноним 25/10/14 Суб 01:21:54 #283 №398634 
>>398628
>Удачи с построением списка зависимостей
Это пакетный менеджер уже должен разруливать. Можешь положить все либы в папку с программой и установить LD_PRELOAD. Только опять же собирать лучше с древней libc для лучшей совместимости.
Аноним 25/10/14 Суб 01:24:53 #284 №398635 
>>398634
>то пакетный менеджер уже должен разруливать.
Должен, но не разруливает. Мейнтейнер может банально не поставлять либы для статической линковки, число ложных зависимостей вполне может тебе случайно высрать полуторогиговый бинарник без видимых на то причин. Если тебе интересна эта тема - почитай для начала man ar.
Аноним 25/10/14 Суб 01:25:21 #285 №398636 
>>398619
Скайп одно время так и распространялся.
Аноним 25/10/14 Суб 01:32:33 #286 №398640 
>>398634
>>398636
Хотя, что время зря терять, читайте сразу платину:
http://stackoverflow.com/questions/3430400/linux-static-linking-is-dead
Аноним 25/10/14 Суб 02:23:09 #287 №398644 
>>398614
Имелось ввиду, что неплохо упомянуть, что "dereference сделан const" и "будьте бдительны".

mutable, кстати помогает, но плохо, если я хочу иерархию итераторов, то во всей иерархии все методы, вызываемые из родительского dereference должы быть const. Нахрен такие блинчики, не зря эти буститераторы выбросили из стандарта - http://boost.2283326.n4.nabble.com/iterators-New-iterator-concepts-in-TR1-td2614275.html

Заимлементил руками operator_star, != и ++ и успокоился на этом.
Аноним 28/10/14 Втр 19:38:31 #288 №399875 
У меня иерархия Игровая сцена <- Менеджер объектов <- Игровой объект.
Классов сцен несколько и при изменении кода игрового объекта перекомпилируется половина проекта в течении минуты. Как этого избежать?
Аноним 28/10/14 Втр 19:42:38 #289 №399876 
>>399875
Forward declaration же, где-то выше обсуждали.
Аноним 28/10/14 Втр 20:10:36 #290 №399890 
>>399876
Это собственно я спрашивал, а вы начали обсуждать перекрёстные инклуды. Насколько я понял, нужно не только писать class Type; в заголовке, но и дополнительный #include в .cpp файл? Похоже поэтому у меня не работали эти декларации.
Аноним 28/10/14 Втр 20:40:02 #291 №399911 
>>399890
Вроде работает, только енумы не получается объявить.
Аноним 29/10/14 Срд 15:21:31 #292 №400118 
Посоны, задача есть, реализовать передачу файла по сети через сокеты. Консольный клиент и консольный сервер. Клиент загружает файл на сервер, сервер соответственно получает и сохраняет. Продумать иерархию классов и протокол.

1) На крестах есть ООП обёртка над сишными функциями для сокетов (Berkeley sockets)?
2) можно ли одновременно в одном потоке передавать инфу а втором принимать/ожидать новую инфу из того же сокета?
3) Разумеется я собираюсь использовать TCP, вот только я не понимаю какую там иерархию классов продумывать? По сути же это всё делается в одном main, ну или если написать ООП обёртку - в 2 cpp файла для сервера и 2 файла для клиента.
Аноним 29/10/14 Срд 15:54:06 #293 №400127 
>>400118
>1
Да десятки поделок, но ты сразу бери серьезные промышленные решения — Boost::asio или QtNetwork какой-нибудь.
>2
Емнип должно работать.
>3
Вот проблема-то, бесполезных классов придумать. Класс приложения, клиента, сервера, соединения, менеджера соединений, запроса, ответа, парсера для протокола, читателя и писателя в файл. После приготовления посыпать абстрактными фабриками синглтонов до принятия кодом ООП-вида.
Аноним 29/10/14 Срд 17:22:07 #294 №400148 
>>400127
Слушай, ещё 2 вопроса если ты разбираешься в этом:
1) я так понимаю мне чтоб понять на сервере когда я принял файл - надо заранее передать его размер? Иначе ведь я не отличу закончились данные в стриме(Файл полностью прислали) или просто они ещё не дошли до меня, или может вообще коннект разорвался.

2) Париться с кодированием в network-byte order я должен только на примитивах более чем в 1 байт? Т.е int'ы, float'ы и символы в юникоде мне переводить нужно, а если я отсылаю побайтово файл или обычный массив char - это будет приниматься нормально на большинстве платформ?
Аноним 29/10/14 Срд 17:40:55 #295 №400150 
>>400148
>1
Надо.
>2
Да.
>символы в юникоде
utf-8 можно прямо передавать, например.
Аноним 29/10/14 Срд 17:48:32 #296 №400153 
Прочитал тред. Нихуя не понял.
Я один такой?
мимо-учу-кресты-год
Аноним 29/10/14 Срд 17:52:28 #297 №400156 
джва дня искал этот тред
Посоны, посоветуйте годный фрейморвк для Windows Form. В MS Visual 2013 доступ порезали, шаманство заебало. Чем можно обмазаться? Алсо, что лучше всего почитать по формам?
Аноним 29/10/14 Срд 17:59:01 #298 №400157 
>>400153

Привыкай к этому ощущению, оно у тебя при работе с крестами будет постоянно
Аноним 29/10/14 Срд 19:47:39 #299 №400203 
>>400156
Qt
Аноним 29/10/14 Срд 20:45:18 #300 №400232 
>>400203
Хорошо, а поподробней? Где можно к нему туторами какими-нибудь обмазаться?
Аноним 29/10/14 Срд 21:35:39 #301 №400241 
Ньюфаг в треде. Подскажите имеет ли значение в каком поле( приват или паблик) объявлять конструктор класса?
Аноним 29/10/14 Срд 21:46:33 #302 №400242 
>>400241
Имеет. Прайват конструктор == хуй ты создашь извне через этот конструктор экземпляр класса. Юзают это, например, для создания синглтонов
Аноним 30/10/14 Чтв 16:40:10 #303 №400489 
Почитал тред, сделал вывод, что программирование на крестах - как засовывание палки в задницу, кому-то нравится, кому-то нет, кто-то получает удовольствие, а кто-то просто уже привык.
Аноним 30/10/14 Чтв 16:52:33 #304 №400493 
>>400489
А в чём профит?
Аноним 30/10/14 Чтв 17:37:25 #305 №400504 
Почитал /зк, сделал вывод, что хлебать мамкин борщ - как засовывание палки в задницу, кому-то нравится, кому-то нет, кто-то получает удовольствие, а кто-то просто уже привык.
sageАноним 30/10/14 Чтв 21:56:59 #306 №400588 
>>400504
борщехлёбов почти не осталось в зк, одно быдло
Аноним 30/10/14 Чтв 23:51:46 #307 №400613 
>>400118
Не делай на голом TCP ни в коем случае. Никаких boost::asio и прочей низкоуровневой хуиты. Задача прикладная до безобразия. Протокол - HTTP. Формат передачи - multipart form data. Спеки сам нагуглишь, на клиенте надо только cURL обернуть. На сервере - поковыряй открытые реализации HTTP серверов, pion какой-нибудь и т.п. Профит - бесплатная загрузка из браузера, бесплатное шифрование и аутентификация. Если HTTP медленно (ты шо хадуп пишешь штоле), то все то же самое, но на сервере FTP вместо HTTP (на клиенте cURL и так все протоколы умеет). FTP здесь только для выбора директорий и (несекурной) аутентификации, данные там будут течь точно также как в голых сокетах с нулевым оверхедом.
Аноним 31/10/14 Птн 19:20:03 #308 №400786 
14147724036460.png
Почему нельзя просто сделать так, а потом наследовать? Пишет, что конструктор удалён.
В примерах жёсткая содомия с указателями и их инициализацией вне класса - зачем это всё?
Аноним 31/10/14 Птн 19:22:00 #309 №400787 
>>400786
static T instance; но от этого ничего не меняется.
Аноним 31/10/14 Птн 20:20:38 #310 №400810 
>>400786
Потому что конструктор private и унаследованные классы не могут его вызвать, а должны - .
Чтобы наследоваться от твоего синглтона, его конструктор должен быть protected.

В явочке так же, лол.
Аноним 31/10/14 Птн 21:44:06 #311 №400837 
>>400810
Да, про protected я забыл. Однако если наследовать как public, конструктор наследника почему-то становится публичным. То есть:

class Yoba : public Singleton<Yoba>
Yoba x; // Компилится

class Yoba : protected Singleton<Yoba>
Yoba::get() // Не компилится

Получается два стула.
Аноним 01/11/14 Суб 09:42:39 #312 №400948 
>>400786
>static T & get()
>{
>T instance;
>return instance;

У тебя висячая ссылка.
Аноним 01/11/14 Суб 12:20:30 #313 №400960 
>>400948
На хуй свой посмотри, рпежде говорить о чём-то висячем.
Аноним 01/11/14 Суб 13:26:45 #314 №400968 
>>400837
Не, бля.

В родительском классе конструктор сделай protected
Аноним 01/11/14 Суб 13:27:49 #315 №400969 
>>400948
Уже он отписался про это
Аноним 01/11/14 Суб 13:56:31 #316 №400981 
14148393918160.jpg
Реквестирую советов для ньюфага. Какие книжки читать, какие гайды смотреть, какие курсы проходить? Можно на английском.

Аноним 01/11/14 Суб 14:38:23 #317 №400995 
>>400981
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
Аноним 01/11/14 Суб 15:50:35 #318 №401008 
>>400968
Да он и есть protected, но при public наследовании, конструктор наследника почему-то становится публичным.
sageАноним 01/11/14 Суб 18:44:57 #319 №401049 
>>401008
https://ideone.com/2B5Co0
просто ты мудак и не можешь написать B: protected A
Аноним 02/11/14 Вск 01:23:16 #320 №401175 
>>401049
Ты немного ушёл от темы. Мне нужен класс, который сделает наследники синглотанами с приватным конструктором и статичным методом get().
Я оставил так http://ideone.com/5rlly5 , в принципе сойдёт.
Аноним 02/11/14 Вск 02:06:49 #321 №401176 
Ещё такой вопрос: мне кто-то подсказал, как сделать хеш для unordered_map из двух значений
std::hash<float>()(vec.x) ^ std::hash<float>()(vec.y);
А как сделать для Rect (четёрых значений)?
Аноним 02/11/14 Вск 21:57:42 #322 №401401 
14149546624090.jpg
>>392779
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
Что скажите, пацаны?
Аноним 02/11/14 Вск 22:03:37 #323 №401404 
>>401176
Все четыре ксорь, очевидно же. Хотя это и не очень хороший хэш, но на первое время сойдет.
Аноним 02/11/14 Вск 22:05:15 #324 №401405 
>>401401
У Линупса бугурт ниасилятора. Довольно обыденное явление.
Аноним 02/11/14 Вск 22:39:19 #325 №401415 
>>401401
Что чем быстрее появится стабильный форк ядра, тем лучше. Скоро он уже окончательно в дурку отъедет (учитывая что в посте 2007 год).
Аноним 02/11/14 Вск 23:23:03 #326 №401419 
>>401405
Читал большое интервью на русском чувака из Майкрософт - большого технической шишки. Короче он там такой факт приводился - отличные, стабильные программы из пакета офиса - ворд и эксель написаны на чистом Си, глючное говно - поверпоинт и еще какая-то (аксесс кажется) на С++. Кстати, ни у кого ссылки не завалялось? - не могу найти.
Аноним 02/11/14 Вск 23:28:41 #327 №401420 
>>401419
Естественно не можешь: на манямир линки еще не изобрели. Ворд и пауэопоинт делят общую кодовую базу, очевидно написанную на одном языке.
Аноним 03/11/14 Пнд 00:21:17 #328 №401439 
Антоны, поясните за генерацию "миров". Что бы было проще понять - нужно сгенерировать локацию, похожую на лабиринт, что бы не было тупиков.
Аноним 03/11/14 Пнд 01:15:20 #329 №401448 
>>401439
http://habrahabr.ru/post/181265/
http://habrahabr.ru/post/176671/
http://habrahabr.ru/post/203478/
Аноним 03/11/14 Пнд 02:58:20 #330 №401467 
>>401401
Линупса банально затроллили там - быдло, которое его спрашивало, надавило на больное место - юникодные строки в сишке. Мораль - чтобы написать что-то рабочее на С вне линупсведра надо быть Линупсом. Кстати, ICU и GCC (проекты с которыми вряд ли что-то может сравниться по распространенности) используют С++.
Аноним 03/11/14 Пнд 03:08:08 #331 №401470 
>>401467
Это заебись конечно, что данный "гений" имеет право на собственное мнение по основополагающим вопросам, только людям его спонсирующим надо клиентам проекты релизить, а не слушать охуительные истории. Тот же редхат уже давно грозится отлучить поехавшего от мейнстрима, жаль только, что не редхатом единым права на редактирование ядра контроллируются.
Аноним 03/11/14 Пнд 10:12:28 #332 №401519 
>>401420
>написанную на одном языке
Вижуалбейсике.
Аноним 03/11/14 Пнд 10:14:23 #333 №401520 
>>401467
GCC использует C больше, чем C++
Аноним 03/11/14 Пнд 10:26:51 #334 №401524 
>>401419
Неудивительно. Ведь большинство ОО-дебилов считает, что придумать классы достаточно, чтобы спроектировать приложение.
Аноним 03/11/14 Пнд 10:30:17 #335 №401525 
>>401524
Это не так?
Аноним 03/11/14 Пнд 10:35:00 #336 №401528 
>>401525
Классы - всего лишь кирпичики. Даже если сделаешь хорошие годные кирпичики, не факт, что ты сможешь их сложить в цельное здание так, чтоб оно не развалилось.
Аноним 03/11/14 Пнд 22:27:14 #337 №401763 
Полуебок из закрытого треда про DoubleList (>>401625) давай вместе уебывать С++, я знаю, что ты здесь, запости весь класс, мне интересно где он ломается, в том куске, что запостил не видно явных ошибок.
Аноним 03/11/14 Пнд 22:32:28 #338 №401766 
>>401520
Имелось ввиду, что даже самые мейнстримовые открытые проекты на сишечке понемногу отъезжают в сторону плюсов. Так как плюсы год от года все стабильнее и переносимее (VC 6.0 anyone?). А вся проприетарщина. где не надо "piss off c++ contributors" (c) Линупс, отъехала на плюсы еще в конце 90-х - начале 2000х (та, что не отъехала на жабу разумеется).

И в GCC изначально не было ничего C-специфичного, там максимально чистый C89 код совместимый с плюсокомпиляторами.
Аноним 03/11/14 Пнд 22:46:03 #339 №401772 
C++ - очень хороший язык, если пользоваться библиотеками от Microsoft. Все другие библиотеки - говно, на них нельзя даже смотреть. Да, STL и Boost - тоже говно.
Аноним 03/11/14 Пнд 22:48:54 #340 №401773 
В паттернах не силен.
Boost не знаю.
Мейерса не читал.
Наверстывать упущенное? А когда же я начну формошлепить в ламповой кьютишке :C
Аноним 03/11/14 Пнд 22:51:31 #341 №401774 
>>401772
>C++ - очень хороший язык, если пользоваться библиотеками от Microsoft.
Особенно MFC.
Аноним 03/11/14 Пнд 23:23:10 #342 №401794 
>>401774
Чего ты как маленький?
Аноним 04/11/14 Втр 10:45:39 #343 №401911 
>>401401
Все правильно пишет. На крестах можно писать большие проекты, только при очень жестких кодстайлах и авторитаризме. С ядром так не выйдет, значит сишечка там - естественный выбор, в добавок, не требующий тяжелых IDE для комфортной работы.
К тому же ООП - это тупик и путь в никуда. "Классического" ООП с разветвленной иерархией классов, сейчас даже в джаве не встретишь.
Аноним 04/11/14 Втр 11:32:35 #344 №401921 
Посоны, кросспостну из ньюфаг-треда.

Антош, не могу вот что понять. Смотри, итератор у std::map по дереференсу возвращает std::pair<const keytype&, valtype&>

Как создавать\возвращать такую пару??? Т.е. если такая пара хранится как член итератора (как в примере) - ее надо как-то менять при инкременте, например, итератора.
Но ведь менять такую пару нельзя, можно только создавать заново. А как это делать на стеке я не понял.

В общем, выходит уебанство одно, поясни, пожалуйста, антош.

Я вижу только два варианта - либо менять const-value в паре, что зашквар и undefined behaviour, либо создавать динамически новую пару каждый раз при изменении итератора (что тоже зашквар, в общем и целом)
Аноним 04/11/14 Втр 11:58:42 #345 №401925 
>>401921
Сдается мне, что если во внутреннем представлении таких пар нет - тогда никак. В map, скорее всего, дерево из пар, т.е. они там уже есть и они же и возвращаются.
Аноним 04/11/14 Втр 12:03:57 #346 №401929 
>>401921
Хранится там, скорее всего, пойнтер на ноду. А возвращается тебе каст дереференса этой ноды
Аноним 04/11/14 Втр 12:15:03 #347 №401935 
>>401921
>А как это делать на стеке я не понял.
Тупо присваиванием.
Аноним 04/11/14 Втр 12:26:11 #348 №401936 
14150931717160.jpg
>>392779
Какие интересные опенсорс проекты можно посмотреть на C++? На подобии doom 3.
Аноним 04/11/14 Втр 16:10:30 #349 №401999 
>>401921
В чем вообще проблема? Если ты итератор дереференсишь, он эту пару создает и тебе возвращает. Не дереференсишь - не создает.
Аноним 04/11/14 Втр 16:46:55 #350 №402003 
>>401936
Чё за няшка? Есть полный фотосет?
sageАноним 04/11/14 Втр 16:47:49 #351 №402004 
>>402003
Толстовато.
Аноним 04/11/14 Втр 16:51:14 #352 №402006 
>>402004
Я ньюфаг и не знаю всех метсных богинь, по лицу только сашу грей могу опознать, а эту не знаю. Дай линк на полный фотосет, пожалуйста.
Аноним 04/11/14 Втр 17:16:49 #353 №402016 
>>401929
>>401935
слушайте, я туплю. я понимаю, как это сделать, если в паре нет референсов, т.е. скастить std::pair<KeyType, valType> к std::pair<const KeyType, valType> проблем нет.
Но в паре, возвращаемой дереференсом итератора map в map->second лежит lvalue (возвращается типа пара <const KeyType, valType&>). а в моем представлении объект, на который реферит референс можно присвоить только один раз - при декларации самого референса (т.е. при создании пары)
Аноним 04/11/14 Втр 17:25:59 #354 №402021 
>>401999
Для оператора "звездочка" да, на лету создаешь пару и возвращаешь.
А для ->? Надо жи возвращать указатель, не на локальную же переменную функции оператора указывать.
Аноним 04/11/14 Втр 17:28:53 #355 №402023 
>>402021
т.е. вот так писать можно
std::pair<const keytype, valtype&> operator ЗВИЗДОЧКА ()
{
bla-bla-bla
return std::pair<const int, int&>(key, val);
}

А вот так нельзя жи?
std::pair<const int, int&>ЗВИЗДОЧКА operator->()
{
bla-bla-bla
return &std::pair<const int, int&>(key, val);
}
Аноним 04/11/14 Втр 17:30:08 #356 №402024 
>>402023
ну там параметры шаблона вместо int внутри, ясно
Аноним 04/11/14 Втр 17:32:26 #357 №402026 
>>402006
так-то это эмма уотсон, но ты все равно зеленый
Аноним 04/11/14 Втр 17:54:17 #358 №402036 
>>402016
Погоди ка, откуда у тебя этот std::pair<KeyType, valType> берется? Нет там такого. Честно говоря я не понял твои непонятки.

Смотри сюда.
https://bpaste.net/show/04272f6190f5
Аноним 04/11/14 Втр 18:06:35 #359 №402042 
>>402016
>а в моем представлении объект, на который реферит референс можно присвоить только один раз - при декларации самого референса (т.е. при создании пары)
Ну так ты не знаешь, что там внутри итератора лежит. Там совершенно не обязательно лежать ссылке - мб там указатель или индекс или еще что.
Аноним 04/11/14 Втр 18:25:46 #360 №402050 
>>402026
Можно мне весь пак?
Аноним 04/11/14 Втр 19:00:25 #361 №402060 
>>402023
Что мешает хранить в итераторе пару с key value, и обновлять при инкрементации указателя? Не понимаю твоей проблемы.
Аноним 04/11/14 Втр 20:26:40 #362 №402083 
14151220001870.jpg
>>402050
А тебе нужно? Это трап.
И да, ответьте на мой вопрос, пожалуйста. >>401936
Аноним 06/11/14 Чтв 11:43:41 #363 №402682 
Почему в стандартной либе __так_ всё написано?
Аноним 06/11/14 Чтв 12:08:34 #364 №402684 
>>401921
>Смотри, итератор у std::map по дереференсу возвращает std::pair<const keytype&, valtype&>
Всё, я нашет твою проблему. Дереференс итератора мапы возвращает std::pair<const keytype, valtype>
Аноним 06/11/14 Чтв 12:32:40 #365 №402690 
>>402682
В стандартной в исполнении кого?
ГЦЦ или МС?
Аноним 06/11/14 Чтв 21:23:43 #366 №402870 
>>402682
Потому что такой naming convention
https://stackoverflow.com/questions/3706379/what-is-a-good-naming-convention-for-vars-methods-etc-in-c
см. ответ от GManNickG
Аноним 06/11/14 Чтв 21:29:28 #367 №402874 
>>402684
Да ладно. Не верю. Это же нихуя не эффективно. Не могли же они в stl забабахать туда копирование просто так.
Аноним 06/11/14 Чтв 21:50:05 #368 №402875 
http://ideone.com/hCsVw3
Я нихуя не понял, посоны. Зачем вызывается конструктор копирования при создании мапа? Конструктор-move - ясно - надо же из initialization list в мап перенести. Но копирование то почему и нахуя?

И далее, еще непонятно - почему между "starting for loop now" и "for loop finished" ничего не копируется, ведь если то, что этот чел >>402684
говорит - правда, то там должны пары создавать прямо с объектами, а не со ссылками.
Аноним 06/11/14 Чтв 22:30:36 #369 №402883 
>>392779
На крестах криптоалгоритмы и работа с графами выглядят красиво.
/thread
Аноним 06/11/14 Чтв 22:40:18 #370 №402885 
>>402875
>почему между "starting for loop now" и "for loop finished" ничего не копируется
Потому что форыч как-то по-ебаному сделан в крестах.
http://stackoverflow.com/questions/2850312/use-of-for-each-on-map-elements
Тут пишут вообще сделать отдельную функцию и её вызывать. Ну либо через обычный фор, с итераторами.
Пиздец, конечно
Аноним 07/11/14 Птн 02:45:17 #371 №402940 
>>402885
>Потому что форыч как-то по-ебаному сделан в крестах.
Но ведь нет, он совершенно нормально сделан - он вызывает .begin() и итерирует до .end()
Аноним 07/11/14 Птн 02:48:39 #372 №402941 
>>402870
Так зачем всё названо так, будто всё в глобальном неймспейсе окажется?
Аноним 07/11/14 Птн 07:03:23 #373 №402968 
>>402875
потому что вместо свапа С++ всегда вызывает конструктор копирования для внутренних операций в контейнере.

Более того - всё, что ты пихаешь в стандартный контейнер/класс должно быть copy assignable, иначе хуй ты чо куда положишь. http://ideone.com/KpTCoK

Не хочешь такой хуйни - юзай пойнтеры.
Аноним 07/11/14 Птн 13:40:03 #374 №403054 
http://ideone.com/ade6RM
Это что такое?
Аноним 07/11/14 Птн 13:56:25 #375 №403067 
>>402941
Что ты имеешь в виду? Как названо то?
Аноним 07/11/14 Птн 14:00:55 #376 №403070 
>>403054
Какой метод вызывать (есле он не виртуальный), определяется статически на стадии компиляции. Чтобы вызвать A::test(), ему не надо в сам объект, у которого ты этот метод вызываешь, лазить.

http://ideone.com/SmIu1l

Вот только я уверен, что это undefined behaviour и в твоем, и в моем случае.
Аноним 07/11/14 Птн 17:13:54 #377 №403150 
Опытным байтоёбам вопрос.

Имеется следующая задача: необходим булевой массив. Требования (в порядке убывания важности -- т.е. если не выполнено первое, на второе можно даже не смотреть, и т.д.):

1) не нужно вообще никаких операций/операторов, кроме возможности проставить true или false для конкретного элемента массива;

3) максимальная экономия памяти;

4) [опционально] максимально простая реализация этого дела (если имеется готовое решение - хотелось бы исходный код);

5) [опционально] высокая скорость (понятно, что она должна вытекать из простой реализации без всяких <ненужно>).

Вот нашёл научную статейку на сей счёт, не сказать что впечатлён имеющимися решениями.

http://www.cs.up.ac.za/cs/vpieterse/pub/PieterseEtAl_SAICSIT2010.pdf

P.S. По ходу дела задачу можно уточнить, если я что-то неправильно/криво сфрмулировал.
Аноним 07/11/14 Птн 17:49:03 #378 №403170 
>>403150
выделяешь область маллоками, пишешь макросы или функции для доступа. экономия памяти будет с точностью до байта, то есть максимум 7 битов проебёшь
Аноним 07/11/14 Птн 17:53:13 #379 №403174 
>>403150
std::vector<bool>
http://alenacpp<DOT>blog<REMOVE_THIS>spot<DOT>com/2005/06/vector.html
Аноним 07/11/14 Птн 17:54:37 #380 №403176 
>>403150
http://en.cppreference.com/w/cpp/utility/bitset
Аноним 07/11/14 Птн 18:18:25 #381 №403184 
>>403174
std::vector<bool> крайне экономный по памяти вариант, очень годный, но всё-таки потрясающе медленный, если судить по http://www.cs.up.ac.za/cs/vpieterse/pub/PieterseEtAl_SAICSIT2010.pdf

А причина проста: это же контейнер, и в нём много <ненужно> -- т.е. не выполнено первое же условие.

>>403170
Это хороший вариант, если бы внезапно я знал язык.

>>403176
Здесь начинается самое интересное. 1) Как соотносятся по потреблению памяти bitset и boost:dyn bitset ? 2) А по скорости (но первый вопрос важнее).
sageАноним 07/11/14 Птн 18:57:54 #382 №403210 
>>403184
В чём проблема использовать просто bool array[1024] ?
Аноним 07/11/14 Птн 19:19:31 #383 №403216 
>>403210
В проигрыше в памяти в 8 раз.
Аноним 07/11/14 Птн 20:25:46 #384 №403223 
>>403184
http://ideone.com/ntfUSh
Держи
Аноним 07/11/14 Птн 20:32:04 #385 №403225 
>>403223
ну и на правах ультразанудства замечу, что calloc выделяет память и выставляет все значения в ноль, а malloc просто выделил бы память. и в конструктор надо добавить обработку случая, когда память выделить не получается (this->data == NULL)
Аноним 07/11/14 Птн 21:50:51 #386 №403244 
>>403225
Хмм, спасибо. Я задам предельно нубские вопросы, за которые прошу не убивать меня плоской лопатой:

1) Не считая std::cout и обёртку классом, это по сути язык C в чистом виде?

2) Почему используется unsigned char , а не скажем uint8_t ? Или uint64_t ?

3) [платина] Почему calloc/free, а не new/delete? Обусловлено байтоеблей и/или другой причиной?

4) Что значит -> на 20, 25 и т.д. строчках?

5) Ну и занудство: почему на 18 строчке size++, а не ++size?
Аноним 07/11/14 Птн 22:01:25 #387 №403247 
>>403244
>1) Не считая std::cout и обёртку классом, это по сути язык C в чистом виде?
Да
>2) Почему используется unsigned char , а не скажем uint8_t ? Или uint64_t ?
при uint64 максимальный проёб по памяти будет 63 бита, тебе же экономно надо.
Разницы между уинт8 и ансайнд чар нету, я по-старинке использую чар
>3) [платина] Почему calloc/free, а не new/delete? Обусловлено байтоеблей и/или другой причиной?
Потому что я сиблядь. Можешь делать нью и делит
>4) Что значит -> на 20, 25 и т.д. строчках?
Разыменовывание указателя this, который указывает на тот объект, для которого вызван метод
>5) Ну и занудство: почему на 18 строчке size++, а не ++size?
в данном случае похуй
Аноним 07/11/14 Птн 22:32:12 #388 №403254 
>>403247
0) Самое главное забыл спросить: это решение будет быстрее dynamic_bitset?
http://www.boost.org/doc/libs/1_57_0/libs/dynamic_bitset/dynamic_bitset.html

boost::dynamic_bitset самый быстрый булевой массив из побитовых:
http://www.cs.up.ac.za/cs/vpieterse/pub/PieterseEtAl_SAICSIT2010.pdf (даже быстрее std::bitset, хотя в статье об этом не сказано)

2) Нефизично мыслишь, братишка. Проёб в 7 бит или 63 бита абсолютно некритичен, это же проёб в абсолютном количестве. А вот проёб при array в 8 раз (относительный): если я с пятиста мегабайт потеряю 63 бита, я смогу с этим жить. А если 3500 мегабайт, то это уже ни в какую оперативку не лезет.

Собственно, почему я спрашиваю про uint64_t (Это же unsigned long long, я так понимаю?): вопрос в том, как наиболее эффективно (читай быстро) читать блочки данных на заданной архитектуре (пускай 64 бита для определённости).

3) Т.е. вообще нет разницы между calloc/free, и new/delete ? Разве не расходуются дополнительно ресурсы на саму возможность пробросить исключение и т.д.
Аноним 08/11/14 Суб 09:38:45 #389 №403338 
>>403254
>Т.е. вообще нет разницы между calloc/free, и new/delete ?
Исключения можно отключить. Между new/delete и malloc/free есть разница для не-POD типов, но для char вообще похуй
Аноним 08/11/14 Суб 12:43:00 #390 №403359 
>>403338
malloc же не вызывает конструктор, а free деструктор?
Аноним 08/11/14 Суб 12:49:37 #391 №403363 
>>403359
Да.
Аноним 08/11/14 Суб 22:46:45 #392 №403576 
Пиздец, они комитетчики окончательно ебанулись. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4174.pdf
Аноним 08/11/14 Суб 23:03:20 #393 №403579 
>>403576
Норм идея. Только за пределами их любимого шаблонного метапрограммирования это не нужно, кто сейчас пишет функции вне классов?
Аноним 08/11/14 Суб 23:16:39 #394 №403586 
>>403579
Не понял вообще твой аргумент.
Я пишу.
Аноним 08/11/14 Суб 23:22:46 #395 №403588 
>>403576
Очень даже не плохо.
http://habrahabr.ru/company/infopulse/blog/240851/
Аноним 09/11/14 Вск 00:04:43 #396 №403598 
>>403588
Пиздец там. Чем дальше учу кресты, тем меньше их понимвю
Аноним 09/11/14 Вск 00:10:02 #397 №403602 
>>403576
Не та ссылка приклеилась. Унифицированный синтакс для функций, как раз норм.
Пиздец вот тут:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4173.pdf
OPERATOR DOT
Аноним 09/11/14 Вск 02:39:54 #398 №403668 
>>403576
Прикольно, возвращение на 20 лет назад в Perl с его ($self, @args) = @_
Аноним 09/11/14 Вск 13:38:02 #399 №403833 
>>403602
Да, это Омск, согласен. Но это и не собираются принимать. Так, рассуждения на тему.
Аноним 09/11/14 Вск 17:14:33 #400 №403958 
14155424737170.jpg
Странные вы, крестопидоры.
sageАноним 09/11/14 Вск 18:19:39 #401 №403982 
14155463799520.png
>>403958
Ты-то куда лезишь?
Аноним 10/11/14 Пнд 01:24:15 #402 №404125 
14155718555830.jpg
Пишите на C++ и вы будете таким же жизнерадостным чувачком как этот dude на пике. :)
Аноним 10/11/14 Пнд 02:31:15 #403 №404144 
>>404125
Он не пишет.
https://www.youtube.com/watch?v=PlEKa_haXCM
Аноним 10/11/14 Пнд 02:50:01 #404 №404147 
14155770017130.jpg
>>404125
Я думаю, что на самом деле это музыкант Тёрстон Мур, который из-под альтер-эго троллирует программистов
Аноним 11/11/14 Втр 03:53:30 #405 №404604 
В перле есть модуль Coro с корутинами и его обёртка для LWP, можно одновремено отправлять сотни HTTP запросов и обрабатывать ответы не нагружая проц. Как добиться того же эффекта в С++? Например можно скомбинировать boost.coroutine и boost.asio?
Аноним 11/11/14 Втр 08:37:00 #406 №404619 
>>404604
http://habrahabr.ru/post/201826/
Вторая часть там же.
[проходил мимо треда] Аноним 11/11/14 Втр 10:00:22 #407 №404628 
>>404619
>Асинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…
Лол, bitches don't know 'bout my Akka.

>/код в статье/
Ну ёбаный пельмень. Что вас заставляет писать на этом? Вы там одни драйвера и прошивки для роутеров пишете, что не можете взять нормальный высокоуровневый язык?
Аноним 11/11/14 Втр 11:28:30 #408 №404649 
>>404628
>Akka
https://github.com/actor-framework/actor-framework
>ко-ко-ко

П Р О И З В О Д И Т Е Л Ь Н О С Т Ь
Р
О
И
З
В
О
Д
И
Т
Е
Л
Ь
Н
О
С
Т
Ь
Аноним 11/11/14 Втр 12:17:12 #409 №404671 
http://www.youtube.com/watch?v=JaoTjiSFEqI

Кратко:
1. Программы должны тратить времени и ресурсов не больше, чем им выделено. Не "работать как можно быстрее", а "настолько быстро, насколько это необходимо", блядь! А то начинают переписывать каждый пук чуть ли не на ассемблере, а добрым прогерам потом все это читать, ёбаный пердот!
2. Ограничения по ресурсам и времени могут задаваться не только явно ("12.345 мс. на обработку внезапного увеличения яркости, 67.890 мс. на формирование и подачу конкретной команды ориентировочным двигателям солнечных батарей"), но и в неявном виде ("чтоб не тормозило!"). В любом случае конечным критерием служит реакция заказчика: "Чё так медленно!" - или молчание. Как только заказчик перестал возмущаться по поводу быстродействия программы, работы по ее оптимизации можно прекращать. И нужно прекращать, блядь, а то начинают потом переписывать каждый пук чуть ли не на ассемблере, а добрым прогерам потом все это читать, ёбаный пердот!
3. Эффективность почти всегда стоит вразрез с остальными критериями качества ПО. В подавляющем большинстве случаев программа либо корректная, устойчивая, понятная и т. д., но тормозит; либо быстрая, как пулемет, но не работает. Почти всегда, чтобы заставить программу работать быстрее, приходится раскрывать детали реализации ("open_cache(...)", "optimize_for(...)"), повышать уровень абстракции и вообще всячески ломать архитектуру. Именно поэтому п. 1 и п. 2, именно поэтому ранняя оптимизация - зло, именно поэтому нельзя переписывать каждый пук на ассемблере - потому, что добрым прогерам потом всё это читать, ёбаный пердот!
4. "Не надо заставлять машину делать лишние действия!" - раздалось со стороны параши. Во-первых, не человек - раб машины, а машина - раб человека (она для этого и создавалась, ebitten nahuj wrot!). Во-вторых, лишние действия машины стоят гораздо дешевле, чем лишние действия человека, и еще на много порядков дешевле, чем лишние действия программиста. Я не знаю, каким надо быть ничтожеством, чтобы ценить собственное время дешевле машинного.
5. MRI не оптимизирован вообще никак, вся его функциональность реализована наивно, без малейших намеков на эффективность. Это не помешало ему завоевать популярность в Японии, а после выхода англоязычной документации - и во всем мире. Ruby on Rails - второй по популярности веб-фреймворк после PHP-овых... Короче, эффективность - последний критерий, по которому оцениваются программы.
5. Но нельзя забывать, что эффективность может стать частью корректности. Никому нахуй не нужна сортировка, уничтожающая и пересобирающая весь мир, пока сортируемый массив не окажется в нужном порядке.
10. Программы должны поставляться вовремя. Никому нахуй не сдались программы, которые были заказаны за месяц, а поступили через год.
11. Программисты могут и должны называть адекватные сроки разработки и соблюдать их, блядь! Назвать один срок, а программу выпустить в другой равносильно расписке в собственной некомпетенции. Делать так периодически - прослыть пиздоболом и саботажником (отсюда вывод: IBM, открыто признавшиеся, что им ни разу не удавалось выпускать программы точно в срок - феерические пиздоболы и саботажники, которые нихрена не умеют, даже hello-world-ы писать). Форс-мажор допустим. Подсчитывать сроки проще, чем кажется.
11. Я сказал форс-мажор, блядь, а не недальновидность!!!
12. При прочих равных условиях больше шансов на рынке имеет тот, кто тратит меньше времени на разработку. Какая-нибудь http://rocketsoftware.com с годичным циклом разработки имеет все шансы растерять нахуй всю клиентуру и обдрочиться на учеников ак. Евгения Михайловича Пастобло, организовавших свое дело и выпускающих аналогичную продукцию по штуке в месяц. Короче говоря, ключевым критерием, характеризующим профессионализм программиста, является время, которое он проводит над кодом.
12. Именно поэтому программы надо писать без ошибок - если вы допустите ошибку в программе, пользователь ее завернет, и вам придется снова сидеть над ней. Плюс практика показывает, что чем позже была обнаружена ошибка, тем больше времени уходит на ее исправление.
12. Именно поэтому программы должны быть устойчивы - если вы не предусмотрите какую-либо внештатную ситуацию, то рано или поздно ваш продукт завернут и "вежливо" попросят таки предусмотреть её. И если в вашей лаборатории вы точно будете знать, какая именно внештатная ситуация возникла при том или ином тесте, то "с поля" самое информативное сообщение, которое вам придет - это "divide by zero".
12. Именно поэтому программы должны быть расширяемы - вы можете по-быстрому на коленке слабать какой-нибудь кусок говна, и он даже пройдет верификацию и стресс-тесты, но если заказчик вдруг захочет синенькие банты вместо красненьких (а он обязательно захочет, я уже говорил об этом), то вы вполне ожидаемо обосрётесь как профессионал, назвав заоблачные сроки, и до отвала нажретесь реверс-инженирингового же говна.
12. Именно поэтому нужно читать книги по CS, изучать новые парадигмы и приемы программирования. Программист, целый месяц тратящий на перевелосипедивание скоростных комбинаторов парсеров с коррекцией ошибок - это не программист, а какой-то пидарас.
12. Именно поэтому необходимо изучать существующие на сегодняшний день технологии ИТ и быть в курсе их развития. В высшей степени комично смотрится программист, переделывающий XML-файл с данными в набор команд для СУБД при помощи "Блокнота" и рук. Еще ржачнее смотрится программист, две недели пидорасящий для этой цели "утилитку на C++". Именно поэтому каждый программист должен знать Python/Ruby/Groovy, Bash, Text Utils, .NET, WPF и много всего того, что знать "не нужно" (ибо "на Java/PHP/C++ можно написать всё! ку-ка-ре-ку!") - там, где байтопидоры и плюсокодерьё дергают ОС за системные вызовы мегабайтами темплейтолапши, обычные грамотные специалисты захуяривают пару строчек на Питоне и сдают всё это заказчику в красивой инсталляшке. За ебические деньги.
12. Именно поэтому нужно писать эффективные программы - если программа не впишется во временную диаграмму, составленную заказчиком, он её не примет, и вам придётся её переписывать. Но именно по этой же причине нельзя выдрачивать производительность тогда, когда у заказчика нет никаких претензий к ней - если потерю времени на высирание темплейтоговна вместо пары строчек для Bash с Zenity еще можно как-то оправдать (ну не знал человек, что есть такой инструментарий, с кем не бывает), то трата времени на повышение и без того высокой производительности не может быть оправдана ничем, кроме неестесственного сексуального влечения кодера к цифрам в профайлере. Я предлагаю приравнивать дрочку на байты и такты к саботажу или хотя бы просмотру порнографии за работой.
12. Именно поэтому системные программисты придумали, придумывают и будут придумывать все эти ваши Python, Ruby, PHP и прочее - чтобы "прикладники" могли выполнять свою работу тупо быстрее. И именно по этой причине они никак не оптимизируют свои продукты ("100 тактов на сложение чисел" - это ж всё, блядь, пиздец, вся жизнь насмарку) - потому, что это НАХУЙ никому не нужно.

Аноним 11/11/14 Втр 13:36:58 #410 №404695 
>>404649
Актор - кривое говно, как и кресты, а производительность в 2015 в хуй не впилась, олсо любая крупная программа на крестах всё равно тормозит и вылетает, потому что на крестах ничего написать нормально нельзя, не потратив на это зиллион человекочасов.
Аноним 11/11/14 Втр 14:14:35 #411 №404701 
>>404649
И чего это за кал? Сможешь всё завернуть в полностью асинхронные футуре? http://doc.akka.io/docs/akka/2.3.6/scala/futures.html
Заменить диспетчер через конфиг? http://doc.akka.io/docs/akka/2.3.6/scala/dispatchers.html
Размазать это по кластеру? http://doc.akka.io/docs/akka/2.3.6/scala/cluster-usage.html
http://doc.akka.io/docs/akka/2.3.6/scala/remoting.html
Обмазать TCP/UDP акторами? http://doc.akka.io/docs/akka/2.3.6/scala/io-tcp.html
Аноним 11/11/14 Втр 14:42:34 #412 №404703 
>>404695
>а производительность в 2015 в хуй не впилась
Напоминает мне книжки из 93го года, когда было "оптимизируйте расход памяти, потому что компьютеры сегодня очень быстрые, а памяти мало и она дорогая".
Аноним 11/11/14 Втр 16:01:13 #413 №404721 
>>404671
>Программисты могут и должны называть адекватные сроки разработки и соблюдать их
Посоны, научите такому. Есть вообще нормальная метода или дальше прикинуть от балды прогресс не ушел?
Аноним 11/11/14 Втр 16:18:59 #414 №404731 
>>404721
Метод 1:
Берешь резиновую уточку, рассказываешь её как ты будешь всё делать и сколько по твоему мнению всё займет времени

Метод 2:
Заменяешь уточку на второго программиста квалификации такой же как у тебя или лучше.
Аноним 11/11/14 Втр 17:27:45 #415 №404763 
Киньте литературу по winapi, какую-нибудь вменяемую.
Аноним 11/11/14 Втр 17:56:30 #416 №404777 
>>404763
msdn чем не устроил?
Аноним 11/11/14 Втр 19:28:22 #417 №404805 
Поясните как построить такую синхронизацию для std::thread, а то я нихуя не понял.

Поток-1 while(true) sleep(1); ждём поток-0
Поток-2 while(true) sleep(1.5); ждём поток-0
Поток-0 while(true) sleep(0.5); ждём поток-1 и поток-2

Все 3 цикла задействуют разные ядра, но сходятся в одной точке и совершают одинаковое число оборотов, выравниваясь по потоку-2 на 1.5 сек. Цель - сократить время до 1.5 сек, а не выполнять всё на одном ядре за 1+1.5+0.5=3 сек.
Аноним 11/11/14 Втр 19:58:38 #418 №404817 
>>404777
2 примера - не литература. Нужен справочник хороший, с примерами желательно.
Аноним 12/11/14 Срд 03:21:18 #419 №404960 
>>404805
Ничего не понял.
Аноним 12/11/14 Срд 03:33:49 #420 №404961 
>>404960
Вот я как раз пример сделал http://ideone.com/VqTPoh
Нужно чтобы у всех циклов было одинаковое число оборотов. То есть не должно быть так, чтобы один цикл выполнился 3 раза, другой 2 раза, а третий 10 раз.
Аноним 12/11/14 Срд 13:08:18 #421 №405013 
>>404961
даже не знаю, попробуй цикл for(;;)
Аноним 12/11/14 Срд 17:56:22 #422 №405113 
>>404961
http://ideone.com/xjHSXT
А вообще было такое предложение в стандарт, нызавает Latches and Barriers
Аноним 12/11/14 Срд 18:59:13 #423 №405141 
>>392779
Ребзи, почему -1 > 0u это понятно, но -1 + 0u выдаст ожидаемый ответ. Почему приведение типов в этих двух случаях работает по разному? Только взялся за язык, не бейте.
Аноним 12/11/14 Срд 19:11:42 #424 №405158 
>>405141
Почему по-разному, и какой ответ для тебя "ожидаемый"? Всегда signed приводится к unsigned.

cout << (-1 + 0u);

Напечатает 4294967295.
Аноним 12/11/14 Срд 19:27:09 #425 №405178 
>>405158
Я поехал короче. Задал вопрос по С в треде по крестам. printf() просто во втором случае выдаст -1.
Аноним 12/11/14 Срд 20:07:16 #426 №405210 
>>405178
printf - это нетипизированное говно мамонта, что ты ожидал? Что он как-то сможет отличить signed от unsigned?
Аноним 12/11/14 Срд 21:53:10 #427 №405264 
>>405178
Попробуй
printf("%u",-1);
Аноним 12/11/14 Срд 22:31:16 #428 №405290 
>>405264
Да, я уже понял свою ошибку, когда просмотрел коды форматирования. В выражении -1 конвертировалось в беззнаковое, а потом снова в знаковое из-за "%d". Пушка.
Аноним 13/11/14 Чтв 00:21:18 #429 №405394 
крестаны, поясните по хардкору, как правильно делать умный указатель на память, выделенную по new[]? в бусте был shared_array отдельный, насколько я понял, а как пользоваться std::shared_ptr? Ведь нельзя делать так: std::shared_ptr<int>(new int[1000]) (ведь как тогда shared_ptr сообразит вызвать delete[] вместо delete в своем деструкторе?)
Аноним 13/11/14 Чтв 00:38:24 #430 №405402 
>>405394
https://stackoverflow.com/questions/13061979/shared-ptr-to-an-array-should-it-be-used
Аноним 13/11/14 Чтв 00:48:35 #431 №405406 
>>405402
спасибо!
блять, я еще даже про 00 стандарт не могу сказать, что хорошо его знаю, а тут еще и 11, и 14, кажется, я никогда не буду знать плюсы.
как вы с этим справляетесь? я ведь даже на собеседование пойти не могу спокойно, точно же знаю, что есть куча нюансов, которые мне неизвестны.
Аноним 13/11/14 Чтв 00:54:32 #432 №405409 
>>405406
Прочитай книжку (которая на деле не книжка, а слайды с пояснениями) Overview of The New C++ (C++0x) Скотта Мейерса.

Еще рекомендую смотреть видосы с конференций C++: goingnative и прочие, например вот этот рекомендую https://www.youtube.com/watch?v=Am2is2QCvxY (это 1-ая часть из двух)
Аноним 13/11/14 Чтв 13:14:12 #433 №405534 
>>405394
используй вектор и не еби мозги
Аноним 14/11/14 Птн 00:45:03 #434 №405750 
Анон, есть ли какое-нибудь принципиальное различие между мультисетом/мультимапом и сетом/мапом, содержащим списки элементов с одинаковым ключом?
В STL мультиконтейнеры так и реализованы?
Аноним 14/11/14 Птн 10:15:25 #435 №405804 
Год как начал ударными темпами осваивать кресты и теперь весьма комфортно себя в их окружении чувствую. Но внезапно обнаружил, что я нахуй никому с ними не нужен! Все хотят php/java/ruby/python, если и есть вакансии, то опыт 3 года+. Что же делать нюфане, получается я зря старался? Перекатываться на выше перечисленые языки?
Аноним 14/11/14 Птн 10:37:25 #436 №405806 
>>405804
>Что же делать нюфане, получается я зря старался? Перекатываться на выше перечисленые языки?
да
да
Аноним 14/11/14 Птн 11:19:05 #437 №405813 
>>405804

>Но внезапно обнаружил, что я нахуй никому

ты слишком толстый или просто идиот, в ДС вакансий по-плюсам много. А про пиндосию и гейропу говорить не надо, со знанием плюсов туда можно свалить без проблем.

>Все хотят php/java/ruby/python

скриптовое гавно для школьников и недоучек
Аноним 14/11/14 Птн 11:36:17 #438 №405820 
14159541776210.png
14159541776211.png
а вот пруфы кстати
Да плюсы недоступны для идиотов и ламеров. Но все же рекомендую учить их, а не макака-языки:

>PHP/JS/Python/Ruby

Потому как macaque language рождаются и умирают быстро, плюсы практически вечны по-меркам IT. Станешь сеньером - обеспечишь себя прибыльной и интересной работой на всю жизнь.
Аноним 14/11/14 Птн 11:57:47 #439 №405831 
>>405820

Но плюсы нереально унылые в отличие от веба, у них плохой синтаксис, куча скобочек и точек с запятой. Уж лучше что-нибудь из современных языков вроде Go, D, C#, Rust и тд .
Аноним 14/11/14 Птн 11:58:57 #440 №405832 
>>405820

И я никогда не понимал, в чем смысл разделять код на 2 файла? Что мешает писать в одном? И почему там до сих пор нет нормального компилятора, который компилировал бы отдельные модули а не пытался объединить тысячи файлов в один огромный файл. Какой идиот это придумал?
Аноним 14/11/14 Птн 12:45:29 #441 №405857 
>>405831

>унылые в отличие от веба, у них плохой синтаксис

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

>куча скобочек и точек с запятой

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

>Уж лучше что-нибудь из современных языков вроде Go, D, C#, Rust

ни один из них не сможет заменить плюсы, только в интерпрайзе могут потеснить, но там скоро 1С всех окончательно задавит

Аноним 14/11/14 Птн 13:26:29 #442 №405866 
>>405813
>>405820
Вакансии есть, но исключительно с опытом, когда с помощью других языков устроиться работать за еду не составляет проблем.
Аноним 14/11/14 Птн 15:13:49 #443 №405901 
>>405857
>синтаксис плюсов невероятно удобен и выразителен.
Вытек из треда.
Аноним 14/11/14 Птн 15:26:59 #444 №405908 
>>405857
сделай меня не видеть скобочки в common lisp
Аноним 14/11/14 Птн 21:32:04 #445 №406050 
14159899242700.jpg
Начал я тут изучать представление чисел в памяти эвм.
Нашёл такую прогу
#include <iostream>
#include <bitset>

int main()
{
int i;
std::cin >> i;
std::cout << std::bitset<8>(i) << std::endl;
return 0;
}

Но почемуто не пашет с вещественными числами. В чём дело? Как мне увидеть в консоле вещественное число?
Аноним 14/11/14 Птн 21:40:16 #446 №406054 
>>406050
facepalm.jpg

Делай юнион с массивом char, получишь двоичное представление чего угодно.
Тут примеры есть:
http://stackoverflow.com/questions/4743115/how-do-i-use-bitwise-operators-on-a-double-on-c
Аноним 15/11/14 Суб 01:57:10 #447 №406138 
>>406050
http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB
Аноним 15/11/14 Суб 12:20:49 #448 №406184 
Я тут заметил, что у шаблонных типов можно вызывать любые методы http://ideone.com/KBk7ug
Получается вместо предварительных деклараций можно везде использовать typename T?
То есть вместо того, чтобы писать в заголовке class A; class B; а потом в cpp файле #include "A" #include "B" просто везде используем шаблоны и файлы вообще никак не связываются друг с другом и после правок компилируется ровно один файл.
Почему все так не делают?
Аноним 15/11/14 Суб 15:13:14 #449 №406249 
>>405832
А директива #include для чего?
Аноним 15/11/14 Суб 18:46:41 #450 №406318 
http://ideone.com/5FhpLz

подскажите, что не так здесь? надо, чтобы "ty" было передано в макрос А, там соединилось с "qwer" оператором ##<и напечаталось
sageАноним 15/11/14 Суб 19:22:27 #451 №406346 
>>406184
Потому что кто-то (возможно даже ты, через некоторое время) попробует своими шаловливыми ручонками вызвать test(smth), подав параметр smth, у которого не определён метод test.
Аноним 15/11/14 Суб 19:39:57 #452 №406356 
Посоны, а Minix же на голой сишке написана?
Мимо-школьник
Аноним 15/11/14 Суб 20:14:39 #453 №406366 
>>406356
И на асме чуть-чуть.
Аноним 15/11/14 Суб 21:01:20 #454 №406393 
>>406346
Ошибка в компилтайме, никакой разницы.
sageАноним 16/11/14 Вск 00:02:31 #455 №406513 
>>406393
Зачем использовать темплейт, если он не нужен? Без темрлейта понятнее, что функция делает.
Аноним 16/11/14 Вск 17:44:22 #456 №406778 
>>406513
Так я же изначально писал про предварительные декларации. Везде делаем шаблоны и классы независимы друг от друга - компилируется всегда один файл, а также можно легко заменить один класс на другой.
Аноним 16/11/14 Вск 18:31:08 #457 №406789 
>>406778
Я не понял, как и что ты планируешь это сделать. Инклюдить то их надо.
Аноним 16/11/14 Вск 19:05:40 #458 №406801 
>>406789
Предварительная декларация - http://pastebin.com/s7qV9Vja
Шаблон - http://pastebin.com/bgyyvBP4

В первом случае при изменение yoba.hpp компилируются файлы: yoba.cpp + yoba.hpp, test.cpp + test.hpp.
Во втором случае если изменяется yoba.hpp, компилируются только yoba.cpp + yoba.hpp.
Аноним 16/11/14 Вск 19:50:15 #459 №406828 
>>406801
Сам по себе темлейт никуда не компилируется, и test.cpp во 2-ом случае тебе не нужен. Ты не можешь скомпилировать шаблон функции просто так и слинковать его. Тебе надо его инстанцировать - то есть если ты захочешь где-то использовать test, то тебе придется test.hpp инклюдить, и он будет компилироваться отдельно для каждого типа, с которым будет использоваться. Короче у тебя там даже main'а нет, и твой шаблонный test нигде не инстанцируется, так то код твой не имеет смысла. Покажи мне пример, где темплейт инстанцируется, и что-то там у тебя экономится.
Аноним 18/11/14 Втр 14:03:32 #460 №407506 
Никак нельзя сделать switch по typeid?
Аноним 18/11/14 Втр 14:29:17 #461 №407511 
>>407506
У type_info есть .name(), в c++11 - еще и .hash_code(). По ним и делай.
Аноним 20/11/14 Чтв 19:11:56 #462 №408330 
Собрал под виндой при помощи MinGW - при запуске эксешника вылазит командная строка с stdout. Как это убрать?
Аноним 20/11/14 Чтв 19:17:01 #463 №408333 
>>408330
Какая система сборки? Кинь -mwindows линкеру.
Аноним 20/11/14 Чтв 19:27:06 #464 №408337 
>>408333
Я просто делал g++ {звёзочка}.cpp -o out.exe
Из флагов только -O3 -std=c++11
Чуть позже ноут с виндой запущу, посмотрю что изменится от -mwindows.
Вопрос Аноним 21/11/14 Птн 20:11:34 #465 №408713 
14165898946110.png
Сишники и крестоебы, а скажите мне, почему вы до сих пор не перешли на пикрелейтед?

У нас есь:
такой-то сборщик мусора
возможность не пользоватсья им, если вы - байтоеб
нативные строки
нативные ассциативные массивы
модули вместо хедероговна
возможность использовать все C и многие C++ либы
стандартная библиотека размером с жопу твоей мамани
IDEшки для тех, кто не хочет без них
много чего еще

+ бонус:

АЛЕКСАНДРЕСКУ

Зачем продолжать
> ненавидеть любимый язык
, если его можно любить?
Аноним 21/11/14 Птн 20:18:19 #466 №408715 DELETED
>>408713
Qt.
Аноним 21/11/14 Птн 20:42:47 #467 №408719 
>>408713
Dбилы даже не могут в разметку. Простите за вторжение.
Аноним 21/11/14 Птн 20:47:42 #468 №408720 
>>408719
Высказался — и аж потеплело, правда? Как моча по штанине потекла. Небыдло пёрднуло во сне и улыбнулось
Аноним 21/11/14 Птн 20:53:16 #469 №408722 
>>408720
Да ладно тебе, братан, я ж по-дружески пожурил.
Аноним 22/11/14 Суб 02:36:37 #470 №408770 
>>408713
>а скажите мне, почему вы до сих пор не перешли на пикрелейтед?
1. Мне нужен аналог C++ а не C#
2. Не цепляет, нет киллерфич по сравнению с С++, тот же Rust выглядит намного вкусней.
Аноним 22/11/14 Суб 07:27:57 #471 №408789 
>>408713
Сборка мусора, александреску, нативные строки, ассоциативные массивы, и, самое главное, стандартная библиотека - нахуй не нужны. Если кто-то прется от такого говна - пиздуйте писать на похапе/руби/петоне/шарпе/яве/аллахе, вам плюсы и низкий уровень нахуй не сдались.

И - да, я люблю плюсы. Плюсы не любят те, кто не умеет ими пользоваться и не понимает, зачем они нужны.

Судя по треду с бустопидорами, шаблонопидорами, опять же александреску и ошметками эстиэля - здесь таких нет.
Аноним 22/11/14 Суб 12:15:15 #472 №408819 
14166477158450.jpg
>>408789
Аноним 22/11/14 Суб 12:16:31 #473 №408820 
>>408770
>Не цепляет, нет киллерфич по сравнению с С++

Звучит как-то по хипстерски. Вам шашечки или ехать?
Аноним 22/11/14 Суб 12:18:22 #474 №408821 
>>408789
>Судя по треду с бустопидорами, шаблонопидорами, опять же александреску и ошметками эстиэля - здесь таких нет.

Один ты весь в белом и на белом плаще.
Аноним 22/11/14 Суб 23:37:01 #475 №409014 
Анончики, какую простенькую IDE посоветуете для новичка? Друг решил заняться с++, но если я ему начну советовать QtCreator или visual studio, то он закончит изучение еще на установке программ
Аноним 22/11/14 Суб 23:44:23 #476 №409019 DELETED
>>409014
Ну если он иде не сможет поставить, то незачем ему и программированием заниматься.
Аноним 22/11/14 Суб 23:46:44 #477 №409020 
>>409014
EMACS
Аноним 23/11/14 Вск 00:00:43 #478 №409027 
>>409014
Geany. Но без автодополнения учиться гораздо сложнее, а там только для С.
Аноним 23/11/14 Вск 00:01:31 #479 №409028 
>>409014
Для начала notepad + cmd.exe
Ибо если твоего другана не цепанет сам процесс создания программы, то никакая ide ситуацию не спасет.

Помню, когда учился в универе, дал одному одногруппнику (по его же просьбе) учебник по Си за авторством Кочана (кто не знает, это проще, чем K&R и в первых главах материал разжеван до предела). Результат: книгу вернул, не сумев скомпилить hello world.
Аноним 23/11/14 Вск 01:23:10 #480 №409061 
>>409019
>>409028
интересно вы оцениваете навык и склонность к программированию по настройке сторонних программ
Аноним 23/11/14 Вск 01:30:33 #481 №409064 
>>409061
Вот только не надо мне приписывать оценочных суждений.
Я ничьи навыки, и уж тем более наклонности, не оценивал.
Просто я считаю, что не надо человка раньше времени грузить второстепенными вещами.
Аноним 23/11/14 Вск 02:44:10 #482 №409084 
Как правильно вставлять в лист по элементу используя for_each, list::insert и boost::bind?
Аноним 24/11/14 Пнд 01:37:42 #483 №409532 
>>408713
Я слышал, что бОльшая часть стандартной библиотеки не работает без сборщика мусора.
Аноним 24/11/14 Пнд 01:40:25 #484 №409533 
>>409084
Что значит вставлять в лист по элементу?
Аноним 24/11/14 Пнд 02:48:44 #485 №409537 
>>392779
Тред не читал. Короче, тут такая хуйня...
Время компиляции обычного проекта - 2 часа. Сразу нахуй.
Идиотские инклуды, постоянные костыли для простейших вещей, порядок декларирования итп. Архаическое говно. То, что кодится на нормальном языке за 3 месяца, кодится на крестах за 5, а это дикий пиздец. Хочешь нормально кодить - садись на сишарп.
Аноним 24/11/14 Пнд 07:30:40 #486 №409554 
>>409537
> Время компиляции обычного проекта - 2 часа. Сразу нахуй.
Используй precompiled headers
Аноним 24/11/14 Пнд 10:53:23 #487 №409573 
>>409554
Откуда сишарперу знать такие тонкости? Он наверное и про вектор, и тем более про алгоритмы не слыхал. Хуячит проект без STL и Boost, на голом С с классами, вот у него он и пишется 5 месяцев.
Аноним 24/11/14 Пнд 11:00:48 #488 №409575 
>>409573
Что ты несешь, поехавший? Чтобы соблюсти DRY-принцип в крестах, с их уебанскими хедерами, в которых в отличие от сишки просто неизбежно нужно помещать часть реализации, да проще укусить себя за хуй. И да, покажи архив либ, сравнимый с мавеном или хотя бы с nuget, чтобы каждая либа ставилась одной строчкой и была совместима с другим кодом по стилю кода, управлению памятью, исключениям, используемым строкам, контейнерам и т.д.
Аноним 24/11/14 Пнд 11:41:12 #489 №409584 
>>409575
И как хедеры мешают избегать дублирования кода? Ты про что вообще? Больше чем один раз на программу хедер не подцепится. Или ты называешь дублированием прототипы функций?
Какие проблемы в том, чтобы в хедере была часть реализации? И что тебе мешает не помещать ее туда, если у тебя от этого так бомбит?
буст и кьют - пиздатейшие библиотеки. После установки любая их либа ставится одной строчкой.

Но это все ладно. Я тебе открою один секрет: кресты не для говнокодинга уровня документооборота для малого бизнеса, где главное дешевле, где квалификация программиста определяется количеством либ, которые он знает. Кресты для высоконагруженных сервисов, где главное производительность. Кресты для написания осей, других языков и библиотек к ним, чтобы они работали быстро. Кресты дают необходимую гибкость для написания сложных структур, чтобы они при этом не стали неповоротливыми и медленными.
Чтобы максимизировать производительность, программисту нужно знать, как это все функционирует. Ему нужно думать, когда передавать по значению, когда по ссылке, а когда по правой ссылке, на что так плюются разрабы из более высокоуровневых языков. Нужно разбираться в алгоритмах и структурах данных. Хорошо знать оси, под которые ты пишешь. Но даже это не все: часто нужно еще и знать вещи, которые с программированием не связаны или связаны мало: нейронные сети, распознавание образов, машинное обучение.
Аноним 24/11/14 Пнд 12:11:23 #490 №409590 
>>409584
Ну-ка расскажи, как стыковать либу, которая использует исключения, с кодом, который к ним неустойчив. Как стыковать либу, использующую стандартный malloc из libc с кодом, который использует свои аллокаторы - хачить линкером? Про оси б ты тут не кукарекал - попробуй заапрувь в апстрим linux kernel код на С++. Про хайлоад тоже - там заруливают erlang и jvm-based языки. Про алгоритмы и многопоточность - любой нормальный жаваеб в них разбирается. Про Machine Learning, дак язык тут тоже побоку, и, кстати околоакадемических либ на жаве дофига.
Ты настолько вообще поехавший, что взялся сравнивать мавен с Qt+boost?
Аноним 24/11/14 Пнд 12:39:35 #491 №409597 
>>409590
>исключения
Лови исключения и возвращай код ошибки или напиши обертку.
>заруливают erlang и jvm-based языки
Это кто? Ты так решил?
>любой нормальный жаваеб в них разбирается
на уровне "выделить новый поток" и знать название алгоритма, чтобы вызвать нужный метод?
>дак язык тут тоже побоку
А я и не говорил, что на других языках этого всего нельзя использовать. Но дальше курсовых работ и бизнес-приложений, где не важна производительность, это обычно не заходит.
>кстати околоакадемических либ на жаве дофига.
кстати, как только нужна высокопроизводительная либа, ее пишут на плюсах
>взялся сравнивать мавен с Qt+boost?
Ой блять, мне уже стыдно. Как же. Где мавен, а где Qt+boost.
Аноним 24/11/14 Пнд 12:47:16 #492 №409598 
http://pastebin.com/GyzW27Ve - вот мой гавнокод, который работает, но мне надо сделать его красивее.

Пытался вот так http://pastebin.com/2Tc5NGnY
help
Аноним 24/11/14 Пнд 14:24:42 #493 №409613 
>>409584
>Больше чем один раз на программу хедер не подцепится.
Подцепится, если там шаблоны.
>И что тебе мешает не помещать ее туда, если у тебя от этого так бомбит?
Шаблоны
Аноним 24/11/14 Пнд 14:27:00 #494 №409614 
>>409598
STL + лямбда, range for. Сократишь код в два раза.
Ебани класс с конструктором и инкапсулируй все методы.
Не понятно, нахуя передавать сюда и в остальные методы MATRIX
>matrixConstructure(MATRIX);
если передаешь все равно по значению, а внутри присваиваешь результат глобальной переменной.
Как следствие, передавай по ссылке. И избавься от глобальной переменной. У тебя это будет объект класса.
Не понял, нахуя тебе at().

Сделай все это и еще раз запили, там посмотрим.
Аноним 24/11/14 Пнд 14:28:18 #495 №409616 
>>409598
>srand
Используй штуки из <random> http://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful
А вообще очевидно напиши функцию, выполняющую функциональный объект для всех i для всех j и подсовывай ей разные лямбды.
Аноним 24/11/14 Пнд 14:29:23 #496 №409617 
>>409616
>А вообще очевидно напиши функцию, выполняющую функциональный объект для всех i для всех j и подсовывай ей разные лямбды.
А не, это я обосрался. У тебя там по-разному итерации проходят.
Аноним 24/11/14 Пнд 14:34:23 #497 №409619 
>>409613
>шаблоны
Так ты называешь дублированием кода шаблоны? В сишарпе что, для каждого типа пишут свою реализацию алгоритмов и контейнеров лол?
дженерики рядом не стоят шаблонами с++
Аноним 24/11/14 Пнд 14:38:08 #498 №409620 
>>409616
>Используй штуки из <random>
Нахуй ему рандом? Это гвозди микроскопом. Ему псевдослучайность не критична, очевидно же. Не путай человека.
Аноним 24/11/14 Пнд 15:10:21 #499 №409627 
>>409597
Манька, для справки, Qt+boost по размеру больше, но того же порядка, что и стандартная либа Java SE (что есть в любом JRE). Про горы либ в мавен централе ты не в курсе. http://www.modulecounts.com/.
Твое остальное истеричное беспруфное кококо просто игнорирую. Если ты и правда веришь в свои маняфантазии, то их разрушит жизнь, когда легаси говно, что ты поддерживаешь, выкинут вместе с тобой.
Аноним 24/11/14 Пнд 15:15:21 #500 №409630 
>>409590
>кресты
>хайлод
Проиграл. Цпп - фронтенд онли язычок, никто крестодибила с его байтоёбством головного мозга к серверам близко не подпустит. Даже средний джавараб знающий хадуп и хоть немного могущий в кластеризацию оставит крестодибила с его "не заставляйте машину выполнять лишние действия" визгами глотать пыль на обочине.
Потому что на серверсайде важнее размер кодобазы и хорошая абстракция, чем пресловутое дрочево на байтики.

>Это кто? Ты так решил?
Вот тебе типичный пример разработки телекома на крестах с последующей заменой крестоговна на ЯП с нормальной платформой.
http://www.slideshare.net/JanHenryNystrom/productivity-gains-in-erlang
Вот так выходит, что быстрый-быстрый цпп сливает мееееедленному ирлангу на реальных задачах.

Я не спорю что у крестов есть свои задачи, гейдев там, большие десктопные прилаги, нетривиальная системщина, но блять хайлод, в эпоху облак и огромных датацентров, где нужно расширяться по горизонтали - крестам не сервере делать нехуй.
Аноним 24/11/14 Пнд 15:22:17 #501 №409632 
>>409627
Когда заканчиваются аргументы, начинается переход на личности и кукарекания аля "даже объяснять лень".
Я тебе вот здесь >>409584 зачем расписывал разность целей крестов и шарпа?
Просто уебывай в свой джава или сисярп тред, откуда ты там приполз. И ебашь дальше свои бизнес-приложения, которые тебя уже по всей видимости подзаебали. Всем похуй на твою БД из коробки. Если вдруг твоя быдлоконтора взлетит, и твой код станет узким местом, то выкинут тот говнокод, который ты понаписал, и заменят элегантным кодом какого-нибудь крестобога.
Аноним 24/11/14 Пнд 15:23:44 #502 №409633 
>>409630
>Цпп - фронтенд онли язычок
ок
Аноним 24/11/14 Пнд 15:28:33 #503 №409636 
>>409632
> выкинут ораву крестопетухов вместе с легаси говнокодом, где он еще остался, и заменят элегантным кодом какого-нибудь эрлангиста или скалаеба.

пофиксил, не благодари

http://erlangonxen.org/
Аноним 24/11/14 Пнд 15:32:24 #504 №409638 
>>409636
> выкинут ораву крестопетухов вместе с легаси говнокодом, где он еще остался, и заменят элегантным кодом какого-нибудь эрлангиста или скалаеба.
Это не ты там про манямирки кукарекал?
Аноним 24/11/14 Пнд 18:43:54 #505 №409710 
>>409619
>Так ты называешь дублированием кода шаблоны?
Не понял.
>В сишарпе что, для каждого типа пишут свою реализацию алгоритмов и контейнеров лол?
Нет
>дженерики рядом не стоят шаблонами с++
Стоят.
Аноним 24/11/14 Пнд 20:01:15 #506 №409724 
Начал изучать С++ по книге Липпмана (хороший выбор, не так ли?) и наткнулся на странную вещь: почему автор называет структуры классами? Я понимаю, что он не имеет в виду то, что это одно и то же, но всё-таки, нельзя же даже в контексте заменять "структура" на "класс", ведь структура не содержит никаких методов. В чём я не прав?
Аноним 24/11/14 Пнд 23:45:34 #507 №409838 
Очень сильно поможете, если поможете.
Дело в том, что в железе и софте я полный профан. И есть одна мамка, которая узнала, как говёно учусь. Ну и поставила пасс на комп. Пригрозилась, что если пасс будет удалён или сменён, то отец просто вырвет видюху и сломает её. Так о чем я прошу, анончики. Как взломать пасс, чтобы об этом никто не узнал? Ну или есть какие- нибудь особые приметы, ну типа чаще всего люди ставят пароли, связанные с тем- то.
Анонс, помоги, молю. Только купил новых игорь, да и с мобилы сидеть на двачах не кашерно.
Аноним 25/11/14 Втр 01:55:28 #508 №409897 
>>409614
Запилил правильно указатели. Теперь все ок. http://pastebin.com/tSFSt9sk

at использовал чтобы выбрать элемент массива. Плохо так делать?

Но тетя, которая должна у меня это посмотреть и отъебатся говорит, что так низя, динамические массивы мы не учили.
При этом ставит задание "Дополнить матрицу..."

Как я должен изменять размерность статической матрицы - непонятно.

Буду делать копию.

>STL + лямбда, range for.
Это не шарю что такое, вряд ли получится. Да и если получится, то принесу с лямбдами - скажет низя.
Аноним 25/11/14 Втр 02:43:12 #509 №409899 
А поясните за чистый си, специализированного треда не видно, напишу сюда.

Чтобы объявить функцию явно без аргументов, нужно написать, например,
    void foo(void) { ... }
При этом объявление
    void foo() { ... }
в си (но не в плюсах) означает произвользное число аргументов любого типа.
Как пример, вторую функцию можно вызвать как
    foo(1, 2, 0.35, "говно", "моча");
тогда как с первой компилятор ругнётся на несоответствие аргументов.

Вопрос, собственно, нахуя это нужно. Т.е. как получить эти параметры из функции? Если попробовать подключить stdarg.h и через va_list, не даёт: "«va_start» в функции с фиксированным числом аргументов". Но параметры то куда-то передаются (полагаю, кладутся на стек при вызове cdecl?), как получить к ним доступ?
Аноним 25/11/14 Втр 05:00:15 #510 №409908 
>>409724
В C++ структура и класс отличаются лишь тем, что у структуры все, что не находится в private:, public: или protected:, по умолчанию объявляется public, а у класса - private. Структуры могут иметь методы.
Аноним 25/11/14 Втр 05:01:17 #511 №409909 
>>409897
>int HEIGHT
>int WIDTH
Нахуя указатели?
Аноним 25/11/14 Втр 13:48:26 #512 №409979 
>>409909
Не нужны?

У меня не получается в функцию передать статическую двухмерную матрицу.

Получаю stack smashing detected : на малых массивах и ерунду; просто ерунду на больших.

Хотя получалось какой-то столбик считать один раз правильно.
Аноним 25/11/14 Втр 13:50:28 #513 №409980 
>>409979
Вот говнокод http://pastebin.com/0iA4nKKU
Аноним 25/11/14 Втр 17:29:38 #514 №410018 
Хотел перейти с qt-креатора на более функциональный codeblocks, а там такая примитивная подсветка, почти всё кроме ключевых слов и операторов тупо чёрный текст и по-другому не сделать. Как вы так кодите?
Аноним 25/11/14 Втр 19:58:51 #515 №410061 
>>410018
Мы так не кодим. Кодеблокс - нихуя не функциональный, и вообще полное говно.
Аноним 25/11/14 Втр 23:07:06 #516 №410164 
>>409908
Имеешь в виду объявления функций как struct_name function() {...} или что-то другое? не нагуглил методы _в самой_ структуре.
Аноним 26/11/14 Срд 21:33:14 #517 №410521 
>>410164
Либо я не понял, что ты имеешь в виду, либо ты тупишь, потому что у структур и классов все одинаково кроме дефолтной видимости

http://ideone.com/aAr30j
Аноним 26/11/14 Срд 22:16:40 #518 №410535 
>>410521
Аа, я такого не знал. Думал, что в С++ структуры такие же, как и в С. Где про это почитать можно?
Аноним 27/11/14 Чтв 07:16:06 #519 №410647 
>>410535
Про что - это? Все, что нужно знать по твоему вопросу, я уже написал в своем посте.

Вообще про классы/структуры C++? В любом учебнике C++ http://www.stroustrup.com/programming.html
Аноним 27/11/14 Чтв 07:23:48 #520 №410648 
Палю годноту
https://kickass.so/oreilly-effective-modern-c-scott-meyers-t9855240.html
Аноним 27/11/14 Чтв 11:14:06 #521 №410676 
Как сделать обход произвольной двумерной матрицы змейкой из центра?
Аноним 11/12/14 Чтв 02:00:38 #522 №415549 
>>408821
Прикинь, так оно и есть. Аллокаторы (которые pointer-bumping, pool, buddy, блять, да даже tlsf или ебаный dlmalloc) в треде упоминаются? А почему фрагментация - зло? Почему плюсы мощнее и удобнее в управлении памятью, чем любая система с GC? Какие гарантии у GC и какие я могу сделать руками? Окей, с памятью все.

А кэши, а DOD? А инлайнинг? А зачем нужны шаблоны без метапрограммирования? А почему нельзя использовать std:: говны? Что в них не так, на примере map и string? В чем смысл сущестования map, если есть unordered_map, если не брать в расчет динозавров и уебанов (алсо, кто эти две категории?)

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

Я так долго продолжать могу. Просто местные говноплюсовики слишком сосучи, чтобы просто понимать, что они делают, зачем и почему на плюсах. Как и большинство фанатов плюсов. Ответьте на любые два вопроса и можете считать себя тру-экспертами, серьезно.

Алсо, сколько в разделе бамплимит? Перекатываться не пора?
Аноним 11/12/14 Чтв 02:09:09 #523 №415555 
>>409630
Ты продолжай не дрочить на байты, продолжай. Пока рожают таких дебилов, моя зарплата будет расти.
comments powered by Disqus

Отзывы и предложения