НЕ НУЖНО!!! это принципиально. именно активно не нужно. прямо надо запрещать такие практики. не надо привлекать в разработку макак. человек, который пишет софт, должен понимать что он делает. если он не понимает - пусть идёт мести дворы. а защита макак - это к CITES, а не к стандартизации С++.
Решительно присоединяюсь!
ИМХО, это основной источник говнокода, когда начинает довлеть идея «сделаем из всего Basic для физиков»
А в этом треде кто-нибудь код на C++ кроме eao197 пишет? Даже банальный [[noreturn]] может сильно упростить жизнь. Конечно можно писать код без structured bindings и превозмогая боль везде it.first и it.second запихивать, но зачем? Да и сам range for сильно улучшает читаемость кода.
В этот воид можно воткнуть любую ф-цию с любым кол-вом аргументов, в том числе и вааргс. И совсем не сложно разрулить ситуацию когда для разного типа данных будут разные типы аргументов и разное их кол-во. Собсно, это есть тот «инкапсулятор», внутри которого всё может быть разрулено реализацией.
Ты против привычки иметь единообразный интерфейс с одинаковым кол-вом аргументов (в идеале без оных)?
Ты о каком языке пишешь? Я когда-то учил С++ по книжке Страуструпа. Ничего подобного там не было. Если в «современном» С++ это есть, то оно явно не нужно!
В этот воид можно воткнуть любую ф-цию с любым кол-вом аргументов, в том числе и вааргс. И совсем не сложно разрулить ситуацию когда для разного типа данных будут разные типы аргументов и разное их кол-во.
Ты специально пришел нести бред или реально настолько некомпетентен?
Ты против привычки иметь единообразный интерфейс с одинаковым кол-вом аргументов (в идеале без оных)?
сахар, классный и удобный, но безопасность тут 10-е дело
move semantic + =delete
это больше про быстродействие
enum class
такой себе сахарок, приятный, но отдельный namespace для enum местами даже удобнее
когда компилятор вменяемый и проверяет полноту switch-ей
вроде и раньше умели
override
50/50 безопасность/удобочитаемость, в плане безопасности полезно только когда сигнатура виртуального метода меняется, т.е. при рефракторинге, ну такое себе...
ну, физиков я считаю людьми умными. думаю, с программированием настоящий грамотный физик справится, если нужно. а вот «бейсик для домохозяек» - это ближе к теме. и от этих попыток опопсить программирование нет пользы ни для профессионалов, ни для тех самых старательно опекаемых домохозяек.
программирование нельзя сделать популярным. тем более программирование на плюсах. это не та область, в которой можно с налёту что-то наговнять, без понимания смысла. и не надо его популяризировать. какое-то количество программистов всегда будет. тут не нужно количество, гораздо важнее качество.
на форумах программистов я часто вижу, что люди пытаются имитировать программирование методом копипасты. они применяют магическое мышление: «сделал также - должно работать». они задают такие вопросы, из которых становится очевидно, что они вообще не соображают, что делают. и, главное, они не хотят понимать. они хотят получить готовое решение конкретного затыка и дальше будут говнокодить. причём ещё и списывают свои проблемы на всё подряд: на компилятор, на систему, на погоду. поэтому попытки тащить такую публику в программирование - это зло в чистом виде.
программист - это профессия. надо учиться, вникать, понимать. надо практиковаться, набирать опыт. не сразу, не за год и не за два. нельзя набрать десять обезьян и приравнять этот набор к одному профессионалу. это не работает. поэтому надо повышать качество обучения, а не пытаться создать «безопасный» язык программирования.
что касается экономического обоснования, макакизация программирования не решает проблему нехватки кадров. наоборот, она ухудшает среднее качество кода, и создаёт совершенно ложную видимость низкого порога вхождения. я иногда сталкивалась с кодом, который быстрее переписать с нуля, чем найти в нём все баги и косяки. на исправление говнокода тратится куда больше времени, чем на планирование и написание нормального кода сразу. поэтому макакизация ухудшает среднюю производительность: нормальный программист должен делать всё дважды: «за себя и за того парня». в общем, это не программистский, а тупой манагерский подход: наберём людей с улицы и посадим их программировать. конечно, будет код-ревью, три проверяющих на одну макаку, массированные тесты и непрерывная борьба с тараканами и т.д. удивительно, что при этом ожидается какой-то профит.
хорошо бы, если бы ленивчик. спроси тут на ЛОРе и каждый второй использующий эти auto не сможет написать нормальную точную спецификацию типа, с которым они работают. а это как раз и есть непонимание. вроде бы мелочь: человек не хочет вникать в типы. но он и не знает, как формируются типы. он не может понять обычную работу с указателями, не говоря уже про темплейты с разными степенями вложенности. auto используется как расписка в собственной несостоятельности понять типизацию. а это базовое знание. с этого надо начинать изучение языка. а тут раз - и ввели суррогат, который скрывает эти тонкости. но понимание-то теряется.
наберём людей с улицы и посадим их программировать.
А откуда еще набирают людей? Ловишь десяток, даешь им алгоритмические задачи, потом секцию на архитектуру и дальше на ревью подтягиваешь код.
массированные тесты
Вот это теперь мой любимый индикатор того, что человек не совсем понимает зачем нужны тесты. Когда работаешь с кодовой базой 10+ лет, то начинаешь благодарить всех тех, кто писал тесты. Есть конечно уникальные люди, которые могут рефакторить код не изменяя поведение до последних деталей, но я пока таких не встречал.
каждый второй использующий эти auto не сможет написать нормальную точную спецификацию типа
А зачем что-то писать? В CLion можно нажать CMD и навести курсор и он все покажет. Это конечно не круто и мы пойдем своим путем, превозмогая боль и лижения.
человек не хочет вникать в типы. но он и не знает, как формируются типы
Типы? Формируются? Никаких же типов не существует. Это все иллюзия и синтаксический сахар. Бог дал нам %rsp с %rbp, дал нам %rsi, %rdi, etc. Нам дали lea и mov! Надо же pushq/popq, call и пошел там по стеку гулять.
auto используется как расписка в собственной несостоятельности понять типизацию.
auto используется как способ писать более чистый код. Еще может using запретить и писать везде std::unordered_map<My<Foo<Class<Key>>>, My<Bar<Class<Value>>>>?
ну, если студней - то из профильных университетов. а профессионалов - на профильных сайтах по поиску работы, например.
Когда работаешь с кодовой базой 10+ лет, то начинаешь благодарить всех тех, кто писал тесты
а когда работаешь с кодом более 20+ лет, то начинаешь понимать, что дешёвые понты нафиг не нужны. и ещё что переписывать код и вылавливать баги за говнокодером труднее, чем выкинуть его нафиг и всё написать самому.
а без проприетарщины? вообще, про «нажать» и мышевозенье - сразу как-то говнокодерами напахнуло. это они изучают программирование методом, где надо нажать. а если им дать консоль - внезапно выходит обосрамс и они не знают, что такое компилятор и как работать с отладчиком.
Никаких же типов не существует. Это все иллюзия и синтаксический сахар.
соглашусь. ассемблер я люблю и уважаю. только intelовский, без дурацких процентиков, чтобы глаза не резало. кстати, это важно знать и уметь. потому что работа с памятью напрямую - это адреса, данные и прочее. а нубы часто не понимают, как работать с указателями, что такое выравнивание и т.д. их научили только жмакать кнопки в какой-то морде.
auto используется как способ писать более чистый код.
ну, если студней - то из профильных университетов.
Хорошие студенты к окончанию ВУЗа имеют уже несколько стажировок в Google/Facebook/Yandex и вряд ли пойдут в ООО Рога и Копыта.
профессионалов - на профильных сайтах по поиску работы, например.
Это те же люди с улицы. На алгоритмических задачах заваливаются даже люди с большим послужным списком.
что переписывать код и вылавливать баги за говнокодером труднее, чем выкинуть его нафиг и всё написать самому.
Тесты и переписывание кода вещи ортогональные. Но наличие тестов дает уверенность в том, что переписанный код не разломает продакшен. Да и во многих случаях это далеко не говнокод, а условные костыли, которые пришлось впиливать по тем или иным причинам. Я прямо сейчас могу ткнуть пальцем в куски своего не самого лучшего кода, но переписать все с нуля там не возможно.
а) обычно компании покупают IDE
б) лицензия на CLion стоит $89 на год. Это где-то 3% от зарплаты C++ разработчика.
вообще, про «нажать» и мышевозенье - сразу как-то говнокодерами напахнуло. это они изучают программирование методом, где надо нажать.
Какая разница кто где пишет код? Мой знакомый из рабочей группы по C++ пишет код в VS.
если им дать консоль - внезапно выходит обосрамс и они не знают, что такое компилятор и как работать с отладчиком.
Отладчик везде один и тот же, CLion использует gdb или lldb в зависимости от платформы. Ну и знание того, как запускать g++ никаких плюсов не дает, это можно освоить за 2 минуты. Я вообще не понимаю этих понтов с консолью, т.к. встречал много людей, которые писали хороший код, но Linux видели в первый раз. Ничего, разобрались и в том числе с ядром.
кстати, это важно знать и уметь.
Это можно освоить за неделю с gdb. Ассемблер вот как раз понты, т.к. ни чем особенно не примечателен и в 99% код полученный оптимизирующим компилятором будет лучше того, что писал человек. Из всего что я помню только popcnt и корутины не очень укладываются в C/C++. Для остального в защищенном режиме ассемблер совершенно не нужен.
Ты даже не поняла, что 10+ — это возраст кодовой базы, а не опыт работы конкретного разработчика. Легаси 20-летнее она собралась выкинуть и переписать всё сама, лол.
А кем нужно быть, чтобы не возвращать значение из функции, которая это значение возвратить должна? Обычно от такого наступает какой-нибудь сегфолт или другой косяк. И gcc правильно ругается, если ты не проверяешь, что вернула функция.
Сейчас тебе decltype/declcval прилетит, будет хохма :)
Да ничего не прилетит. Кроме потоков сумеречного бреда от Iron_Bug ничего ожидать не приходится. ЕМНИП, я еще ни разу не видел примеров кода в ее исполнении.
Так что лично для меня сам факт того, что Iron_Bug является программистом... Даже не так. Сам факт того, что Iron_Bug имеет хоть какое-то отношение к написанию программного кода, нуждается в подтверждении.
auto используется как расписка в собственной несостоятельности понять типизацию
Э, да ты же и не пыталась врубиться, что это и зачем. Саттер в свое время битых полчаса распинался, как это меняет семантику программы, но нет - он же домохозяйка, и «ничего кроме регистров».
Типичная деформация «ассемблерщика с 10 лет», конечно. Но ведь кто хотел (mv, привет), тот излечился.
Хороших студентов гораздо больше, чем мест для стажировок в Google/Facebook/Yandex.
Со стороны покажется, что я конечно же вру, т.к. не смогу публично подтвердить слова. В общем я знаю количество студентов, которые в этом году стажировались в этих трех компаниях. Учитывая сколько людей поступает в ВУЗ и сколько остается после 2-3 курса это прям очень много.
Yandex в одном ряду с Google и Facebook умилил :)
А что тебя умиляет? Довольно много людей было и осталось.
Быдлокодерские поделки. Кстати, если спросить «программиста», использует ли он буст, то утвердительный ответ — отличный показатель, что он — не программист, а говно!
насчёт прорыва в технологиях процов в ближайшие N лет - маловероятно. скорее, будет топтание на месте и размножение ядер.
Ну SIMD в x86(_64) мире довольно активно разивается таки. Так же постоянно оптимизируют пайплайн процов, структуру кэшей. Развитие есть. А увеличение частоты - очевидно не единственный показатель. По частоте и тех. процессу уперлись в потолок, но архитктурные улучшения никто не отменял.