sonyps4.ru

Объектно-ориентированное программирование.

Cтраница 1


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

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

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

Система разработана фирмой ИБМ и является системой обобщенных программ, выполняющих функции определения, создания, ведения и опрашивания файлов. Она реализована на ЭВМ IBM-360 и выполняется под управлением операционной системы ОС / 360 с оперативной памятью не менее 192 Кбайт.  


Используя методы вычислений в конечных разностях совместно с обобщенной программой для решения стационарных и нестационарных задач теплопроводности на ЭВМ, Винд получил профили температур для радиальных ребер при произвольном распределении коэффициента теплоотдачи. Были рассмотрены радиальные ребра прямоугольного 0 9 и треугольного профилей. Однако эту программу можно применить и для расчета радиальных ребер других форм, таких как параболическая, трапециевидная и гиперболическая.  

Система программирования, или операционная система (ОС), представляет собой набор обобщенных программ для конкретной ЭВМ, содержащий некоторую главную программу и действу-щий под ее контролем и управлением. Эту главную программу обычно называют исполнительной программой, или супервизором, или монитором. Прикладные программы, как правило, не включаются в состав ОС. Они играют, разумеется, важную роль в прикладной системе в целом и действуют под управлением системы программирования (см. гл.  

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

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

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

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

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

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

Чаще всего эти функции в информационной системе выполняют обобщенные программы. Как правило, они реализуются на основе профилей безопасности (security profile), в которых специфицированы полномочия, необходимые для доступа к конкретным ресурсам. Профиль безопасности обычно связывается с паролем. И пароль, и профиль безопасности - это метаданные. Хотя мы полагаем, что профили безопасности и пароли должны храниться в СССД, существует мнение, что такие метаданные должны храниться отдельно и контроль доступа к ним должен быть более жестким.  

Которое можно применять к различным типам данных , не меняя само это описание. В том или ином виде поддерживается разными языками программирования . Возможности обобщённого программирования впервые появились в виде дженериков (обобщённых функций) в 1970-х годах в языках Клу и Ада , затем в виде параметрического полиморфизма в и его потомках, а затем во многих объектно-ориентированных языках, таких как C++ , Java , Object Pascal , , Eiffel , языках для платформы .NET и других.

Энциклопедичный YouTube

  • 1 / 5

    Обобщённое программирование рассматривается как методология программирования , основанная на разделении структур данных и алгоритмов через использование абстрактных описаний требований . Абстрактные описания требований являются расширением понятия абстрактного типа данных . Вместо описания отдельного типа в обобщённом программировании применяется описание семейства типов, имеющих общий интерфейс и семантическое поведение (англ. semantic behavior ). Набор требований, описывающий интерфейс и семантическое поведение, называется концепцией (англ. concept ). Таким образом, написанный в обобщённом стиле алгоритм может применяться для любых типов, удовлетворяющих его своими концепциями. Такая возможность называется полиморфизмом .

    Говорят, что тип моделирует концепцию (является моделью концепции), если он удовлетворяет её требованиям. Концепция является уточнением другой концепции, если она дополняет последнюю. Требования к концепциям содержат следующую информацию:

    • Допустимые выражения (англ. valid expressions ) - выражения языка программирования, которые должны успешно компилироваться для типов, моделирующих концепцию.
    • Ассоциированные типы (англ. associated types ) - вспомогательные типы, имеющие некоторое отношение к моделирующему концепцию типу.
    • Инварианты (англ. invariants ) - такие характеристики типов, которые должны быть постоянно верны во время исполнения . Обычно выражаются в виде предусловий и постусловий . Невыполнение предусловия влечёт непредсказуемость соответствующей операции и может привести к ошибкам.
    • Гарантии сложности (англ. complexity guarantees ) - максимальное время выполнения допустимого выражения или максимальные требования к различным ресурсам в ходе выполнения этого выражения.

    Альтернативный подход к определению обобщённого программирования, который можно назвать обобщённым программированием типов данных (англ. datatype generic programming ), был предложен Ричардом Бёрдом и Ламбертом Меертенсом. В нём структуры типов данных являются параметрами обобщённых программ. Для этого в язык программирования вводится новый уровень абстракции, а именно параметризация по отношению к классам алгебр с переменной сигнатурой . Хотя теории обоих подходов не зависят от языка программирования, подход Массера - Степанова, делающий упор на анализ концепций, сделал C++ своей основной платформой, тогда как обобщённое программирование типов данных используют почти исключительно Haskell и его варианты .

    Общий механизм

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

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

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

    Обобщённое программирование в языках

    C++

    В языке C++ обобщённое программирование основывается на понятии «шаблон», обозначаемом ключевым словом template . Широко применяется в стандартной библиотеке C++ (см. STL), а также в сторонних библиотеках boost , Loki . Большой вклад в появление развитых средств обобщённого программирования в C++ внёс Александр Степанов .

    В качестве примера приведём шаблон (обобщение) функции, возвращающей большее значение из двух.

    // Описание шаблона функции template < typename T > T max (T x , T y ) { if (x < y ) return y ; else return x ; } ... // Применение функции, заданной шаблоном int a = max (10 , 15 ); ... double f = max (123.11 , 123.12 ); ...

    Java

    Java предоставляет средства обобщённого программирования, синтаксически основанные на C++, начиная с версии J2SE 5.0. В этом языке имеются generics или «контейнеры типа T» - подмножество обобщённого программирования.

    Затем в виде параметрического полиморфизма в и его потомках, а затем во многих объектно-ориентированных языках, таких как C++ , Java , Object Pascal , , Eiffel , языках для платформы .NET и других.

    Методология обобщённого программирования

    Обобщённое программирование рассматривается как методология программирования , основанная на разделении структур данных и алгоритмов через использование абстрактных описаний требований . Абстрактные описания требований являются расширением понятия абстрактного типа данных . Вместо описания отдельного типа в обобщённом программировании применяется описание семейства типов, имеющих общий интерфейс и семантическое поведение (англ. semantic behavior ). Набор требований, описывающий интерфейс и семантическое поведение, называется концепцией (англ. concept ). Таким образом, написанный в обобщённом стиле алгоритм может применяться для любых типов, удовлетворяющих его своими концепциями. Такая возможность называется полиморфизмом .

    Говорят, что тип моделирует концепцию (является моделью концепции), если он удовлетворяет её требованиям. Концепция является уточнением другой концепции, если она дополняет последнюю. Требования к концепциям содержат следующую информацию:

    • Допустимые выражения (англ. valid expressions ) - выражения языка программирования, которые должны успешно компилироваться для типов, моделирующих концепцию.
    • Ассоциированные типы (англ. associated types ) - вспомогательные типы, имеющие некоторое отношение к моделирующему концепцию типу.
    • Инварианты (англ. invariants ) - такие характеристики типов, которые должны быть постоянно верны во время исполнения . Обычно выражаются в виде предусловий и постусловий . Невыполнение предусловия влечёт непредсказуемость соответствующей операции и может привести к ошибкам.
    • Гарантии сложности (англ. complexity guarantees ) - максимальное время выполнения допустимого выражения или максимальные требования к различным ресурсам в ходе выполнения этого выражения.

    Альтернативный подход к определению обобщённого программирования, который можно назвать обобщённым программированием типов данных (англ. datatype generic programming ), был предложен Ричардом Бёрдом и Ламбертом Меертенсом. В нём структуры типов данных являются параметрами обобщённых программ. Для этого в язык программирования вводится новый уровень абстракции, а именно параметризация по отношению к классам алгебр с переменной сигнатурой . Хотя теории обоих подходов не зависят от языка программирования, подход Массера - Степанова, делающий упор на анализ концепций, сделал C++ своей основной платформой, тогда как обобщённое программирование типов данных используют почти исключительно Haskell и его варианты .

    Общий механизм

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

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

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

    Обобщённое программирование в языках

    C++

    В языке C++ обобщённое программирование основывается на понятии «шаблон», обозначаемом ключевым словом template . Широко применяется в стандартной библиотеке C++ (см. STL), а также в сторонних библиотеках boost , Loki . Большой вклад в появление развитых средств обобщённого программирования в C++ внёс Александр Степанов .

    В качестве примера приведём шаблон (обобщение) функции, возвращающей большее значение из двух.

    // Описание шаблона функции template < typename T > T max (T x , T y ) { if (x < y ) return y ; else return x ; } ... // Применение функции, заданной шаблоном int a = max (10 , 15 ); ... double f = max (123.11 , 123.12 ); ...

    или шаблон(обобщение) класса связного списка:

    template < class T > class List { /* ... */ public : void Add ( const T & Element ); bool Find ( const T & Element ); /* ... */ };

    Java

    Java предоставляет средства обобщённого программирования, синтаксически основанные на C++, начиная с версии J2SE 5.0. В этом языке имеются generics или «контейнеры типа T» - подмножество обобщённого программирования.

    .NET

    // http://digitalmars.com/d/2.0/template.html template Foo (T , R ...) // T - тип, R - набор типов { void Foo (T t , R r ) { writeln (t ); static if (r . length ) // if more arguments Foo (r ); // do the rest of the arguments } } void main () { Foo (1 , "a" , 6.8 ); } /+++++++++++++++ prints: 1 a 6.8 +++++++++++++++/

    Н. А. Римского-Корсакова «Шехеразада», перед нами возникают образы жестокого султана Шахрияра, искусной сказительницы Шехеразады, величественная картина моря и уплывающий вдаль корабль Синдбада-морехода. Арабские сказки «Тысяча и одна ночь» стали программой этого замечательного произведения. Римский-Корсаков кратко изложил ее в литературном предисловии. Но уже название сюиты направляет внимание слушателей на восприятие определенного содержания.

    Г. Берлиоз.

    К программным (от греческого «программа» - «объявление», «распоряжение») относятся музыкальные произведения, которые имеют определенный заголовок или литературное предисловие, созданное или избранное самим композитором. Благодаря конкретному содержанию программная музыка более доступна и понятна слушателям. Ее выразительные средства особенно рельефны и ярки. В программных произведениях композиторы широко используют оркестровую звукопись, изобразительность, сильнее подчеркивают контраст между образами-темами, разделами формы и др.

    Богат и разнообразен круг образов и тем программной музыки. Это и картина природы - нежные краски «Рассвета на Москве-реке» в увертюре к опере М. П. Мусоргского «Хованщина»; мрачное Дарьяльское ущелье, Терек и замок царицы Тамары в симфонической поэме М. А. Балакирева «Тамара»; поэтичные пейзажи в произведениях К. Дебюсси «Море», «Лунный свет». Сочные, колоритные картины народных праздников воссозданы в симфонических произведениях М. И. Глинки «Камаринская» и «Арагонская хота».

    Многие сочинения этого вида музыки связаны с замечательными произведениями мировой литературы. Обращаясь к ним, композиторы в музыке стремятся раскрыть те нравственные проблемы, над которыми размышляли поэты, писатели. К «Божественной комедии» Данте обращались П. И. Чайковский (фантазия «Франческа да Римини»), Ф. Лист («Симфония к „Божественной комедии" Данте»). Трагедией У. Шекспира «Ромео и Джульетта» вдохновлены одноименные симфония Г. Берлиоза и увертюра-фантазия Чайковского, трагедией «Гамлет» - симфония Листа. Одна из лучших увертюр Р. Шумана написана к драматической поэме Дж. Г. Байрона «Манфред». Пафос борьбы и победы, бессмертие подвига героя, отдавшего жизнь за свободу родины, выразил Л. Бетховен в увертюре к драме И. В. Гёте «Эгмонт».

    К программным произведениям относятся сочинения, которые принято называть музыкальными портретами. Это фортепьянная прелюдия Дебюсси «Девушка с волосами цвета льна», пьеса для клавесина «Египтянка» Ж. Ф. Рамо, фортепьянные миниатюры Шумана «Паганини» и «Шопен».

    Иногда программа музыкального сочинения бывает навеяна произведениями изобразительного искусства. В фортепьянной сюите «Картинки с выставки» Мусоргского отразились впечатления композитора от выставки картин художника В. А. Гартмана.

    Масштабные, монументальные произведения программной музыки связаны с важнейшими историческими событиями. Таковы, например, симфонии Д. Д. Шостаковича «1905 год», «1917 год», посвященные 1-й русской революции 1905-1907 гг. и Октябрьской революции.

    Программная музыка издавна привлекала многих композиторов. Изящные пьесы в стиле рококо писали для клавесина французские композиторы 2-й половины XVII - начала XVIII в. Л. К. Дакен («Кукушка»), Ф. Куперен («Сборщицы винограда»), Рамо («Принцесса»). Итальянский композитор А. Вивальди четыре скрипичных концерта объединил под общим названием «Времена года». В них созданы тонкие музыкальные зарисовки природы, пасторальные сценки. Содержание каждого концерта композитор изложил в развернутой литературной программе. И. С. Бах одну из пьес для клавира шутливо назвал «Каприччо на отъезд возлюбленного брата». В творческом наследии Й. Гайдна больше 100 симфоний. Среди них есть и программные: «Утро», «Полдень», «Вечер и буря».

    Важное место заняла программная музыка в творчестве композиторов-романтиков . Портреты, жанровые сценки, настроения, тончайшие оттенки человеческих чувств тонко и вдохновенно раскрыты в музыке Шумана (фортепьянные циклы «Карнавал», «Детские сцены», «Крейслериана», «Арабеска»). Своеобразным музыкальным дневником стал большой фортепьянный цикл Листа «Годы странствий». Под впечатлением от поездки в Швейцарию написаны им пьесы «Часовня Вильгельма Телля», «Женевские колокола», «На Валлендштадском озере». В Италии композитора покорило искусство великих мастеров эпохи Возрождения . Поэзия Петрарки, картина Рафаэля «Обручение», скульптура Микеланджело «Мыслитель» стали своеобразной программой в музыке Листа.

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

    К программной музыке часто обращались русские композиторы. Фантастические, сказочные сюжеты легли в основу симфонических картин: «Ночь на Лысой горе» Мусоргского, «Садко» Римского-Корсакова, «Баба-Яга», «Кикимора», «Волшебное озеро» А. К. Лядова. Созидательную силу человеческой воли и разума воспел А. Н. Скрябин в симфонической поэме «Прометей» («Поэма огня»).

    Программная музыка занимает большое место в творчестве советских композиторов. Среди симфоний Н. Я. Мясковского есть «Колхозная», «Авиационная». С. С. Прокофьев написал симфоническое произведение «Скифская сюита», фортепьянные пьесы «Мимолетности», «Сарказмы»; Р. К. Щедрин - концерты для оркестра «Озорные частушки», «Звоны»; М. К. Койшибаев - поэму для оркестра казахских народных инструментов «Советский Казахстан»; З. М. Шахиди - симфоническую поэму «Бузрук».

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

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

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

    Способы реализации

    Известно два основных способа реализации поддержки обобщённого программирования в компиляторе.

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

    Обобщённое программирование в языках

    C++

    В языке C++ обобщённое программирование основывается на понятии «шаблон», обозначаемом ключевым словом template . Широко применяется в стандартной библиотеке C++ (см. STL), а также в сторонних библиотеках boost , Александр Степанов.

    В качестве примера приведём обобщённую функцию, возвращающую большее значение из двух.

    // Описание шаблонной функции template T max(T x, T y) { if (x < y) return y; else return x; } ... // Применение шаблонной функции int a = max(10 ,15 ) ; ... double f = max(123.11 , 123.12 ) ; ...

    Java

    Java предоставляет средства обобщённого программирования, синтаксически основанные на C++, начиная с версии J2SE 5.0. В этом языке имеются generics или «контейнеры типа T» - подмножество обобщённого программирования.

    .NET

    Пример на

    D

    В языке «D» средства обобщённого программирования значительно эволюционировали в сравнении с С++, как в процедурной, так и в объектно ориентированной составляющей. Значительно проще стало и лингвистическое представление.

    Пример рекурсивной генерации на основе шаблонов D:

    // http://digitalmars.com/d/2.0/template.html template Foo(T, R...) // T - тип, R - набор типов { void Foo(T t, R r) { writefln(t) ; static if (r.length ) // if more arguments Foo(r) ; // do the rest of the arguments } } void main() { Foo(1 , "a" , 6.8 ) ; } /+++++++++++++++ prints: 1 a 6.8 +++++++++++++++/


    Wikimedia Foundation . 2010 .

    Смотреть что такое "Обобщенное программирование" в других словарях:

      обобщенное программирование - — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN generalized programmingGP … Справочник технического переводчика

      Modern C++ Design

      Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей. Условные обозначения … Википедия

      У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в … Википедия

      У этого термина существуют и другие значения, см. D. D Семантика: мультипарадигменный: императивное, объектно ориентированное, обобщённое программирование Тип исполнения: компилятор Появился в: 1999 Автор(ы) … Википедия

      См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в: 1985 г. Автор(ы): Бьёрн Страуструп … Википедия

      У этого термина существуют и другие значения, см. F (значения). Правильный заголовок этой статьи F#. Он показан некорректно из за технических ограничений. F# Класс языка: мультипарадигменный: функциональное, объектно ориентированное,… … Википедия

      Этим сочетанием символов также часто обозначают аккорд или тональность Фа диез мажор F♯ это функциональный язык программирования общего назначения. Разработан Доном Саймом (англ. Don Syme) в Microsoft Research в Кембридже. Структура F♯ во многом… … Википедия

      F# это функциональный язык программирования общего назначения. Разработан Доном Саймом (англ. Don Syme) в Microsoft Research в Кембридже. Структура F# во многом схожа со структурой библиотек и среды исполнения.NET. Некоторые задачи решаются… … Википедия

      У этого термина существуют и другие значения, см. Loki (значения). Библиотека Loki для языка программирования C++ написана Андреем Александреску как часть книги «Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны… … Википедия

    Книги

    • Программирование. Принципы и практика с использованием C++ , Страуструп Бьярне. Эта книга не является учебником по языку C++, это учебник по программированию. Несмотря на то что ее автор - автор языка С++, книга не посвящена этому языку программирования; он играет в…


Загрузка...