Я читал учебник по C ++, и появилась следующая строка.Никаких других подробностей для объяснения не предоставлено
Что это означает, когда C ++ называется федерацией языка, а также что такое многопарадигмальное программирование?
Да, это из Effective C ++.Автор просто говорит, что грамматика C ++ происходит из ряда языков.Прочитайте об этом здесь .
Что касается многопарадигмального программирования, то это способность языка поддерживать более одного стиля программирования.Это позволяет гибкость для различных задач.Поиск в Google должен ответить за вас.
«Федерация языков» означает широкий спектр разнообразных возможностей и способов применения языка C ++.
Мультипарадигматические языки объединяют парадигмы.Примерами являются F-Sharp, OCaml и Swift.Так что это группа языковых стилей.
Это объяснение из Effective C ++, третье издание 55 Специальные способы улучшения ваших программ и конструкций. Скотт Мейерс , Пункт 1: Рассматривайте C ++ как федерацию языков .
Сегодняшний C ++ - это мультипарадигмальный язык программирования, поддерживающий комбинацию процедурных, объектно-ориентированных, функциональных, общих и метапрограммирующих функций.Эта мощь и гибкость делают C ++ инструментом, не имеющим равных, но также могут вызвать некоторую путаницу.Все правила «правильного использования», похоже, имеют исключения.Как нам понять такой язык? Самый простой способ - рассматривать C ++ не как отдельный язык, а как объединение родственных языков.Внутри определенного подъязыка правила, как правило, просты, понятны и легко запоминаемы.Однако при переходе с одного подъязыка на другой правила могут измениться.Чтобы понять C ++, вы должны распознать его основные подъязыки.К счастью, их всего четыре: C .В глубине души C ++ по-прежнему основывается на C. Блоки, операторы, препроцессор, встроенные типы данных, массивы, указатели и т. Д. Все исходят из C. Во многих случаях C ++ предлагает подходы к решению проблем, которые превосходят их.Аналоги C (например, см. Элементы 2 (альтернативы препроцессору) и 13 (использование объектов для управления ресурсами)), но когда вы работаете с частью C C ++, правила эффективного программирования отражают более ограниченную область действия C: нетшаблоны, без исключений, без перегрузки и т. д. Объектно-ориентированный C ++ .Эта часть C ++ - это то, о чем C с классами занимался: классы (включая конструкторы и деструкторы), инкапсуляция, наследование, полиморфизм, виртуальные функции (динамическое связывание) и т. Д. Это та часть C ++, к которой относятся классические правила для объектов.ориентированный дизайн наиболее применим. Шаблон C ++ .Это общая часть программирования C ++, с которой у большинства программистов меньше всего опыта.Соображения о шаблонах распространяются на C ++, и правила хорошего программирования нередко включают в себя специальные предложения только для шаблонов (например, см. Пункт 46, посвященный упрощению преобразования типов в вызовах функций шаблона).На самом деле шаблоны настолько мощны, что порождают совершенно новую парадигму программирования - метапрограммирование шаблонов (TMP).В пункте 48 представлен обзор TMP, но если вы не любитель шаблонов, вам не о чем беспокоиться.Правила для TMP редко взаимодействуют с основным программированием на C ++. STL .Конечно, STL - это библиотека шаблонов, но это очень особенная библиотека шаблонов.Его соглашения, касающиеся контейнеров, итераторов, алгоритмов и функциональных объектов, прекрасно сочетаются, но шаблоны и библиотеки также могут быть построены на других идеях.У STL есть особые способы ведения дел, и когда вы работаете с STL, вы должны обязательно соблюдать его соглашения.
Сегодняшний C ++ - это мультипарадигмальный язык программирования, поддерживающий комбинацию процедурных, объектно-ориентированных, функциональных, общих и метапрограммирующих функций.Эта мощь и гибкость делают C ++ инструментом, не имеющим равных, но также могут вызвать некоторую путаницу.Все правила «правильного использования», похоже, имеют исключения.Как нам понять такой язык?
Самый простой способ - рассматривать C ++ не как отдельный язык, а как объединение родственных языков.Внутри определенного подъязыка правила, как правило, просты, понятны и легко запоминаемы.Однако при переходе с одного подъязыка на другой правила могут измениться.Чтобы понять C ++, вы должны распознать его основные подъязыки.К счастью, их всего четыре:
C .В глубине души C ++ по-прежнему основывается на C. Блоки, операторы, препроцессор, встроенные типы данных, массивы, указатели и т. Д. Все исходят из C. Во многих случаях C ++ предлагает подходы к решению проблем, которые превосходят их.Аналоги C (например, см. Элементы 2 (альтернативы препроцессору) и 13 (использование объектов для управления ресурсами)), но когда вы работаете с частью C C ++, правила эффективного программирования отражают более ограниченную область действия C: нетшаблоны, без исключений, без перегрузки и т. д.
Объектно-ориентированный C ++ .Эта часть C ++ - это то, о чем C с классами занимался: классы (включая конструкторы и деструкторы), инкапсуляция, наследование, полиморфизм, виртуальные функции (динамическое связывание) и т. Д. Это та часть C ++, к которой относятся классические правила для объектов.ориентированный дизайн наиболее применим.
Шаблон C ++ .Это общая часть программирования C ++, с которой у большинства программистов меньше всего опыта.Соображения о шаблонах распространяются на C ++, и правила хорошего программирования нередко включают в себя специальные предложения только для шаблонов (например, см. Пункт 46, посвященный упрощению преобразования типов в вызовах функций шаблона).На самом деле шаблоны настолько мощны, что порождают совершенно новую парадигму программирования - метапрограммирование шаблонов (TMP).В пункте 48 представлен обзор TMP, но если вы не любитель шаблонов, вам не о чем беспокоиться.Правила для TMP редко взаимодействуют с основным программированием на C ++.
STL .Конечно, STL - это библиотека шаблонов, но это очень особенная библиотека шаблонов.Его соглашения, касающиеся контейнеров, итераторов, алгоритмов и функциональных объектов, прекрасно сочетаются, но шаблоны и библиотеки также могут быть построены на других идеях.У STL есть особые способы ведения дел, и когда вы работаете с STL, вы должны обязательно соблюдать его соглашения.