LINUX.ORG.RU

Утверждён стандарт C++20

 


1

5

На opennet.ru обсуждают утверждение стандарта С++20:

https://www.opennet.ru/opennews/art.shtml?num=53670

На лоре ещё 7 месяцев назад обсудили :)

Стандарт C++20 утверждён

Но может кто ещё хочет :)

★★★★★

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

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

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

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

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

Как первый язык программирования может вообще лучше всего современный Паскаль с лазарусом. В отличие от си с плюсами относительно стройный язык, меньше возможностей выстрелить себе в ногу, есть более-менее все современные возможности. Кросплатформен, легко наваять gui под любую систему

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

Я для себя выбрал D - такой же продуктивный как Питон (но экосистема намного меньше) и такой же быстрый как плюсы. Гуя только нет, но мне он не нужен, а графики я рисую в ggplotd - мне хватает.

З.Ы. Питон тоже не везде удобен, вот буквально только что работал с питоньей и дишной реализацией фильтра Калмана. Сравните питон:

        # P = (I-KH)P(I-KH)' + KRK'
        I_KH = self._I - dot(K, H)
        P = dot(dot(I_KH, P), I_KH.T) + dot(dot(K, R), K.T)

и дишный код:

	// P = (I-KH)P(I-KH)' + KRK'
	const I_KH = I - K * H;
	P = I_KH*P*I_KH.transposed + K*R*K.transposed;
yetanother ★★
()
Ответ на: комментарий от AKonia

Все же прикол ещё в том, что на современном Фортране проще писать параллельные вычисления для многоядерных машин, чем на си. А также фортран как бы не вообще единственный язык, в котором компилятор может автоматически векторизовать перемножение матриц под sse2/avx , хотя тоже не всегда

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

Учите полиморфизму, а не указателям.

Полиморфизм работает через указатели.

покажите std::cout <<

Лучше не надо. Есть fmtlib.

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

Питон — хорошая тема, но подойдёт ли он как единственный ЯП, на котором придётся писать численные методы?..

Питон - клей. Какая разницы какую либу он дёграет внутри.

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

Если курс не IT специальности - то нафейхоа ему С++? Пусть будет python для цифрообработки, bash для автоматизации, mathlab/mathcad, maple. С++ зачем?

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

Чтобы программа отработала не за 20 секунд, а за 19?..

Питон здесь, мне кажется, вне конкуренции… Но медленный, зараза…

/0

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

но лучше всё-таки учить Си или брать готовые матпакеты

Между прочим, где-нибудь учат не просто Си или C++, а как с их помощью получить готовую программу?

Дело ведь в том, что ни Си, ни C++ почти не содержат языковых возможностей для построения программы из нескольких модулей. Фактически есть только общепринятые (даже если они вошли в стандарт) соглашения. Поэтому на практике важен не только язык, но и понимание как взаимодействуют компилятор и линковщик, какие вокруг них есть возможности, опции и все такое. Makefile например знать очень желательно.

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

Какой-то странный «психологический феномен», считать, что весь мир IT крутится вокруг С и С++.

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

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

у Питона есть numpy и numba!.. :)

На самом деле, я ни то ни другое не использую... Так что не уверен, что это «серебрянная пуля»...

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

Питон - клей. Какая разницы какую либу он дёграет внутри.

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

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

Кто-то не умеет в контекст, кажется... :)

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

фортран имеет довольно крутые фишки для параллельного программирования

Какие там средства мультипоточной синхронизации и асинхронного выполнения?

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

какие-то примитивные численные алгоритмы

Как тебе тема курсовой: «Высокопризводительные функции конкурентного сходства на основе модели Apache Hadoop и технологий компании Oracle.»?

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

Нет конечно, это просто отсев профнепригодных.

Это глупость из мира сишников. В Ada нет указателей в смысле «как в C», но какая доля из современных «профпригодных» программистов знает об том, как в Ada люди живут без тупых C’шных указателей?

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

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

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

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

Как тебе тема курсовой: «Высокопризводительные функции конкурентного сходства на основе модели Apache Hadoop и технологий компании Oracle.»?

Причем тут курсовые? Тут о другом речь идет, юноша.

Владимир

anonymous
()

Пора уже разобраться с этими распильщиками бюджета. Когда Лёха поправится, ему нужно будет обязательно этим заняться.

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

В первую очередь наверное имееется ввиду такое средство языка как Co-Arrays https://en.wikipedia.org/wiki/Coarray_Fortran - стандартизировано вроде с 2008-го года.

А вообще, OpenMP и другие либы, в том числе CUDA http://fortranwiki.org/fortran/show/Parallelization

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

Навык грамотного построения модульных программ и умение сдержанно и аккуратно проектировать, дабы не получить чрезмерного усложнения поддержки программ это по сути и есть программирование как таковое, а язык программирования это инструмент и к сожалению как по мне языки которые пытаются решить проблемы конструкторсокго характера обречены на неудачу, т.к. повышение высокоуровневости в Питоне и Си++ решило задачу быстрого старта при написании программ, но принесло ещё больше проблем чем было, тем, что повышается связанность программ, абстракции начинают придумывать, чтобы побороть абстракции, одна абстракция над десятком других и т.д. и насыщенный чрезмерной высокооуровневостью код становится просто неповоротливым со временем, тогда, как при грамотном проектировании на Си сложность растёт медленно, приблизительно оставаясь постоянной.

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

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

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

Как тебе тема курсовой: «Высокопризводительные функции конкурентного сходства на основе модели Apache Hadoop и технологий компании Oracle.»?

не моя специальность, ничего не могу сказать :)

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

для математики - так себе

NumPy там давно уже как у себя дома. И не так важно, что это тоже, в общем-то, Python-прослойка над Сишными либами.

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

Питон тоже подойдёт. Студентам надо численные методы программировать. Хочется, чтобы с одной стороны просто, а с другой — быстро. Сейчас для этих целей используется фортран, подходит хорошо, но, к сожалению, устарел, и студенты нос воротят… Да и преподы, в общем, тоже :)

Так для численных методов нужны матрицы. А в С++ их нет не де-юре не де-факто (в фортране они де-юре, в питоне де-факто в виде numpy). Сишные массивы массивов из heloo-world-ов стоят костью в горле (да и дальше hello-wold-ов они не нужны). Boost-а боятся, не дай бог его заюзать.

Как следствие, найти полноценный набор библиотек на несколько курсов с одной реализацией матриц (многомерных массивов) на С++ та ещё задачка. Но если преподаватель не решит её заранее, то говорить об использовании С++ как чилодробилке в учебном курсе бессмысленно.

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

мне тоже кажется, что делать из толстого тормозного питона реактивного песчаного удавчика — не самая лучшая идея. Там, где производительность имеет значение, стоит использовать более скоростной ЯП.

Но знание Питона открывает возможности: а) высокоуровневого программирования/прототипирования с простым синтаксисом и мощными возможностями; б) использовать туеву хучу хороших библиотек на любой случай жизни. Т.е. студент, окончивший вуз с хоть каким навыком владения питоном, будет, на мой взгляд, гораздо более конкурентно способен, чем студент без питона (ИМХО).

Однако если нужна производительность, то тут следует использовать другой ЯП. С хорош тем, что его «легко» прикрутить к Питону (на этом его достоинства заканчиваются trollface :). C++ существенно лучше, ибо: а) он высокоуровневый (если не лезть в недра и дебри), б) его не менее легко прикрутить к Питону. Итого, имея стэк знаний «Питон - С++» можно ваять навороченные проги на любой вкус.

Ну вот как это я вижу в своём идеальном манямирке.

Беспокоит только, что лично я, когда «ваяю» на С++, постоянно испытываю какой-то дискомфорт, типа «а хорошо ли я написал? Или можно ещё за-оптимизировать?» (привет «корню всех зол» — преждевременой оптимизации). Или другое: «а это хорошая практика? Меня засмеют крутые какеры?..». Ну и вымораживают всякие неоднозначности и синтаксический муар...

Sahas ★★★★☆
()
Последнее исправление: Sahas (всего исправлений: 3)
Ответ на: комментарий от AlexVR

Так для численных методов нужны матрицы. А в С++ их нет не де-юре не де-факто (в фортране они де-юре, в питоне де-факто в виде numpy). Сишные массивы массивов из heloo-world-ов стоят костью в горле (да и дальше hello-wold-ов они не нужны). Boost-а боятся, не дай бог его заюзать.

Как следствие, найти полноценный набор библиотек на несколько курсов с одной реализацией матриц (многомерных массивов) на С++ та ещё задачка. Но если преподаватель не решит её заранее, то говорить об использовании С++ как чилодробилке в учебном курсе бессмысленно.

ты прямо в самое яблочко попал :) Именно с этим и возникает «ступор» при переходе на C++. Есть идея написать свою библиотеку работы с матрицами а-ля Фортран, но пока дело не сдвинулось с этапа мечтаний :)

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

NumPy там давно уже как у себя дома

по скорости всё равно «сливает» нативным реализациям (на C, С++ и пр.). Я не спорю, что для довольно широкого класса задач этого хваит за глаза. К сожалению, мы же, типа, ещё и HPC занимаемся... :(

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

Ну вот выше кто-то писал, сейчас Julia более-менее набирает популярность. Опыта у меня с ней пока не много, но, на первый взгляд, интересно.

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

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

И как ты будешь интервьюировать человека на программиста не на С/С++?

— расскажите про указатели

— хм… дорожные?

— нет, мля, в С!

— но эта вакансия не на С-программиста

— если человек не разбирается в указателях из С и С++, то он не программист

— ясно, всего доброго

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

ты прямо в самое яблочко попал :)

Это опыт преподавания. Стоит даже студентам показать слайд c текстом «В Си и С++ нет матриц!!!»

Есть идея написать свою библиотеку работы с матрицами а-ля Фортран,

Однозначно нет, иначе история https://xkcd.ru/927/

Лучше задействовать Eigen он умеет быть обёрткой над blas-ами и MKL.

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

Оно ясно что прослойка, мои претензии к качеству интеграции, т.к. получается что при использовании обёртки питон уже не питон, да и от си обёртки наследуют функциональный стиль, как итог это промежуточное состояние уже не так удобно как чистый питон и не так производительно и очевидно, как соответствующая библиотека на Си, мне когда я вижу numpy сразу хочется бросить писать на питоне и пойти либо в матлаб, либо сразу на Си писать, а чисто питонячие аналоги судя по скорости решают задачи по ощущениям полным перебором, либо считают что для простой задачи 8 Гб оперативки иногда маловато.

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

А чем тот же eigen не угодил?

Только его упомянул. А проблема в том, что это только одна из реализаций. А библиотеки более высокого полёта или пишут матрицы самостоятельно или используют «случайную» из 100500 реализаций и всё это становиться несовместимо по типам, и приходится писать преобразования/прокси.

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

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

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

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

Я тоже считаю, что учить надо не один ЯП…

  1. Начальная школа: Scratch. Стоит смотреть в сторону https://code.org
  2. Старшие классы, первый курс (основы алгоритмов и структуры данных): Pascal.ABC. Несколько раз спрашивал школьников-олимпиадников про паскаль. Все говорили, что он очень понятный, а они уже писали на «Си/С++». Моё мнение: я лично не знаю никакого другого «УЧЕБНОГО языка програмирования», на котором можно рассмотреть столько базовых понятий программирования.
  3. Профильные задачи: Фортран/Julia ничего другого для твоих задач найти невозможно.
  4. Старшие курсы/магистратура: Python. Сегодня обсуждали как магистрант реализовал обработку сигналов в матричном виде на питоне с переносом вычислений на GPU. Моё мнение: Python не тот язык, который должен быть первым или даже вторым. Но без него, современное образование не возможно. Но он нужен не для низкоуровневого программирования, а для обработки данных уже реализованными методами.
AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Несколько раз спрашивал школьников-олимпиадников про паскаль.

Так у них паскаль скорее всего первый язычек просто, так то нафиг он нужен, во первых мертвый, во вторых не такой уж и понятный прям на фоне остальных.

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

А почему тогда препод нам говорил, что фортран практически не используют, т.к. в языке нет средств многопоточного программирования, как в java?

Lzzz
()
Ответ на: комментарий от AlexVR
  1. Лучше всё таки учить Си99, т.к. все-таки управляющие конструкции не сложнее чем Паскале, даже свободнее зачастую и к тому же можно по Си объяснить низкоуровневые средства, а то от Паскаля потом объясняй людям в чём разница между функциями и процедурами и зачем вообще было тогда в паскале их разделят, зачем переменные в начале объявлять и т.д. Я вообще не понимаю, чем Паскаль проще для обучения, особенно если всё то, чему учат на Паскале - всё это есть на Си и порой даже удобнее.
AKonia ★★
()
Ответ на: комментарий от SkyMaverick

Ну вот выше кто-то писал, сейчас Julia более-менее набирает популярность. Опыта у меня с ней пока не много, но, на первый взгляд, интересно.

У нас был первый опыт работы с ней: студенту дали задание разобраться в ней и написать простенький численный метод. Вроде, вполне успешно всё сделал :)

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

Ну как бы в начале ты утверждал что:

Так для численных методов нужны матрицы. А в С++ их нет не де-юре не де-факто

затем получается, что все-таки есть матрицы в С++, тот же eigen, но теперь:

проблема в том, что это только одна из реализаций

Как то не последовательно уж совсем

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

Итого, имея стэк знаний «Питон - С++» можно ваять навороченные проги на любой вкус

Зачем тут убогий питон? Имея С++ и профессиональную ide (например vs) можно визардами фигачить код очень быстро, даже не зная хорошо С++.

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

Однозначно нет, иначе история https://xkcd.ru/927/

Лучше задействовать Eigen он умеет быть обёрткой над blas-ами и MKL.

вроде, у него нет возможности индексировать массивы произвольным образом (киллер-фича Фортрана :)

Просто есть уже заготовки кода на Фортране, думаю попробовать сделать альтернативную реализацию на С++, но чтобы по максимуму приблизить к имеющимся заготовкам на Фортране. Делать это в виде новой свободно распространяемой библиотеки не планируется (скорее даже, чисто ради своего экспириенса).

Старшие классы, первый курс (основы алгоритмов и структуры данных): Pascal.ABC. Несколько раз спрашивал школьников-олимпиадников про паскаль. Все говорили, что он очень понятный, а они уже писали на «Си/С++». Моё мнение: я лично не знаю никакого другого «УЧЕБНОГО языка програмирования», на котором можно рассмотреть столько базовых понятий программирования.

Профильные задачи: Фортран/Julia ничего другого для твоих задач найти невозможно.

Старшие курсы/магистратура: Python. Сегодня обсуждали как магистрант реализовал обработку сигналов в матричном виде на питоне с переносом вычислений на GPU. Моё мнение: Python не тот язык, который должен быть первым или даже вторым. Но без него, современное образование не возможно. Но он нужен не для низкоуровневого программирования, а для обработки данных уже реализованными методами.

Мне кажется, Паскаля ждёт со стороны студентов такое же неприятие, как и Фортрана. Лучше уж тогда действительно Julia.

Питон в конце — как-то не очень хорошая идея (и не укладывается в учебный план — программирование у нас только на первом и втором курсах).

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

Зачем тут убогий питон?

Чтобы тормозить интерфейсы, дабы не так быстро работало, очевидно же!..

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

Sahas ★★★★☆
()

та какт пихуй аще, новость от крестьян для крестьян, вечером приходите в сельский клуб, будут танцы.

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

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

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

Я вообще не понимаю, чем Паскаль проще для обучения, особенно если всё то, чему учат на Паскале - всё это есть на Си и порой даже удобнее.

  1. Нет неявных опасных преобразований.

  2. Есть RAII(деструкторы) и виртуальные функции.

  3. Есть UTF-8 строки.

fsb4000 ★★★★★
() автор топика
Последнее исправление: fsb4000 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.