|
Программирование >> Полиморфизм без виртуальных функций в с++
средства. Под датой появления языка в большинстве случаев понимается дата первой версии. Например, Algol68 [Woodward, 1974] датирован 1977 г., а не 1968 г. Анализируя отзывы на статью, представле1П1ую на конференции HOPL-2, и многие другие источники, я пришел к выводу: нет согласия по поводу того, что же такое язык программирования и какой главной цели он должен служить. Как его определить? Это инструмент для составления компьютерных заданий? Средство для общения программистов? Способ представить высокоуровневые проекты? Система обозначений для записи алгоритмов? Воз.можность выразить опю-шения между концепциями? Средство для проведения экспериментов? Механизм управления компьютеризованными устройствами? По-моему, язык программирования общего назначения должен отвечать всем вышеперечисленным критериям и удовлетворять потребности самых разных фупп пользователей. Единственное, чем язык быть не может, - это простым набором изящных штучек . Разнобой мнений также отражает существующие точки зрения на то, что такое информатика и как следует проектировать языки. Является ли информатика частью математики или это, скорее, отрасль инженерного проектирования? Или архитектуры? Или искусства? Или биологии? Или социологии? Или философии? А может, информатика заимствует методы и подходы, применяемые во всех этих дисциплинах? Я склоняюсь к последнему предположению. Отсюда следует, что проектирование языка отличается от более строгих и формальных наук вроде математики и философии. Чтобы стать полезным, универсальный язык програ.ммирования должен быть эклектичным и учитывать множество прагматических и социальных факторов. В частности, каждый язык проектируется для решения определенного вида задач в определенное время в соответствии с представлениями определенной группы людей. С появлением новых требований исходный дизайн начинает расширяться, чтобы соответствовать современному пониманию задач. Эта точка зрения прагматична, но не беспринципна. Я твердо убежден, что все успешные языки программирования именно развивались, а не были просто спроектированы на базе первоначально заложенных принципов. Принципы лежат в 0С1Юве исходного дизайна и определяют последующую эволюцию языка, однако и сами они не остаются застывшими. Библиография в этом разделе перечислены работы, на которые даются ссылки во всех главах книги. Таблица 2 [2nd] see[Stroustrup,1991]. [Agha, 1986] Gul Agha: An Overview of Actor languages. ACM SIGPLAN Notices. October 1986. [Aho,1986] Alfred Aho, Ravi Sethi, and Jeffrey D. Ullman: Compilers: Principles, Techniques, andTools. Addison-Wesley, Reading, MA. 1986. ISBN 0-201-10088-6. [ARM] see [Ellis. 1990]. [Babcisl<y, 1984] Karel Babcisky: Simula Performance Assessment. Proc. IFIP WG2.4 Conference on System Implementation languages: Experience and Assessment. Canterbury, Kent, UK. September 1984. Таблица 2 (продолжение) [Barton, 1994] John J. Barton and Lee R. Nackman: Scientific and Engineering С++: An Introduction with Advanced Techniques and Examples. Addison-Wesley, Reading, MA. 1994. ISBN 0-201-53393-6. [Birtwistle,1979] Graham Birtwistle, Ole-Johan Dahl, Bjurn Myrhaug, and Kristen Nygaard: SIMULA BEGIN. Studentlitteratur, Lund, Sweden. 1979. ISBN 91-44-06212-5. [Boehm, 1993] Hans-J. Boehm: Space Efficient Conservative Garbage Collection. Proc. ACM SIGPLAN 93 Conference on Programming Language Design and Implementation. ACM SIGPLAN Notices. June 1993. [Booch, 1990] Grady Booch and Michael M. Vilot: The Design of the С++ ВоосЛ Components. Proc. OOPSLA90. October 1990. [Booch,1991] Grady Booch: Object-Oriented Design. Benjamin Cummings, Redwood City, CA. 1991. ISBN 0-8053-0091-0. [Booch, 1993] Grady Booch: Object-Oriented Analysis and Design with Applications, 2nd edition. Benjamin Cummings, Redwood City, CA. 1993. ISBN 0-8053-5340-2. [Booch, 1993b] Grady Booch and Michael M. Vilot: Simplifying the С++ Booch Components. The C++Report. June 1993. [Budge, 1992] Ken Budge, J.S. Perry, and A.C. Robinson: High-Performance Scientific Computation using C++. Proc. USENIX С++ Conference. Portland, OR. August 1992. [Buhr, 1992] Peter A. Buhr and Glen Ditchfield: Adding Concurrency to a Programming Language. Proc. USENIX С++ Conference. Portland, OR. August 1992. [Call, 1987] Lisa A. Call, et al.: CLAM - An Open System for Graphical User Interfaces. Proc. USENIX С++ Conference. Santa Fe, NM. November 1987. [Cameron, 1992] Don Cameron, et al.: A Portable Implementation of C++ Exception Handling. Proc. USENIX С++ Conference. Portland, OR. August 1992. [Campbell, 1987] Roy Campbell, et al.: 777e Design of a Multiprocessor Operating System. Proc. USENIX С++ Conference. Santa Fe, NM. November 1987. [Cattell,1991] Rich G.G. Cattell: Object Data Management: Object-Oriented and Extended Relational Database Systems. Addison-Wesley, Reading, MA. 1991. ISBN 0-201-53092-9. [Cargill,1991] Tom A. Cargill: The Case Against Multiple Inheritance in C++. USENIX Computer Systems. Vol4, no 1, 1991. [Carroll, 1991] Martin Carroll: Using Multiple Inheritance to Implement Abstract Data Types. The C++Report. April 1991. [Carroll, 1993] Martin Carroll: Design of the USL Standard Components. The С++ Report. June 1993. [Chandy,1993] K. Mani Chandy and Carl Kesselman: Compositional С++: Compositional Parallel Programming. Proc. Fourth Workshop on Parallel Computing and Compilers. Sprlnger-Verlag. 1993. [Cristian, 1989] Flaviu Cristian: Exception Handling. Dependability of Resilient Computers, T. Andersen, editor. BSP Professional Books, Blackwell Scientific Publications, 1989. [Cox, 1986] Brad Cox: Object-Oriented Programming: An Evolutionary Approach. Addison-Wesley, Reading, MA. 1986. [Dahl, 1988] Ole-Johan Dahl: Personal communication. [Dearie, 1990] Fergal Dearie: Designing Portable Applications Frameworks for С++. Proc. USENIX C++Conference. San Francisco, CA. April 1990. [Dorward,19901 [Бск,1991] [Ellis, 1990] [Faust, 1990] [Fontana,1991] [Forslund,1990] [Gautron,1992] [Geiiani,1988] [Goldberg, 1983] [Goodenougii,1975] [Gorlen,1987] [Gorlen,1990] [Hbbel,igg2] [lchbiaii,1979] [lngalls,1986] [lnterrante,1990] [Joiinson, 1992] [Johnson, 1989] [Keffer, 1992] [Keffer, 1993] Sean M. Dorward, et al.: Adding New Code to a Running Program. Proc. USENIX С++ Conference. San Francisco, CA. April 1990. Stephen G. Eick: SIMUB - An Object-Oriented С++ Library for Interactive Simulation of Circuit-Svritcfied Networks. Proc. Simulation Technology Conference. Orlando, FL. October 1991. Margaret A. Ellis and Bjarne Stroustrup: The Annotated С++ Reference Manual. Addison-Wesley, Reading, MA. 1990. ISBN 0-201-51459-1. John E. Faust and Henry M. Levy: The Performance of an Object-Oriented Threads Package. Proc. ACM joint ECOOP and OOPSLA Conference. Otlawa, Canada. October 1990. Mary Fontana and Martin Neath: Checked Out and Long Overdue: Experiences in the Design of a С++ Class Library. Proc. USENIX С++ Conference. Washington, DC. April 1991. David W. Forslund, et al.: Experiences in Writing Distributed Particle Simulation Code in С++. Proc. USENIX С++ Conference. San Francisco, CA. April 1990. Philippe Gautron: An Assertion Mechanism based on Exceptions. Proc. USENIX С++ Conference. Portland, OR. August 1992. Narain H. Gehani and William D. Roome: Concurrent C++: Concurrent Programming With Class(es). Softvrare-Practice & Experience. V0I18, no 12, 1988. Adele Goldberg and David Robson: Smalltalk-80, The Language and its Implementation. Addison-Wesley, Reading, MA. 1983. ISBN 0-201-11371 -6. John Goodenough: Exception Handling: Issues and a Proposed Notation. Communications of the ACM. December 1975. Keith E. Gorlen: An Object-Oriented Class Ubrary for C++ Programs. Proc. USENIX С++ Conference. Santa Fe, NM. November 1987. Keith E. Gorlen, Sanford M. Orlow, and Perry S. Plexico: Data Abstraction and Object-Oriented Programming in С++. Wiley. West Sussex. England. 1990. ISBN 0-471-92346-X. Peter Hbbel and J.T. Thorsen: An Implementation of a Persistent Store for С++. Computer Science Department. Aarhus University, Denmark. December 1992. Jean D. Ichbiah, et al.: Rationale for the Design of the ADA Programming Language. SIGPLAN Notices Vol 14, no 6, June 1979 Part B. Daniel H.H. Ingalls: A Simple Technique for Handling Multiple Polymorphism. Proc. ACM OOPSLA Conference. Portland, OR. November 1986. John A. Interrante and Mark A. Linton: Runtime Access to Type Information. Proc. USENIX С++ Conference. San Francisco 1990. Steve C. Johnson: Personal communication. Ralph E. Johnson: The Importance of Being Abstract. The С++ Report. March 1989. Thomas Keffer: Why С++ Will Replace Fortran. С++ Supplement to Dr. Dobbs Journal. December 1992. Thomas Keffer: The Design and Architecture of Tools. h++. The С++ Report. June 1993.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |