Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
malloc принимает количество байт и возвращает нулевой указатель
Майнкрафт сделан на яве, например
Я считаю, что язык С++ и вся его философия находятся в прямом конфликте с требованиями функционального программирования.
int* b[1000]
for(int i=0; i<1000; i++)
{
int* a = new int[256*1024*1024+i];
b[i] = new int;
// do something
free(a)
}Каждое увеличение и уменьшение счетчика требует блокировки! Эта блокировка обычна реализуется с помощью атомарных переменных, но есть еще и мьютексы! Не позволяйте себя обмануть: доступ к атомарным переменным обходится дорого.
Главное — момент сборки детерминирован самим программистом, а не размазан на «когда нибудь» как в Java GC.Вот в этом и есть ваша ошибка
//management thread
std::shared_ptr<int> ptr;
//worker thread
std::weak_ptr<int> wp = ptr;
std::shared_ptr<int> ptr2 = wp.lock();
Snd * snd = new Snd (10);
...
delete snd;std::unique_ptr<Snd> snd(new Snd(10));Каждое увеличение и уменьшение счетчика требует блокировки! Эта блокировка обычна реализуется с помощью атомарных переменных, но есть еще и мьютексы! Не позволяйте себя обмануть: доступ к атомарным переменным обходится дорого.Кручу, верчу, обмануть хочу. Сначала говорится про блокировки, потом про атомарность, потом про мьютексы и опять блокировки. Так это, нужны блокировки для счетчиков или нет? Тумана много напустили. И да, обмануть мы себя не позволим: при отсутствии большой конкуренции к атомарным счетчикам такая операция стоит очень дешево. И не надо лохматить бабушку!
Т.к. unique_ptr не использует атомарные операции, то также неправильный вывод о том, что будут проблемы в многопоточных средах.Как использовать unique_ptr в многопоточных средах?
Я считаю, что язык С++ и вся его философия находятся в прямом конфликте с требованиями функционального программирования.— конечно, ведь С++ не функциональный язык
устаревших парадигм программирования— устаревших парадигм не бывает
Вообще, все языки написаны на C/C++ (иначе выходит колоссальный ущерб производительности).
Пока компиляторы ваших Java и Haskell пишутся на С
Я лучше найму 10 джавакодеров, которые понятия не имеют, что, как и когда удаляется, но они за 3 месяца напишут продукт, который я начну продавать и заработаю деньги, чем я за те же деньги найму 5 мега-сишников, которые просто ппц какие умные, но писать тот же самый продукт они будут год (просто потому, что во-первых их вдвое меньше, а во-вторых разработка на джаве идет реально быстрее, чем на Си), а за это время мой продукт уже будет на хрен никому не нужен, т.к. конкурент выпустит свой аналог через 3 месяца и захватит весь рынок, в результате чего мне придется закрыться к чертям и идти собирать бутылки.

с компилятором, написанным на основе LLVMСм. mono. В наличии LLVM-бакэнд rjljutythfwbb и возможность жить без JIT.
malloc принимает количество байт и возвращает указатель на void, который вам надо кастить во что-то более удобное — придумать худшее API для управления памяти тяжело
char *string = malloc(len); /* no errors and no warnings in C */
void *ptr = string; /* no errors, no warnings in both C and C++ */
указатели — это зло.
Бьерн Страустроуп подчеркивает, насколько важна обратная совместимость для С++.
что некоторые восхваляемые на данный момент языки скоро так же будут поругиваться.
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
Bjarne Stroustrup
eval() в одиночку сводит любую возможность компиляции в машинный код на нет.вот и пользуются все попсовым С++.
Тем не менее, даже для системного программирования С++ далеко не идеален из-за своего сишного наследия.
Эдвард руки — С++