Рефераты. Язык программирования C++

    Для представления на С++ множества взаимозависимых классов можно использовать дружественные классы ($$5.4.1).

    Еще один способ выражения общности понятий в языке предоставляют шаблоны типа. Шаблонный класс задает целое семейство классов.  Например, шаблонный класс список задает классы вида "список объектов T", где T может быть произвольным типом. Таким образом, шаблонный тип указывает, как получается новый тип из заданного в качестве параметра. Самые типичные шаблонные классы - это контейнеры, в частности, списки, массивы и ассоциативные массивы.


Улучшенный С (поддержка процедурного и модульного программирования)

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

    Самая зачаточная концепция модульности реализуется с помощью механизма раздельной трансляции.


Поддержка абстракции данных


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

перегрузка операций.


Поддержка объектно-ориентированного программирования


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





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



Пределы совершенства


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


    Основная трудность для языка, который создавался в расчете на методы упрятывания данных, абстракции данных и объектно-ориентированного программирования, в том, что для того, чтобы быть языком общего назначения, он должен:


    - идти на традиционных машинах;


    - сосуществовать с традиционными операционными системами и языками;


    - соперничать с традиционными языками программирования в эффективности

выполнения программы;


    - быть пригодным во всех основных областях приложения.


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


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


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


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


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


Заключение


    Как было обещано в первом издании книги «Бьерн Страуструп. Язык программирования С++ », запросы пользователей определили развитие С++. Его направлял опыт широкого круга пользователей, работающих в разных областях программирования.  За шесть лет, отделяющих нас от первого издания описания С++, число пользователей возросло в сотни раз. За эти годы были усвоены многие уроки, были предложены и подтвердили практикой свое право на существование различные приемы программирования.

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




 

 

Список литературы


1.     «Бьерн Страуструп. Язык программирования С++»

  1. Джесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург – Киев, 2001
  2. Н. Секунов, «Самоучитель Visual C++ 6», изд. «БХВ-Петербург», Санкт-Петербург, 2003






























                      










Ссылки на литературу


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

    [1] A.V.Aho, J.E.Hopcroft, and J.D.Ulman: Data Structures and Algoritms.  Addison-Wesley, Reading, Massachusetts. 1983.

    [2] O-J.Dahl, B.Myrhaug, and K.Nugaard: SIMULA Common Base Language. Norwegian Computing Ctnter S-22. Oslo, Norway. 1970

    [3] O-J.Dahl and C.A.R.Hoare: Hierarhical Program Construction in Structured Programming. Academic Press, New York. 1972. pp. 174-220.

    [4] Margaret A.Ellis and Bjarne Stroustrup: The Annotated C++ Reference Manual. Addison-Wesley, Reading, Massachusetts. 1990.

    [5] A.Goldberg and D.Rodson: SMALLTALK-80 - The Language and Its Implementation. Addison-Wesley, Reading, Massachusetts. 1983.

    [6] R.E.Griswold et.al.: The Snobol14 Programming Language. Prentice-Hall, Englewood Cliffs, New Jersy, 1970.

    [7] R.E.Griswold and M.T.Griswold: The ICON Programming Language. Prentice-Hall, Englewood Cliffs, New Jersy. 1983.

    [8] Brian W.Kernighan and Dennis M.Ritchie: The C Programming Language.  Prentice-Hall, Englewood Cliffs, New Jersy. 1978. Second edition 1988.

    [9] Andrew Koenig and Bjarne Stroustrup: C++: As Close to C as possible - but no closer. The C++ Report. Vol.1 No.7. July 1989.

    [10] Andrew Koenig and Bjarne Stroustrup: Exception Handling for C++ (revised). Proc USENIX C++ Conference, April 1990. Also, Journal of Object Oriented Programming, Vol.3 No.2, July/August 1990. pp.16-33.

    [11] Barbara Liskov et.al.: CLU Reference Manual. MIT/LCS/TR-225.

    [12] George Orwell: 1984. Secker and Warburg, London. 1949.

    [13] Martin Richards and Colin Whitby-Strevens: BCPL - The Language and Its Compiler. Cambridge University Press. 1980.

    [14] L.Rosler: The Evolution of C - Past and Future.  AT&T Bell Laboratories Technical Journal. Vol.63 No.8 Part 2.  October 1984. pp.1685-1700.

    [15] Ravi Sethi: Uniform Syntax for Type Expressions and Declarations. Software Practice & Experience, Vol.11. 1981. pp.623-628.

    [16] Bjarne Stroustrup: Adding Classes to C: An Exercise in Language Evolution. Software Practice & Experience, Vol.13. 1983. pp.139-61.

    [17] Bjarne Stroustrup: The C++ Programming Language.  Addison-Wesley. 1986.

    [18] Bjarne Stroustrup: Multiple Inheritance for C++.  Proc. EUUG Spring Conference, May 1987.  Also USENIX Computer Systems, Vol.2 No 4, Fall 1989.

    [19] Bjarne Stroustrup and Jonathan Shopiro: A Set of C classes for Co-Routine Style Programming. Proc. USENIX C++ conference, Santa Fe. November 1987. pp.417-439.

    [20] Bjarne Stroustrup: Type-safe Linkage for C++.  USENIX Computer Systems, Vol.1 No.4 Fall 1988.

    [21] Bjurne Stroustrup: Parameterized Type for C++.  Proc. USENIX C++ Conference, Denver, October 1988. pp.1-18.  Also, USENIX Computer Systems, Vol.2 No.1 Winter 1989.

    [22] Bjarne Stroustrup: Standardizing C++.  The C++ Report. Vol.1 No.1. January 1989.

    [23] Bjarne Stroustrup: The Evolution of C++: 1985-1989.  USENIX Computer Systems, Vol.2 No.3. Summer 1989.

    [24] P.M.Woodward and S.G.Bond: Algol 68-R Users Guide.  Her Majesty's Stationery Office, London. 1974.

    [25] UNIX Time-Sharing System: Programmer's Manual.  Research Version, Tenth Edition.  AT&T Bell Laboratories, Murray Hill, New Jersy, February 1985.

    [26] Aake Wilkstroem: Functional Programming Using ML.  Prentice-Hall, Englewood Cliffs, New Jersy. 1987.

    [27] X3 Secretariat: Standard - The C Language. X3J11/90-013. Computer and Business Equipment Manufactures Association, 311 First Street, NW, Suite 500, Washington, DC 20001, USA.


Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.