Это копия, сохраненная 31 июля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
⚹ https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый тред: >>2004069 (OP)
Есть ошибки с ДНК зато.
Ну если закрыть и открыть компилятор ошибки исчезают, код компилируется, но не запускается.
Код не запускаеться, если ты нажмешь на файлик с кодом он откроется в текстовом редакторе, а тебе нужно его скомпилировать а потом исполняемый файлик запустить
Помочь родителям с уборкой.
Ну так компилируй его, для этого нужно скачать компилятор - программу которая компилирует код. Рекомендую gcc
Найди файлик который получился при компиляции, наведи на него мышю и клацни два раза
Почему он должен? В IDE такого не предусмотрено. Короче я сейчас пойду спать, ты ни в коем случае ничего сам не делай а то можешь компьютер поломать. я с утра приду и продолжим
Правильно Hello World!
В наших сердцах действительно остался маленький синий экранчик со словами TURBO PASCAL или TURBO C. Но не давать же их ньюфагу в 2021? Хотя.... Не ебёшься с системами сборки, не ебёшься с консолью, подключаешь conio, не волнуясь о платформонезависимости, не ебёшься ни с чем - ты пишешь код и запускаешь его. Блин, может ты и прав.
>Он уже почти 20 лет как мёртв
Шта?
А ты не офигел ли часом
https://www.embarcadero.com/ru/products/cbuilder
Скан паспорта им не надо для скачивания?
Роберт Лафоре - Объектно-ориентированное программирование C++, 4-е изд (Классика Computer Science) - 2004 г.
Я по скрину с прошлого треда узнал его книжку
>Не ебёшься с системами сборки, не ебёшься с консолью, подключаешь conio, не волнуясь о платформонезависимости, не ебёшься ни с чем - ты пишешь код и запускаешь его
Почти как в вижуал студии, да?
А
Н
И
К
У
Л
Ы
Значит надо настроить зелёную круглую кнопку с белым треугольником.
У нас в деревне был сортир. Я просто в него заходил и срал в дырку. Когда я переехал в город, то теперь надо опустить стульчак, вытирать жопу, смыть за собой и поелозить ёршиком. Как же я устал и хочу обратно в деревню.
Но я пользуюсь VSCode под windows.
ты какую эклипс скачивал, которая с CDT?
Тебе нужна вот эта https://www.eclipse.org/downloads/packages/release/2021-03/r/eclipse-ide-cc-developers
Можно конечно cdt установить. Но ты скорее всего запутаешься.
Eclipse IDE for C/C++ Developers (includes Incubating components)
Version: 2021-03 (4.19.0)
Build id: 20210312-0638
Ты намекнул хотя бы и программа заработала, но я хз правильно ли настроил запуск, но в любом случае спасибо.
К сожалению тут маразм с двух сторон, поэтому все так сложно.
1. С одной стороны кретин, который не в состоянии посмотреть настройки эклипса.
2. С другой стороны шизы, которые рады стараться высрать свое веское мнение о единственно правильном IDE.
Короче, два дебила = это сила.
там это сверху подписано было
Удаляешь C:\Users\<Имя>\AppData\Roaming\JetBrains\CLion2021.1\eval\CLion211.evaluation.key и все
блять ну ты реально не мог загуглить что-ли
Не надо. По крайней мере у меня все и так работает. Некоторые рекомендуют удалять даже конфигурацию CLion, но по-моему это какой-то троллинг. В общем просто тот файл удали и все
скромно, но со вкусом
Естественно лучше, потому что в С++ ты не платишь за то, что не используешь. А там куча бессмысленных проверок, потому что язык считает программиста за дурака.
Я не против, чтобы в компилятор С++ добавили дополнительные предупреждения про опасные моменты, но категорически против, когда эти проверки выносят в runtime и тормозят программу.
Он лучше не только раста, но и шарпа. Реально лучший язык всех времён и народов.
Вот из-за таких как ты клешнерукие и приходят сюда троллить
Если не ошибаюсь, эта самая куча бессмысленных проверок происходит в компайл тайме, так что ты за них тоже как бы не платишь. Хотя может и в рантайме что-то есть.
Где же растошизик, когда он так нужен?
Раст генерирует код чуть хуже чем С++, ровно за счет того, что С++ным фронтендам компиляторов лет в несколько раз больше, чем растовым.
В остальном - перф тот же. Но на языке для трапов и SJW я писать не буду
Они не бессмысленные, безопасность раста вытекает из статического анализа, но как? Для плюсов тоже есть инструменты статического анализа, которые, однако, не гарантируют безопасность. Дело в том, что в расте есть линейные на самом деле афинные и лайфтаймы регионы, т.е. программа считается безопасной тогда, когда выполняются условия линейной логики и условия лайфтаймов.
Например, https://github.com/pikatchu/LinearML и http://www.ats-lang.org/ не имеют gc В ATS надо чистить память явно и гарантируют безопасность.
Аналог лайфтаймов был в циклоне https://cyclone.thelanguage.org/
В плюсах, так понимаю это бест практисы, типа использования мув семантики и умных указателей.
>>055417
Там действительно есть проверка границ массиво в рантайме, но компилятор умеет их оптимизировать, также можно юзать unchecked методы, или просто использовать итераторы. Ну и проверка переполнения, которую тоже можно отключить она отключена в дефолтном профиле карго в релизе
Ну и проверка на переполнение стека, которую также можно отключить.
как это должно скейлиться, если каждый тред может увеличивать только если ODD or EVEN. Если бы просто надо было инкрементировать, то разнёс бы счётчики по массиву с учётом размера cacheline. А так ваще хз. Что от меня хотят. Неужели тупо цикл compare_exchange_strong?
>Неужели тупо цикл compare_exchange_strong
Кроме CAS-loop я не вижу вариантов. Ну или хз что за учебник, может там автор хотел, чтобы ты дерзко влепил мьютексом это дело.
А как скейлить это?
Ещё был какой-то язык с названием типа FX-87, там тоже были регионы они, вроде, были как растовые лайфтаймы, он также гарантировал безопасность памяти, а ещё он был функциональным.
Гугл не помогает умник.
Шел четвертый день пердолинга с эклипсом
Если ты ещё не сообразил, то я попробую разжевать. Слишком много всего разного ты мог сделать не так, это раз. Эклипсом никто не пользуется, плюс твои скрины невероятно неинформативны, это два. Поэтому, никто тебе ничем помочб не может. Лучше попроси кого-нибудь лично поковыряться в твоём компе, если сам с помощью гугла не в состоянии.
А, забыл, третий пункт. От того, что ты тысячу раз уебешься головой о бетонную стену, она не треснет.
Ошибки на скринах, код на скринах. Никто не пользуется еклипсом? Это не так. Живут и процветают. Ты просто не обремененный интеллектом троль неудачник. Хоть самому подавать заявку на модерку и банить таких упырей как ты.
Peace DOS
Ты эклипс поставил, потому что белый пояс? Тебе вполне корректно пояснили, что нет разницы, в чём писать, кроме количества потной ебли. Самый быстрый способ -- это открыть консольку, написать там
sudo apt install g++
cd moy/yobanyi/govnokod
g++ first.cpp
./a.out
и у тебя всё заведётся. А там может и с эклипсом ебаться расхочется.
Тебе даже вот тут это уже посоветовали
>>054358
Сделаю рублей за 100-200.
нахуй иди
Игнорируйте этого долбоеба, даже нахуй не посылайте
Semantic Error это не синтаксическая ошибка.
Значит надо отключить оповещение о семантических ошибках, все просто.
Эклипс не штудия и при запуске компиляции файлик не сохраняет (видишь там у тебя звёздочка). Сие чудное поведение где-то там настраивается, но в настройках эклипса заблудилось уже слишком много народу. Не лезь туда.
>Эклипсом никто не пользуется
Есть ещё места, куда без него не залезешь.
Пробовал смотреть в gcc.godbolt.org - какая-то хуита появляется (там появляется тело функции main в которой какой-то асм код) если юзать constexpr static - но я не шарю за асемблер и не понимаю что там
А че у них криминалисты в программирование не умеют? А если нужно будет хакнуть преступника?
Картинка отклеилась.
Так для этого кресты - как микроскоп для гвоздей. Тут же какого-нибудь ms access хватит.
Студент, я тебя раскусил, иди на хуй со своими лабами по СУБД Access
Ты заебал уже блядь, необучаемый.
> Как это сделать?
Посмотреть настройки.
> Почему эти ошибки не дают скомпилить и выполнить код?
Потому что так настроен редактор.
Ебу дал? Это я на фрилансе нашел
>>055927
Но я бы такое не стал делать, и другим не советую даже за большой доширак. Потому что это менты, будут просить дополить или проконсультировать как пользоваться очередной девочки-практикантке из института МВД, а если откажете сами понимаете что будет. Таких нехитрым образом окажетесь в вечном рабстве, оправдывая звание анальника.
Безопасная сделка
Я что-то не понял этих формул. Почему гребцу 1/3? Тут же расчёт, что ты один будешь кодить. И как вышло 11 часов? 4$ - это почасовой тариф или что?
Внешний рейт гребца на любой галере в три раза больше внутреннего. Даже если ты сам себе галера.
Проект на джун+, джун+ получает 700$-800$ в месяц, это примерно 4$ в час.
Итого: бюджет проекта - на 11 часов пердалинга, даже без тестирования => идите нахуй
> Даже если ты сам себе галера.
То есть ты возьмёшь у самого себя 1/3, а остальные 2/3 самому себе не отдашь? Ебало представили?
Нет, ты забыл расходы на юриста, сейлза и прочие, а так же внос в фонд простоя и т.д.
Грубо говоря, ты должен раздвоиться на кабанчика и гребца
> Как это сделать?
Через настройки
> Ты уверен что если я отключу, то код скомпилится?
На все сто.
Есть еще способ: удали строку using namespace std; и вместо cout напиши std::cout.
Результат заливай сюда.
Херню советуешь.
А мог бы скачать Qt и погрузиться в мир современных графических приложений, а не устаревшей консольной херни.
Я бы не назвал виджеты миром современных графических приложений, вот на qml реально формошлепаешь как бог.
Это пример из книжки Бланшет, Саммерфилд - QT4 Программирование GUI на С++. Немного творчески доработал только. Понятно, что нормальное приложение никто так писать не будет. Но в учебных целях в самый раз.
Книга кстати на порядок лучше, чем у Шлее. Здесь реально авторы объясняют как пользоваться библиотекой, а не тупо перечисляют все виджеты как Шлее. Хоть она и устарела немного, но всё равно всем бы советовал начинать с именно с неё.
Тыж программист. Английский хорошо апает чтение книг по своему хобби. Я например прочел около 20 тайтлов на англ по кулинарии.
У меня в школе по английскому была злая училка и она привила неприятие и к языку. Хоть я и понимаю его важность, но не могу преодолеть психологический барьер.
Я тож в школе и унике не то чтобы хорошо выучил.
Нихуя не понятно со скрина, почему комментарии к коду не пишем? Как эту простыню текста мы должны разбирать?
>старый синтаксис QObject::connect
Та ну ебанный врот, Qt5.0 вышла хрен знает когда, уже даже Qt6.0 есть
Нет, но новый синтаксис лудше
Они не написали по Qt5. Я что-то мельком читал, что там перекупили их фирму и теперь там совсем новая политика. Поэтому сейчас пытаются заработать на самом продукте, а не на распространении среди программистов и им не выгодно выпускать книги.
хочу сделать чота в 3д, какую версию directx выбрать для изучения?
Нужно чтобы не сильно сложно и чтобы не требовалось писать тысячи строк чтоб нарисовать треугольник
Цель:
1. перемещаемая камера
2. Треугольничик.
3. Треугольничик может двигаться как я захочу
4. я покакол
Ну шо?
Я НЕ ХОЧУУУУ ОПЕНГЭЭЛ ГАААДОСТЬ!!!
Я хочу как настоящий разработчик 3д аппликаций работать на уважаемом directx! Я когда игры устанавливал то постоянно видел в папке редист екзешник директ икса, значит игры написаны на нем, весь мир сидит на директиксе и я хочу
Просто разные апи. OpenGL - кроссплатформенный (хотя вроде как эппл его не особо любит) и при должном старании можно хоть с OpenGL ES под мобилки писать. Чистые Си. Но он... своеобразный, ты по сути вызовами функций изменяешь состояния глобальной стейт машины. И возвращаются тебе не ссылки на конкретные объекты типа буффера или текстуры, а непрозрачные интовые хендлы которые ты случайно можешь запихнуть не туда (и обязательно запихнёшь). DirectX 9-11 - венда онли. Сам пробовал лишь чуть-чуть, но говорят поприятнее. Но там COM, а у некоторых есть тебя аллергия на всякие QueryInterface.
Vulkan и DirectX 12 - апи со сложностью ultra violence, по сути ты наполовину сам пишешь драйвер для видюхи. Но если у тебя команда из 40 продвинутых графических инженеров, то ты сможешь сделать +20% производительности по сравнению с другими апи за счёт отсутствия оверхеда драйверов и тонкой подгонки под себя. В одно лицо делать - оно того не стоит.
так далеко не все сделано на анриале
хочется сделать велосипед с ходящими кубами, НО СВОИМИ СОБСТВЕННЫМИ, а не встроенными в движок, чтобы ты наблюдал за ними как за собственными детьми которые учатся ходить, может для рандома это будет выглядеть глупо, ведь все люди умеют ходить, но это НЕ ВСЕ, ЭТО ТВОИ СОБСТВЕННЫЕ КУБИКИ ДЕТИ
Мудро.
Когда разберёшься с линуксом, подумаешь, что на винде ад и ебля. В плане серверов и разработки линукс намного удобнее но на десктопе всё наоборот.
Спасибо
В плане серверов - да, в плане разработки - говно полное.
Собстно, пишу код в студии и кросскомпилирую его в WSL2, потому-что в нативном линуксе боль, говно и дрисня
Двачую этого. Для задач админских линукс богоподобен, но как дело доходит до обычного пользования... Бля.
У тебя в программе должен быть бесконечный цикл, который принимает от Винды события, а затем отправляет их на обработку. События - это нажатие кнопки, перемещение мышки, таймер и т.п. На каждый тип событий пишется своя функция-обработчик, где они обрабатываются как тебе надо.
Поэтому все эти книжки для новичков про консоль морально устарели и не отражают реальные тенденции современного программирования графических приложений.
Просто заменить недостаточно, там свой API со своими функциями. Смотри туториалы по curses.
Яснопонятно, пойду читать мануал
лол
x, не указатель, но выражение "x" в некоторых контекстах преобразуется к указателю на свой первый элемент. Гугли array to pointer decay.
Для оператора cout::<<() есть вот такой набор перегруженных методов:
https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt
Среди них нет версии для массива x[], но есть версия для указателя. Так как x[] можно привести к указателю, то отрабатывает operator<<( const void* value ).
sizeof() имеет версию для массива x[], поэтому работает с ним как с объектом и возвращает размер этого объекта в байтах
От потребностей зависит. Если что-то нужно, то выучишь. Впрок учить тяжело.
хуевый способ рисовать бля буду охуеешь лучше сделай класс screen и рисуй по массивам
thread abc(f, ref(a));
и насколько я понимаю те 5 заголовков не исправят ситуации, а просто дополнят возможностями. Это нормальная практика так писать? Есть еще многопоточность от boost, может там дела лучше? И вообще, не должна ли многопоточностью заниматься winapi? Зачем все эти библиотеки? Ради кроссплатформенности? Как пишут на серьезных проектах?
не могу решить задачу, а в понедельник сдавать её надо.
надо на плюсах ебануть её
std::thread thread =
{
----[&, govno = std::move(mocha)](){...}
};
> многопоточность от boost, может там дела лучше?
суть та же, стандартная реализация вроде от boost-овой отпочковалась, как обычно
> И вообще, не должна ли многопоточностью заниматься winapi?
она и занимается, std::thread и прочие мьютексы це просто обёртка над всей этой хтонью
> Зачем все эти библиотеки? Ради кроссплатформенности?
точно так
> Как пишут на серьезных проектах?
лучше не знать
Я бы поехал по дороге А и не выделывался. Пока там сворачиваешь, то больше времени потратишь, а ещё и заблудишься в довесок.
"Динамическое программирование", слышал о таком?
Короче, сводишь задачу к задаче N-1, а потом придумываешь как сделать переход N-1 -> N.
Алгоритм будет потом в цикле удлинять 1->2->3->...->N.
>array to pointer decay
Вы приняты!
Алсо, вопрос по-сложнее: может ли чисто виртуальная функция иметь тело?
Окей. Нужно из массива одномерного выписать все простые числа в которых есть тройка..
Так ведь это просто. Что тут не понятного?
Сначала пишешь функцию для проверки, что число простое, её копипастишь отсюда: https://stackoverflow.com/questions/36797150/prime-number-function
Потом пишешь функцию для проверки, что в числе есть указанная цифра: https://stackoverflow.com/questions/46803064/determine-if-a-number-contains-a-digit-for-class-assignment , затем подставишь в качестве цифры тройку.
Дальше итерируешься по массиву, в теле делаешь проверку:
if (isPrime(arr[ i ] && containsDigit(arr[ i ], 3))
{
std::cout << arr[ i ] << std::endl;
}
И всё.
Спасибо.
Женщины даже не смотрят на эклипсочмонь
>Fixed for you
Извиняйся, неосилятор.
>Отлично - создавай свой тред, и делай там всё, что хочешь
Это территория C++, клуб любителей анальной дрочки от M$ на два треда вниз.
>Извиняйся, неосилятор.
Извинился струей мочи тебе в рот, борщехлеб.
> Это территория C++, клуб любителей анальной дрочки от M$ на два треда вниз.
Как там в 90ых? Ты еще поди винду МАЗДАЕМ называешь, да, додик?
>Как там в 90ых? Ты еще поди винду МАЗДАЕМ называешь, да, додик?
В 90х было заебись, пришел с садика, покушал, погулял и ты молодец, а теперь работать надо, вникать в это вот всё.
воистину
fA(0) = 0
fB(0) = 0
fA(n) = min(fA(n-1) + dA(n), fB(n-1) + dA(n) + t(n))
fB(n) = min(fB(n-1) + dB(n), fA(n-1) + dB(n) + t(n))
ответ min(fA(N), fB(N))
// все за вас надо делать, школие
Это вообще нормально, что теперь определения классов будут продублированы в каждом файле? Что за скотина проектировала этот язык? Почему он ведет себя как интерпретатор?
Ты даун или да? Т. е. ты прочитал название и по нему судишь о сущности понятия?
При подключении заголовочных файлов подключиться только один, все другие будут игнорироваться через механизм условной компиляции, необходимость включения заголовочного файла в каждый модуль вызвана потребностью в отключении некоторых модулей без потери способности к компиляции других модулей
я не понял что куда находит. Компилируются только .cpp файлы, все #include - текстовая подстановка внутрь .cpp файла
Потому-что "компиляция" происходит в два этапа - непосредственно компиляцию и линковку. Заголовочный файл используется на первом этапе где ссылки на функции из других модулей упаковываются в таблицы символов: откроешь объектный файл все станет ясно. Вся программа компилится в такие объектный файлы. Потом они утрамбовываются в один исполняемый файл линковщиком который связывает их
А как линковщик находит файл foo.cpp если в foo.h он никак не упомянут. Смотрит, что foo.cpp подключает foo.h? Это он чё, все файлы проекта штудирует? А если мой foo.cpp вообще на другом жестком диске хер пойми где спрятан?
1. foo.h пропадает на этапе препроцессинга, при компиляции его не существует, он уже внутри foo.cpp. Линковщик не занимается foo.h.
2. foo.cpp компилятором конвертится в foo.о (объектный файл)
3. foo.о линкуется в foo.ехе
Q:Как препроцессор находит файл foo.h ?
A:Он указан в foo.срр директивой #include, аргумент директивы может иметь два вида - <foo.h> и "путь к foo.h". В первом случае он ищет файл в папках где лежат заголовочные файлы оп-умолчанию, обычно эти папки указаны в настройках проекта. Во втором случае он ищет файл по указанном пути и включает его, если не находит - ищет как в первом случае в папках где лежат заголовочные файлы по-умолчанию, т.е. вторая запись более общий случай первой. #include "foo.h" частный случай второй записи где приказано искать в текущей директории проекта, если не найдет тут пойдет по папкам по-умолчанию. Потом препроцессор всирает заголовный файл в foo.срр и все. Компилятор и линковщик не знают ни о каких заголовочный файлах
я про другое спрашиваю. как обнаружить foo.cpp который никакими инклюдами не упомянут
Когда ты нажимаешь волшебную кнопочку по которой из кода собирается исполняемый файл IDE передает сама передает файл препроцессору, потом компилятору а потом линковщику. Увидеть это можно в журнале компиляции как на пик 1
IDE может использовать также makefile как на пик 2, результат тот же
Ты же компилятору скармливаешь .cpp файлы, а не .h. Он просто берет код из .h и вставляет его в .cpp. Ему не нужно трогать .h файл, так как ссылки на него есть в .cpp файле.
мимо
Если ты просто положишь свой foo.cpp в папочку с проектом, то он и не будет компилироваться.
Его еще нужно так или иначе добавить в проект.
Или, если ты создаешь foo.cpp прямо в своей IDE, то она его добавляет (регистрирует) в проект, помимо собственно создания на диске одноименного файла.
Лучше сначала на наличие 3 проверять
>> Как пишут на серьезных проектах?
>лучше не знать
В целом, thread и future хватает для общих задач. Иначе - дроч с ConcRT, ThreadPool, Task PPL
future - это кал, колбеки в разы лучше (особенно для тестирования)
Редактор Dev-C++, горячо любимый всеми студентами до появления VS Code, ибо легковесный и не требует создавать проект на каждую laba1.cpp.
Всё вроде решил. У тебя есть тестовые значения проверить?
https://pastebin.com/gqaAweWq
Если правильно расставлю коменты и объясню как работатет
Я же говорю, можно if не писать. Надо учитывать поведение for. Сам посмотри код простой я думаю за пару вечеров ты разберешься с ним, но если что пиши мы тебе всегда поможем.
Так там ведь по условию нужно вывести нечетные числа. Как это сделать без if?
После каждой закрывающей скобки надо ставить точку с запятой.
почему в джсе и петухоно- тредах активное обсуждение чего-то связанного с около-программированием, а в с++ треде, самом каноничном и ТРУшном языке на секундочку, какие-то смехуёчки и ржака над абстрактными несуществующими вкатывальщиками?
Все ровно не запускается, да что такое, будь другом подскажи что не так
for(int i=0;i<Array.Length;i++){
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=1){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=3){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=5){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=7){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=9){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=11){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=13){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=15){
Console.Write(i);
}
}
}
}
for(int i=0;i<Array.Length;i++){
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=1){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=3){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=5){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=7){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=9){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=11){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=13){
Console.Write(i);
}
}
}
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=15){
Console.Write(i);
}
}
}
}
На самом деле в жс треде бесконечный токсичный срач не тему того можно ли вкатиться.
А у нас тут ламповая атмосфера, т.к. мы заранее знаем, что вкатиться нельзя и общаемся на расслабоне))
Дружище, кто же так пишет?
У тебя какой-то примитивный код.
Почему не используешь итераторы и ламбда-выражения?
>>059927
Ой, как неудобно получилось
Давай вкину снимок экрана
Смотри: Сперва мы объявляем цикл по Array.Length, который будет длиться до скончания количества циферок в Array
потом мы объявляем 2 цикл который будет идти 2 итерации, потому что именно столько нужно пройти до 1(которая нечетная), потому что не забываем - циклы начинаются с нуля. Дойдя до 1 необходимо единственный раз вывести в консоль наше число, поэтому мы открываем цикл на 1 итерацию
Чтобы не было багов и непредвиденных ошибок мы добавляем проверочное условие if, чтобы убедиться что наше число совпадает с тем, которое нам необходимо, и , если условие верно - запускаем консольный вывод с числом, которое имеет номер i по циклу и подходит нам
Не бойся задавать вопросов, этот тред именно для этого и создан - чтобы помогать новичкам.
Вот как-то так хотя бы
iter1 = (Array) => {
for(int i=0;i<Array.Length;i++){
for(int y=0;y<2;y++){
for(int h=0;h<1;h++){
if(i=1){
return i;
}
Console.Write(iter1)
Я все же настаиваю на использовании хотя бы анонимных функций. С таким кодом ты не пройдешь ревью.
Я не знаю что за анон тебе посоветовал ставить точки с запятыми в конце, во всяком случае - будь аккуратен в этом треде, здесь много троллей и они часто говорят хуйню, специально чтобы запутать новичков
Код не запускается, какие-то штуки красные высвечиваются, что делать?
Как создаётся пространство с 3-мя осями в них?
Берется 3д графика, считаются локальные графичекие протеины, считает проекцию этих протеинов, проекцию отрисовывает, это вкратце. Куча матана ебаного, выучи апи и не еби мозг
>Куча матана ебаного
>выучи апи
поэтому я и попросил ВКРАТЦЫ
А какой айсикю надо иметь чтобы понять тамошний матан? Чо полегче опенгээль или директ?
Что сейчас в тренде? Знаю что на Сишарпе рулит Юнити.
А как дела в плюсах? В какую сторону смотреть?
я не понял
https://en.wikipedia.org/wiki/3D_projection#Perspective_projection
Грубо говоря, там в основе дежит идея, что чем дальше от тебя точка - тем ближе к центру экрана её надо рендерить. Например, так:
A = (Ax, Ay, Az)
x' = Ax / Az
y' = Ay / Az
Az - насколько удалена от тебя точка, и чем значение больше - тем результат деления будет ближе к нулю.
Дальше к этому прибавляются смещения и коэффициенты, затем для цвета учитываются шейдеры, z-buffer и прочая хуйня, и готово.
А в плюсах Unreal.
Спксибо
Спасибо, ещё спрошу:
Как рендерится пикрил треугольник например?
Вот у нас точки хранятся и сонединяются в фигуру и фигура отображается по этим точкам, а как меняется вид при повороте камеры? Как происходит рисование если смотреть с другой стороны? Какие вычисления происходят?
И я правильно понял, что координата зеленая Y на моем пикриле - это z-buffer по которому вычисляетсчя насколько большой будет рисоваться точка по 3 координате? то есть существует фактически 2 координаты - X и Z, а Y просто чтобы понимать размер отображения уже имеющися точек?
Вот у меня есть массив точек которые красным обведены - как мне отобразить их и чтобы чем ближе точка ко мне была - тем она была больше?
Передаёшь в вершинный шейдер модельно-видовую матрицу и VBO с твоими точками.
Если правильно понял вопрос, у точки нет размеров, она всегда соответствует одному пикселю (либо вообще не показывается, если находится слишком далеко от камеры). Но у тебя на месте точек могут быть сферы, и они за счёт того же деления на z могут отображаться то больше, то меньше.
Рендеринг обычно делается не по вершинам фигур, а по их граням. Грань после преобразования координат становится 2D-полигоном и разбивается на множество точек, каждая точка рендерится с учётом цвета грани и прочего. Z-буфер же не для определения "размеров точек", а для решения проблемы, когда у тебя несколько граней накладываются друг на друга, и надо определить, точку с какой грани надо рендерить, то есть ближайшую к тебе точку, и через z-буфер можно определить, какая из них ближайшая.
а, это короче аллегория на то, что для рисования (((3д графики))) - создание машины поросенком - используются хитро-выебанные технологии для работы с 2д - воображение поросенка создает машину в голове хотя он сидит на стуле с крышкой
А как z-buffer вычисляется?
И ещё слышал что в opengl при меремещении камеры перемещается не камера а само пространство - это правда? В чем сложность сделать перемещение самой камеры?
из-за синтаксиса, и массив и указатель имеют одинаковые свойства в данном случае компилятор вроде все в одинаковый код преобразует, но в случае [] он может вычислить sizeof
никак. Вроде бы если это стандартные <iostrem> и т.д. компилятор ищет их в определенных папках.
> А как z-buffer вычисляется?
https://ru.wikipedia.org/wiki/Z-буферизация
Берётся точка, значение удалённости точки сравнивается со значением в z-буфере, если значение в буфере ближе, точка отбрасывается, в конце всё рисуется.
> И ещё слышал что в opengl при меремещении камеры перемещается не камера а само пространство - это правда? В чем сложность сделать перемещение самой камеры?
Там нет понятия камеры, есть только точки и плоскость, на которой надо эти точки отобразить. Каждая точка при рендеринге пропускается через несколько матриц, и изменяя коэффициенты в этих матрицах можно реализовать камеру.
А как "камера" реализована в directx?
Как тогда определяется положение игрока в сетевых играх, если вращаются только точки и плоскость, а не камера-игрок?
В директиксе нет "камеры". Есть только треугольники в normalized device coordinates. Камера есть только в коде приложения, и она определяет как координаты преобразуются в нормализованные.
Нету в графических api "камеры". Всё работает так: с помощью набора матриц (которые перемножаются в одну - модельно-видовую) задаётся в пространстве коробка - параллелепипед (если изометрия, как в реальной жизни, то это призма, если 2d, то это прямоугольный параллелепипед). Всё что попадает в эту коробку будет отрисовано на экране (спроецировано на переднюю плоскость этой коробки и растянуто на экран с помощью ещё одной проекционной матрицы).
Меняя матрицы мы двигаем эту коробку и таким образом меняем положение наблюдения за сценой.
Точки и плоскость у всех игроков одни и те же, а матрицы для преобразования у каждого игрока создаются свои в зависимости от его "камеры".
Они известны заранее, это просто часть пространства. Задача в том, чтобы отрендерить остальные точки относительно этих координат.
спасибо
Самое главное в графическом движке - это алгоритмы избавления от лишних вычислений. Если взять 3д треугольник, преобразовать в 2д, растеризовать, просчитать для каждого пикселя цвет через UV-карту текстуры, а потом окажется что весь треугольник невиден из текущей позицией, то только что было просрано некоторое кол-во времени на кадр.
Эффективные движки выбрасывают как можно больше невидимых кусков геометрии зараннее
Курс видео от simple code на ютюбе очень просто расскажет о многом.
Попробуй Примеры и Практика с использованием c++ от страуструпа. Тебе понравиться)))
Её лучше читать уже имея представление об языке
> объясните вкратце как работает 3d графика хоть в опенгле хоть в дайректиксе?
Ты передаешь на видеокарту геометрию с текстурами, привязываешь их перед отрисовкой, вызываешь волшебный draw, а он дальше отрисовывает, используя привязанную информацию о текстурах, геометрии и шейдерах.
> Как создаётся пространство с 3-мя осями в них?
Ты его сам создаешь, используя матрицу проекции.
Видеокарта просто рисует в текстуру.
DirectX/OpenGl/SDL/???/что-то еще?
Чтобы учиться надо vulkan, чтобы делать серьезные вещи тоже vulkan, чтобы что-то для себя опегль или директ до 12 версии
Сразу через vulkan хуй кто сможет научиться, там слишком много чего может пойти не так.
>>060182
Пройди вот это вот добро
https://learnopengl.com
Хотя бы ознакомишься с областью, получишь начальное представление о том, как всё устроено и работает.
Потом можешь пробовать всякие вулканы. Если хочешь копать в глубину, навелосипедь графический пайплайн, опционально ускорь его с помощью cuda или compute шейдеров того же вулкана. После этого дохуя чего становится понятно. А если хочешь в ширину, пиши state of the art рендерер на вулкане. Потом можно уже спокойно устроиться гребцом. Ебаться с этим всем, я думаю, год минимум.
Неколхозный вариант должен чтить прошлые принципы построения программы и не выдумывать вызовы функций через их ссылку в объект потока, с хер пойми какими вызовами аргументов через запятые и разные функции. Например можно реализовать на подобии public и private из классов, только эти названия будут обозначать потоки. Таким образом изначально будет 1 поток, можно написать потом potokich777: и там внизу писать обычный код, но запускаться он будет в другом потоке. Смысл построения кода главное сохранить.
Если честно, нихуя не понятно, какие у тебя там
> прошлые принципы построения программы
Да и дальше нихуя не понятно. Для меня выглядит как бессвязный potokich777 сознания. Пример хоть приведи. Если в твоих словах есть зерно смысла, я был бы рад до него дойти.
При написании программы мы можем вызвать функцию sum(5,3)
Если использовать многопоточность то придется писать thread potok(sum, 5, 3)
Как можно видеть, добавление функционала многопоточности меняет логику синтаксиса, из за чего язык усложняется, ведь проще знать немного базовых вещей и их комбинировать, чем множество разных под разные ситуации. Эту логику синтаксиса желательно сохранить и я предложил сделать это в таком виде, что каждая область кода отнесена к отдельному потоку, а потом, мы просто берем и этот кусок кода оглавляем в potok777, тем самым мы используем всю прошлую логику языка. Это можно сравнить с public и private в классе. Если мы их не указываем, то все по умолчанию в классе пишется в private, а в нашей программе выполняется в mainpotok, а если нужно, мы можем где то поставить условный potok777 и весь код ниже будет запускаться в отдельном потоке.
Вроде расписал, а всё равно нихуя не понятно, чего ты пытаешься добиться. Естественно у тебя от многопоточности ломается логика, в этом её суть, и я бы не стал эти моменты скрывать. Да и код относить к потоку -- неестественная идея. Плюс в твоём говне потом другим ковыряться.
Вообще, весь этот пиздёж не имеет смысла, пока у нас не стоит чёткая задача, к которой этот пиздёж можно приложить и разобраться, как получается симпатишнее.
Бля, я не хочу вызывать функцию двумя способами так sum(5,3) и potok(sum, 5, 3) так, а хочу только так sum(5,3). А из за многопоточности неполучится. Понимаешь?
Всё так.
>проще знать немного базовых вещей и их комбинировать, чем множество разных под разные ситуации
Тебе нужно заняться APL и J.
Там у них этот баг гнёт в бакете. Может кто знает обходные пути?
Это не проверишь через тупеид()
Перекатывайся на gstreamer пока не поздно.
Вообще в ffmpeg с этими либами стандартно. Сначала собираешь либу и инсталлишь её не забыв ldconfig. Потом собираешь ffmpeg с флагами --enable-gpl --enable-libx265. Потом в консольке ffmpeg -codecs и смотришь, что кодек доступен.
Ну или опустись до openh264. Она с ffmpeg без проблем собирается.
Либо угорай по хардкору - у некоторых вендоров есть доступ через api к аппаратным h264/h265 и они разъёбывают в хлам все эти попенсорсные либы. Но чтобы их заюзать и встроить в пайплайны ffmpeg/gstreamer/live555/... нужно конкретно поебаться.
>Перекатывайся на gstreamer пока не поздно
gstreamer на винде - это БОООООООООЛЬ
>у некоторых вендоров
Очень много вендоров на декстопе, да
>Как собрать этот ебучий FFmpeg с x265 либой для ведра?
Ты просил под андроид, я тебе ответил.
Под лялексами и эмбедами gstreamer оптимальный вариант.
Если кроссплатформенно, то с h264 кодеком намного меньше ебли, чем с h265.
Вообще, если ты не laba.cpp пишешь, то потом будешь под каждую платформу отдельно переделывать ибо жрут эти кодеки ояебу сколько.
Ну ещё советы зависят от того, в какую сторону тебе кодить надо. Тебе decoder + encoder надо?
А то ищу, а все максимум по С++11 (Лимпаны, Страуструп, и т.д.)
Сам я не новичок в с++, но раньше изучал гуглом и знания с кучей пробелов. Поэтому решил вот прям с основ, да по уму прорешивая каждый нюанс, и еще в придачу конспектируя в репозитории примеры и мысли.
Английский у меня плох, ищу русскую книгу (я могу читать по английски -но максимум объема статьи. Прочесть книгу в 1-2к страниц меня не хватит)
Скомпилируй а потом проверь в ассемблерном листинге
Несколько человеко-лет при условии что ничего меняться не будет
>насколько реально
реально - было много мморпг где сервак писали не имея слитья, например вов
но это надо шарить за хакерство - так как расшифровывать пакеты ты будешь на асемблере, а для этого еще надо создать среду для их получения и сортировки - то есть уметь в инжект и т.д.
А что, если я тебе скажу. что с сетью и потоками байтов можно работать хоть на джаваскрипте?
но только тогда, когда тебе будет известен формат данных. А сначала тебе в любом случае надо его узнать из потока байтов
Ну так факт использования ассемблера не даст тебе знание формата данных. Ты думаешь, там по сети гоняется исполнимый код для процессора?
Код клиента ты в ассемблерное представление переводить будешь, а не напрямую в сишку. Соотв. кусок сетевого взаимодействия тоже будет на асме изначально
hex-rays крут канешна, но не до конца
сгенерируй HTML и открывай в браузере
Выдай csv и открой в Экселе.
Полной книги по плюсам вообще не существует.
На русском полнее и одновременно новее 5-го издания Липпмана ничего нет.
На английском, кстати, книжки по с++17/20 по большей части идут конкретно про нововведения, а не про полное описание языка.
Спасибо за подробное объяснение, за один абзац разложил по полкам все в моей голове
https://www.youtube.com/channel/UCvmBEbr9NZt7UEh9doI7n_A/videos
Если че, не самореклама
Это не я отвечал, я вот как раз добавляю эти флаги и получаю ERROR: x265 not found using pkg-config. Хуйня какая-то, я в листе пакедж конфига его вижу и по пути он есть. Я не против перейти на x264, но он с такой же проблемой отлетает.
А можно подробнее как с openh264 собирать? Я не нашёл гайда у них в документации, пробовал добавить флагом OPENH264_LIBRARY, но смейк сказал, что я даун.
Бтв, это нормально, что я с годом опыта работы обсираюсь на этих билдах? Ещё от таких задач срака взрывается прям быстро, можно много просидеть и в итоге нихуя не сделать.
В чем суть - есть абстрактные Module. От них наследуются системы. Есть общий класс Engine в котором всякое общее типа доступа к логу (не синглтоном же передавать). Короче тут все меня устраивает.
Внутри Engine есть конфигурация, и да, системы могут ее немного менять при запуске, поэтому не константа, тут меня все тоже устраивает.
А вопрос - как лучше по читаемости, правилам хорошего тона, хорошему коду и т.д. писать:
- неявно брать конфиг внутри Init как в первом случае
- явно его передавать (хотя он его мог бы получить)
Сначала я писал первый случай, а тут читал Страуструпа, так словами не перескажу, но засело что функция должна самодокументировать свои действия списком аргументов.... Ну короче, кто как думает - что из двух лучше?
>функция должна самодокументировать свои действия списком аргументов
ИМХО - это больше актуально для функций интерфейса, а не для реализации.
В твоем случае никакой самодокументации не происходит, а происходит наоборот - совершенно ненужное обобщение.
Глядя на второй вариант, я делаю вывод, что Init принимает любой конфиг.
Тогда как фактически (исходя из первого варианта) тебя интересует совершенно конкретный конфиг. Причем этот конфиг достается из закрытого члена.
Я бы явно передавал класс-контекст с ссылками на твои ресурсы, видно откуда что берешь, можно мокать и т.п.
Если ты ньюфаг и хочешь делать игры - то делать их надо на юнити, т.к. это проще всего.
Если ты хочешь проебать время вникуда - пиши свой движок, в идеале сразу на вулкане.
ну они там все под свой гривой дизайн пилят, похоже. Но работает и уже хорошо.
кстати, нет не долго
> Сохранить результат в файл и прочитать его?
Это единственное, что можно сделать стандартными средствами в плюсах. Если тебе всё же нужно читать стандартный поток вывода, придётся создавать подпроцесс и устанавливать с ним пайп, это делается либо через системное API, либо через сторонние обёртки над ним.
https://stackoverflow.com/questions/478898/how-do-i-execute-a-command-and-get-the-output-of-the-command-within-c-using-po
В душе не ебу, будет работать или нет
очевидно так решили создатели самой ide. А после них это продолжила embarcadero, дабы показать няшный gui. Мне он вполне по душе, в этой реализации, но в их версиях Dev-C++ как мне кажется что-то не так с консолью. А в шелом, всё как и в старом Dev, только Mingw обновили.
popen и pclose нет в винде. Так что мимо
Слушай, а у тебя дебаггер работает в Dev-C++?
Не могу завести никак, что-то там поломано сильно (я про gdb если че)
Сажа приклеилась
>короче если чего то не знаете, то узнавайте сами
Чет проиграл с этого лекторада, я понял что курс для продвинутых, но он столько раз поясняет, что ничего не будет пояснять, что уже мог бы пояснить за это время
На винде и так есть визуал студия, а вот в линупсах реально голях с ИДЕ. Почему ничего не пилят под линупсы?
cpp это единица трансляции, из которой будет скомпилирован объектный файл. h это текст, который необходим для компиляции нескольких единиц трансляции (например, если где-то упомянут класс, то компилятору нужно там же по месту знать его поля и объявления методов).
Подробнее можно узнать, если загуглить ODR.
Майки же сделали VSCode под линукс. И .NetCore под линуксом есть. И ещё куча всего.
Забей, в 20 добавили модули и все равно будет по-другому.
НЕТУ вижуал студии на линуксе, НЕТУ. Уже несколько раз натыкался на инфу, что есть, думал, как я пропустил событие века, захожу на сайт MS, и каждый раз оказывается, что она только для винды и мака. И ещё несколько постов от долбоёбов про VS Code.
честно говоря я никогда кроме vs нигде не кодил(фиолетовый значок) про визуал студио коде знаю лишь что он синенький и его используют веб разработчики в основном
Ну так расскажи в чём разница между vs и vsc ну я кроме vs ки ни с чем более дело не имел, аж интересно стало
Труъ-линуксоиды юзают VIM, поэтому не обязаны разбираться в сортах мелкософтовских поделок.
Киев. Кросплатформ говно на qt.
Ебанутый, что ты там делаешь
Дай резюме, нам плюсовики нужны как раз, фейкомыло: testdevice.2020.11.13 собак gmаil.соm
Рынок мобильных игр крупнее и платят там больше. Но ты продолжай рефлексировать на ААА тайтлы под пеку.
Да, погроммисты сейчас не нужны.
>Ебанутый, что ты там делаешь
Я вот сейчас смотрю этого челика (https://www.youtube.com/channel/UC99om0N3qZc5t8iSy2QrHZA)
Он там тоже говорит что норма для джунов С++ получать 400 или даже 300$
И честно прифигел.
Я в своей мухосрани, в госконторе получаю 560$ и думаю что я:
- бомж (за эти деньги них на самом деле не купить, по крайней мере я до сих пор не могу себе норм комп купить)
- неудачник (не смог никуда лучше устроиться, т.к. боюсь собесов (и послушав что обычно там спрашиваю понимаю что я их не пройду))
Хотел менять работу, но блядь в итоге получать меньше, ебошить больше и делать какое-то говно?
>Хотел менять работу, но блядь в итоге получать меньше, ебошить больше и делать какое-то говно?
Скажи честно, ты инцел? У тебя логика инцела
Так это среднестатистический прогер.
Или предлагаешь слушать двачеров получающих 300к в секунду?
Меня давно интересовал этот вопрос про реальные зарплаты - почему-то анонимно все орут про какие-то сверхдоходы.
Ну еще о них орут всякие инфоцигане, но с ними понятно (хотя кажется и они предлагают максимум теже 500$ (ну те, кто подписывает контракт что трудоустроит после курса)
Во всяких статейках еще пишут
А начинаешь спрашивать обычных работяг кода - то пиздец какой-то с зарплатами. Может врут?
Но тогда непонятны очередные скандалы в айти, когда программистов держат на уровне рабов (я как-то не понимаю как можно получать мифические 5к$ и быть рабом, рабом можно если выживаешь за 300$, а с зарплатами выше 5к - да многие и очко добровольно продадут)
Да собственно само существование галер говорит что на самом деле полный пиздец.
Нет, не спорю, сеньоры может и получают.. .Да только тели сеньоры? Слушал интервью сеньора из варгейма - пиздец, он кто угодно, но не сеньор. Торгаш, менеджер, пройдоха.. Но блядь он точно не программист. Все его познания по С++... возникло ощущение что он где-то там в ютубе наслушался про этот язык и теперь называет себя сеньором С++.
>Я в своей мухосрани, в госконторе получаю 560$
Я тоже лабал на крестах в НИИ за максимальную зарплату в 23к с первого по третий курс до 2018. Заебало, пошёл к коммерсам в местную продуктовую контору, сразу же предложили мидлом на 65к сейчас 90 с лишним
Ты более всратого графика найти не мог?
Кстати, то что в вакансиях пишут "зарплата от 1500$" - тоже хуйня:
- во-первых это замануха. Тебя на собесе сначала завалят (способов завалить множество, могут даже пригласить индусса чтобы ты не мог понять что он от тебя хочет услышать из-за акцента - реально такие случаи были), потом скажут "ну ты еще неопытен, не знаешь базовых вещей, давай к нам за 600$, а там подрастешь, и подымем до 1500"
- во-вторых могут писать сумму без учета отчислений. На хабре была статья как чел привел зарплату эмбедед программиста си, сначала назвал охуенную цифру.. а потом начал отнимать всякие налоги и вычеты и на руки там выходило слишком скромно для таких спецов.
- в третьих этот культ кажется культивируют инфоцыгане (ну знаешь как в курсах личного роста рассказывают что вот пройдешь наш курс и будешь получать миллионы, так и тут: "выучишься на программиста и будешь получать 300к в секунду, а чтобы их получать уже завтра, обязательно купи наш курс")
- в четвертых - среднее по больнице. Кстати, не понимаю откуда появилась дрочь в статистике на медиану - это как раз чистый пример среднего по больнице. Статистику надо выводить из минмакса. А не по среднему большинству (куда также входят менеджеры, дирехтары аутсорса и подобное - я вон выше писал про сеньора из варгейма - числится именно как senior C++, а потому какой бред он нес про программирование (при том что за маркетинг хорошо говорил) - ничего кроме лаб он не кодил, да и не нужно - он именно менеджер)
>Ты более всратого графика найти не мог?
Ты ебанутый? Это топовый ресурс
>в вакансиях пишут
Это не вакансии, это зарплатный опрос маня
Алсо, съеби в "мы вам перезвоним тред" и ной там, инцел
Ну прост в вашей рашке зарплаты айтишникам меньше, щитоподелать десу
>Это не вакансии, это зарплатный опрос маня
И кого же там опрашивали? Может опросили 100 человек, и на этом сделали выводы? Меня например никто не опрашивал - это был опрос элитного общества? Ну и какое тогда тут отношение к средней зарплате?
Вопрос больше не актуален.
Но кому интересно, то да можно, только нужно определить все шаблоны класса стд итератор в собственном итераторе - это для 17 стандарта, либо унаследовать свой итератор от стд итератор для 14 стандарта
Кресты - первый язык? Если так, то начать советую с чего попроще - например, с Сишечки. Да и вообще читнуть книги того же Столярова из цикла "программирование - введение в профессию" распространяются бесплатно.
Дейтелы еще есть
с++ енто сложный и что самое главное ненужный кал, не слушай своих дноклов и пиши свое егэ на чем попроще.
> Если так, то начать советую с чего попроще - например, с Сишечки.
Хуже совета не придумаешь.
Начинай изучение программирования с Ассемблера и архитектуры процессора, тогда поймёшь всё на базовом уровне. ЯВУ создают слишком много абстракций, из-за чего не понятно как реально работает ЭВМ при выполнении твоей программы.
Нормальный совет. Когда говорят, что перед крестами нельзя учить сишку - это троллинг такой.
Тут любые советы плохие. Олдфаги вроде меня начинали с паскаля или бейзика, ньюфаги - с какого-нибудь питона. Всё плохо, но как-то же мы справились. Нужно просто начать и действовать.
>Если так, то начать советую с чего попроще - например, с Сишечки
Хуйня совет, я бы за него расстреливал. Спокойно можно начинать с С++, и даже нужно начинать с С++ не забивая себе голову легаси говном.
Я сам начинал - моя первая книга С++ за 21 день. Десять лет прошло, до сих пор люблю этот язык.
Если надо с чего полегче чем с++ - то питон/паскаль/шарп.
>Когда говорят, что перед крестами нельзя учить сишку - это троллинг такой.
Троллинг - его советовать. В си нет ничего что нужно знать и трогать современному начинающему программисту. Языку пора в помойку, он уже не нужен нигде.
И в низкоуровщине он тоже уже не нужен - на cppконе один чел вот уже 4 года показывает как пользуясь современным с++ (последним вроде было про с++ 20) программировать даже под такое старье как comodore64 (который 84 года - он фрик). Я очень сомневаюсь что сейчас кому-то понадобится прогать под еще более слабое железо чем то, которое было в 84 году.
А легаси спокойно и на с++ поддерживается
>В си нет ничего что нужно знать и трогать современному начинающему программисту.
Враки.
Многие фундаментальные вопросы, которые возникают при изучении C++, плохо или совсем не освещаются в книжках по С++ (даже в самых толстых), молча отсылая к сям.
Синтаксис объявлений, тайпдефы, пердолинг с заголовочными файлами, макросы и многое, многое другое - если ты начинаешь разбираться, гуглить, то с вероятностью 95% ответ ты найдешь в книге или в статье по сям.
Это, что касается того, что есть в самом Си.
>В си нет ничего
Помимо вышеуказанного есть еще и штуки вне сей.
Например, винапи, директ икс, языки для шейдеров и т. п.
Да и просто многие примеры, статьи или даже целые книги написаны в стиле с большей или меньшей примесью сей.
У меня в детстве был только Спектрум и я мечтал написать для него ОС типа CP/M-80 для RAM-диска, а грузиться естественно с кассеты, потому что дисковода у меня не было.
На си точно можно, но и он там едва ворочается с дохуя ограничениями.
>>064463
>>064310
>Хуйня совет, я бы за него расстреливал. Спокойно можно начинать с С++, и даже нужно начинать с С++ не забивая себе голову легаси говном.
Ну что я могу сказать, хуёвые из вас программисты. Промываем глазки от спермы и перечитываем оригинал.
>Кресты - первый язык? Если так, то начать советую с чего попроще - например, с Сишечки.
"если раньше не программировал, то с крестов лучше не начинать" != "если не знаешь сишки, то к креста лучше не подходить".
> Спокойно можно начинать с С++, и даже нужно начинать с С++ не забивая себе голову легаси говном.
Дебил никогда не кодивший на плюсах детектед.
С++ тащит за собой добрую половину фич из чистого Си, часто просто добавляя сверху сахарку.
В си, чтобы вывести функцией printf() данные, нужно внимание добавлять в строке-аргументе функции специальные конструкции!!!! ну это вообще пиздец... по сравнению с синтаксисом вызовов функций в многопоточке на плюсах не сравнимо абсолютно! полный разврат!!! совращение молодых умов программистов!!
Вполне годный совет так то. С сильно проще плюсов. К тому же не обязательно прям выдрачивать их. Достаточно базовые концепции понять (адресная арифметика, указатели, указатели на функции, циклы и т.д.)
Так или иначе понимание того, как устроено все в плюсах под капотом нужно. Даже на днище вакансии будут спрашивать про new delete, приведения типов. Как вектор реализован, че такое итераторы и т.д.
Впрочем если читать нормальные учебники там все равно будут рассматривать вещи из С.
Тут проблема в другом - изучать С скучно(плюсы то же, но не настолько)
Пока напишешь что-то полезное и интересное потратить кучу сил. Все же мне кажется вкатываться в плюсы надо через смену области на текущей работе. Иначе проще в другие языки (Java python going)
Пиздец - это то, что получается, если пытаться выводить через cout что-то сложнее "helllo world".
Причем тут многопоточка в плюсах и printf в С? Сейчас к чему то похожему пришли в плюсах (fmt). А printf удобная штука так то, если нужно хитровыебанную строку вывести с кучей различных параметров.
Раз так любишь всё новое и молодёжное, напиши свой аналог printf, он будет современнее чего бы то ни было вообще тупо из-за того, что реализован только что. Можешь даже написать специального демона, который будет коммитить по одному пробельному символу в конец твоей реализации каждые 5 минут, чтобы реализация так и оставалась свежей и современной.
Тебя никто не заставляет использовать стандартную библиотеку. Не используй, хватит это терпеть!!!
Нет! Я буду терпеть. Я же не порридж чтобы использовать фреймворки
>плохо или совсем не освещаются в книжках по С++ (даже в самых толстых), молча отсылая к сям.
Ты наверное какую-то хуиту читал (или по неопытности забыл что в первых главах было написано), все нормально освещают. С++ - это как бы и есть Си, из которого выпилили говно и залили новые фичи
Любой современный учебник по С++ полностью его раскрывает без всяких отсылок. Все там есть
- и про объявления (куда же без них-то?)
- и про тайпдефы (но также скажут про юзинг, так как тайпдеф пора уже забыть)
- и про пердолинг с заголовочными файлами (в с++ еще полноценных модулей нет, все также пердолиться, при этом скажут что вместо мерзкой хидергвард надо юзать быструю прагмаонц)
- макросы (расскажут, при этом напомнив что надо юзать шаблоны)
А вот проблем с людьми которые начинали с си - дохуя, они потом и пишут говно на макросах, пихают объявления переменных в начало функций (в с++ это вредно) и т.д. И хуй их переучишь - синдром утенка же, что первое выучил, то и юзает. нет более мерзкого кода, чем код на с++ написанный си-прогером.
>в книге или в статье по сям.
С чего ты решил что это Си? Любой код на современном стандарте си - это также код и на с++. Как бы в С++ тебя никто не заставляет ебаться и писать хелловорд на ООП - можешь писать тот же си код - это даже свое название имеет "Си с классами"
Чтобы читать современный код написанный на си - знать си не нужно, ведь это все С++ совместимо
(а вот легаси си говно - там да, но новичкам лучше не погружаться в эту дыру)
>>064509
>написаны в стиле
Это не стиль си. Это процедурное программирование.
Гугли Jason Turner - он шарит в этой теме
например из его последнего https://www.youtube.com/watch?v=EIKAqcLxtT0&t=863s
ну и на цпппконах участвует с этой темой
https://www.youtube.com/watch?v=zBkNBP00wJE
>Дебил никогда не кодивший на плюсах детектед.
Первая моя книга по С++ была где-то в 2006 году (еще ребенком кстати) - это была С++ за 21 день
С 2012 года я активно кодил проекты на С++ в гитхаб в опенсурс (это при том что я поздно въехал в гитхаб, раньше сидел на sourceforge)
Так что иди нахуй.
Кстати, в институте, где я учился на программиста-инженера, учили два языка - С++ (и qt под линуксами, препод был линуксоидом) и lisp для матана. Никакого легаси говна не преподавали
За 21 день ты и усвоишь только си-подмножество крестов (и то, поверхностно) + узнаешь про существование классов и шаблонов.
Тем более в эпоху до распространения C++11.
Ты фактически и начинал с сишечки.
Если за зарплату, то 7 лет
Также вкатывался в другие языки, но с С++ начинал и до сих пор хочу писать только на нем (жаль что в шарпе многие вещи делать удобней:(, особенно в софт-разработке куда меня сейчас занесло (а qt мне не нрав) )
>>064935
>Ты фактически и начинал с сишечки.
Потому что это одно и тоже. Точно также изучив с++ можно легко писать на php или шарпе (хотя и не качественно)
>>064935
>За 21 день
Так-то нормальная книжка была, не знаю почему в интернете она стала мемом в те времена. ООП там с 9 дня начинали (или раньше, так как я учил же по старой редакции - а лень ее искать сейчас)
>Ты реально вот с таким вот опытом до сих читаешь учебники по плюсам?
Я тут хотел сделать себе шпаргалку, а то старый уже, многое стал забывать, особенно когда это не используется. Пробежался по всяким основным книгам типа Лимпана и Страуструпа. Глянул ravesli.com. По итогу остановился на документации msdn
Язык дохуя большой и на длинной дистанции постепенно забывается. Ещё комитет постоянно серит новыми фичами, тренды на парадигмы меняются.
Ну в таком случае твои вскукареки против Сишечки тем более выглядят странно
>С++ (и qt под линуксами, препод был линуксоидом)
Т.е. ты кодил под линупсом, но при этом считаешь, что Сишка это легаси? Хреново ты значит там кодил.
>кодил проекты на С++ в гитхаб в опенсурс
Я хз знает что ты там кодил, но опять-таки.
WinAPI это Сишка
Линукс в своей основе это Сишка
OpenGL это Сишка
Без знания Си тебе никогда не понять многих системных фич. Даже работу системных утилит тебе без Си не понять.
>>064925
>Любой современный учебник по С++ полностью его раскрывает без всяких отсылок.
Ты видимо давно не читал учебники и думаешь что все осталось также, как в 2006 году. Внезапно плюсы с тех пор очень сильно изменились и у современных авторов уже нет возможности пояснять за общие основы у Си и плюсов. Некоторые так сходу начинают вводить ООП и объекты.
>>064948
>По итогу остановился на документации msdn
А вот тут ты уже спалился окончательно. MSDN скатили в полное говно и советовать его сейчас может только жирный тролль.
>Я тут хотел сделать себе шпаргалку, а то старый уже, многое стал забывать
https://learnxinyminutes.com/docs/c++/
>вскукареки против Сишечки тем более выглядят странно
Я не против сишечки (надо будет, и на фортране будешь писать). Я против совета изучать программирование с си, особенно тому кто хочет в плюсы. Это вредный совет
>>065040
>Без знания Си тебе никогда не понять многих системных фич.
Я перефразирую
Изучая с++ ты изучишь си (просто потому что это один и тот же язык, но утята были против, поэтому вместо С 2.0 получили С++).
Изучая си ты нихуя не изучишь.
Современное программирование не про процедурщину. Си - это онли процедурный язык (другие парадигмы на нем требуют оверохуенные скиллы)
но в 2021 году писать софт процедурно - это лучший способ быть уволенным, С++ как и все современные языки - мультипарадигмальный (не одним ооп живем)
Си - ужасный язык, который может вызвать желание бросить программирование или пойти в JS - чего стоит только математика указателей и побитовые операции которые выльют на новичка буквально с первых страниц. Новичку это нахуй не надо знать. Когда вырастет, тогда и разберется, а на старте ему хватит умных указателей.
Си - это велосипедный язык. В 2021 году не принято писать велосипеды. Си учит только велосипедить. Это вредно, потом сложно оттучится (лично знаю, так как начинал в ту эпоху).И есть большая разница между стандартом или сторонним говном (как минимум у сторонних решений почти никакая документация).
На С++ у новичка больше возможностей начать творить свои первые пет-проекты, так как сейчас почти нет ебли со всякими библиотеками (или ты предлагаешь новичку писать свой первый калькулятор на голом WinAPI? ну наверное чтобы он окончательно дропнул этот язык и пошел в веб разработку)
>Т.е. ты кодил под линупсом,
А под линуксами уже нет с++?
>>065040
>Некоторые так сходу начинают вводить ООП и объекты.
Это ты какое-то говно явно читал. Учебники из шапки начинают как раз таки с процедурной части. Где ты нашел учебники с ООП?
Покажи мне такие книжки/сайты и т.д.
>>065040
>А вот тут ты уже спалился окончательно.
У тебя каша в голове, я не советовал. Я написал - для чего я смотрел учебники по с++. Мне не нужен учебник, я не новичок.. Мне нужны только интерфейсы и примеры - это есть в msdn
>вскукареки против Сишечки тем более выглядят странно
Я не против сишечки (надо будет, и на фортране будешь писать). Я против совета изучать программирование с си, особенно тому кто хочет в плюсы. Это вредный совет
>>065040
>Без знания Си тебе никогда не понять многих системных фич.
Я перефразирую
Изучая с++ ты изучишь си (просто потому что это один и тот же язык, но утята были против, поэтому вместо С 2.0 получили С++).
Изучая си ты нихуя не изучишь.
Современное программирование не про процедурщину. Си - это онли процедурный язык (другие парадигмы на нем требуют оверохуенные скиллы)
но в 2021 году писать софт процедурно - это лучший способ быть уволенным, С++ как и все современные языки - мультипарадигмальный (не одним ооп живем)
Си - ужасный язык, который может вызвать желание бросить программирование или пойти в JS - чего стоит только математика указателей и побитовые операции которые выльют на новичка буквально с первых страниц. Новичку это нахуй не надо знать. Когда вырастет, тогда и разберется, а на старте ему хватит умных указателей.
Си - это велосипедный язык. В 2021 году не принято писать велосипеды. Си учит только велосипедить. Это вредно, потом сложно оттучится (лично знаю, так как начинал в ту эпоху).И есть большая разница между стандартом или сторонним говном (как минимум у сторонних решений почти никакая документация).
На С++ у новичка больше возможностей начать творить свои первые пет-проекты, так как сейчас почти нет ебли со всякими библиотеками (или ты предлагаешь новичку писать свой первый калькулятор на голом WinAPI? ну наверное чтобы он окончательно дропнул этот язык и пошел в веб разработку)
>Т.е. ты кодил под линупсом,
А под линуксами уже нет с++?
>>065040
>Некоторые так сходу начинают вводить ООП и объекты.
Это ты какое-то говно явно читал. Учебники из шапки начинают как раз таки с процедурной части. Где ты нашел учебники с ООП?
Покажи мне такие книжки/сайты и т.д.
>>065040
>А вот тут ты уже спалился окончательно.
У тебя каша в голове, я не советовал. Я написал - для чего я смотрел учебники по с++. Мне не нужен учебник, я не новичок.. Мне нужны только интерфейсы и примеры - это есть в msdn
>>064617
>Си - это велосипедный язык. В 2021 году не принято писать велосипеды. Си учит только велосипедить. Это вредно, потом сложно оттучится (лично знаю, так как начинал в ту эпоху).И есть большая разница между стандартом или сторонним говном (как минимум у сторонних решений почти никакая документация).
GTK, GLib, GStreamer
>Си - ужасный язык..- чего стоит только математика указателей и побитовые операции... Новичку это нахуй не надо знать.
>Изучая с++ ты изучишь си (просто потому что это один и тот же язык
У тебя биполярочка.
Ты уж определись, или С++ автоматически дает знание Си, или все-таки в книгах по плюсам многие базовые вещи умалчиваются , исходя из логики "Когда вырастет, тогда и разберется, а на старте ему хватит умных указателей".
>писать свой первый калькулятор на голом WinAPI?
Вообще-то для калькулятора хватит и стандартной библиотеки.
Но если очень нужен гуй, то есть GTK+, например.
>Это ты какое-то говно явно читал.
Бля, чувак, ты бы хоть для приличия пролистал список последних изданных книг по плюсам, прежде чем кукарекать.
https://www.amazon.com/How-Program-Early-Objects-Version/dp/0133378713
>или все-таки в книгах по плюсам многие базовые вещи умалчиваются
В книгах по С++ новичку объяснят, почему это ему не нужно. никакой биполярочки
>>065305
>Бля, чувак, ты бы хоть для приличия пролистал список последних изданных книг по плюсам, прежде чем кукарекать.
Я от тебя жду книгу где нет вводной части. Я таких книг не знаю
В книге которую ты линканул, есть база, даже про асемблер и организацию памяти говорят, так что хуй знает как ты читаешь - наверное жопой
npg install sperma.js и теняет 200мегабайт зависимостей чтоб формочку отобразить, зато без велосипедов
>писать софт процедурно - это лучший способ быть
быть богатым, красивым и охуенным
уже доказал теорему множества множеств или по рюзьге отсортировал фотографии в альбоме по иерархии? это же твое ООП святое, можешь начинать с вид, человек и т.д.
Returns an iterator pointing to the first element in the range [first, last) that is greater than value, or last if no such element is found.
std::lower_bound
Returns an iterator pointing to the first element in the range [first, last) that is not less than (i.e. greater or equal to) value, or last if no such element is found.
Зачем две по сути одинаковые функции? И при этом нет функции, которая ищет последний элемент меньший заданного
чтоб анальники не расслаблялись ведь jQ прохгаммистом назовут
>Изучая с++ ты изучишь си
>В книгах по С++ новичку объяснят, почему это ему не нужно. >никакой биполярочки
Наркоман?
Иди почитай книгу по жс тогда. Там тебе пояснят почему тебе не нужен С++. По твоей логике это равносильно изучению С++.
>>065336
>Я от тебя жду книгу где нет вводной части.
Я говорил здесь >>065040 "Некоторые так сходу начинают вводить ООП и объекты.". И привел тебе пример такой книги.
Ты же начинаешь вилять жопой и приплетать сюда организацию памяти, вводную часть и ассемблер.
Лично я считаю, что если человек не знает Ассемблер, то он не знает ни С, ни С++ и будет писать низкокачественный код. Проще тогда уж ему программировать на Java или C#.
>одинаковые
Нет. Чтобы заменить одну другой ты должен быть телепатом и знать что у тебя в контейнере.
Обработка нестандартных классов и порядки сортировки задаются в версии с компаратором.
Ну тут такое себе наебалово. Типа берешь си++ как первый язык, а потом хуяк там еще вдруг и malloc, realloc, alloc, free, идешь дальше и опять хуяк: стек, регистровые переменные, bss сегменты, таблица имен. Идешь дальше, хуяк, тут тебе и токены и лексемы и АСД и т.д. и т.п. Вот так вот, вкатился блять в си++. А по итогу и
си нужно знать и ассемблер желательно и блять алгоритмы с компиляторами.
>А по итогу и си нужно знать и ассемблер желательно и блять алгоритмы с компиляторами.
А ты думал, что прошел курсы цепепе за 21 день и хватит на следующие 45 лет до пенсии?
Вот-вот. Поэтому и лучше начинать просто с Си. Там тупо объема информации меньше, быстрее можно начать кодить что-то полезное. В плюсах же новичок очень быстро охренеет от того, что язык включает в себя вообще все - от указателей до темплейтов, от множественного наследования и до ламбд. Банально, новичку в Си по строкам нужно знать только Си-строки. В плюсах же надо знать Си-строки И классы строк навернутые поверх, которые ВНЕЗАПНО могут преобразовываться в Си-строки.
Заебись, я по нему плюсы учил. Сначала по нему, а потом в оригинальной версии - learncpp.com. Лучше учи по оригинальной
в чем проблема учить C++ будто это был бы C? Потом можно вернуться к темплейтам, наследованию и прочему
>чего стоит только математика указателей и побитовые операции
Новички реально не могут разобраться с такой изичной хуйней? Когда только начинал, то тоже удивлялся, что такого сложного в указателях и побитовых операциях
В том, что учебники по плюсам не дают достаточных знаний по Си, так чтобы можно было сразу начинать кодить.
А чё обязательно всё сразу же и в полном объеме? В начале можно просто игнорировать темплейты и лямбды те же, просто знать о их существовании и писать себе код
1. Косноязычный стиль, слова на английском с русскими окончаниями caller'у, caller'а и т. п..
2. Это не просто стилистические доебки, из-за этой косноязычности часто страдает логика.
Например, невозможно установить распространяется ли объяснение только на конкретно описанный пример или также и на какие-то более общие случаи. То есть, ценность примеров падает до нуля, т. к. нельзя вывести однозначно, примером чему они собственно служат.
3. Уебищный стиль примеров кода. Все хуярится в main.cpp, все определения членов идут всегда внутри класса.
4. Хорошая идея - снабдить каждый урок комментариями, где можно было бы найти дополнительные пояснения.
Но здесь комментарии на 80% состоят из елейных речей в адрес автора и на 19% из домыслов таких же нубов, как и ты.
5. Итоговый пример - нехитрая игрушка на MFC.
Сам MFC разъясняется вообще никак, только конкретные указания "делай это, делай то, потом пиши так".
Самой же логики игры нихрена не видно за MFC-бойлерплейтом.
6. Пример тетриса на SFML.
Всего-то 300 строчек кода, но там такой адовый пиздец, что он хуёв даже в качестве примера как не надо писать программы.
7. Тем не менее, некоторые вещи изложены достаточно полно и ясно.
Если тебе гугл выдает равесли на твой запрос, то не стоит дропать не глядя, есть смысл ознакомиться.
А если с пониманием туго то можно смотреть объяснение отдельных тем здесь https://www.youtube.com/playlist?list=PLQOaTSbfxUtCrKs0nicOg2npJQYSPGO9r Тоже очень неплохой контент.
Никогда не читайте эту душную хуйню
Какого фига дебаггер не останавливается на бряках?
Хоть я таким говном не пользуюсь, но предположу, что у тебя либо бинарь не соответствует исходникам и его надо начисто пересобрать либо ты дебажишь оптимизированный код и компилятор их выкинул нахуй за ненадобностью.
Иди в белый пояс вкатывайся. Может через пару лет тебя куда-нибудь за 20к и возьмут спустя пару десятков слитых собесов.
Не сказал бы, по сути простейший посыл в каждом видео. Можно смотреть чтобы просто посмотреть какие темы есть в языке или если вообще не понимаешь
Не знаешь что учить - учи английский
Страуструпа если ещё зелёный, пик 1 если уже не целка, пик 2 если уже достаточно умён.
Скажем так, больше на проектах я его не юзал.
Еще видел буст multi-index и, не к ночи будет помянут, boost preprocessor. Плюс всякие ебанутые структуры данных типа INTRUSIVE-AVL-MULTI-SET
Интересно как выглядит в конпеляторе синтаксическое дерево этой залупы?
Наркоман?
Во втором кстати технических ошибок дохуя и больше + изложеие кривой ёбаный пиздец. Выступления у Полухина годные, а вот как пейсатель он то еще говно.
Щас бы васянов читать, лол.
И хватит уже Страуса советовать. Он крутой разработчик. но полный шизоид при этом. Чего только стоят велосипедные хедеры в его последнем учебнике.
>Чего только стоят велосипедные хедеры в его последнем учебнике.
Так это суть изучения крестов.
Меня больше добивает нахуй второй вопрос, само его блядь наличие.
Нет бы Страуструп сам изложил свои конструктивные соображения. Не нахуй он мне - нубу - задает философские вопросы. Причем заочно.
Откуда я знать то могу почему подобное кому-то взбрендило.
Видел реальные парсеры всякого на Qi, общение по HTTP с Beast и настоящий ад на MPL и Hana.
Бля, ну это вопрос уровня “почему люки круглые, а не квадратные?”.
И если при наеме на галеру за норм получку это еще можно стерпеть стиснув зубы, то в учебной литературе это просто нахуй уводит в сторону от контекста. Причем платишь за это ты.
Так кресты это не для галер/получки, Страус все правильно делает. Молодой-зеленый зря взялся за кресты, есть гораздо проще языки для тех же примерно задач, но не требующие каких-то мозговых напряжений.
>кресты это не для галер/получки
Так и зачем тогда каргокультить (каргокультивировать?) самые хуевые практики с галер?
>самые хуевые практики с галер?
Какие? Предлагать маслятам подумоть? Так на галерах такого никогда не предложат.
Блядь, я подумол и пришел к выводу, что у меня недостаточно данных.
И это единственно правильный ответ.
Естественно у тебя недостаточно данных. Пытаться выучить кресты по книге это примерно как пытаться научиться математике по учебнику без практике. Единственная задача книг по крестам - дать общие намётки, либо же глубокие детали отдельных инструментов. Книги страуструпа - это скорее перечень тем, которые ты теоретически сможешь изучить спустя пару лет практики.
>alloc
А с этим еще веселее - код не компилируется в студии, в нем нет реализации - хуй знает куда пропала, сам ебался, оказалось что надо _alloc писать
>А ты думал, что прошел курсы цепепе за 21 день и хватит на следующие 45 лет до пенсии?
Хватит, не слушай этих утят. Они хуйню несут про свой си
>Там тупо объема информации меньше
Последний справочник Страуструпа по С++ - всего 300 страниц текста. Куда уж меньше?
Полный курс всего языка можно уложить в 5 часов одной онлайн лекции (в ютубе есть такие лекции от топов)
>В том, что учебники по плюсам не дают достаточных знаний по Си, так чтобы можно было сразу начинать кодить.
Ты вот реально какую-то хуиту несешь. У того же Ламота в первых главах уже закрывают всю процедурщину, с которой уже можно начинать кодить свое. У Праты также. Даже блядь у самого Страуструпа первые главы полностью дают законченный рабочий код
Что ты блядь за хуиту тут третий день несешь что без знаний си нельзя писать код?
>>065536
>Короче, сначала K&R
Реально утенок.
Пчел.... Тут все на изи. Это кажется сложно, потому что ты не смог правильно распарсить код в голове.
Кстати, если тебе сложно такие примеры в голове - делай их в компиляторе в дебаге - никто ведь не запрещает, и сможешь понять в чем прикол.
>>065955
Просто. Этот код - визуальная обманка. Он содержит мусор который тебя сбивает столку, но компилятор этот мусор игнорирует.
Просто ты невнимателен или забыл как работает switch (да, по уебански, спасибо наследию за это, из-за чего и получаются такие перлы).
Присмотрись внимательно к коду - в коде нет ни одного break. Зато есть фигурные скобки. То есть все case 7-case1 - это мусор, который никогда не может выполниться.
А выполняется только один case 0. Внутри которого идет банальный цикл do while
В msvc кривая реализация filesystem, в бусте лучше.
Бустовые исключения в части проектов тоже использую.
Program options годная вещь.
Не, я понимаю что это чтобы вернуть не указатель, а буль.. но разве не лучше писать
return m_ptr != nullptr
???
>что без знаний си нельзя писать код
Да потому что НЕЛЬЗЯ блять кодить на Си, прочитав пару глав про процедурки, дубовая твоя голова. И процедурки != код на Си. Без знания тонкостей языка, макросов, стандартной библиотеки и, хотя бы частично, системных апи, ты с тем же успехом можешь и вовсе не кодить, толк будет примерно одинаковый.
>третий день несешь
А ты что тут третий день своего дохлого страуса пиаришь? Его книги - это же мем, никто в здравом уме с них не начинает.
>Последний справочник Страуструпа по С++ - всего 300 страниц текста
Бля, вот ты реально жирнющий тролль. Тебе в треде еще не тесно? Только официальный стандарт языка. без всяких пояснений для нубов, занимает больше 1000 страниц.
Твой Страус просто занимается черрипикингом и объясняет даже хуже чем в стандарте, вот и вышло у него 300 страниц.
>блять кодить на Си
А нахуя кодить на си, если вопрос про изучение С++?
Человек хочет кодить на С++, а ты пишешь какую-то ебаную хуиту - "хочешь кодить на с++, изучи сначала си чтобы кодить на си"... Что блядь?
Для чего ты советуешь начинать изучать си человеку который хочет писать на С++?
В идеале учиться программированию лучше начинать с 8-разрядных ЭВМ, а уже потом переходить к БЭВМ. Сейчас можно купить ZX Spectrum Next и учиться программировать на нём. Это не такой хардкор как раньше, потому что он уже поддерживает кучу периферии.
>изучать си человеку который хочет писать на С++?
Что ты несешь, блять, где я такое писал?
Хочешь кодить на С++, флаг тебе в руки.
Речь шла о том, что С++ это хуевый выбор для новичка в качестве первого языка. Си тут гораздо более уместен + он дает солидную базу, которая потом пригодится в тех же плюсах.
>Сейчас можно купить ZX Spectrum Next
Лучше бы старый 16-битный ПК под дос реинкарнировали.
В 2021 учить асм под мертвую архитектуру это такое себе.
Компилируется.
>делай их в компиляторе в дебаге
Так и сделал.
>>066012
>Этот код - визуальная обманка
Это https://ru.wikipedia.org/wiki/Устройство_Даффа , как и написано в комментарии.
>Все case 7-case1 - это мусор, который никогда не может выполниться.
Кейс 0 (если он будет) выполняется 1 раз, кейсы под do-while выполняются n-раз.
В зависимости от вычисленного n, кейсы 7-1 позволяют зайти в цикл do-while не самого начала, а с нужного места.
По моему это тот случай, когда проще было написать с goto, но мне лень проверять.
Эта хрень копирует count интов из from в to.
Магическое число 8 - это параметр размотки цикла - сколько инструкций за 1 проход цикла.
Почему,если вызвать writeRecord(..) допустим в main(),макросы __FILE__ и __PRETTY_FUNCTION__ все равно имеют значения FileSystemUtils.cpp и ::writeRecord() соответственно.Хотя должно быть main.cpp и main() т.к я написал inline и writeRecord() должна подставляться в main(),т.е макросы должны вызываться из main()
Я про читабельность кода онли.
Оно сначала развернет макросы, а потом может быть заинлайнит в main. Чтобы работало, writeRecord сам должен быть макросом или завернут в макрос, который передаст ему правильный __FILE__.
Может конпелятор решил не инлайнить, имеет право.
Попробуй __forceinline или определить метод внутре класса.
Раньше не было nullptr, поэтому иногда писали так. Был макрос NULL, но он мог иметь разную реализацию. А !! - они везде одинаковые.
Потому что decltype применяется к сущности (объекту) или выражению. cmp ни тем ни другим не является. А лямбда compare это объект.
Ты можешь либо сделать выражение, например decltype(&cmp) либо сущность auto cmp_ptr = cmp; decltype(cmp_ptr);
А ещё лучше, если ты завернёшь в std::function.
Спасибо,помогло
Вот так, без decltype, можно однообразно использовать всякие разные вызываемые сущности.
Ещё можно написать decltype((cmp)).
>Потому что decltype применяется к сущности (объекту) или выражению.
Где ты такого набрался? decltype всегда применяется к выражению.
> cmp ни тем ни другим не является.
В аргументе decltype, cmp это выражение, обозначающее функцию.
>decltype всегда применяется к выражению.
Плюс ещё есть decltype(auto), но это сейчас неважно.
Где ты такого набрался? decltype всегда применяется к выражению.
Тебе сюда. Надеюсь ты понимаешь разницу между entity и expression.
https://en.cppreference.com/w/cpp/language/decltype
>>066410
>ещё есть decltype(auto)
Это auto, которое выводится по правилам decltype. Ну то есть это вообще не decltype.
>> Где ты такого набрался?
>Тебе сюда. https://en.cppreference.com/w/cpp/language/decltype
Ясно. Очередная жертва ЕГЭ цепепереференса.
Теперь открой стандарт, хоть 11-го года, хоть 17-го, хоть 20-го и покажи мне там decltype(entity).
>Ну так пруфани, что там нету.
Сначала пруфани, что у тебя в комнате нету невидимого розового единорога.
Ты утверждаешь — ты и пруфай наличие
Вот смотри. Есть такая хуйня
https://en.cppreference.com/w/cpp/language/identifiers
Там сказано
In expressions
An identifier that names a variable, a function, specialization of a concept, (since C++20) or an enumerator can be used as an expression.
...
Otherwise, the type of the expression is the same as the type of the entity named.
То есть cmp выражение, тип которого функция. И не подходит оно, потому что шаблон priority_queue потом использует этот тип как член класса и пытается к нему добавить ссылки.
А ты просто серишь буковками про какие-то там документы, которые только фанбои покупают, чтобы полистать сидя на толчке.
Маня, у тебя не было никогда этих документов, как и денег на их покупку. Мог бы так жидко не сливаться.
Мистер Подливкин, зачем вы говорите про вещи, о которых даже бесплатно не читали?
> жертва цепепереференса решила отвлечь внимание от своего обсёра скатыванием в срач
Мда. Такое убогое говно даже в /pr/ редко встречается.
Пока что ответ на исходный вопрос дан только с помощью cppreference. При этом кто-то продолжает серить буковками без пруфов.
бамп
>Пока что ответ на исходный вопрос дан только с помощью cppreference. При этом кто-то продолжает серить буковками без пруфов.
Причём это один и тот же человек, т.к. cppreference это буковки без пруфов.
>Интересно как выглядит в конпеляторе синтаксическое дерево этой залупы?
https://godbolt.org/z/7enzxWqaT
Объявление третьего шаблонного параметра неверное.
Если сделаешь
bool (*)(bool, bool) вместо decltype(cmp), то это заработает
Ну тогда ладно.
Да я случайно прикрепил, думая что в буфере "Visual C++". Прикол другу скидывал.
Так до деанона недалеко.
Вот у меня сейчас такое: есть карта игровая состоящая из тайлов не 2д, который в свою очередь состоит из чанков, а у них какие-то свои свойства (текстуры, высоты, цвет и тд и тп).
Надо это сохранять и загружать.
Как же лучше это сделать? Отдельный класс загрузки\сохранения тайла и его чанков, или же классу тайл дать функции загрузки и сохранения?
Лучше тайлы сделать отдельной структурой под данные (или какие-нибудь дескрипторы), а логику загрузки тайла и управление памятью пилить в отдельных сущностях. Ну хотя бы потому что эти твои тайлы могут быть в оперативке, видео памяти, на диске. Они могут быть упакованы, сериализованы, сегментированы или вообще абстрактные (нужен какой-нибудь препроцессинг или генерация шейдерами).
Тайл это просто обёртка на N количеством чанков. Внутри него массив + кое какая логика для работы над ними, типа, отсечение не видимых, выборка в радиусе и тп.
Поэтому тут
> Они могут быть упакованы, сериализованы, сегментированы или вообще абстрактные
это всё нахуй не надо.
1 тайл - 1 файл.
Пока решил внутри тайла добавить класс который будет заниматься сохранением\загрузкой.
Ну и зачем ты просто какую-то хуиту, уровня нужно просто правильно писать, спизаднул? Где примеры, где обсуждения и сравнения?
Карта, тайл, чанк - на все это надо смотреть как на говно ресурсы.
Лучше, когда у тебя есть отдельный класс-хранилка, из которого можно доставать нужный ресурс по человекочитаемому id (enum, например).
>классу тайл дать функции загрузки и сохранения?
Любой класс-ресурс в любом случае должен знать, как загружать себя самого. В конце концов, у класса-ресурса есть закрытые члены. Перекладывать эти обязанности на другие классы - ебанатство.
Хранилка же только вызывает метод load соотв. ресурса, делает проверку успешности загрузки и помещает загруженный ресурс в свой контейнер.
Еще лучше, если тебе удастся обобщить твою хранилку до шаблона, подходящего для всех типов ресурсов, которые есть в твоем проекте.
>внутри тайла добавить класс который будет заниматься сохранением\загрузкой
Нафига для этого класс, тебе простого метода мало?
Как ты этим пользоваться собираешься?
>>классу тайл дать функции загрузки и сохранения?
>Любой класс-ресурс в любом случае должен знать, как загружать себя самого.
А ещё отрисовывать себя самого. Ещё взаимодействовать с физикой самому. И т.д.
Посоветуйте хорошую книгу по шаблонам пожалуйста.
https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121
Насчет русской версии на подскажу
Значит Я все правильно сделал. Как раз её и читаю.
если ты хочешь вкатиться в template metaprogramming, то вряд-ли тебе в обычном курсе по C++ об этом расскажут
>вкатиться в template metaprogramming
Изучать шаблоны, чтобы вкатиться в шаблоны, кек. Ладно бы ты про разработку каких-нибудь sdk спизднул.
Понял
А буст типо нахуй идёт тогда? Там шаблоны не нужны?
А картинки нет?
А как без него обходятся?
QtCreator. Там вовсе необязательно использовать Qt, можно обычные проекты делать. CMake поддерживает.
А ты вообще в курсе, что Линус Торвальдс писал свою ОС на 32-битной машине Синклера (создателя Спектрума)?
стим на sdl2 вроде. остальное либо qt, либо стандартные средства винды. Либо ещё на жабе пишут
https://ideone.com/FsowuS
В линуксе все графические либы кроссплатформенные.
Т.к. ИДЕ только графические либы и нужны, то любая ИДЕ под линуксом - кроссплатформенная.
Что ничего нет устаревшего. Спектрум создавался как компьютер для обучения программированию, поэтому можно до сих пор его использовать для этих целей. А уже потом переходить на IBM PC-совместимые БЭВМ.
Viber на OpenGL вообще, по-моему.
Не скомпилируется. Нужен mutable
Нет, std::function тяжёлый
1. По поводу decltype соглашусь. cmp является функцией, а не функтором. Поэтому шаблонным параметром надо передавать указатель на функцию bool (*)(bool, bool)
2. В случае лямбда выражения, запаковка в std::function не нужна вообще, если лямбда уже объявлена и проинициализирована заранее. В противном случае если ты засунешь лямбду внутрь конструктора, то нихуя не скомпилируется. В таком случае std:: function действительно нужен
unsignedint8byte_type
Нормальное название. Как иначе записать? Разве что так
unsignedint8bytetype
Мне больше интересно, кто придумал зависящие от архитектуры типы short/int/long и ещё float/double вместо float32 и float64.
Это в наследство от Си досталось, чтобы писать кроссплатформенные программы. К примеру, int обычно соответствует разрядности аккумулятора (регистр процессора). Если на современных машинах он 32-битный, то на старых машинах может быть 16 или даже 8-битным.
Представь что у тебя есть перечисление, и нумерация происходит с нуля
Во первых зачем тебе, к примеру, uint32_t для перечисления 0, 1, 2, 3 когда uchar8_t будет достаточно
Во вторых когда ты захочешь скастовать к енуму, то получишь предупреждение
int i = 256;
Test val = static_cast<Test>(i); // enum class Test : uint8_t
Я понял, спасибо, но почему бы компилятору самому не выбрать за меня тип uchar8_t вместо uint32_t, если он видит что перечислений этого типа 3 штуки? Или он всё же оптимизирует?
Так же как и nullptr и nullptr_t
Думаю std::uint_32 это какой-нибудь отдельный объект внутри стандарта, а using uint32_t = decltype (uint32)
Хороший вопрос. Но мне кажется нет, он такие вещи вряд ли оптимизирует, потому что максимум что ты можешь оптимизировать это
sizeof(int) - sizeof(char) что обычно три байта
Экономия места.
И еще, если ты хочешь комбинировать свои перечислители с помощью побитовых операций | &, то неплохо иметь способ контролировать количество доступных бит.
>>067854
Для простого енум компилятор что-то подобное пытается делать. Но каждый компилятор делает по-своему.
У енум класс всегда по умолчанию инт.
Расскажи про использование плюсов под Андроид, если знаешь.
Сам несколько лет назад собирал GStreamer для Андроида под линуксом, и, насколько помню, там были скрипты для сборки, которые тебе сами всё соберут. Потом подключаешь через NDK какой-то файлик, делаешь приложение и всё вроде работало.
Андроид говно ебаное, где ничего не работает как нужно, даже узнать банально путь к файлу из uri может быть не так просто. В остальном все как обычно, разве что андроид немного отстает по стандарту, примерно на 1 версию, тот же filesystem только в конце 2020 появился как бета.
Я вот просто не нагуглил билд скриптов для GStreamer на андроид, может у вас локально кто-то сам писал.
Ну так я и говорю, что если тебе надо в одну дырку запихивать разнородные функторы, то тогда надо заворачивать. Лямбда тоже небольшой оверхед в обмен на удобство.
function и лямбды хороши для фронта. На бэке в основном указателями на функции оперируют (всякие сишные приёмчики).
Где там у лямбды оверхед? Она инлайнится спокойно.
Указатели на функции стоят столько же, сколько std::function, и будут дороже добротно заделанной архитектуры на шаблонах, в которой в compile-time разрешается вопрос, кто где кого вызывает, и по стыкам интерфейсов всё инлайнится и оптимизируется.
>Где там у лямбды оверхед? Она инлайнится спокойно.
Как текстовая/бинарная подстановка влияет на скорость выполнения подставляемого кода? Никак?
Позволяет компилятору проводить оптимизации. Это решает больше, чем может показаться.
У него есть аккуратно заточенные под это эвристики. Если нет смысла инлайнить, то не станет, конечно. Но речь всё-таки о тех случаях, когда станет.
Ну пока что это обмен вскукареками, как с моей, так и с твоей стороны.
std::function, я думаю, может оказаться на писечку медленнее, потому что ему ещё надо сходить в таблицу. На практике, учитывая то, как современные процессоры предсказывают переходы, это ещё надо постараться, чтобы производительность просела.
Эта разница меркнет с возможностью заинлайнить, вот что я имел в виду.
Да, и по памяти маленько можно просесть.
Но я лучше память отдам, чем буду оперировать указателями на функцию. Может, где-нибудь это и будет критично, но для нас это нигде, а для сталкивающихся с этим -- известный факт и уже решённый tradeoff.
> По скорости еще проход через кеш может быть (для vtable)
>> ему ещё надо сходить в таблицу
Вопрос на собес: можно ли лямбду преобразовать к указателю на функцию, и если можно, то как?
Вы приняты!
Кстати, вот я пизжу, что указатели на функции лучше не использовать, а сейчас вспомнил, что сам-то я их использовал, когда visit писал для variadic templates.
Собрал минимальный пример https://gcc.godbolt.org/z/efqj1xnY4
Но в моём случае это было потому, что мне не хотелось тащить <functional>. Я если пишу библиотеки небольшие, стараюсь по возможности не тянуть стандартные хэдеры, так что это оказалось принципиально.
gcc 10.2
Всё-таки есть разница между пятью сотнями строк кода и хуй знает сколькими тысячами.
С одной стороны, конечно справедливо...
С другой - все таки свои костыли такая себе тема.
Ждем модуляризированной стандартной библиотеки
Некоторые мои костыли мне уже как родные ноги, таскаю их почти в каждый свой проект.
Но, к счастью, некоторые уже отваливаются. В с++20 наконец-то пропала необходимость таскать костыльный span. А некоторые и не отвалятся, например, мой костыль для поиска типов в списке типов.
машинное слово - sizeof(int) и
машинное слово - sizeof(char) ?
Нет, ты не очень понял, что он должен делать.
Вот тут примеры есть https://en.cppreference.com/w/cpp/language/alignof
Выравнивание влияет на sizeof типа, заставляя его быть кратным ему, плюс влияет на организацию памяти включающих его структур.
https://gcc.godbolt.org/z/nzYba76EM
sup
А какие проекты требуют вообще плюсов? Я представляю суток только какие-то приложения для стриминга да видеоплееры, ну игры ещё. Интересно в общем, как совмещать работу на плюсах и андроиде.
GStreamer я для своего проекта собирал, по какому-то туториалу. Возможно, они сейчас на другую систему сборки переехали, не знаю. Но помню, что была утилита какая-то, которая сама всё генерировала и собирала, надо было только чуть-чуть что-то в каком-то конфиге прописать, там ещё был скрипт, который знал про различные дистрибутивы линукс, и минт считал убунтой. Может быть это meson, может быть cerbero. В итоге возни было очень мало, и я часа за 4 всё собрал. это было в 2016
В общем, ищи туториалы, вряд ли что-то стало сложнее с тех пор. И собирай лучше на линуксе для начала, потом уже поймёшь как на винде собрать.
Все проекты не однодневки где надо конкурировать с такими же однодневками используют плюсы.
плюсы нужны там где нужен гигантский перф, либо там, где уже есть дохуя плюсового легаси, либо в системном программировании, с суровой еблей виндового апи\драйверов.
Начинать новые проекты на плюсах практически нигде нахуй уже не надо, если ты не делаешь убийцу постгреса там.
У нас кроссплатформ говно, поэтому плюсы. Ну и требования сделать быстро и чтобы работало на любом ведре.
>>плюсы нужны там где нужен гигантский перф, либо там, где уже есть дохуя плюсового легаси, либо в системном программировании, с суровой еблей виндового апи\драйверов.
>>Начинать новые проекты на плюсах практически нигде нахуй уже не надо, если ты не делаешь убийцу постгреса там.
А кроме как боевые картиночки есть что сказать?
Все бэкенды нагруженные - на го, весь гуй - C#.
Собстно остаются игры, системщина лютая, т.к. не лютая - опять шарп, ну и всякое легаси с qt
Го ведь жуткая параша, неужели плюсы с нею не могут конкурировать?
>>068329
Qt/Qml наверное? как 2ГИС
>>068319
Что насчёт компьютерного зрения и нейронок? Читал, что в некоторых задачах надо воплощать нейронки в плюсах ради производительности (а где-то кладут хуй и используют на питоне).
Я это к чему всё вообще. Я думаю, что после плохого эмбеда, где "всего по чуть-чуть и тяп-ляп, с кучей легаси, на мощном железе", надо идти или в нормальный человеческий эмбеддед писать прошивки под железо или специализированный софт (драйвера, сетевые протоколы, мультимедиа), или вовсе на Андроид катиться, чуть-чуть знаком с ним. На финансовые приложения знаний и опыта не хватит, на последней работе развивался только в ширину. Может, кто-то был в похожей ситуации, как выкрутились?
У меня был проект с машобом, нейронками и эмбедом. Нейронки, пердоли с картинками, видео и само зрение - С++. Железки С. Фронт - жопаскрипт. Но он долгоиграющий был и стартовал ещё до появления OpenCV. Сейчас там часть бэка переделали на .NetCore. Весь матан остался на c/c++ и его в принципе нельзя трогать, иначе железо не вывозит.
С питоном делается в несколько этапов. Сначала пишется рабочая версия на пихоне, потом специально обученные челики портируют код поближе к железу - c++ в сочетании с интринсиками, sse/neon, cuda и т.п.
>Го ведь жуткая параша, неужели плюсы с нею не могут конкурировать?
Го с точки зрения бизнеса - это охуительный язык. Очень простой, нет никаких заебов, все есть из коробки - просто шлепай код.
Писать на этом я, конечно же, не буду, но прекрасно понимаю почему бизнес форсит на нём писать.
Да, qt qml + opencv. Сам проект вроде как небольшой и простой, но эта кроссплатформа уже заставляет меня выгорать. Я не могу собрать этот opencv ffmpeg + x264 под андроид и никто не может мне помочь. Ад какой-то, не работает просто потому что, ну и я сам нуфаг 1 год опыта, туповат ещё для такого, а дрочат меня с этой задачей знатно, бывает готов уволиться.
Хм, в капче были велосипеды. Символично.
Обычные проблемки зелёных под линуксом. Переработки, выгорание, приступы отчаяния, одиночество (те кто поопытнее стараются в это говно не лезть и тебя избегают).
Выдержишь - сможешь потом в нормальную контору пойти на приемлемые деньги. Дропнешь - не велика потеря. Есть масса занятий за больший прайс.
>x264 под андроид
Мне кажется или ты делаешь что-то не так? x264 это софтварный декодер, а на андроидах наверняка есть хардварный
Есть, но как к нему достучаться? Через OpenMAX на С писать? Я думал подключить vaapi в ffmpeg и получить аппаратную поддержку, но может это не так работает, раньше никогда не занимался андроидом тем более на таком уровне.
>Через OpenMAX на С писать?
Это же вроде плюсовый тред, в чем проблема си заюзать? Не джава же.
На уровне языка лимита нет, но само собой очень большой буфер за раз ты выделить вряд ли сможешь, в ОЗУ может тупо не найтись достаточно большого непрерывного участка, и будет bad_alloc.
Да просто он нафиг особо не нужен
Ну так это тебя в любом случае ждёт. А с гитхаба ничего не подходит? Там же масса всяких ffmpeg проектов, собирающихся под андроид.
Мимо писавший зрение под малинки, пердуинки и тегры (под ведроид не писал, сорян).
Ага, а там как HeapAlloc и система решат. На 64 битах с подкачкой можно дофига
У меня собирается сам FFmpeg + opencv на андроид без проблем, а вот добавить в FFmpeg дополнительно либу не могу.
У меня другая задача. Кратко, есть одна динамическая система, и научник говорил, что у меня разрыв в верхней синей области. На пике построение с вольфрама. Если интерестно могу нормальное скинуть.
>в ОЗУ может тупо не найтись
Если в ОС есть виртуальная память, то она будет выделять место на диске без bad_alloc.
Нас учили в школе решать подобные задачи.
Решение такой задачи сводиться к динамическому программированию. Тебе надо построить граф, где каждый узел - развязка, вес рёбер расстояние.
У узла должен быть параметр - наименьшее расстояние от начальной точки. Рекомендую инициализировать их каким-либо максимальным значением.
Дальше, ты первому узлу присваиваешь вес 0. После считаешь вес для всех соседних узлов 0 + длинна дороги. Если она меньше текущей, то задаёшь новую дистанцию. И так обходишь все.
Это да, но виртуальная память - это не всегда то, что нужно.
В этих случаях ты не можешь полагаться на bad_alloc.
У меня есть решение, но я не научник
>при изучении С++ ты и так изучишь C
Обязательно изучишь. Но не по книгам про C++, и уж тем более не по какой-то одной отдельно взятой волшебной книжке по C++.
>Гугл говорит, что это полезно, т.к. изучение С++ будет легче при наличии какой-то базы знаний полученной из С
Это половина правды.
Верно также и обратное: зная имея мало-мальский бэкграунд в виде C++, сишку ты усвоишь без особых усилий в необходимом для плюсовика объеме.
>>069772
>Можно и нужно.
Хотел бы я, чтобы это было так. Но вот на практике если, с какой именно книги начинать изучение C?
K & R - он совсем не для нубов, и вообще это скорее задачник, чем учебник.
У Праты хорошая книжка по сям, но 900 страниц в качестве введения к 1100-страничному Липпману, или к 1300-страничному Страуструпу - это перебор.
>>069769
>Ваше мнение?
Ни до, ни после, а где-то между.
Лично я читал K & R + отдельные главы из Праты после Липпмана. Не могу сказать, что это самый прямой и быстрый путь, но вопросов при дальнейшем изучении C++ стало гораздо меньше.
Изучай архитектуру ZX Spectrum, благо сейчас литературы полно, в отличии от 90-х. Пробуй программировать в машинных кодах. Потом напишешь свой компилятор С++ для Спектрума и уже на нём будешь учиться взламывать чего ты там хотел.
В идеале лучше купить настоящий железный Спекки, но на первое время пойдёт эмулятор на ПК.
Тебе сюда: https://2ch.hk/pr/res/1667366.html (М)
Или сюда: https://2ch.hk/wrk/res/2329102.html (М)
>K & R - он совсем не для нубов
Чем тебе K&R не угодил? Там все с самых азов, проще и быть не может.
Мне-то он угодил, но после Липпмана. Какой опыт имею, тем и делюсь.
Полный снуль, я так думаю, если даже и осилит, то не извлечет максимум пользы.
Что тебе не нравится? Многие начинали путь программиста со Спектрума.
Или ты думаешь, что напишешь virus.exe и он гарантировано выполниться на военном компьютере США? Там может быть совершенно иная архитектура.
Так что иди и учи Спектрум. Без него крутым хакером тебе не стать.
перематываешь на конец, смотришь tellg, и дальше читаешь столько байтов.
Ну если ты иостримы юзаешь
Лол. Помню, когда Паскаль в школе учили, только псевдокод на кириллице проходили, и я дома открыл блокнот, написал тот же псевдокод, только с переводом на инглиш, переименовал .txt в .exe и допускал, что взлетит.
Поддвачну вопрос. Вкатывальщики в бэкенд пилят всякие ресты/круды для интернет-магазинов, фронтендеры клепают разную хуйню на реакте. А что делают для вката в плюсы? Какой топ популярных проектов? Игры на SFML? Чатики на Asio?
Дык SDL это же не API а фреймворк, там OpenGL юзоецца
Какой-то местный чувак писал, что его заставили накодить TCP сервер.
По-моему пик гораздо проще и разжёваннее для нубов, только хуй найдёшь отсканированную русскую версию, а бумажную более не издают и не купить. Есть на английском, но новые издания под другим названием - Teach yourself C hour a day, Peter Aitken, Beadley L. Jones. Видимо, "за 21 день" стало совсем зашкварно и никто не покупал.
Лол, я и видел эту книгу где-то. Не стал читать из-за названия, подумал что хрень.
Это БЭВМ для всяких универов/предприятий. Первый доступный для обычных людей 8-разрядный компьютер был именно Спектрум. У нас в 90-е тоже именно клоны Спектрума стали первыми компьютерами для многих семей. Их даже выпускали с маркировкой БК (Бытовой компьютер).
При обновлении eclipse перестал запускаться выдавая ошибку. Что делать?
Раздел "Результативность"
https://ru.wikipedia.org/wiki/C++
>Ненадёжность продукта
>Неоправданное обилие побочных эффектов в сочетании с >отсутствием контроля со стороны системы времени исполнения >языка и слабой системой типов делает программы на C++ >подверженными непредсказуемым фатальным сбоям
В англоязычном вики подобного вброса даже и близко нет.
Что это за диверсия, кто протащил такое говно на вики?
>с какой именно книги начинать изучение C?
Руководство полного идиота по программированию Богатырева:)
За 21 один день нереально выучить. А вот если предположить что 21 день это 504 часа нон стоп работы, то чему то научишься.
Согласно истории правок это дело рук шиза Arachnelis
спасибо
Несколько трэдов назад был немаленький список проектов. Но я тогда занимался алгоритмами и не заскринил. Может кто-то сохранил тот список?
Нет, это было в c++-трэде, анон спросил, чего бы написать джуну, и было много ответов. Я запомнил 3d-рэндерер, текстовый или графический редактор и эмулятор старого процессора. Давно это было, в конце прошлого года может.
Фуллстак-джаваскрипт-смузихлеб на связи. Хочу углубиться в дыижек js и ноду, но забыл весь c++. Есть чего, что бы быстро перейти с другого языка?
Книжка у нас совсем не заменита почему-то, да и издавалась давно. Я давал её почитать одногруппникам, потому что перевод негде было достать.
Насчёт Праты не знаю, не читал. Учился по этой книге сам, пытался ещё какое-то древнее издание K&R читать. Давал эту книжку другу, полному нубу, который в универе по ней учился, он всё понял в отличие от K&R, где ему показалось сложно и непонятно, примеры ещё там почему-то были сложны вроде бы. Кому-то тоже давал почитать, человек потом скачивал английский скан и ему тоже зашло. В общем, книга повидала многое, лол. Может, отсканировать как-нибудь, но насчёт авторских прав не уверен, засудят ещё.
А сама книга в общем поделена на дни, каждый из которых примерно 8 часов, и там различные темы подробно рассказаны, как работает printf и прочее. Всюду всякие схемы, изображения с аналогиями в виде вложенных папок и прочее, что и самый нуб всё поймёт. В конце книги говорится, что си это круто, но дальше надо изучать плюсы, C# или джаву, лол. И даны простые введения в эти языки.
Украина, и даже не Киев. Зарплатулечка... ну, чтоб не деанониться, скажу, что на испытательном дают около 600-700 долларов, и это я реально хуй без опыта практически (фронтенд в одной максимально нишевой хипстерской конторе тут мало релевантен, словом вчерашний студент). Кодовая база очень годная, современные кресты такие шо прям ух бля, и контора не аутсорс, а продуктовая, короче, охуенно все. Категорически никаких овертаймов и прочего говна, вот, а чем по сути занимаемся не скажу, потому что есть шансы спалиться. Но если абстрагироваться от предметной области, то
>Что именно будешь делать?
юзать API разных существующих сервисов, аутентифицируясь с токенами определенных юзеров (которые и не против за это платят) и с добываемыми данными вещи делать жутко пиздатые да дела творить страшным образом охуеные. Как-то так.
Ебать эссе. Ты же гумунитарий, инженерное дело совсем не твоё.
>Вот к примеру, чем сделать программу по обработке и манипуляциям с картинками дороже, если делать на плюсах?
Вот так выглядит код для вычисления гистограммы и её отрисовки:
C++ (47 строк, 2200 символов):
https://docs.opencv.org/4.5.2/d8/dbc/tutorial_histogram_calculation.html
Python (10 строк, 281 символ):
https://docs.opencv.org/master/d1/db7/tutorial_py_histogram_begins.html
Насколько дольше писать на c++ и потом отлаживать до рабочего состояния - оцени сам.
>C++ (47 строк, 2200 символов):
>https://docs.opencv.org/4.5.2/d8/dbc/tutorial_histogram_calculation.html
Что несешь, поехавший?
По первый ссылке есть код на трех языках, включая питон.
И на питоне там кода не меньше, чем на плюсах
И чё и чё? Напиши на плюсах в 10 строк (matplotlib и numpy сичтай std плюсовый). Если не уложишься - обтекай.
Открой 2 ссылку.
Ещё раз: нужно загрузить картинку, посчитать гистограмму и нарисовать её. Ссылка 1 - с++ 50 строк, ссылка 2 python - 10 строк.
Код на C++ тоже можно завернуть в пару функций и будет также читабельно, как и на питухоне.
Это на единичном примере кажется преимуществом, что в библиотеке питухона оказалась подходящая к случаю функция.
На деле же, вообще говоря, если у тебя библиотека на все случаи жизни, то и учить ее тебе всю жизнь придется.
Или гуглить и разбираться, когда приспичит. А это не сильно проще, чем написать пару функций по 20 строк самому.
В 10 ты строк решаешь или в 10000, твой рабочий день все равно всегда будет 8 часов.
Если ты не продукт-овнер, тебя это вообще ебать не должно.
То не я был.
Я писал код с opencv и на ++ и на пихоне. И разница вот примерно такая же, как в этом простейшем случае. Хотя opencv один и тот же.
Как это меня ебать не должно? Я за 10 минут напишу 20 строк и потом пойду эйчарок мацать за жопы. А ты поздно вечером оторвшь жрпу от стула и поползёшь домой один разогревать вчерашние пельмени.
Будучи на вакансии питухонщика, твой перформанс никто никогда не будет сравнивать с крестобоярами.
Бояре - это те, кому не надо выслуживаться перед начальством, чтобы с коллегами интрижки покрутить.
О, я тогда, получается, крестобоярин!
Что мне мешает взять ту же библиотеку и написать такой же код? Это же не из за языка такая разница. К тому же эта библиотека, походе, на плюсах и написана
>какой учебник брать?
В смысле, какой учебник брать по основам языка? Потом все-равно буду читать специализированную литературу по вычислениям для научных работников и инженеров.
Спасибо, наверное так и поступлю. Если что, потом догонюсь "A Tour of C++" Страуструпа.
Ну охуеть теперь. Заслуга java/c#/python etc это вообще не их заслуга, ведь виртуальная машина, сборщик мусора, sdk и прочее на на них написаны... Пиздец ты тупой.
Тот же numpy включает в себя BLAS, который написан на Fortran. Этот BLAS плюсовиками тоже активно используется и никого это не смущает (хотя кода получается зело больше).
Ну и самое главное, почему плюсовики для себя не написали такого удобного и лаконичного инструмента как для питона, м? Сколько там кода надо нахлобучить, чтобы с помощью qt/sfml/glut/mfc сделать окошко и нарисовать в нём ломаную линию?
Для вычислений плюсы особо то и не нужны. В том плане, что всякие шаблоны, лямбды, stl и прочие move semantics там негде использовать. Польза будет только для написания api верхнего уровня к твоим числодробилкам.
Тем не менее, дохуище научно-инженерной литературы посвящено именно С++. На курсере вот курс приглянулся по методу конечных элементов с С++. Если надо будет что еще ускорить, перекачусь в С (или буду использовать всякие приблуды типа CUDA). Фортран-то учить смысла не вижу.
А что еще есть? Хочется к Пайтону выучить еще какой-то язык, а какой - хз.
>Ну и самое главное, почему плюсовики для себя не написали такого удобного и лаконичного инструмента как для питона, м?
Потому что на плюсах редко встречается задача быстрого макакинга гистограмм?
https://github.com/dpilger26/NumCpp
https://matplotlib-cpp.readthedocs.io/en/latest/
>Ну и самое главное, почему плюсовики для себя не написали такого удобного и лаконичного инструмента как для питона, м? Сколько там кода надо нахлобучить, чтобы с помощью qt/sfml/glut/mfc сделать окошко и нарисовать в нём ломаную линию?
Берёшь рут и рисуешь гистограммы из плюсов. Написано на плюсах.
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Pine” instead of the number and for the multiples of five print “Apple”. For numbers which are multiples of both three and five print “PineApple”.
Памагите!!
Что блядь?
Делаешь короче очередь с приоритетом, где элементы сразу встают куда надо, потом её считываешь и пишешь соответствующие слова для соответственного приоритета.
Почему не по-русски?
Тут без имплементации конечного автомата не решить, сложная задача.
Сначала прочитай теорию
https://ru.wikipedia.org/wiki/Конечный_автомат
А причем тут кресты? Надо сделать на шаблонах в компайл тайме?
Вроде как на NDK ещё можно написать, но выглядит муторно, я бы посмотрел пример, если у кого есть.
Ещё думал над тем, чтобы написать(спиздить) запись видео на жаве и перебрасывать данные через jni вызовы.
Я к тому, что для чистого FEM тебе хватит ~15-20% от того, что предлагает современный c++ (с++11 хватит вообще для всего).
Для основной задачи - решения слау - хватит и C++98 и C и Fortran (причём он удобнее, хотя бы потому, что в нём есть встроенные типы векторов и матриц). Оптимизация это вообще отдельная тема, слабо связанная с каким-либо языком.
>>072665
Ещё раз поясняю для тупых.
Чтобы подключить и инициализировать стороннюю библиотеку в python достаточно одной строчки:
import libname as name
Чтобы это сделать в плюсах, надо учесть calling conventions, mangling, под каждую платформу делать свою реализацию, подключать портянку системных заголовков, писать код на WinApi с LoadLibrary, портянкой из GetProcAddress и всё это сверху обмазывать перехватом и обработкой ошибок.
Да и ещё, всё что загружено из библиотеки, неплохо бы завернуть в структуру или хотя бы namespace, чтоб говном не пахло.
Зайди на сайт какого-нибудь вендора, допустим Самсунга, и почитай, что он тебе предлагает в качестве кодека. Не скажу за андроид, но для разных эмбедов хардварный api надо заворачивать в код, встраивать этот код в ffmpeg, а затем компилить всё вместе. Даже Nvidia говорит, что вот для вас мы сделали интеграцию с gstreamer, а с ffmpeg ебитесь сами.
>всякие шаблоны, лямбды, stl и прочие move semantics там негде использовать.
Например, в boost math все это есть.
Сам ты может и не будешь шаблоны городить, но как минимум нужно шарить, чтобы быть в состоянии читать справку и исправлять свои ошибки.
Скорость подключения библиотек - решающий критерий для хеллоуворлдщика.
Для каких-то местечковых вспомогательных задач boost::math может быть и сгодится, но чтобы писать какую-то долгоиграющую математику - едва ли. Шаблоны в большинстве либ дальше примитивов типа matrix<M,N,T> и простеньких контейнеров типа std::array не выходят.
>Чтобы это сделать в плюсах, надо учесть calling conventions, mangling, под каждую платформу делать свою реализацию, подключать портянку системных заголовков, писать код на WinApi с LoadLibrary, портянкой из GetProcAddress и всё это сверху обмазывать перехватом и обработкой ошибок.
Поясняю для тупого. То, что ты тут перечислил это спермопроблемы. На сперме и с питоном туго.
Сторонние либы используются крайне аккуратно. Все свое. Как-то так. А на собесе была задачка уровня laba1.cpp, я аж проиграл. Не знал, как изъебнуться, сделал с максимально выразительным использованием средств STL, сделал вдобавок программулину генератор тестового ввода, которая получилась больше самого решения задачи, и Makefile положил вместе с параметризированным скриптом для запуска всей этой байды. Думали на trainee рассматривать, но после живого разговора "повысили" до джуна сразу. Фублять, фунахуй, верните мне мои нормальные термины "стажер" и "младший разработчик"!
Бля, я в киеве с более чем годом опыта работы получаю 700$, это ещё учитывая повышение недавнее, желание послать нахуй контору растёт с каждым днём.
Нет, ну есть ещё 5 способов подключить либу в c++ (сомневаюсь, что ты хотя бы 3 сможешь назвать). Впрочем, твоё изложение доводов и так больше похоже на мычание.
Кем пользовался? Вцпкг? У нас оно в проде на двух проектах, и еще в соседних командах внедряем. Что еще расскажешь?
Технологии: Qml, Qt, Opencv, опыт с Android, немного работы с embedded(оборачивал их С апи в более высокоровневую абстракцию)
Английский на уровне чтения тех докум.
1.5 года опыта.
На сколько стоит расчитывать?
Практически все собирают кастомный opencv. Тянуть его с внешних реурсов пакетником или докером просто бессмысленно.
Если я напишу vcpkg install libname, то она прям сразу будет динамически подключаться к моему проекту? Или ты пиздишь и надо сначала руками написать необходимый код?
https://github.com/microsoft/vcpkg/blob/master/ports/opencv/vcpkg.json
Там дохуя рецептов как его собрать. И с кудой, и с ффмпегом, и с хуюдой, и с залупой.
> Если я напишу vcpkg install libname, то она прям сразу будет динамически подключаться к моему проекту?
Если прописано integrate install - то да, во всех проектах.
Если не прописано (а оно не должно быть прописано, если у тебя разные проекты) - то 2 строки кода на проект 1 раз.
Если ты настолько суров - то всегда можно сделать патч и его апплаить при сборке как мы в нескольких 3рдпати либах делаем
Вообще мы не средства дистрибуции обсуждали, а механику подключения рандомной либы к проекту. То, что нужно сделать руками задолго до создания пакета.
ну, ВЦПКГ, да? 1700 рандомных либ подключай-не-хочу. Лучшее, что случалось с С++.
если говорить прям про РАНДОМНЫЕ ГОВНОЛИБЫ, которые у тебя только в бинарях + хедерок или .def\.lib - то там все очень хуево, и так не надо делать.
Чё ты там всё страдаешь. Работай работу, ищи где зп больше.
По твоей задаче будет ещё масса приключений. Твоя софтина будет работать с большим количеством разных камер. И проблем будет просто гора на всех уровнях (ffmpeg не может прочитать пакет, кодек не может распаковать, пакеты битые, пакеты пропавшие, пакеты китайские, мало памяти, мало cpu, конвертации с потерями, кривая калибровка камеры, потребности в коррекции/осветлении/усилении контраста и какой-нибудь фильтрации кадров и т.д.).
Ну довольно много устройств на android имеет встроенную камеру.
Если ты собираешься видео с экрана захватывать, то я тогда хз зачем тебе ffmpeg понадобился.
Если это потоки с внешних ip камер, завёрнутые в rtp/rtsp пакеты, то все проблемы сохраняются.
А что не галера?
Лично я на своем бэкенде точно винды не коснусь, а фронтовики там какой-то десктопный клиент только поддерживают, но не модернизируют, как под браузер и смартфоны.
https://docs.microsoft.com/en-us/windows/win32/learnwin32/your-first-windows-program
ни
https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp?view=msvc-160
не работает? Пикрил выпадает.
Ты точно выбрал правильный шаблон проэкта при создании?
Прикол в том, что для виндовс-приложения простой main() в качестве точки входа не катит.
Не понял про шаблон. Если ты имеешь в виду выбор при создании проекта, то я выбрал пустой проект. Дополнение с пика установлено. Код полностью скопированный с сайта, ну и соответственно в нём не main а wWinMain.
Спасибо помогло!
>>>2074021
Ты скопипастил винмайн, а линковщик исходя из настроек проекта искал обычный main.
нахуя тебе steady clock конкретно? Все нормальные операции с датой\временем qt делает либо так же, либо лучше. Учитывая что С++ в дату вообще не умеет пока (Какие в С++20 потуги были, не смотрел)
Стоит. Это не десктоп умер, а веб сильно разросся, из-за чего на его фоне кажется, что остальные технологии умирают.
чтобы произвести действие через Х часов, даже если в процессе юзер переставит дату
QElapsedTimer
>immune to time adjustments, such as the user correcting the time. Also unlike QTime, QElapsedTimer is immune to changes in the timezone settings, such as daylight-saving periods.
Nyet.
Даже на одном проекте может быть несколько UI. А вообще оптимальный ui это web. Его иногда отдают на аутсорс, чтобы получить красивый дизайн и юзабилити.
Ну не может гречнеый c++ программист родить нормальный UI хоть на Qt хоть на чём, а кроме гречневых на Qt никто не пишет.
for(int y=0; y<SIZE_Y; y++) {
for(int x=0; x<SIZE_X; x++) {
painter.setPen(QPen(get_colorvideomap(x,y),1);
painter.drawPoint(QPointF(x,y));
}
}
Рисуешь картинку где-то в буфере, и потом за 1 draw call ее выводишь
А ещё можно dx контекст создать. С ним трахи в культи более натужные.
Проще всего для тебя будет рисовать в буфер и свапать его с буфером виджета.
Какие сейчас есть десктопные проекты, которые выгоднее делать на Qt, чем на вебе? Про безотказный эмбеддед понятно, что там веб слишком опасно использовать, и там только Qt или самописные библиотеки.
>>074947
> Ну не может гречнеый c++ программист родить нормальный UI хоть на Qt хоть на чём, а кроме гречневых на Qt никто не пишет.
Может, причём хоть на GTK, если ему всё нарисует и напишет дизайнер.
>Может, причём хоть на GTK, если ему всё нарисует и напишет дизайнер.
А в чём макеты дизайнер будет делать? Игроделы делают целый пайплайн, чтобы контент от дизайнера в игру попадал. С Qt примерно такая же история. Web самый дешёвый в этом плане способ. Из минусов вёба - скорость и, наверное, безопасность.
Песочница браузера не даст реализовать многих вещей, но а так я соглашусь с тем что в вебе будет все больше и больше, а потом, наверное, вообще всё.
>Какие сейчас есть десктопные проекты, которые выгоднее делать на Qt, чем на вебе?
Тупо все. Электрон - полная параша
гречневый спок
Технически это выглядит так. Дизайнер создаёт макет в каком-то продукте от Adobe, по-моему, Adobe XD, потом всё экспортируется в интерактивную веб-страницу, где можно навести на нарисованную кнопочку или скроллбар мышкой и увидеть её цвет, расстояния до других элементов и тому подобное. Программисту остаётся только создать всё точно так же, как на макете.
Насчёт дешевизны веба согласен, какие-то вещи там уже оптимизированы, и какая-нибудь графическая утилита, состряпанная на коленке на реакте, будет работать гораздо лучше, чем на Qt, где ещё придётся возиться с многопоточностью, чтобы не тормозило. И анальные пляски с deleteLater().
И тем не менее, вопрос остаётся открытым. В каких всё-таки сейчас оправданно применяется Qt и стоит ли его учить ради таких проектов, много ли их. Пока только 2 мнения, одно за изучение, другое против.
Как в вебе выводить массив пикселей на экран? Допустим я хочу написать эмулятор старой 8-разрядной ЭВМ (к примеру, ZX Spectrum) и мне надо делать отображение области памяти на экран.
HTML5 Canvas
Используется там, где и всегда - многокнопочный десктоп (фотошопы, кады, работа с аудио/видео), транспортный эмбед (приборные панели авто, самолётов и прочего), там где есть требования к открытому коду (проекты для силовиков и гос органов), ну и всякое легаси.
В многокнопочном десктопе у qt слабые позиции в сравнении с wpf.
Вакансий на qt в целом мало, если откидывать всякие гос. конторы и легаси проекты.
>Программисту остаётся только создать всё точно так же, как на макете.
Это вёрстка и это очень далеко от того, чем с++ программист обычно занимается. Дизайнеры с qt практически не знакомы.
Чтобы дизайн можно было нормально натягивать и оперативно исправлять, приходится писать целый набор скриптов и утилит (хотя экспорт из фотошопа в qt вроде как имеется).
Так же, как и получение видео в браузере от ip или web камеры. Рисуешь в буфер, жмёшь в jpg и отправляешь по http в браузер. Гугли пример mjpeg over http на c++.
И какая там будет интерактивность? В Спектруме отрисовка экрана шла с частотой 50Гц.
два два ч двачу двачую!!!!!
Ты путаешь кадровую частоту приложения/игры и частоту обновления экрана телевизора/монитора (как раз во времена Sinclair телеки работали на частоте 50hz).
Игровой fps будет зависеть от того, насколько быстро ты будешь делать рендер нового кадра. На стороне браузера просадок не будет.
Потому что windows это микрософт, wpf это микрософт и visual studio это тоже микрософт. Соответственно инструментарий максимально заточен на доступ ко всем подсистемам и ресурсам винды (меньше кода надо писать, больше полезных инструментов).
На C# быстрее разработка и меньше жопных багов типа утечки и порчи памяти.
> Потому что windows это микрософт, wpf это микрософт и visual studio это тоже микрософт.
А MSVC - это так, GNU.
для анальной корпорации
>it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms.
Нет, для всех персонажей пикрил
Лол целых 4 выполняется. Спасибо, похоже это и есть причина!
он ПЕРАТ, судя по всему. Потому-что в любом сторе 50 игр устанавливаются за пару минут
Сейчас есть игры, которые весят больше, чем весь фап контент на диске.
Они через интернет качаются миллион лет.
Ну так обновись до 8.1, в чем проблема?
Там и поддержка еще до 26 года есть, емнип
А вообще поставь лучше линукс и не морочь себе голову студией.
Нихуя себе.
Лол, у тебя просто руки кривые
И дота не работает
>А вообще поставь лучше линукс и не морочь себе голову студией.
Охуительные советы. И играй в консольку, да
Зачем? Весь гуй в одном потоке.
Не знаю, корреляция или нет, но все люди, кого я собесил за 5 лет, которые залечивали на собесе за вим или емакс - нихуя не знали про С++, и валились на простейших вопросах. Наверное, все время уходило на пердоленье текстового редактора, вместо написания кода.
Учитывая что половина этого списка - это текстовые редакторы с подсветкой синтаксиса, а реально пользоваться можно только CLion'ом...
>Emacs, Vim, VsCode
текстовые редакторы
>Clion
платный
>KDevelop, Anjuta
не работают или требуют допила
>QtCreator
нет вкладок
>Eclipse
кривая система с позиционированием окошек
>>Eclipse
>кривая система с позиционированием окошек
И потом опять 3 треда его настраивать, нахуй нахуй
>Не знаю, корреляция или нет, но все люди, кого я собесил за 5 лет, которые залечивали на собесе за вим или емакс - нихуя не знали про С++
Они сами тебе рассказывали о виме в середине обсуждения темплейтов или же это ты до них доебывался с анрелейтед вопросами про то, на чем они пишут код, и почему до сих пор не купили себе мс студию?
Просто вопрос стартовый типа - расскажите о себе и карьере:
И там было классическое:
- как узнать веган ли человек
- он вам сам скажет в первые 5 минут знакомства
Чел пришёл собеситься на галеру:
- расскажите о карьере
- я готов работать в вашем карьере за опыт
- берём вас на должность старшего программиста
У тебя жава на пике
Заебёшься всё настраивать.
Чтобы каждый файл можно было открыть в своей вкладочке и переключаться между ними. А тут тупо сделано через выпадающий список с лимитом в 10 файлов. А если у меня большой проект и мне надо больше 10 файлов?
Прикольное хобби. Это как прокачивать персонажа в рпг или ухаживать за домашним животным. Также и вим с емаксом настраивать.
Лолват. Там сбоку есть список всех открытых файлов. Те же вкладки только в столбец.
Ну зачем ты так с ним.
Не имплаинг. Как такое возможно, что спрос есть, а нормальные инструменты для этого никто не создал?
Пользовался Кутекреатором - отвратительно, по сравнению со студией. Остальная параша - даже трогать не хочу.
Шлион не трогал.
Эклипс попробуй. Если памяти больше 8гб, то нормально зайдет
только не спрашивай тут потом как хелловорлд запустить
У того школьника, похоже, возникали проблемы на ровном месте, ничего специально ломать не нужно было. Эклипс точно норм? И с cmake как там?
Эклипсом я пытался пользоваться на первой работе. В итоге код писал в виме, потому-что проект был на хуевых мейкфайлах, никакая подсветка и прочее не работало ни там, ни там. Но вим хотя-бы не тормозил, кекова.
Господи, спасибо за студию
Нет, всё же ошибка была не в этом, несколько exe одновременно запускать можно, а в том, что у
WNDCLASS wc = { };
MSG msg = { };
я убирал = { } и получал
WNDCLASS wc;
MSG msg;
что и вызывало ошибку. Однако тут https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp?view=msvc-160&viewFallbackFrom=vs-2019 нету = { }, но и ошибки этот код не вызывает. В чем проблема?
>Виноват в этом конечно же эклипс
Там мне выдали хуевый ноут с 4гб памяти, и если я включал эклипс - я даже браузер не мог фоном запустить без адового лагалища. Эх, юность
У меня студия, но таких приколов как на картинке нету.
Не люблю псевдокод и прочее, да и в таком объеме алгоритмы мне не нужны. Есть Седжвик, есть более свежий Гудрич (но меньше объемом и с структурами данных, к тому же я его уже начал читать в имплементации для Python).
Алгоритмы не зависят от языка, книжка полностью актуальна.
Алгоритмы как были, так и остались. За 30 лет основы вообще не поменялись. Седжвика я читал в версии для чистых сей много лет назад, но говорят, что все издания (C, C++, Java) по сути одинаковы. Но это лишь алгоритмы, а с более прикладными вопросами действительно всё сложнее. Всё, что касается именно написания каждодневного кода, архитектуры и дизайна довольно сильно поменялось с выходом C++11. Основные идиомы и даже во многом сама парадигма языка стала другой. Например, все поняли, что в плюсах очень не очень ООП, поэтому стали делать меньше иерархий, никакого виртуального наследования, composition over inheritance, меньше виртуальных функций, изменение поведения на основе тайп трейтов и шаблонных параметров а не подклассов, более явная работа с аллокаторами и тд. Тут я, правда, не очень помогу с книгами, но Мейерса последнюю книгу читал, и вроде как годно было.
Вообще советую упарываться C++ Weekly (его создатель тоже недавно книгу выпустил, наверное можно спиратить где-нибудь) и записями с CppCon. Последние, кстати, последние года два запустили трек Back to Basics, которые вроде как именно рассчитаны на погружение новичков в различные темы языка.
Спасибо.
>трек Back to Basics
Что это такое? Если это лекции, то мне пока удобней просто скачать с торрентов лекции Удеми, да фоном просматривать.
Допустим ты ввёл первый параметр и к этому моменту подходит 5 версий. Все 5 должны отобразится и перекрыть 6 строчек кода?
Поясняю за книжки по алгоритмам.
Не надо искать в книжке по алгоритмам примеры хорошего стиля программирования на C++. Языкнейм в них используется как альтернатива псевдокоду, не более.
>Насколько это все еще актуально применительно к смене стандартов?
C++ растет в основном за счет библиотеки. При работе над книжкой, посвященной по сути изобретению велосипедов, тебе не придется интенсивно использовать библиотеку, за исключением может быть стандартного ввода/вывода.
Что касается новшеств самого языка, то там как правило, не сложно догадаться самому, где можно обычный for заменить на range-based for, где пригодится лямбда, а где агрегатная инициализация и куда писать nullptr вместо NULL.
Ну или вообще оставить все как есть, держа в уме, что можно написать посовременнее.
Единственное, что можно считать большой утратой - это отсутствие примеров как на практике работает семантика перемещения.
Алсо, не надо думать, что книжки по алгоритмам призваны сделать из тебя йоба-хакера вроде Кармака.
Вот тебе есть сортировка O(n^2), вот тебе есть O(log n) и всё. Как ускорить алгоритм в пределах O(log n) - это уже не тема книжки.
Структуры данных если описываются, то там больше акцент на то, как сделать внятный интерфейс, чем на то, как побить мировые рекорды скорости.
А еще, действительно актуальные алгоритмы нередко запатентованы.
>Что это такое
Просто набор независимых презентаций про разные аспекты языка. Всё на ютубе лежит в открытом доступе. Но я особо не смотрел их, поэтому ничего не могу сказать про качество.
Зачем инженерам в 2021 книга, не дописанная аж с 1968 года?
Хз зачем вообще кто-то его книги читает. Все актуальные идеи по алгоритмам публикуются в научных статьях, а не книгах.
> Как ускорить алгоритм в пределах O(log n) - это уже не тема книжки.
А чего? Что там идет дальше после алгоритмов на пути оптимизации? Параллелизмы?
Хуй его знает. Свобода творчества дальше идет. Оптимизация - это алхимия.
Это всё замечательно, но как быть с вводом/выводом? До сих пор простейшая задача по написанию графического приложения сводится к каким-то танцам с бубном по подключению любительских библиотек, которые не всегда работают, и ещё сложнее найти информацию по их использованию.
Знай свои данные. Например, может данные можно заранее предобработать (например, отсортировать). Или ты знаешь, что в 99% случаев у тебя в векторе не будет больше трёх элементов, и ты делаешь small vector optimization. Или ты знаешь, что есть какие-то тяжёлые данные (например из сети тащишь), но доступ обычно к последним добавленным идёт, поэтому ты строишь кеш ради них. Такого рода. Далее идёт собственно оптимизация кода. Не делать лишнюю работу, не копировать бездумно гигабайты мусора туда-сюда (сколько там, по той известной истории, выделялось мегабайт памяти при одном нажатии кнопки в хроме?), может даже запилить свой омегакрутой SIMD и/или параллельный алгоритм. Но для этого тоже обычно неплохо понимать предметную область.
Система какая?
SFML
Спасибо за развернутый ответ.
>Знай свои данные.
Есть какая-то свежая литература по этому поводу?
Хз. Обычная эрудиция и чувство прекрасного обычно выводят на правильный путь, как бы абстрактно это не звучало. Если хочется конкретных советов, то Data-Oriented Design по идее как раз про всё это, но выкрученное до максимума (https://www.dataorienteddesign.com/dodbook/), но это конкретный и довольно нетривиальный подход к дизайну программ со своими тараканами. Хотя некоторые полезные уроки оттуда можно взять и для более стандартных архитектур, построенных на обычном RAII. Но некоторые адепты DOD ведут себя как ёбаные культисты, что меня жутко бесит.
Рано или поздно всё сущее будет прикручено в плюсы.
На С++ можно написать обработку массивов столько же эффективную как на ассемблере, а в Rust будет вставлена проверка на выходы за границы из-за чего код будет тормозной.
Также растиане называют константы переменными и кичатся тем, что у них такие защищенные переменные, каких ни у кого нет. В С++ константы тоже защищенные. Просто надо вещи своими именами называть, а не переопределять понятия в угоду пиара.
Потому что создание консольного интерфейса тривиально, и можно без огромного количества лишней информации сосредоточиться на изучении самого языка, в отличие от графического интерфейса, где у тебя не два класса для работы с вводом-выводом, а сотня.
Читать специализированные книги по созданию графического интерфейса, например, Шлее.
Чем ооп в плюсах кардинально отличается от java? Какие подводные могут быть, если я всю жизнь был в мире java?
Нет интерфейсов, есть множественное наследование, нет package-private, при наследовании надо указывать модификатор доступа, есть много наркоманских конструкторов и правил, есть деструкторы (нет, это не то же самое, что финализаторы), есть деление методов на виртуальные/невиртуальные (увеличивает производительность, но ограничивает полиморфизм, в жабе все методы можно назвать виртуальными).
Смартпоинтеры.
У Шлее плохая книга, ничего не понятно. Пусть пишут понятные книги, тогда получат кроссплатформенные программы.
Да и вообще я думаю, что Qt доживает свои последние дни. Их купила контора, которая убьёт эту библиотеку и всё закончится.
> У Шлее плохая книга, ничего не понятно. Пусть пишут понятные книги, тогда получат кроссплатформенные программы.
Мне почти всё было понятно, непонятное гуглил, но так с любой книгой.
> Да и вообще я думаю, что Qt доживает свои последние дни. Их купила контора, которая убьёт эту библиотеку и всё закончится.
Дело скорее в стагнации десктопа в целом. Да ещё и Qt отдаёт проприетарщиной и коммерцией, хотя опенсорснулся давным-давно. И это ещё лучшая гуёвая либа для крестов, тыкал wxwidgets, там пиздец какой-то.
За паттерны тоже ебало бьют.
Почему? Там хороший хелп, все понятно. Другое дело что сам гуи уже не на крестах, старые крестовые виджеты все таки не способствуют быстрому формошлепству.
> Какие подводные могут быть, если я всю жизнь был в мире java?
https://lurkmore.to/Копипаста:Программирование#.D0.9D.D0.BE.D0.B2.D1.8B.D0.B9_.D0.B6.D0.B0.D0.B2.D0.B8.D1.81.D1.82
>Да и вообще я думаю, что Qt доживает свои последние дни.
Падажжи, не убивай пока, мне еще 4 проекта сдать надо
Новых книг нет что ли? Даже на русском полно книг за 2020-2021 гг. по С++.
Липманна наверни, норм учебник.
Да, раст хороший выбор. Мы в прошлом треде его активно обсуждали и пришли к тому, что все вместе скоро туда перекатимся. Раст лучше - как ни крути. Раст это технологии и безопасность
спасибо
Да, перекатывайся в Раст. Срочно.
Раст - лучший и тебе отлично подойдет.
Наконец-то ты отсюда свалишь и будешь спрашивать как запустить хеллоуворлд у растошизов
>ничего не понятно
>думаю, что Qt доживает свои последние дни
Кек)) Проиграл с неосилятора.
Как там это было про лису и виноград?
В общем случае для всех естественных профессий нужна математика инженерного вуза до 2 курса, а так конечно сервисы пилить она не нужна
Вообще нет, но обычно у хороших программистов нет проблем с математикой.
В универе хорошо учился по компьютерным дисциплинам, а математику еле-еле сдавал на тройки.
Есть предметные области, где без математики ловить нечего.
Есть предметные области, где математика не применяется вообще.
Однако, математическая культура - это всегда лучше, чем ее отсутствие.
Например, как ты будешь писать корректный код, не имея вообще никакого навыка строгого доказательства?
Как ни странно, но уметь ясно излагать свои мысли и уметь в общение.
Если ты дата сатанист - нужна нихуевая.
Если ты гейдевелопер - первый курс линала достаточно.
Для всего остального - нахуй не сдалась.
Приятная небольшая вещь, как только выйдет штудия 22 - куски поперевозим. Хуй знает, что тут еще сказать
Если речь идет об отмазке чтобы не учить матан, то иди нахуй
Ну либо берешь ВИНАПИ, либо подключаешь всякое qt (с аддоном) или там imgui - так же как и везде
Но гуй надо на шарпе имхо писать, таки
MFC
5. Доходит, что был неправ, ставишь эклипс
6. Засираешь полтора треда нытьём о том, что хелловорлд не компилится
7. Агришься на то, что тебя называют говноедом и мочехлёбом
Я специально винду обновил, чтобы поставить 2019 студию, а ты предлагаешь удалить всё.
Ну так в легком варианте - SFML (опционально с Imgui). В сложном - qt (но там VS QT addin ставить надо)
Посему платиновый вопрос. Вот я начну с Программирования Страутструпа, а там стандарт C++14. Но сейчас уже C++17 устарел и актуален C++20. Насколько там большие различия? Как потом перепрыгнуть этот разрыв?
Стандарты итеративно улучшают язык.
Все, что ты выучишь в варианте С++14 - будет актуально и дальше. Там нет хуйни а-ля переезд с питона 2 на питон 3 - там полная обратная совместимость. Дальше спокойно прочитаешь книжку по С++17 и все будет хорошо.
Касательно С++20 - все основные крутые фичи уровня модулей\концептов\корутин - в проде примерно ни у кого, максимум у какого-нить фейсбука. А понимают те же корутины - 3.5 человек в комитете, так что не парься.
Нахуй ты нам упал, пидарок питоновский? Иди смузи хлебни лучше.
Корутины вполне понятная и иногда очень полезная штука, просто надо брать их из буста. В стандарте же их похоже попытались сделать универсальными, в результате в удобоваримом виде они будут видимо только в 23.
И полной обратной совместимости в крестах таки нет, части иногда объявляют deprecated а потом и вовсе убирают, хотя и мизерные.
Они настолько мизерные, что можно считать, что полная обратная совместимость есть.
Да и то, что задеприкейчено, еще несколько лет есть во всех конпеляторах
Что не так, мань?
C++ Builder это самое быстрое решение для создания графического приложения.
Там где на студии ты все еще читаешь мануалы, на билдере уже нажимаешь кнопочку "Run" и довольно урчишь.
>C++ Builder это самое быстрое решение для создания графического приложения.
А что там сейчас творится? Язык разметки интерфейса завезли или все ещё на виджетах?
мимо
1. :%s/auto_ptr/unique_ptr/g
2. Добавляешь std::move, где компилятор ругается
3. ??????
4. Ты потратил целых 5 минут, чтобы мигрировать на C++17.
Вот со всякими binary_function надо было посложнее возиться.
А что если штудия22 будет требовать шин11? Я недавно сидел на ещё казалось бы актуальной винде, а там максимум можно было накатить штудию13.
Не должна, нигде в анонсе про это не говорили.
с 98 на 20 мигрировать это самое сложное, а вот с 11 - уже изи.
Ага, хуёво работать в НИИ за 40к в borland c++ builder.
>а если нужно, мы можем где то поставить условный potok777 и весь код ниже будет запускаться в отдельном потоке.
А если мне нужно чтобы несколько потоков зашло в эту часть кода? А если я не знаю количество потоков в компильтайме? Как это вообще блять выглядеть должно?
thread 1,2,3,4,5,6,7:
std::cout << 2;
Вот так чтоле?
Си годна поскольку у нее стабильный и понятный аби, и ее можно обернуть в языки для людей, а не для красноглазиков любящих трижды вложенные указатели и битовые операции вместо человекочитаемых. Для всех твоих либ есть обёртки как минимум для питона, гуглить лень но более чем уверен что там же будет и шарп/жаба/плюсы.
добрый день, собираюсь поступать на прогера в вуз, сдавал егэ по информатике на питоне, т.к. все лето свободное, то могу переключиться на плюсы, есть в этом профит? в будущем хотелось бы уйти в геемдев
лол
помогите мне пожалуйста разобраться с wstring и wchar_t. У меня есть список эмоджи в виде юникода 0x1F47B, мне их надо преобразовать в тип std::string, то есть вывести каждый код в виде символа.
Но у меня WCHAR_MAX равен 65536, и поэтому я не могу использовать функцию WideCharToMultiByte. Как мне преобразовывать юникод вида 0x10000 и больше в символы?
Питон распиаренное говно, лучше уж какой-нибудь Go выучить чтобы если хочешь простоты написания кода. Java какая-нибудь для формашлепства и сервисов, чего-то простого, обычного. C++ уже позволяет реализовывать всё, потому что он не сжирает ресурсы по самому факту своего существования, так что вкатывайся, хотя вас бы и так плюсам учили в вузе
Юникод в С++ это пиздец
Не компилируется эта шляпа.
Сборка начата…
1>------ Сборка начата: проект: Codeforces, Конфигурация: Debug x64 ------
1>Codeforces.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include\algorithm(6220,1): error C2664: "bool (otr &,otr &)": невозможно преобразовать аргумент 1 из "const _Ty" в "otr &"
1> with
1> [
1> _Ty=int
1> ]
1>C:\Users\HP\source\repos\Codeforces\Codeforces\Codeforces.cpp(49): message : выполняется компиляция ссылки на экземпляр шаблон функции "_FwdIt std::upper_bound<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>,int,bool(__cdecl )(otr &,otr &)>(_FwdIt,_FwdIt,const int &,_Pr)"
1> with
1> [
1> _FwdIt=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<otr>>>,
1> _Ty=otr,
1> _Pr=bool (__cdecl )(otr &,otr &)
1> ]
1>Сборка проекта "Codeforces.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Я не понимаю что оно от меня хочет. Вроде все перепроверил, но не нашел ошибки
СУка я конч тупой. Не надо отвечать
На данный момент весь проект завязан на гугл таблицах, но тк данных очень много они плохо справляются и у некоторых игроков либо лагает таблица, либо долго происходит отклик таблицы. Я решился перенести хотя бы один этап на С++ для быстроты работы и для гибкости. Если углубиться в этот этап, то получается что игроки будут видеть только площадь 6х6 квадратов. Под каждым квадратом идет углубление вниз, получается эдакий куб, где верхняя грань видна игрокам, а все остальное это данные о залежах. Где залежи принимают хаотичные положение в зависимости от региона или участка. Если такое возможно реализовать, то будет идеально. Чаю тебе анон за ответ :)
Тренируй и изучай С++ в консольке (а лучше в браузерных онлайн компиляторах). Не делай всё в одном проекте, в игровой проект пиши когда протестишь новые знания в другом проекте. Иначе будешь постоянно переписывать
Не гонись за уебанским красивым кодом, паттернами и т.д. Все равно твой код будет говном (и ты сам будешь считать его говном - в итоге можешь заболеть мнимым перфекционизмом и будешь постоянно переписывать код), только время зря потратишь.
Я например видел людей которые всю игру в одном main запиливали и в итоге их игра была законченной и даже продавалась в стиме, а другие ебались с архитектурой классов и в итоге нихуя не сделали
Знаешь почему на си проще писать проекты и откуда пошла мода на всякие ортодокс с++?
Потому что на си люди пишут код, а на с++ начинают дрочить всякое говно так как "умные" дядьки сказали что если у тебя нет какой-нибудь инкапсуляции, то ты лох и должен работать кассиром в пятерочке, а не кодить - хуйня это все - пиши код как пишется. Хочешь писать все в пабликах - пиши, хочешь писать все в одной функции - пиши.
Хороший код вырабатывается опытом, когда ты сам поймешь для чего и почему - а не "умные дядьки сказали"
Не попади в ловушку написания движков - бери какой-нибудь SDL (например https://lazyfoo.net/tutorials/SDL/) и пиши. Не пытайся сделать быстро и эффективно. Все равно не сможешь, будешь опять дрочить код.
Вообще самая большая проблема С++ - много ловушек попав в которые ты будешь делать не продукт, а дрочить код до бесконечности.
Спасибо за ответ, Анон. У меня ещё такой вопрос, можно ли сделать, чтобы результаты тех или иных действий отправлялись в гугл таблицу например, если да, то как быстро будет происходит передача результатов и от чего будет зависеть?
за чем
Это детали уже. В интернете полно инфы
У меня есть сишная стороняя либа, в ней есть структура Foo которая создается функцией CreateFoo
Мне надо вернуть из моего метода шаредпоинтер на эту Foo
>сишная структура
т.е. мув-конструктор есть и он дефолтный. Сделай просто
return std::make_shared<Foo>(std::move(CreateFoo()));
Вечер в хату, уважаемые.
Смотрел на код представленный тут:
https://github.com/OneLoneCoder/olcPixelGameEngine/blob/master/olcPixelGameEngine.h
Прикол этого движка в том, что можно выставлять значения толщины и высоты пикселей, что используется при ретро гейминге.
В частности, в этой строчке:
Construct(int32_t screen_w, int32_t screen_h, int32_t pixel_w, int32_t pixel_h, bool full_screen = false, bool vsync = false, bool cohesion = false);
Как я не пытался, не смог найти связь между этими значениями и вызываемой WinAPI (или OpenGL?) функцией для "зернистости" физических пикселей.
Гугление pixel scaling, pixel resolution, pixel ratio, custom pixel size ничего не дало. Использование brush и pen не помогает, так как в вышеприведенном файле во-первых они не используются, а во-вторых не позволяют установить неквадратные пиксели.
Помоги пожалуйста найти цепочку между pixel_w, pixel_h и конкретной WinAPI или GL функцией.
Спасибо.
Просто вместо одного пикселя рисуешь залитый прямоугольник нужного размера, весь охуенный секрет
>pixel_w
Суётся в vPixelSize, vPixelSize используется в olc_UpdateViewport для вычисления vViewSize, vViewSize используется в вызове UpdateViewport, UpdateViewport дёргает glViewport
Почему ты называешь его позорищем?
Ты хуесосина ебаная претенциозная, хуй соси я маму ебал твою.
чтоб наверняка
Ну, это первое что приходит в голову, как-то колхозно.
И каким образом ты это увидел из кода?
ЛОЛ, то есть он не использует WinAPI а сразу в GL кидает? Я был уверен что нативно компилирует.
>как-то колхозно
Зато точно работает и без хуйни
> И каким образом ты это увидел из кода?
Я не читал лал
Koenig Accelerated C++ (rus)
Lospinoso C++ Crash Course (rus)
Lippman Essential C++ (rus)
Alex Allain Jumping into C++ (rus)
Ivor Horton Beginning C++ 20
Marc Gregoire Professional C++
Vardan Grigoryan Expert C++
Lippman Moo C++ Primer plus (rus) не для глупых
Как Иде используй vs codium/sublime/codeblocks/Qt Creator
Не рекомендую эклипс.
удали нахой eclipse и поставь eclipse cdt
>>057241
возьми себе поставь code::blocks, в него импортируй проект из студии (идешка понимает vcxproj файл) ну и дальше уже нормально сможешь разрабатывать. ( там надо флаги компиляции студии заменить на аналогичные gcc/clang или чем будешь собирать).
Дальше делаешь репозиторий и делаешь оттуда пулл на свой линукс ( ну или подыми там дженкинс какой-то чтоб он делал пулл и сборку проекта твоего вместе с обновлением софта).
Еще коллеги делали перенос на FreeBSD проекта под винду на эклипсе. Но ты в это не поверишЬ, потому что выше есть эклипсошизик, который не может настроить эклипс под линукс для разработки на С++.
>>057268
верно подметил.
>>058837
смотря на чем ты пишешь. в целом хорошая практика юзать boost/ACE. они кроссплатформенно обеспечивают многопоточность, мьютексы и все такое.
Если проект не сильно древний, читай энтони уильямса, стандарт уже имеет многопоточность с С++11 и есть много хороших практик.
>>059832
девка. он же Dev-C++, юзал его в университете. он хорош.
>>060137
>>064250
че ты этого лафоре читаешь, паря? вот же чел написал книги для изучения. >>060140
>>085362
читал эту книгу дл половины. честно говоря, не считаю страуструпа хорошим преподавателем. Со старта идут васянские хидеры и непонятно какое обьяснение кода примеров.
Строуструп хороший программист, но как преподаватель он не айс.
>>063142
на сипипи референс советуют вывод прогрммы перенаправлять в файл и дальше из него читать
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
std::system("ls -l >test.txt");
std::cout << std::ifstream("test.txt").rdbuf();
}
>>063719
>>063732
VS Codium. А вообще там под капотом джаваскрипт. это еще хуже эклипса на джаве или силайона. лучше пользуйтесь тем, что написано на плюсах.
а вообще найдите книгу Swaroop A byte of VIM (Просто о VIM на русском ) и изучите вим. он тоже хорошо работает.
>>065723
https://www.dummies.com/programming/c/how-to-use-the-codeblocks-debugger-with-c-programming/
cСкорее всего тебе надо пересобрать дебажную версию твоего кода.
>>066055
на-ху-я?
Купите на барахолке любой старый ноут (2000-3000 руб)
накатываете туда линукс и смотрите курс на степике по операционным системам или по плюсам. все.
старый ноут - там 386 или 486 проц будет - можно вполне кодингу учиться - есть ассемблер компиляторы и все такое.
>>066466
эриксона читай искусство экспойта.
>>066556
это уже история, сынок.
удали нахой eclipse и поставь eclipse cdt
>>057241
возьми себе поставь code::blocks, в него импортируй проект из студии (идешка понимает vcxproj файл) ну и дальше уже нормально сможешь разрабатывать. ( там надо флаги компиляции студии заменить на аналогичные gcc/clang или чем будешь собирать).
Дальше делаешь репозиторий и делаешь оттуда пулл на свой линукс ( ну или подыми там дженкинс какой-то чтоб он делал пулл и сборку проекта твоего вместе с обновлением софта).
Еще коллеги делали перенос на FreeBSD проекта под винду на эклипсе. Но ты в это не поверишЬ, потому что выше есть эклипсошизик, который не может настроить эклипс под линукс для разработки на С++.
>>057268
верно подметил.
>>058837
смотря на чем ты пишешь. в целом хорошая практика юзать boost/ACE. они кроссплатформенно обеспечивают многопоточность, мьютексы и все такое.
Если проект не сильно древний, читай энтони уильямса, стандарт уже имеет многопоточность с С++11 и есть много хороших практик.
>>059832
девка. он же Dev-C++, юзал его в университете. он хорош.
>>060137
>>064250
че ты этого лафоре читаешь, паря? вот же чел написал книги для изучения. >>060140
>>085362
читал эту книгу дл половины. честно говоря, не считаю страуструпа хорошим преподавателем. Со старта идут васянские хидеры и непонятно какое обьяснение кода примеров.
Строуструп хороший программист, но как преподаватель он не айс.
>>063142
на сипипи референс советуют вывод прогрммы перенаправлять в файл и дальше из него читать
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
std::system("ls -l >test.txt");
std::cout << std::ifstream("test.txt").rdbuf();
}
>>063719
>>063732
VS Codium. А вообще там под капотом джаваскрипт. это еще хуже эклипса на джаве или силайона. лучше пользуйтесь тем, что написано на плюсах.
а вообще найдите книгу Swaroop A byte of VIM (Просто о VIM на русском ) и изучите вим. он тоже хорошо работает.
>>065723
https://www.dummies.com/programming/c/how-to-use-the-codeblocks-debugger-with-c-programming/
cСкорее всего тебе надо пересобрать дебажную версию твоего кода.
>>066055
на-ху-я?
Купите на барахолке любой старый ноут (2000-3000 руб)
накатываете туда линукс и смотрите курс на степике по операционным системам или по плюсам. все.
старый ноут - там 386 или 486 проц будет - можно вполне кодингу учиться - есть ассемблер компиляторы и все такое.
>>066466
эриксона читай искусство экспойта.
>>066556
это уже история, сынок.
нет, выбери что-то одно.
из такого советую если совсем нулячий читать Алекса Эллайна. в русском варианте "С++ от ламера до программера".
Если что-то уже умеешь то тогда лучше С++ для профи читай или Липпмана.
Есть еще С++ без страха, на русском и на инглише.
>>058837 (You)
>смотря на чем ты пишешь. в целом хорошая практика юзать >boost/ACE. они кроссплатформенно обеспечивают >многопоточность, мьютексы и все такое.
>Если проект не сильно древний, читай энтони уильямса, стандарт >уже имеет многопоточность с С++11 и есть много хороших практик.
Лол на самом деле всё оказалось проще и так как я описывал, только синтаксис не по типу public и private в классах, а используются лямбды.
народ хотел помощи попросить. в кратце мне 29 решил вкатиться через плюсы
записался на курсы, понимаю основу, а задачи решать не могу. например вложенные циклы проходили и нужно было нарисовать треугольник из звезд. я вообще въехать не могу в логику.
есть тут анон который помочь может. я сам доктор, мб в замен полечить смогу бесплатно. нужен ментор в общем...
оставьте телегу свою плиз
>я сам доктор, мб в замен полечить смогу бесплатно
проиграл.
Советую просто делать, просто уделять время и просто идти по этому пути не смотря ни на что. Дорогу осилит идущий. Для начала залетай на кодварс, если и это тяжело делай пока свои поделки в консоле
А кстати про консоль наврал. Как хоть немного вкатишься в ООП изучай sfml. Вещь очень простая, куча материала для обучения, эффектная и полезная
Есть тут эксперты по культе Qt/QML?
В чём прикол использовать Q_GADGET, если я могу с таким же успехом юзать Q_OBJECT?
Да ты заебал, шиз. За какие "ограничения" в расте ты платишь ?
Borrow checker - это компайл-тайм. В рантайме ты нихуя ни за что не платишь.
Например int x; это синтаксис объявления, эта запись не имеет смысла в контексте синтаксиса использования x = 5;, где * теперь разыменовывает.
Например int x; это синтаксис объявления, эта запись не имеет смысла в контексте синтаксиса использования x = 5;, где * теперь разыменовывает.
там вроде в платной версии юнит тесты нативные. А в комьюнити лучше прицепить тесты от гугл тест или буст тест.
Советую посмотреть курс по ТДД, там челик показывает как в студии/экслипсе и на маке прицпепить Гугл тесты.
magnet:?xt=urn:btih:07F44E4A0EAF1D031ACBCC358D14DB8ED922D1BB&tr=http%3A%2F%2Fbt.t-ru.org%2Fann%3Fmagnet&dn=%5BLinkedIn%20Learning%20%2F%20Lynda.com%20%2F%20Richard%20Wells%5D%20Test-Driven%20Development%20in%20C%2B%2B%20%5B2018%2C%20ENG%5D
clang же подсказывает:
% c++ test.cpp
test.cpp:5:9: warning: returning reference to local temporary object
[-Wreturn-stack-address]
return 5;
^
1 warning generated.
-----
Запускаем.
%./a.out
5
----
Компилятор clang делает бинарь с сего кода, однако другой компилятор может послать тебя на хер с такими приколами.
-----
В целом то, что ты делаешь это Undefined Behaviour.
Ты пытаешься привязать временный объект функции к ссылке в качестве возвращаемого значения. Но временный объект немедленно уничтожается после выхода из функции, тогда сия функция возвращает dangling pointer, то бишь ссылку, которая не указывает никуда. Использование этой ссылки повлечет неопределенное поведение.
Стандарт
n4659 - § 15.2:
вся правда на cppreference
То есть int ⚹ неявная_переменная = &x.
Но с константными ссылками такое не прокатило
У меня энтерпрайз.
Бамп. Помогите.
Как изменить код консольного приложения по умолчанию? мне нужно подключение определенных библеотек с самого начала работы, а всегда меня встречает бесполезный hello world
Венда не умеет в юникод
>Реально ли сделать кросс-компиляцию крестов? Собирать бинарники для винды на линухе
В таком варианте - нет. Но ты же всегда можешь собирать их ремоутно на винде
https://pastebin.com/uTYz59Jx
Такая проблема
Как посчитать количество слов в строке ? Под словом я подразумеваю последовательность символов ?
>>Реально ли сделать кросс-компиляцию крестов? Собирать бинарники для винды на линухе
>В таком варианте - нет.
Много смех.
Юзать С-шный split или написать свой, указываешь разделитель, получаешь массива строк и по его размеру понимаешь количество слов
1) vector (size_type count, const T& value =T(), ...)
2) tempalte <class InputIt>
vector (InputIt first, InputIt last, ...)
И при вызове ft::vector <int> d(10,2) попадает в 2-й. Почему и как фиксить?
_setmode(_fileno(stdout), _O_U16TEXT);
_setmode(_fileno(stdin), _O_U16TEXT);
_setmode(_fileno(stderr), _O_U16TEXT);
_wsetlocale(LC_ALL, NULL);
если и правда нужен юникод используй w-типы и функции
Ввод/вывод нужен только в каких-нибудь играх, либо в десктопных Qt приложениях. С последними все и так ясно, а игры либо пишутся на своих движках, где практически с нуля строятся велосипеды на DirectX/OpenGL/Vulkan, либо берется готовый движок по типу юнити/unreal engine, где все и так реализовано.
Ну ты можешь писать на чистом апи из 90ых. Поверь, любительские библиотеки это добро.
поищи в сети книгу Дмитрия Нестерука по паттернам в С++.
Основная проблема плюсов вовсе не в отсутствии работы, отсутствии сборщика мусора, токсичном комьюнити или устаревших лабах в вузах, как может показаться на первый взгляд.
А в том, что под плюсы нет вменяемых IDE и компиляторов.
Проприетарная праша С++builder, еще более ужасный Qt отбивают всякое желание учить язык.
Так и есть, только не использования, а присваивание(значения).
Например, в .h файлах надо только объявлять (int i;), а в .сpp файлах - присваивать (int i = 0;).
> вменяемых IDE
Вижуал студия, Шлион
> компиляторов
Что Шланг и ГЦЦ, что студийный - отлично работают?
Из вариантов почитать выбрал: Страуструп - Программирование. Принципы и практика использования C++, Лафоре - ООП, либо Книги А. В. Столярова - Програмирование, введение в профессию.
Я склоняюсь к Страуструпу, так сказать известная книга, классика + подтяну базу без хуйни. Что думаете?
сап крестотред, ньюфаг тут
программа должна выводить числа в промежутке, заданном пользователем, она работает, но в конце выводит не изначальные значения переменных valmin и valmax, а конечные, что сильно искажает смысл
как сделать так, чтобы она в конце выводила значения из cin-а?
не обливайте говном, я новичок:(
#include <iostream>
#include <stdio.h>
int main () {
using namespace std;
int sum = 0, valmin = 0, valmax = 0;
cin >> valmin >> valmax;
for (valmin; valmin <= valmax; ++valmin)
sum = sum + valmin;
cout << "the sum of " << valmin << " to " << valmax << " is " << sum << endl;
return 0;
}
Использовать в цикле временные переменные, которые получают значения из введённых
Тебе нахуй не нужен 20ый год. Он даже еще ни одним компилятором до конца не поддерживается. Бери любую книгу из шапки и по ней задрачивай
Компилятор тот же, все так же но при компиляции на рабочем компе у меня файл 57кб а на домашнем 1025кб, как такое может быть???
ну не знаю,ios::bin добавь что ли
при чем тут Debug/relase
я пишу в стандартном блокноте
собираю через консоль в батнике
все максимально упрощено
как так получается?
что ты имеешь в виду под прототипом?
ну если ты своему одному и тому же компилятору одной и той же версии одни и те же команды суешь и скармливаешь один и тот же код,то это баг.Даже не знаю что тебе сказать
Все один в один
Все один в один
согласен, кек, но такие обстоятельства
В js пишу в vscode, благо настраивать ничего не нужно как с плюсами, где там копилятор прописывать я хз, а гуглить лень поэтому в блокноте.
лучше clion ,тк он и под линуксами есть.Я вот по началу сидел на винде и пользовался студией.Когда перешел на линукс пришлось переучиваться на clion.В итоге пришел к тому что напердоленый вим это лучший вариант.Короче можешь перескакнуть все эти стадии и сразу ставить линупс+вим.По началу будет болеть,но потом будет приятно
наверное потому что оператор [] стринга возвращает сhar
/cont char или типо того,то есть ты там сравнил (char == char).Скобки нужно поставить так : if( (*strA) == strB[j]).Я надеюсь ты понимаешь что передавать стринги по указателю это наркоманство?
Дружище,я сам ненавижу английский,но реальность такова что на русском хер что нормальное найдешь,а если и найдешь,оно будет давным-давно протухшим старьем
короче нахуй ваш двач,я сваливаю
>>хер что нормальное
а что искать то все уже давно придумано и описано на 100 раз
я про интерфейс любой программы, зачем мне жрать гавно если есть нормальная еда?
ну да,по константной,и так со всеми объектами тяжелее встроенных типов.Ты сосем зеленый?
отличаются только одной строчкой и наличием еще одного аргумента
void a(const std::string & s);
void a(const std::string & s, int a);
как их объеденить в одну через темплейты?
ввввон из профессии
лучше бы сам не разбирался
template <typename ...T>
void create(T ...args) {
if constexpr (std::is_same_v<std::tuple<T...>, std::tuple<std::string, int>>) {
std::cout << "case 1";
} else {
std::cout << "case 2";
}
}
Это как?) Покажи)
лично у меня диссонанс : я не могу во время написания кода понять что передавать стринг или стринг_вью.В функции внезапно может понадобиться ,например, оператор + стринга,а я уже везде передаю стринг_вью.Приходится как макака удалять _вью + еще идти в хедер и там тоже править.Поэтому я решил сначала писать все со стрингом,а потом ,где можно, переписываю на стринг_вью.Это вообще нормальная практика?Так и надо?Или я должен заранее все продумывать?
Хуево быть тобой, но сначала попрофилировать попробуй, а не экономить на спичках
Книжки в планах:
- С++17 STL Cookbook
- C++ Templates: The Complete Guide
- Introduction to algorithms
- Data structures and algorithm in C++
- C++ Concurrency in Action Sec. Edition
Темы, которые хотелось больше изучить:
- type_traits и метапрограммирование
- дефолтные алгоритмы + структуры (стек, очередь, двоичное дерево)
- сортировки и их сложность
- шаблоны проектирования
- сув, именно git
- тестирование, юнит-тесты (G test)
- базовые нейронки (tensorflow), комп. зрение
- параллелизм + многопоточность
- сетевое (сокеты, протоколы)
- липукс
- solid, SFINAE, RAII, методологии разработки
- мув семантика и перфект форвардинг
- boost, cmake
На чтобы вы посоветовали обратить внимание в первую очередь, а что отложить в длинный ящик?
ты код то пишешь, или просто ИЗУЧАЕШЬ?
По темам в первую очередь:
RAII. Без этого в плюсах нельзя.
Мув семантика. Без этого в плюсах тоже нельзя. А вот perfect forwarding можно отложить в длинный ящик
CMake на уровне "проект создать, буст подключить"
Дальше плюсы закончились, идет более общее:
линукс (под ним либы проще подключать, потому что есть пакетный менеджер)
Алгоритмы (всегда пригодится и мозги разомнет)
git (везде нужен, возьми книгу Pro Git, есть бесплатно и даже на русском)
Тестирование, только вместо gtest возьми github.com/onqtam/doctest
Многопоточность на уровне "без мьютексов мне пиздец", все остальное начиная с атомиков - отдельная научная ветка, а не плюсы
Сокеты - возьми синхронные из Boost::Asio для начала, чтобы с сетью разобраться. Если хочешь выпендриваться - то можешь и чистые socket().
Отдельные группы:
А: шаблоны проектирование, SOLID. Это про проектирование, совсем не от языка зависит. Плюсы разве что немного привкуса дадут.
Б: методологии разработки. Это менеджмент и управление проектами, а не программирование, тем более на C++.
Абсолютно отдельные области, по каждой из которых можно заводить отдельные доски:
Нейронки и машинное обучение в целом
Классическое компьютерное зрение
В длинный ящик:
метапрог, sfinae - тема специфичная, нужна разработчикам библиотек, но при обычном программировании почти не нужна
* boost целиком - там охулиард библиотек
По темам в первую очередь:
RAII. Без этого в плюсах нельзя.
Мув семантика. Без этого в плюсах тоже нельзя. А вот perfect forwarding можно отложить в длинный ящик
CMake на уровне "проект создать, буст подключить"
Дальше плюсы закончились, идет более общее:
линукс (под ним либы проще подключать, потому что есть пакетный менеджер)
Алгоритмы (всегда пригодится и мозги разомнет)
git (везде нужен, возьми книгу Pro Git, есть бесплатно и даже на русском)
Тестирование, только вместо gtest возьми github.com/onqtam/doctest
Многопоточность на уровне "без мьютексов мне пиздец", все остальное начиная с атомиков - отдельная научная ветка, а не плюсы
Сокеты - возьми синхронные из Boost::Asio для начала, чтобы с сетью разобраться. Если хочешь выпендриваться - то можешь и чистые socket().
Отдельные группы:
А: шаблоны проектирование, SOLID. Это про проектирование, совсем не от языка зависит. Плюсы разве что немного привкуса дадут.
Б: методологии разработки. Это менеджмент и управление проектами, а не программирование, тем более на C++.
Абсолютно отдельные области, по каждой из которых можно заводить отдельные доски:
Нейронки и машинное обучение в целом
Классическое компьютерное зрение
В длинный ящик:
метапрог, sfinae - тема специфичная, нужна разработчикам библиотек, но при обычном программировании почти не нужна
* boost целиком - там охулиард библиотек
Ты гонишь?
IDEшек валом (кодеблокс, девсипипи,эклипс сдт, вижуал студио, Зе Иде....). Не нравится - возьми напиши свою, как ты ёё видишь.
И скилл прокачаешь и сделаешь что-то полезное этому миру.
Вон Роб Пайк написал под себя Acme, чем ты хуже?
Компиляторы активно развиваются вместе с языком. ГЦЦ, ЛЛВМ, студия.
И да, не нравится учить С++ - учи что-то другое. не мучай себя.
>>097527
Лучше Джош Лоспинозо. есть на инглиш и есть на русском. Там весьма круто дан курс, плюс практика с гугл тестом, бустом и так далее.
>>100022
вот так в сишном виде:
https://www.cprogramming.com/tutorial/cfileio.html
вот так в плюсах
https://stackoverflow.com/questions/49492259/writing-binary-data-to-fstream-in-c
>>100214
Джош Лоспинозо или Айвор Хортон. Ivor Horton Beninning C++ 17/20.
А в целом тебе важно взять книгу уровня не ниже 14 стандарта.
Это например самоучитель Лажойе Липпмана или еще кого-то такого.
>>101536
https://www.geeksforgeeks.org/frequency-substring-string/
>>102121
Тебе выше ответили, там может быть дебажная версия. проверь как сборка проходит (ну типа у тебя Дебажная версия собирается или релиз, плюс уровень оптимизации).
>>103818
тебе годно ответили, тебе я тоже посоветую глянуть книгу Лоспинозо.
Что касается тем...
Смотри. Начни с Гита. он несложный в базовом виде.
там уровень clone/ pull/commit/push.
Это всегда надо, чтоб ты если что-то напорол, мог откатиться.
Дальше..Юнит тесты ты можешь на рутрекере найти курс по ТДД на плюсах от lynda. С гугл тестом и гугл моком ( опять же лоспинозо рассказывает в книге как сим добром пользоваться, а курс уже типа hands on)
По шаблонам можно почитать книгу Нестерука(патамушо современно) или https://refactoring.guru/ru ( в доках вк есть его книга, найдешь).
Дальше читай алгоритмы и структуры данных. есть гудрич, есть седжвик и есть еще талмуд Drozdek
Многопоточность это C++ Concurrency in Action Sec. Edition, которого ты уже указал.
Ты гонишь?
IDEшек валом (кодеблокс, девсипипи,эклипс сдт, вижуал студио, Зе Иде....). Не нравится - возьми напиши свою, как ты ёё видишь.
И скилл прокачаешь и сделаешь что-то полезное этому миру.
Вон Роб Пайк написал под себя Acme, чем ты хуже?
Компиляторы активно развиваются вместе с языком. ГЦЦ, ЛЛВМ, студия.
И да, не нравится учить С++ - учи что-то другое. не мучай себя.
>>097527
Лучше Джош Лоспинозо. есть на инглиш и есть на русском. Там весьма круто дан курс, плюс практика с гугл тестом, бустом и так далее.
>>100022
вот так в сишном виде:
https://www.cprogramming.com/tutorial/cfileio.html
вот так в плюсах
https://stackoverflow.com/questions/49492259/writing-binary-data-to-fstream-in-c
>>100214
Джош Лоспинозо или Айвор Хортон. Ivor Horton Beninning C++ 17/20.
А в целом тебе важно взять книгу уровня не ниже 14 стандарта.
Это например самоучитель Лажойе Липпмана или еще кого-то такого.
>>101536
https://www.geeksforgeeks.org/frequency-substring-string/
>>102121
Тебе выше ответили, там может быть дебажная версия. проверь как сборка проходит (ну типа у тебя Дебажная версия собирается или релиз, плюс уровень оптимизации).
>>103818
тебе годно ответили, тебе я тоже посоветую глянуть книгу Лоспинозо.
Что касается тем...
Смотри. Начни с Гита. он несложный в базовом виде.
там уровень clone/ pull/commit/push.
Это всегда надо, чтоб ты если что-то напорол, мог откатиться.
Дальше..Юнит тесты ты можешь на рутрекере найти курс по ТДД на плюсах от lynda. С гугл тестом и гугл моком ( опять же лоспинозо рассказывает в книге как сим добром пользоваться, а курс уже типа hands on)
По шаблонам можно почитать книгу Нестерука(патамушо современно) или https://refactoring.guru/ru ( в доках вк есть его книга, найдешь).
Дальше читай алгоритмы и структуры данных. есть гудрич, есть седжвик и есть еще талмуд Drozdek
Многопоточность это C++ Concurrency in Action Sec. Edition, которого ты уже указал.
Подскажите, есть ли смысл во всяких курсах на степик, курсера, яндекс практикум или это просто трата денег?
Достаточно просто читать все подряд книги от липмана, майерса и тд?
Есть ожидание, что на курсах могут не только рассказать о самом языке, но и какие то реально используемые вещи покажут. Может какие то механизмы IDE, отладки, использование актуальных библиотек.
Кажется, что читая книги без практики мало что отложится в голове. А для практики нужны какие то интересные реальные задачи.
>>106092
>А для практики нужны какие то интересные реальные задачи.
На английском есть такие задачники (не знаю, насколько они практичны)
http://libgen.rs/book/index.php?md5=AE008E2D081A44F9DCA2F139206986A7
http://libgen.rs/book/index.php?md5=E693BEAEFA5A569E9770868ACA108721
Надо писать код. Просто блядь пишешь код 24х7, любые говнопроекты. напиши тетрис, напиши марио. А если что-то не ясно - читай книги\статьи. Главное пиши
А курсы, оверолл - тупое говно. Ну может в яндексовском еще есть какой-то смысл, остальное совсем мусор.
Джва года уже изучаю плюсы.
Прочитаны лимпан, часть майерса. Начал алгоритмы сэджвика, начал страуструпа ППП.
Отвлёкся на Столярова. Какая же годнота. Не просто описание языка, но и ассемблер и сеть и паралленьность хоть потрогал.
Параллельно написал консольную змейку. Дальше стало интересно посмотреть код серьёзных пацанов скачал исходники doom3, и начал оттуда таскать куски кода и заодно переводить их на stl и Smart pointers вместо сырых массивов. В итоге натыкал везде shared_ptr - стало всё тормозить и утекать память. Разобрался с crt.
Такие вот самоделки можно делать бесконечно долго. При этом кажется что опыт всё таки стоит на месте т.к в вакансиях нужна сеть, нужна параллельность.
Так как сам на данный момент недопрограммист - 1сник, есть желание попробовать написать свой интерпретатор языка.
Что это за редактор/IDE?
Есть еще https://habr.com/ru/company/piter/blog/353404/
(С++17 STL. Стандартная библиотека шаблонов), но она на русском. Мне понравилась глава в которой автор показывает как создавать разные многопоточные штуки и с std::filesystem
А вы знали, что все плюсеры геи
while(true)
{
std::cin >> item1 >> item2;
if(...)
{ ...
break;
}
std::cout << "nahui" << std::endl;
}
Это копия, сохраненная 31 июля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.