LINUX.ORG.RU

О размере стандарта C++

 , ,


1

2

Часто приходится слышать критику типа «ко-ко-ко, C++ сложный язык, стандарт распух более чем на полторы тыщи страниц, это нивазможна выучить!!!11».

Как известно, стандарт условно делится на Core («сам язык C++») и Library-части (стандартная библиотека). Это не на 100% строгое разделение, «сам язык» знает кое-что о стандартной библиотеке (std::size_t, std::ptrdiff_t, std::initializer_list и т.д.), поэтому я говорю «условно делится».

Стандарт начинается с Core-части, после идёт описание библиотеки. Вот табличка страниц, с которых начинается Library-часть («Library introduction») в разных версиях стандарта:

  • C++98 — стр. 311
  • C++03 — стр. 317
  • С++11 — стр. 424
  • C++14 — стр. 414
  • C++17 — стр. 445

итого, за почти 20 лет «сам» C++ распух чуть более чем на 100 страниц, на треть от C++98.

Всё остальное распухание с 776 до 1618 страниц приходится на стандартную библиотеку.

В чём сложность осилить 100 страниц за 20 лет? Ладно, там не только добавляли, но и меняли уже имеющееся. Страниц на 200-250 новшеств может набралось.

Или кто-то всерьёз под изучением языка понимает зубрёжку списка функций и их аргументов из его стандартной библиотеки?

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

Гуи на Java страшный что ппц.

Вам шашечки или ехать? GUI на Java делают и он работает. В кривых руках работает лучше, чем GUI на плюсах (даже если это Qt).

Про Eiffel - это шутка?

Нет. Сам EiffelStudio на EiffelVision был написан, если я правильно помню.

Как язык Eiffel гораздо более продуманный и простой в изучении, чем C++.

Lazarus вроде поверх Qt работает.

При этом знать C++ необязательно, а ведь у Xintrea с этим большие проблемы.

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

И это в отношении русского текста, написанного не самым сложным языком.

По теме что-то сказать будет?

PS. Я читал оригинал (когда он только всплыл и вызвал бурление известной субстанции) и просматривал этот перевод на Хабре. Так что о чем статья мне известно. А вот к чему она была приведена — не понятно.

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

Вам шашечки или ехать

Конечно шашечки. От гуи требуется удобство и нативность. Джава этого не умеет. Тут маководы ноют что Qt не совсем нативный (что отчасти правда), а вы жабку предлагаете.

Как язык Eiffel гораздо более продуманный и простой в изучении, чем C++.

Таких языков много. Как минимум D. И где они? Сколько человек использует Eiffel? 10?

Xintrea с этим большие проблемы

Опущусь до вашего уровня и скажу, что ему смена языка не поможет. Без обид.

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

Таких языков много. Как минимум D. И где они? Сколько человек использует Eiffel? 10?

он, кстати, транслируется в си. так что EiffelVision — кроссплатформная и кроссистемная библиотека, есть под все ОСи под все платформы. одна единая библиотека, которая ведёт себя совершенно одинаково под всеми системами.

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

в общем, нормальная интегрированная IDE. и если не упираться в UML а прочитать например про метод BON — ещё и полезная. UML не обладает reversibility потому что 5 типов ссылок в диаграмме классов, и нельзя к исходной диаграммы пройти из целевой (в обратную сторону, при реверсинге, например). а в BON всего 2 типа ссылок: является клиентом или является потомком, в итоге можно. в итоге процесс разработки тоже меняется: на базе UML диаграмм можно идти только вперёд, есть неоднозначности выбора, для чего см. принципы проектирования. на базе BON можно двигаться в любую сторону.

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

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

Тут маководы ноют что Qt не совсем нативный (что отчасти правда), а вы жабку предлагаете.

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

Наглядный пример из личного опыта: GUI таких софтин, как Lightroom и CaptureOne весьма своеобразен. И опыт его использования нужен специфический. Но когда опыт получен, то на отличие GUI этих софтин от других GUI уже не обращаешь внимания.

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

Таких языков много. Как минимум D. И где они? Сколько человек использует Eiffel? 10?

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

Сколько человек используют Eiffel не так важно, пока Eiffel развивается и стабильно выдает новые релизы.

что ему смена языка не поможет.

Возможно. Но я видел примеры, когда программисты делали работающий код на Fortran, Pascal или Java, но вообще не могли писать нормально на C и, тем более, C++.

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

Вам - да. Пользователям - нет.

Пилять, ну вы и ограниченный. Я вам два примера привел. Это софт, за который еще и деньги платят пользователи. И от «удобства» которого новички плюются очень долго (особенно в случае CaptureOne). Тем не менее и пользуются, и деньги регулярно заносят.

Хороший тот, которым пользуются.

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

Важно, ибо либ нет.

Важно ли это Xintrea...

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

Что бы понять, какому софту отдаётся предпочтение.

Достаточно вспомнить историю с VLC, который в итоге переписали с Qt на Cocoa чисто под мак.

Если есть выбор между Cocoa и Qt, всегда выберут первый, ибо он лучше.

PS: Ваши предпочтения в GUI я и так знаю. Тут уже ничего не поделаешь.

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

Что бы понять, какому софту отдаётся предпочтение.

Дяденька, вы полный дебил? Выше есть два ярких примера: Lightroom и CaptureOne, которые выбирают и покупают по вполне себе понятному набору причин. Среди которых «родной вид GUI» не фигурирует от слова совсем.

И, насколько мне известно, так дела обстоят со всем серьезным софтом, за который пользователи платят. Не суть важно, будет ли это профессиональный пакет для обработки аудио, САПР, SCADA или еще что-то о чем вы даже не слышали никогда.

Достаточно вспомнить историю с VLC

Походу, ваш кругозор ограничен Open-Source поделками.

PS: Ваши предпочтения в GUI я и так знаю. Тут уже ничего не поделаешь.

Откуда? Вангую, что вы опять обосретесь в приведении хоть каких-либо подтверждений своих слов.

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

усложнение системы всегда ведёт к ухудшению её скорости

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

anonymous ()

ну ты же не стесняешься так писать

Можете показать, где это написано в моем резюме?

Хотя бы само мое резюме показать можете?

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

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

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

он намекает, что и си не знает

и вообще с вычислительными устройствами связался зря

зато мнение имеет

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

реально каждый раз лезу в справочники чтобы понять что имел в виду автор

чувак. у меня для тебя плохие новости: ты выбрал не ту профессию

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

в книгах я не встречал вообще никаких рекомендацй

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

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

не понимаю смысла в неизменяемых значениях

если за 20 лет не поняла, то тебе понадобится ещё 200. это особенности нейронных связей в разных головах.

anonymous ()

Вообще-то, и 311, и 445 — это более чем дохрена. Это же стандарт языка программирования, а не Новый завет, и тем более не Ветхий.

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

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

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


Вот сможете назвать хотя бы три объективных причины почему в вашем случае стоит предпочитать C++ другим альтернативам?

Скорость, легковесность, кроссплатформенность, отсутствие патентных ограничений на язык и средства разработки. Qt сделал доступным C++ для таких дебилов как я: человеческие строки, куча готовых объектов, навязывание архитектуры (имею в виду интервиев). Даже не представляю, какой смысл перепрыгивать на другой язык.

Для веба я использую PHP, для вспомогательного скриптования - Питон, для десктопа и высокой нагрузки - C++/Qt. По-моему вполне вменяемый набор инструментов.

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

Скажем так, мне интересно, что такого понимают другие, чего я понять не смог.

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

Но вы-то продолжаете 20 лет долбиться в то, что вам не дано.

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

Зачем вам это все?

Чем вас не устраивают уже упоминавшиеся здесь Java (и любые производные для JVM: Gosu, Ceylon, Kotlin), Eiffel, FreePascal?

Qt сделал доступным C++ для таких дебилов как я

Это вам так кажется.

и высокой нагрузки - C++/Qt

Qt и высокая нагрузка... Высокая нагрузка, хотя вы работаете в одиночку хрен знает где... Э...

Что вы вообще понимаете под высокой нагрузкой? Можно примеров?

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

это просто логика выражений в языке C. так можно разобрать сложные выражения. хотя с опытом это просто сразу понятно, не надо ничего разбирать даже.
первое, что нашёл гугл: http://cseweb.ucsd.edu/~ricko/rt_lt.rule.html

Я имею в виду не выражения определений, а вообще выражения всего языка.

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

Проблемы C-подобных языков. Где находиться типу: справа или слева?

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

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

Iron_Bug ★★★★ ()

Re: не понимаю смысла в неизменяемых значениях

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

Iron_Bug ★★★★ ()
Ответ на: я отлично знаю С++ от anonymous

Re: я отлично знаю С++

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

Iron_Bug ★★★★ ()

итого, за почти 20 лет «сам» C++ распух чуть более чем на 100 страниц, на треть от C++98.
В чём сложность осилить 100 страниц за 20 лет?

Да где же это я жирный? Я за последние 20 лет поправился всего на 10 кг — с 250 до 260.

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

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

Зачем вам это все?

Я считаю, что это минимальный набор требований. Хотелось бы еще выполнения программ со скоростью света, но видимо это дело будущего.


Чем вас не устраивают уже упоминавшиеся здесь Java (и любые производные для JVM: Gosu, Ceylon, Kotlin), Eiffel, FreePascal?

У меня проц i7-7700, и когда я запускаю ту же Android Studio, и нажимаю на любую кнопку, которая открывает какое-нить окно, я вижу как окно появляется с задержкой. Мне это неприятно. А предлагать Eiffel для разработки - это вершина неадекватности. Где вы собрались искать программистов для этого уникального порождения разума?


Qt сделал доступным C++ для таких дебилов как я

Это вам так кажется.

А вам кажется, что не сделал? Написанная программа - гораздо лучше чем ненаписанная по причине сложности языка.


для десктопа и высокой нагрузки - C++/Qt

Qt и высокая нагрузка... Высокая нагрузка, хотя вы работаете в одиночку хрен знает где... Э...

Вы дробь видите? Для высокой нагрузки - плюсы с либами. Для десктопа - Qt.


Что вы вообще понимаете под высокой нагрузкой? Можно примеров?

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

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

Я считаю, что это минимальный набор требований.

Минимальный набор требований для разработки софта в какой области?

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

Вы судите о возможности платформы JVM на основании одного специфического примера?

А предлагать Eiffel для разработки - это вершина неадекватности.

20 лет программировать на языке, даже чтение кода на котором вызывает у вас сложности — вот вершина адекватности, да.

Где вы собрались искать программистов для этого уникального порождения разума?

А сколько вам нужно программистов-то? 1-2 или 200-300?

Я еще понял бы, если бы Eiffel вам не подходил из-за лицензии или количества доступных библиотек. Но поиск разработчиков... Как будто с поиском C++ников за пределами «нерезиновска» это простая задача.

Ну а FreePascal чем не устроил?

А вам кажется, что не сделал?

Очевидно, что не сделал. В вашем случае точно.

в результате чего мы смогли обойтись одним сервером

Высокая нагрузка и один сервер. Да... Такая высокая.

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

Синтаксис там тривиальный. вопросов не вызывает.

Да как же не вызывает? Одни только пляски со звездочкой и амперсандом, которые так никто и не решил куда прилеплять - к типу или к идентификатору. Или тот же самый const все никак не могут решить куда ставить:

char const* p1;
const char* p2;

Да что там, загадкой является почему в половине книжек по плюсам вместо class пишут struct. Я знаю в чем отличие между struct и class, но почему когда объясняют принципы работы ООП и говорят про классы, в коде пишут struct? О чем думают эти люди?

Сплошные вопросы без ответа.

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

все никак не могут решить куда ставить:
char const* p1;
const char* p2;

Куда хочешь. Это одно и тоже. Я,например, пишу

const char* p2;

Да что там, загадкой является почему в половине книжек по плюсам вместо class пишут struct. Я знаю в чем отличие между struct и class, но почему когда объясняют принципы работы ООП и говорят про классы, в коде пишут struct? О чем думают эти люди?

Тоже не понимаю, всегда в С++ использую class.

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

А вам кажется, что не сделал?

Очевидно, что не сделал. В вашем случае точно.

Ты на личности решил перейти? В игнор тебя, уродца.


в результате чего мы смогли обойтись одним сервером

Высокая нагрузка и один сервер. Да... Такая высокая.

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

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

Ты на личности решил перейти?

Так весь наш с вами разговор о том, что вы, не имея способности нормально освоить C++, пытаетесь на нем программировать. Игнорируете альтернативы. И даже не можете про эти альтернативы поговорить.

Для меня это опыт высокой нагрузки

Ну так о том и речь. Вот такая вот высокая нагрузка.

Остается узнать, а у Yandex-а, Mail.ru, Vk, Instagram и пр. — у них тогда какая? Запредельная?

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

Понятно, что одно и то же. Но зачем так усложнять?

во многих языках есть подобное...

Например, в Java массивы можно задавать:

int[] a = {1,2,3};
int b[] = {1,2,3};

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

fsb4000 ★★★ ()