Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Спросим у эксперта

Вопрос: Каким образом Java и С# создают межплатформенные, переносимые программы, и почему С++ не обладает этой возможностью?

Ответ: Java и С#, в отличие от С++, могут создавать межплатформенные, переносимые программы благодаря формату объектного модуля, формируемого компилятором. В случае С++ компилятор формирует машинный код, который затем может непосредственно выполняться центральным процессором. Таким образом, объектный модуль привязан к конкретному процессору и определенной операционной системе. Если вы захотите выполнить С++-программу в другой системе, вам придется перекомпилировать исходный текст программы в машинный код, предназначенный для выбранной вами среды. Для того, чтобы иметь возможность выполнять С++-программу в различных средах, необходимо создать для нее несколько различных вариантов выполнимых модулей.

Переносимость программ, написанных на Java или С#, объясняется тем, что эти программы компилируются не в машинный, а в псевдокод, представляющий собой некоторый промежуточный язык. В случае Java этот промежуточный язык носит название байт-кода. В случае С# он называется промежуточным языком Microsoft (Microsoft Intermediate Language, MS1L). В обоих случаях псевдокод выполняется специальной исполняющей системой. Java-программы используют виртуальную машину Java (Java Virtual Machine, JVM). Для С#-программ соответствующая система носит название Common Language Runtime (CLR). В результате Java-программа может выполняться в любой среде, для которой имеется виртуальная машина Java; С#-программа может выполняться в любой среде, если для нее имеется реализация CLR.

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

 

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

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

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

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

<== предыдущая лекция | следующая лекция ==>
С++ родился | Полиморфизм. Инкапсуляция представляет собой программный механизм, который связывает данные с обрабатывающими их кодами и защищает и те
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 299; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.