LINUX.ORG.RU

В C++20 появятся виртуальные функции!

 


0

4

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

★★★

Последнее исправление: utf8nowhere (всего исправлений: 1)

Ответ на: комментарий от eao197

Она тебе возразит: «А зойчем у тебя смешались в кучу кони-люди, что тебе надо их складывать с помощью шоблона? Архитектурка твоя — говно!»

З.Ы.: Мимокрокодил, конечно же.

deep-purple ★★★★★
()
Ответ на: комментарий от tailgunner

от нескольких аргументов - уже не так элементарно

Можно и без генериков — присваивание адреса функции в указатель.

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

НЕ НУЖНО!!! это принципиально. именно активно не нужно. прямо надо запрещать такие практики. не надо привлекать в разработку макак. человек, который пишет софт, должен понимать что он делает. если он не понимает - пусть идёт мести дворы. а защита макак - это к CITES, а не к стандартизации С++.

Решительно присоединяюсь!

ИМХО, это основной источник говнокода, когда начинает довлеть идея «сделаем из всего Basic для физиков»

oblfan
()
Ответ на: комментарий от deep-purple

от нескольких аргументов - уже не так элементарно

Можно и без генериков — присваивание адреса функции в указатель.

facepalm.mkv.tar.gz (4.7G)

Прежде чем высказывать мнение, нужно хоть что-нибудь знать о предмете.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

А в этом треде кто-нибудь код на C++ кроме eao197 пишет? Даже банальный [[noreturn]] может сильно упростить жизнь. Конечно можно писать код без structured bindings и превозмогая боль везде it.first и it.second запихивать, но зачем? Да и сам range for сильно улучшает читаемость кода.

xpahos ★★★★★
()
Ответ на: комментарий от tailgunner

В этот воид можно воткнуть любую ф-цию с любым кол-вом аргументов, в том числе и вааргс. И совсем не сложно разрулить ситуацию когда для разного типа данных будут разные типы аргументов и разное их кол-во. Собсно, это есть тот «инкапсулятор», внутри которого всё может быть разрулено реализацией.

Ты против привычки иметь единообразный интерфейс с одинаковым кол-вом аргументов (в идеале без оных)?

deep-purple ★★★★★
()
Ответ на: комментарий от xpahos

Ты о каком языке пишешь? Я когда-то учил С++ по книжке Страуструпа. Ничего подобного там не было. Если в «современном» С++ это есть, то оно явно не нужно!

anonymous
()
Ответ на: комментарий от deep-purple

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

Ты специально пришел нести бред или реально настолько некомпетентен?

Ты против привычки иметь единообразный интерфейс с одинаковым кол-вом аргументов (в идеале без оных)?

Лекарство прими.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от deep-purple

Лекарство прими

Мне оно ни к чему

Поверь мне, оно тебе очень нужно.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Нафиг этот noreturn нужен?

Внезапно, помечать функции, которые не возвращаются. Чтобы компилятор не беспокоил предупреждениями.

tailgunner ★★★★★
()
Ответ на: комментарий от deep-purple

А можно пример где оно к месту и без него никак?

Сильно упростить жизнь != без него никак. У нас он уже был, просто теперь его заменили стандартным.

xpahos ★★★★★
()
Ответ на: комментарий от anonymous

Когда стандарты пишутся ради стандартов, т.е. запускается бешеный принтер, то что-то, очевидно, идёт не так в королевстве Датском.

П С всё ещё жду цензуру в названиях переменных, «узаконенную».

anonymous
()
Ответ на: комментарий от tailgunner

Clang поддерживает noreturn.

Да, ты прав. Ну теперь стандартизировали просто.

xpahos ★★★★★
()
Ответ на: комментарий от eao197

range for.

сахар, классный и удобный, но безопасность тут 10-е дело

move semantic + =delete

это больше про быстродействие

enum class

такой себе сахарок, приятный, но отдельный namespace для enum местами даже удобнее

когда компилятор вменяемый и проверяет полноту switch-ей

вроде и раньше умели

override

50/50 безопасность/удобочитаемость, в плане безопасности полезно только когда сигнатура виртуального метода меняется, т.е. при рефракторинге, ну такое себе...

next_time ★★★★★
()

Какой-то желтый заголовок. Нужно было написать, что в стандарте появится термин виртуальная функция. В C++ виртуальные функции были и раньше.

anonymous
()
Ответ на: комментарий от Deleted

Что-то вроде. И в первую очередь за отсутствующий в CMake нормальный режим дебага.

next_time ★★★★★
()
Ответ на: комментарий от oblfan

«сделаем из всего Basic для физиков»

ну, физиков я считаю людьми умными. думаю, с программированием настоящий грамотный физик справится, если нужно. а вот «бейсик для домохозяек» - это ближе к теме. и от этих попыток опопсить программирование нет пользы ни для профессионалов, ни для тех самых старательно опекаемых домохозяек.

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

на форумах программистов я часто вижу, что люди пытаются имитировать программирование методом копипасты. они применяют магическое мышление: «сделал также - должно работать». они задают такие вопросы, из которых становится очевидно, что они вообще не соображают, что делают. и, главное, они не хотят понимать. они хотят получить готовое решение конкретного затыка и дальше будут говнокодить. причём ещё и списывают свои проблемы на всё подряд: на компилятор, на систему, на погоду. поэтому попытки тащить такую публику в программирование - это зло в чистом виде.

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

что касается экономического обоснования, макакизация программирования не решает проблему нехватки кадров. наоборот, она ухудшает среднее качество кода, и создаёт совершенно ложную видимость низкого порога вхождения. я иногда сталкивалась с кодом, который быстрее переписать с нуля, чем найти в нём все баги и косяки. на исправление говнокода тратится куда больше времени, чем на планирование и написание нормального кода сразу. поэтому макакизация ухудшает среднюю производительность: нормальный программист должен делать всё дважды: «за себя и за того парня». в общем, это не программистский, а тупой манагерский подход: наберём людей с улицы и посадим их программировать. конечно, будет код-ревью, три проверяющих на одну макаку, массированные тесты и непрерывная борьба с тараканами и т.д. удивительно, что при этом ожидается какой-то профит.

Iron_Bug ★★★★★
()
Ответ на: комментарий от deep-purple

хорошо бы, если бы ленивчик. спроси тут на ЛОРе и каждый второй использующий эти auto не сможет написать нормальную точную спецификацию типа, с которым они работают. а это как раз и есть непонимание. вроде бы мелочь: человек не хочет вникать в типы. но он и не знает, как формируются типы. он не может понять обычную работу с указателями, не говоря уже про темплейты с разными степенями вложенности. auto используется как расписка в собственной несостоятельности понять типизацию. а это базовое знание. с этого надо начинать изучение языка. а тут раз - и ввели суррогат, который скрывает эти тонкости. но понимание-то теряется.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

каждый второй использующий эти auto не сможет написать нормальную точную спецификацию типа

Напишите, пожалуйста нормальную точную спецификацию типа для примера, который вы уже однажды проигнорировали выше:

template<typename T, typename U>
auto sum(T a, U b) { return a+b; }

eao197 ★★★★★
()
Ответ на: комментарий от Iron_Bug

наберём людей с улицы и посадим их программировать.

А откуда еще набирают людей? Ловишь десяток, даешь им алгоритмические задачи, потом секцию на архитектуру и дальше на ревью подтягиваешь код.

массированные тесты

Вот это теперь мой любимый индикатор того, что человек не совсем понимает зачем нужны тесты. Когда работаешь с кодовой базой 10+ лет, то начинаешь благодарить всех тех, кто писал тесты. Есть конечно уникальные люди, которые могут рефакторить код не изменяя поведение до последних деталей, но я пока таких не встречал.

xpahos ★★★★★
()
Ответ на: комментарий от Iron_Bug

каждый второй использующий эти 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>>>>?

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

А откуда еще набирают людей?

ну, если студней - то из профильных университетов. а профессионалов - на профильных сайтах по поиску работы, например.

Когда работаешь с кодовой базой 10+ лет, то начинаешь благодарить всех тех, кто писал тесты

а когда работаешь с кодом более 20+ лет, то начинаешь понимать, что дешёвые понты нафиг не нужны. и ещё что переписывать код и вылавливать баги за говнокодером труднее, чем выкинуть его нафиг и всё написать самому.

Iron_Bug ★★★★★
()
Ответ на: комментарий от xpahos

В CLion можно нажать

а без проприетарщины? вообще, про «нажать» и мышевозенье - сразу как-то говнокодерами напахнуло. это они изучают программирование методом, где надо нажать. а если им дать консоль - внезапно выходит обосрамс и они не знают, что такое компилятор и как работать с отладчиком.

Никаких же типов не существует. Это все иллюзия и синтаксический сахар.

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

auto используется как способ писать более чистый код.

хорошо, если так.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

ну, если студней - то из профильных университетов.

Хорошие студенты к окончанию ВУЗа имеют уже несколько стажировок в Google/Facebook/Yandex и вряд ли пойдут в ООО Рога и Копыта.

профессионалов - на профильных сайтах по поиску работы, например.

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

что переписывать код и вылавливать баги за говнокодером труднее, чем выкинуть его нафиг и всё написать самому.

Тесты и переписывание кода вещи ортогональные. Но наличие тестов дает уверенность в том, что переписанный код не разломает продакшен. Да и во многих случаях это далеко не говнокод, а условные костыли, которые пришлось впиливать по тем или иным причинам. Я прямо сейчас могу ткнуть пальцем в куски своего не самого лучшего кода, но переписать все с нуля там не возможно.

xpahos ★★★★★
()
Ответ на: комментарий от Iron_Bug

а без проприетарщины?

а) обычно компании покупают IDE б) лицензия на CLion стоит $89 на год. Это где-то 3% от зарплаты C++ разработчика.

вообще, про «нажать» и мышевозенье - сразу как-то говнокодерами напахнуло. это они изучают программирование методом, где надо нажать.

Какая разница кто где пишет код? Мой знакомый из рабочей группы по C++ пишет код в VS.

если им дать консоль - внезапно выходит обосрамс и они не знают, что такое компилятор и как работать с отладчиком.

Отладчик везде один и тот же, CLion использует gdb или lldb в зависимости от платформы. Ну и знание того, как запускать g++ никаких плюсов не дает, это можно освоить за 2 минуты. Я вообще не понимаю этих понтов с консолью, т.к. встречал много людей, которые писали хороший код, но Linux видели в первый раз. Ничего, разобрались и в том числе с ядром.

кстати, это важно знать и уметь.

Это можно освоить за неделю с gdb. Ассемблер вот как раз понты, т.к. ни чем особенно не примечателен и в 99% код полученный оптимизирующим компилятором будет лучше того, что писал человек. Из всего что я помню только popcnt и корутины не очень укладываются в C/C++. Для остального в защищенном режиме ассемблер совершенно не нужен.

xpahos ★★★★★
()
Ответ на: комментарий от Iron_Bug

Ты даже не поняла, что 10+ — это возраст кодовой базы, а не опыт работы конкретного разработчика. Легаси 20-летнее она собралась выкинуть и переписать всё сама, лол.

fluorite ★★★★★
()
Ответ на: комментарий от xpahos

А кем нужно быть, чтобы не возвращать значение из функции, которая это значение возвратить должна? Обычно от такого наступает какой-нибудь сегфолт или другой косяк. И gcc правильно ругается, если ты не проверяешь, что вернула функция.

anonymous
()
Ответ на: комментарий от xpahos

Хорошие студенты к окончанию ВУЗа имеют уже несколько стажировок в Google/Facebook/Yandex

Хороших студентов гораздо больше, чем мест для стажировок в Google/Facebook/Yandex.

Yandex в одном ряду с Google и Facebook умилил :)

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от yoghurt

Сейчас тебе decltype/declcval прилетит, будет хохма :)

Да ничего не прилетит. Кроме потоков сумеречного бреда от Iron_Bug ничего ожидать не приходится. ЕМНИП, я еще ни разу не видел примеров кода в ее исполнении.

Так что лично для меня сам факт того, что Iron_Bug является программистом... Даже не так. Сам факт того, что Iron_Bug имеет хоть какое-то отношение к написанию программного кода, нуждается в подтверждении.

eao197 ★★★★★
()
Ответ на: комментарий от Iron_Bug

auto используется как расписка в собственной несостоятельности понять типизацию

Э, да ты же и не пыталась врубиться, что это и зачем. Саттер в свое время битых полчаса распинался, как это меняет семантику программы, но нет - он же домохозяйка, и «ничего кроме регистров».

Типичная деформация «ассемблерщика с 10 лет», конечно. Но ведь кто хотел (mv, привет), тот излечился.

anonymous
()
Ответ на: комментарий от anonymous

А кем нужно быть, чтобы не возвращать значение из функции, которая это значение возвратить должна?

libpcap, libmemcache, в boost эксепшены.

Обычно от такого наступает какой-нибудь сегфолт или другой косяк.

Сегфолт можно санитайзером найти.

xpahos ★★★★★
()
Ответ на: комментарий от tailgunner

Хороших студентов гораздо больше, чем мест для стажировок в Google/Facebook/Yandex.

Со стороны покажется, что я конечно же вру, т.к. не смогу публично подтвердить слова. В общем я знаю количество студентов, которые в этом году стажировались в этих трех компаниях. Учитывая сколько людей поступает в ВУЗ и сколько остается после 2-3 курса это прям очень много.

Yandex в одном ряду с Google и Facebook умилил :)

А что тебя умиляет? Довольно много людей было и осталось.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

libpcap, libmemcache, в boost эксепшены.

Быдлокодерские поделки. Кстати, если спросить «программиста», использует ли он буст, то утвердительный ответ — отличный показатель, что он — не программист, а говно!

anonymous
()
Ответ на: комментарий от xpahos

в boost эксепшены

Что значит «в boost»? Любая функция, безусловно кидающая исключение (вызывающая exit, terminate, etc), - noreturn.

anonymous
()
Ответ на: комментарий от Iron_Bug

насчёт прорыва в технологиях процов в ближайшие N лет - маловероятно. скорее, будет топтание на месте и размножение ядер.

Ну SIMD в x86(_64) мире довольно активно разивается таки. Так же постоянно оптимизируют пайплайн процов, структуру кэшей. Развитие есть. А увеличение частоты - очевидно не единственный показатель. По частоте и тех. процессу уперлись в потолок, но архитктурные улучшения никто не отменял.

Dudraug ★★★★★
()
Ответ на: комментарий от yoghurt

атомики<>

Вот! Сишка и с++98 вообще не имеют стандартных методов для реализации подобного, как и мультитрединга вообще.

Dudraug ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.