Математик-программист с красным дипломом. GUI и 3d моделирование УрЧП на C++ в EDA. Высоконагруженные демоны в контекстной рекламе на C++. Машинное зрение в кроссплатформенных мобильных приложениях на C++ OpenCV.
Ни разу не видел критику C++ за это, всегда имплицитно предлагается выучить такое поведение как данность части стандарта C++, наравне с другими частями. (видео - типичный пример) А JavaScritpt подвергается нападкам абсолютно за то же самое. Двойные стандарты такие двойные.
Хоть и философия C++ разрешает программисту писать неправильно, но всё же, следует сначала объявить переменную, а потом обращаться к ней. В идеале, сначала идет раздел объявления переменных, затем, раздел инициализации, и только затем идет выполнение операций.
При таком кодинге у вас будет предупреждение о том, что обявленный идентификатор скрывает уже существующий. И хоть ошибки не будет, но такое дублирование переменных является плохим стилем программирования. Возникает путаница. Таким образом, это не более чем просто забавный пример. Профессиональные программисты так не делают.
А насколько для C++ джуна важны знания например POSIX, сети, протоколы передачи данных? Или эти моменты постигаются в процесе работы? Понимаю, зависит от организации, но если нет коммерческого опыта, то владение языком рассматривается как основной критерий? Понимаю, что основы CS важны для c++ника
Классный ролик, спасибо вам! Один момент до меня все-таки не доходит: на уровне памяти чем копирование отличается от перемещения? Вот есть вектор объектов типа Т. Мы вызывает метод push_back() и передаем в качестве аргумента rvalue при помощи std::move(), но чтобы новый элемент вектора встал последовательно за предыдущим, его же нужно туда поместить, т.е процессор все равно проделывает работу по размещению в памяти данных. Я думал, что это и есть основное процессорное время на данную операцию. Или же проблема заключается в том, что объект сначала создается на стеке, а потом его нужно еще и скопировать в нужное место? Т.е, перемещая, мы все равно тратим процессорное время на размещения объекта в новых ячейках памяти, но избегаем создания временного объекта на стеке?
Честно, я как человек програмированием не зарабатывающий, хотя и имеющий приличное представление о языках программирования, являюсь фанатом даже не Си, а Си если убрать из него "высокоуровневые надстройки" типа енум. В своё время создал проект языка, который условно прозвал макроассемблером для несуществующего процессора. Там был один тип данных - байтовый вектор. Не было никаких не то что классов, а даже структур или массивов. Язык программирования ведь отражает определённую идеологию, вкусы его создателей. Я полагаю, что человечество стремительно несётся к концу именно из-за неконтролируемого стремления к упрощению и комфорту. Зачем нужны в смартфонах камеры на 48 мегапикселей или телеэкраны с диагональю один метр? Я с этим несогласен и не воспринимаю этого. Хотя и признаю, что если писать серьёзные большие программы для современных устройств на моём макроассемблере для несуществующего процессора - ни одному программисту не хватит ни нервов, ни жизни на это.
хотелось бы как нибудь увидеть от Вас разбор асинхронной природы C++. тема весьма сложная на первых порах. интересно как всё это работает под капотом, можно рассмотреть примеры с IO на poll, epoll, или Boost.Asio с корутинами из 20++
Лучше не думать что за хрень написана, а просто сломать колени автору этого художества. Код пишут для людей и он должен быть легко читаем, а не ребусом который нужно разгадать 😂
Тогда у Вас был компилятор с ошибкой, отловите и зашлите патч. Он должен вести себя по стандарту: timsong-cpp.github.io/cppwp/n4659/basic.scope.declarative#2
Поэтому у нас в компании по рукам бы настучали за такую запись. Код должен быть в первую очередь удобным в чтении. Каждое объявление в новой строке. А ещё бы за перекрытие переменных одинкаовыми именами в догонку бы прилетело. )))
@@DariaEmacsЯ понимаю, но зачем ставить в собеседование заранее неприемлемые паттерны? Есть же достаточно потенциальных проблем в обычных казалось бы строках кода. Просто джуны будут сыпаться на таком, а оно нигде такое не делается.
@@andry_smith благодаря этому коду достаточно просто определить уровень знания языка у кандидата. Послушать его размышления о том, как работает этот код.
Начинать надо с древних книжек 90 или нулевых годов, потому что с тех пор такую кодовую базу на говнокодили что ее десятилетиями боятся трогать и с осторожностью поддерживают, какие там новые стандарты 11 или 17.... Старые ANSI и ISO еще не один жаваскрипт и прочий мэйнстрим переживут...