Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Введение в теорию программирования. Объектно-ориентированный подход. Учебное пособие
.pdf
Проектирование и реализация гетерогенных
приложений
Цель: знакомство с проектированием и реализацией гетерогенных
приложений для платформы .NET на примере совместного проекта из
компонент на языках SML и C#.
Теоретические сведения
Гетерогенные приложения
Платформа программирования .NET изначально разрабатывалась для
построения приложений на компонентной основе и обеспечения
независимости взаимодействия компонентов от языка
программирования. Благодаря этому в рамках одного приложения могут
быть использованы компоненты, реализующие различные подходы к
программированию.
В качестве основной структурной единицы компонентного
программирования выступает решение (solution), которое может
состоять из сборок (assembly). Сборка представляет из себя управляемую
динамическую библиотеку (DLL-файл) для .NET или приложение (EXEфайл). В каждом решении должна быть хотя бы одна сборка.
Для взаимодействия между сборками используется механизм ссылок.
Ссылка ( reference ) - это пространство имен из одной сборки,
доступное в другой. После добавления дополнительного проекта к
решению и ссылки к основному проекту, в коде основного проекта
можно пользоваться пространствами имен дополнительного.
Взаимодействие с SML.NET на компонентном уровне
Код SML.NET может создавать пространство имен, видимое в рамках
других приложений. Для этого в файл script.smlnet добавляется
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
181

директива export. Данная директива экспортирует фрагмент
программы на языке программирования (скажем, SML) в форме объекта
или структуры в пространство имен .NET. Последнее, в свою очередь,
может быть использовано в любой сборке решения при добавлении
соответствующей ссылки.
Описание директивы export
Синтаксис:
export имя1[, имя2 ...]
При создании нового проекта SML.NET платформа автоматически
заносит имя основной структуры SML-проекта в создаваемый файл. В
случае добавления дополнительных файлов или создания
дополнительных экспортируемых структур экспортом необходимо
управлять вручную.
Для создания ссылки на другие проекты .NET в решении для SML.NET
необходимо добавить директиву reference.
Директива reference
Синтаксис:
Reference файл_с_кодом_компонента_1 [...]
Порядок выполнения работы
1. Реализовать программу на C# в соответствии с вариантом
исполнения.
2. Представить в графическом виде взаимодействие компонентов в
среде .NET.
Варианты заданий
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
182

Оснастить графическим интерфейсом на языке C# следующие функции
на языке SML.
Реализовать функцию на языке программирования SML, которая
выполняет синтаксический разбор следующего аппликативного
выражения по ассоциации влево с построением бинарного дерева:
1. a(bc)
2. ac(bc)
3. (ac)(bc)
4. (ab)(c(de))
5. a(b(cd)(ef))
6. a(b(cd)(ef)g)
7. a(b((cd)(ef))
8. (a(bc(de)f)gh)
9. abb(cdd(e)fg)
10. (ab(c(de))f(g(hi))j)
Реализовать функцию на языке программирования SML, которая
выполняет синтаксический разбор следующего аппликативного
выражения по ассоциации вправо с построением бинарного дерева:
1. a(bc)
2. ac(bc)
3. (ac)(bc)
4. (ab)(c(de))
5. a(b(cd)(ef))
6. a(b(cd)(ef)g)
7. a(b((cd)(ef))
8. (a(bc(de)f)gh)
9. abb(cdd(e)fg)
10. (ab(c(de))f(g(hi))j)
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
183

Список литературы
1. Атли К., VB.NET для программистов., ДМК Пресс, 2002. ISBN 5-94074-110-Х
2. Браунси К., Основные концепции структур данных и реализация в С++, М.:
Издательский дом "Вильямс", 2002.- 320 с.
3. Вилле К., Представляем Си Шарп, ДМК Пресс, 2001. ISBN 5-94074-039-1
4. Вольфенгаген В.Э., Категориальная абстрактная м ашина, Изд. 2. М.: АО
<ЮрИнфоР>, 2001 - 96 с. ISBN 5-89158-102-7
5. Вольфенгаген В.Э., Комбинаторная логика в программировании, 204 с. изд. 2-е,
перераб., дополн. - М.: АО "Центр ЮрИнфоР", 2003 - 203 с. ISBN 5-89158-101-9, ББК
32.97
6. Вольфенгаген В.Э., Конструкции языков программирования. Приемы описания, М.:
АО <ЮрИнфоР>, 2001, 276 с.
7. Вольфенгаген В.Э., Концептуализация в аппликативных вычислительных системах,
М.: МИФИ, 1990
8. Вольфенгаген В.Э., Брызгалов С.В., Гаврилов А.В., Зыков С.В., Исмаилова Л.Ю.,
Кастанов С.А., Одрова А.Н., Погодаев Г.Г., Сницарь Р.В., Категориальная объектноориентированная абстрактная машина (КООАМ), Информационный бюллетень РФФИ,
4, 1996, c. 786
9. Гейтс Б., Бизнес со скоростью мысли., М.: Изд-во ЭКСМО-Пресс, 2000.- 480 с.
10. Зыков С.В., Современные языки программирования. Ч.I. Функциональный подход к
программированию., М.:МИФИ - 2003, 230 с.
11. Зыков С.В., Современные языки программирования. Ч.II. Объектноориентированный подход к программированию., М.:МИФИ - 2004, 251 с.
12. Зыков С.В., Лабораторный практикум по курсу <Языки программирования>. Ч.1.
Основы объектного программирования на С++., М.: МИФИ - 2001, 55 с. ISBN 5-72620454-9
13. Зыков С.В., Лабораторный практикум по курсу <Языки программирования>. Ч.2.
Основы разработки приложений на С++ для Win32 API., М.: МИФИ - 2001, 45 с. ISBN 57262-0454-9
14. Керниган Б., Пайк Р., Практика программирования., СПб.: Невский диалект, 2001.-381
с.
15. Петцольд Ч., Программ ирование для Microsoft Windows на C#., <Русская
редакция>, 2002. ISBN 5-7502-0210-0
16. Платт Д.С., Знаком ство с Microsoft .NET., <Русская редакция>, 2001. ISBN 5-75020186-4
17. Рейли Д. Дж., Создание приложений Microsoft ASP.NET., <Русская редакция>, 2002.
ISBN 5-7502-0218-6
18. Рекомендации по преподаванию информ атики в университетах: Пер. с англ., СПб.,
2002.- 372 с. ISBN 5-288-03105-3
19. Рихтер Дж., Программирование на платформе Micros oft .NET Framework., <Русская
редакция>, 2002
20. Робинсон У., C# без лишних слов., ДМК Пресс, 2002. ISBN 5-94074-177-0
21. Смит С., ASP.NET в примерах., ДМК Пресс, 2002. ISBN 5-94074-165-7
22. Шапошников И., Web-сервисы Micros oft .NET., <БХВ-Петербург>, 2002. ISBN 594157-199-2
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
184

23. Appleby D., VandeKopple J.J., Programming languages, paradigm and practice (2nd ed.).,
McGraw-Hill, 1997
24. Barendregt H.P., The lambda calculus (revised edition),, Studies in Logic, 103, North
Holland, Amsterdam, 1984
25. Box D., Essential .NET, Vol.1: The Common Language Runtime., Addison Wes ley, 2002,
432
26. Cardelli L., A semantics of multiple inheritance., In: Information and Computation, vol.76,
1988, p.p. 138-164
27. Church A., The calculi of lambda-conversion., Princeton, 1941, ed. 2, 1951
28. Cook W., Hill W.L., Canning P.S., Inheritance is not subtyping., In: Proc. 17th ACM
Symposium on Principles of Programming Langauges, Jan. 1990, p.p. 125-135
29. Cook W., Palsberg J., A denotational s emantics of inheritance and its correctnes s., In:
OOPSLA 1989 as SIGPLAN, vol.24, No.10, Oct. 1989, p.p. 433-444
30. Cousineau G., Curien P.-L., Mauny M., The categorical abstract machine., Science of
Computer Programming 8(2): 173-202, 1987
31. Curry H.B., Feys R., Combinatory logic, vol.I, North Holland, Amsterdam, 1958
32. Davis M. (ed.), Solvability, probability, definability: the collected works of Emil L. Post,
Boston, Mass achus etts, 1994
33. Date C.J., Encapsulation is a Red Herring., DataBase Programming and Design OnLineFrei, Sept. 1998
34. Floyd R.W., A note on mathematical induction on phrase s tructure grammars.,
Information and Control 4(4): 353-358, 1961
35. Fourman M., The logic of topoi., In: Handbook of Mathematical Logic, J.Barwise et al.,
eds . North-Holland, 1977
36. Frei G., Helmut Hass e (1898-1979), Expositiones Mathematicae 3 (1) (1985), 55-69
37. Gilmore S., Programming in Standard ML '97: a tutorial introduction
38. Gordon M.J.C., Programming language theory and its implementation., Prentice-Hall,
1988
39. Gordon M.J.C., The denotational des cription of programming languages., SpringerVerlag, 1979
40. Grimes F., Microsoft .NET for Programmers., Manning Publications , 2002, 386 pp.
41. Gunter C.A., Scott D.S., Semantic Domains , Handbook on theoretical computer science,
Vol.B: Formal models and semantics (B):633-674, 1990.
42. Hindley J.R., The principal type-scheme of an object in combinatory logic., Trans. Amer.
Math. Soc., 146:29-60, 1969
43. Hindley J.R., Seldin J.P., Introduction to combinators and l-calculus., London
Mathematical Society Student Texts , 1, Cambridge University Press, 1986
44. Hoare C.A.R., An axiomatic basis for computer programming., CACM 12(10):576-580,
1969
45. Hodges A. Alan, Turing and the Turing machine., The universal Turing machine: a halfcentury survey, pp. 3-15, New York, 1988
46. Hughes J., Why functional programming matters., The Computer Journal, 32 (2): 98-107,
April 1989
47. Hughes R.J.M., Super combinators: a new implementation method for applicative
languages ., Proc. of the 1982 ACM Symposium on LISP and Functional Programming,
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
185

Pittsburgh, 1982
48. Kleene S.C., l-definability and recursiveness., Duke Math. J., p.p. 340-353, 1936
49. Knuth D.E., Backus normal form vs . Backus Naur form., Comm. ACM 7:12 p.p. 735-736
50. Landin P., The next 700 programming languages., Communications of ACM, 3, 1966
51. Landin. P.J., The mechanical evaluation of expressions., Computer Journal, 6:308-320,
January 1964
52. Liberty J., Programming C#, 3d edition., O'Reilly & Associates, 2003, 710 pp. ISBN:
0596004893
53. Lowy J., COM and .NET Component Services., O'Reilly, 2001, 384 pp.
54. Lowy J., Programming .NET Components., O'Reilly, 2003, 480 pp.
55. Mauny M., Suarez A., Implementing functional languages in the categorical abs tract
machine., Proc. of the 1986 ACM conference on LISP and functional programming, pp. 266278, Cambridge, Massachusetts , 1986
56. McCarthy J., Recursive functions of symbolic expressions and their computation by
machine, Part I., Com. ACM, April 1960
57. Milner A.J.R.G., A propos al for Standard ML., Proceedings of the ACM Symposium on
LISP and Functional Programming, Austin, 1984
58. Milner R., A theory of type polymorphism in programming languages ., Journal of
Computer and System Science, 17(3):348-375, 1978
59. Nathan A., NET and COM: The Complete Interoperability Guide., Sams, 2002, 1608 pp.
60. Peyton Jones S.L., The implementation of functional programming languages., Prentice
Hall, 1987
61. Plotkin G.D., Call-by-name, call-by-value and the l-calculus., Theoretical computer
science, 1, pp. 125-159, 1936
62. Pratt T.W., Zelkovitz M.V., Programming languages, design and implementation (4th ed.).,
Prentice Hall, 2000 (В русском переводе: Пратт Т., Зелкович М., Языки
программирования: разработка и реализация.- Спб.: Питер, 2002.-688 с.: ил.)
63. Richter J., Applied Microsoft .NET Framework Programming., Microsoft Press , 2002, 556
pp.
64. Roussopulos N.D., A semantic network model of data bases, Toronto Univ., 1976
65. Scho. .nfinkel M., Uber die Baus teine der matematischen Logik, Math. Annalen 92, pp.
305-316, 1924. Trans lation printed as 'On the building blocks of mathematical logic', in van
Heijenoort, J. (ed.), From Frege to Godel, Harvard University Press , 1967
66. Scott D.S., Domains for denotational semantics., ICALP 1982, 577-613
67. Scott D.S., Identity and existence in intuitionistic logic., In: Application of Sheaves .Berlin: Springer, 1979, p.p. 600-696
68. Scott D.S., The lattice of flow diagrams., Lecture Notes in Mathematics , 188, Symposium
on Mathematics of Algorithmic Languages .- Springer-Verlag, 1971, p.p. 311-372
69. Stoy J.E., Denotational semantics: the Scott-Strachey approach to programming
language theory., MIT Press, 1977
70. Strachey C., Fundamental Concepts in Programming Languages., Higher-Order and
Symbolic Computation, Vol. 13, No 1/2, April 2000, p.p.11-49.
71. Turing A.M., On computable numbers, with an application to the
Entscheidungs problem., Proc. of London Mathematical Society, ser .2, vol. 42 p.p. 230-265,
1936-7
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
186

72. Thai T.L., Lam H., .NET Framework Es s entials, 2nd ed., O'Reilly, 2002, 376 pp.
73. Thorup L., Tofte M., Object-oriented programming and Standard ML., Proc. ACM
SIGPLAN 1994 Workshop on ML and its applications, Orlando, FL, June 1994, Tech. Report
2265 INRIA, p.p. 41-49
74. Troelsen A., C# and the .NET platform (2nd ed.)., APress, 2003, 1200 pp. (В русском
переводе: Троелсен Э., C# и платформа .NET. Библиотека программ иста.- Спб.: Питер,
2003.-800 с.: ил.)
75. Turner D.A., A new implementation technique for applicative languages ., Software Practice and Experience, 9:21-49, 1979
76. Visual C#. NET Step by Step, Microsoft Press, 2003. ISBN: 0-7356-1909-3
77. Wadsworth C.P., Semantics and pragmatics of the l-calculus., PhD Thesis, University of
Oxford, 1981
78. Wolfengagen V.E., Building the access pointers to a computational environment., In:
Electronic Workshops in Computing, Berlin Heidelberg New York: Springer-Verlag, 1998. p.p.
1-13
79. Wolfengagen V.E., Event-driven objects., In: Proc. CSIT'1999, Moscow, Russia, 1999,
Vol.1, p.p. 88-96
80. Wolfengagen V.E., Functional notation for indexed concepts, In: Proc. WFLP'2000,
Benicass im, Spain, Sept. 2000
81. Концепция Microsoft .NET, URL: http://msdn.micros oft.com/net
82. Концепция Microsoft .NET, URL: http://www.c-sharpcorner.com
83. Концепция Microsoft .NET, URL: http://www.microsoft.com/rus/net
84. Концепция Microsoft .NET, URL: http://www.gotdotnet.ru
85. Концепция Microsoft .NET, URL: http://www.dotsite.spb.ru
86. Концепция Microsoft .NET, URL: http://www.thedotnetmag.com
87. Концепция Microsoft .NET, URL: http://www.mindcracker.com
88. Концепция Microsoft .NET, URL: http://www.aspdotnetheaven.com
89. Концепция Microsoft .NET, URL: http://www.dotnetjunkies.com
90. Концепция Microsoft .NET, URL: http://www.dotnetnut.com
91. Объектно-ориентированное программирование, URL:
http://www.dsic.upv.es /~wflp2000/
92. Диалект New Jersey языка программирования SML, URL: http://www.cm.belllabs.com/cm/cs /what/s mlnj
93. Категориальная абстрактная машина и язык программирования CAML, URL:
http://www.cam.inria.fr
94. Язык программирования C#, URL: http://www.c-sharpcorner.com
95. Язык программирования ML, URL: http://www.harlequin.com/products /ads/ml
96. Язык программирования ML, URL: http://www.dcs.ed.ac.uk/home/s tg
97. Язык программирования Clean, URL: http://www.cs .kun.nl/~clean
98. язык програм мирования Haskell, URL: http://www.haskell.org
Введение в теорию программирования. Объектно-ориентированный подходЗыков С. В.
187
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
