лекции (2008) (by Kravets), страница 3
Описание файла
PDF-файл из архива "лекции (2008) (by Kravets)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 3 страницы из PDF
Íàïðèìåð â Àäà ìîæíî9èìåòü âëîæåííûå ìîäóëè, à â ìîäóëà 2 èõ íåò, òàê êàê áåç íèõ ìîæíîîáîéòèñü.Ê 1988 êîãäà ñòàëî ÿñíî, ÷òî ÎÎÏ îñíîâíîå íàïðàâëåíèÿ ïðîìûøëåííîãî ïðîãðàììèðîâàíèÿ, Í. Âèðò ïðåäïðèíÿë òðåòüþ ïîïûòêó ñîçäàíèÿ ßÏ ÿçûê îáåðîí, êîòîðûé ïðåäñòàâëÿë èç ñåáÿ óðåçàííóþ ìîäóëó+ íàñëåäîâàíèå. 1993 ïîÿâèëñÿ Îáåðîí 2. â êîòîðûé áûëè äîáàâëåíû âèðòóàëüíûåôóíêöèè (ïîëó÷èëñÿ â èòîãå ïîëíûé ÎÎßÏ). Ïðè ýòîì êîìïèëÿòîð îáåðîíà çàíèìàë 4,5Ê ñòðîê, à äîáàâëåíèå âèðòóàëüíûõ ôóíêöèé äîáàâèëîåùå 500 ñòðîê. Èòàê Îáåðîí 2 êðàéíå ïðîñòîÿ ÎÎßÏ. Äëÿ ïðîñòûõ âåùåé íåëüçÿ èñïîëüçîâàòü ñëîæíûå èíñòðóìåíòû. Íàïðèìåð êîìïèëÿòîðñ Àäû áûë î÷åíü ñëîæíûì.10Ëåêöèÿ 4Ñîâðåìåííûé ýòàï ðàçâèòèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ.Çíàêîâûå ñîáûòèÿ ýòîãî ýòàïà - ïîÿâëåíèå Ñ++ (1983), Ada.
Èìåííîâ ÿçûêå àäà âïåðâûå ïîÿâèëîñü ïîíÿòèå èñêëþ÷åíèÿ. Äàëåå ýòî ïîíÿòèåïåðåøëî â äðóãèå ÿçûêè. Îäíàêî, ñâîåé öåëè ÿçûê àäà íå äîáèëñÿ (çàìåíèòü âñå äðóãèå ßÏ). 1995 - íîâûé âàðèàíò ÿçûêà àäà ( îáåñïå÷åííàìàêñèìàëüíàÿ ñîâìåñòèìîñòü ñíèçó ââåðõ). 2005 ãîäó -ïîÿâèëàñü åùå îäíà âåðñèÿ àäà. Àäà 95 - ïðèìåð î÷åíüàêêóðàòíîãî ðàñøèðåíèÿ ïðîöåäóðíîãî ßÏ îáúåêòíî-îðèåíòèðîâàííîéïàðàäèãìîé. Ãëàâíîé ïðè÷èíîé íåóäà÷è ÿçûêà àäà - åãî ñëîæíîñòü.
Áûëî çàïðåùåíî ðàñøèðÿòü ñòàíäàðò àäà, íî êàæäûå íåñêîëüêî ëåò âûïóñêàëèñü íîâûå òîëêîâàíèÿ ñòàíäàðòà (íåêîòîðûå äåòàëè ñòàíäàðòà).Äàæåòðåáîâàíèå âûïóñêàòü âñå ÏÎ òîëüêî íà ñåðòèôèöèðîâàííûõ êîìïèëÿòîðàõ íå ìîãëî âûïîëíÿòüñÿ òàê êàê äàæå ñàìûå ñîâåðøåííûå êîìïèëÿòîðû íå ìîãëè ïðîéòè âñå òåñòû íà ñåðòèôèêàöèþ. Äîáàâëåíèå ÎÎ ïàðàäèãìû åùå ñèëüíåå óñëîæíèëî ÿçûê. Èòàê òðåòüÿ ïîïûòêà ñîçäàíèÿóíèâåðñàëüíîãî ßÏ ïðîâàëèëàñü, è îò äàëüíåéøèõ ïîïûòîê ñîçäàíèÿïîäîáíûé ßÏ îòêàçàëèñü.Äàëåå íà÷àëîñü ðàçâèòèå ÎÎßÏ. Ïåðâûé ÷èñòûé ÎÎßÏ - smalltalkïîÿâèëñÿ â 1972 ãîäó â ëàáîðàòîðèè Xerox PARC. ýòîé æå ëàáîðàòîðèèáûëè ðàçðàáîòàíû: ìûøü, ethernet, ñòàíöèÿ ñ ãðàôè÷åñêèì èíòåðôåéñîì. 1980 îôîðìèëàñü âåðñèÿ ÿçûêà (smalltalk 5), ñòàâøàÿ ñàìîé ïîïóëÿðíîé âåðñèåé ýòîãî ÿçûêà.
Ìíîãèå ïîíÿòèÿ ñîâðåìåííûõ ÎÎßÏ ïðèøëè èìåííî èç smalltalk. Íàïðèìåð ìåòîä - ìåòîä äîñòóïà - ïîíÿòèåÿçûêà smalltalk. Ñëîâî super â java òàê æå ïîíÿòèå èç smalltalk. Íî ïðèýòîì îí áûë êðàéíå íåýôôåêòèâíûì.Åùå îäíà îñîáåííîñòü ýòîãî ÿçûêà - äëÿ ïðîñòîòû åãî ðåàëèçàöèèáûëî ðàçðàáîòàíî ñïåöèàëüíîå ïðåäñòàâëåíèå - áàéò-êîä. Òî åñòü èìåëñÿòîëüêî îäèí êîìïèëÿòîð è èíòåðïðåòàòîðû áàéò êîäà äëÿ êàæäîé öåëåâîé ìàøèíû.Ñ òî÷êè çðåíèÿ èíäóñòðèàëüíîãî ïðîãðàììèðîâàíèÿ ñàìûì âàæíûìÎÎßÏ ÿâëÿåòñÿ ÿçûê Ñ++. 1986 ïîÿâèëàñü âåðñèÿ Ñ++ 2.0 - ïåðâàÿ øèðîêî äîñòóïíàÿ âåðñèÿÿçûêà. 1990 - äîáàâëåíû øàáëîíû è èñêëþ÷åíèÿ.
Ñàìîé ãëàâíîé îøèáêîéïðîåêòèðîâàíèÿ Ñòðàóñòðóï ñ÷èòàåò òî, ÷òî âî âðåìÿ ïîäãîòîâêè âåðñèè1986 ãîäà îí ñîñðåäîòî÷èëñÿ íà ìíîæåñòâåííîì íàñëåäîâàíèè à íå íàøàáëîíàõ.  smalltalk íå áûëî ìíîæåñòâåííîãî íàñëåäîâàíèÿ, è ìíîãèåïîáîðíèêè ýòîãî ÿçûêà ñ÷èòàþò ÷òî åãî è íå äîëæíî áûòü â ÎÎÏ.11 1990-õ áûëî ðàçðàáîòàíî ìíîæåñòâî êîìïèëÿòîðîâ Ñ++. Ïðè ýòîìâñÿ STL ðàçðàáîòàíà íà øàáëîíàõ. Ïðè ýòîì âî âñåõ êîìïèëÿòîðàõ áûëèðàçíûå ðåàëèçàöèè øàáëîíîâ, ÷òî ïðèâåëî ê òîìó ÷òî êàæäûé êîìïèëÿòîð äîëæåí áûë èìåòü ñâîé âàðèàíò áèáëèîòåêè.  1998 áûë ïðèíÿòñòàíäàðò è áûëà ðàçðàáîòàíà åäèíàÿ áèáëèîòåêà. 1990 Ñ++ ñòàë ñàìîñòîÿòåëüíûì, íå çàâèñèìûì îò Ñ ÿçûêîì. Äî1990 Ñòðàóñòðóï áîÿëñÿ ââîäèòü íîâûå êëþ÷åâûå ñëîâà òàê êàê ýòî ìîæåò ïðèâåñòè ê íåñîâìåñòèìîñòè ñ ïðåäûäóùèìè âåðñèÿìè.
Ïîñëå 1990ïîÿâèëèñü íîâûå êëþ÷åâûå êëþ÷åâûå ñëîâà (øàáëîíû, namespace, RTTI,STL).Óæå ê 1994 ãîäó âñå ýòî áûëî ðàçðàáîòàíî, íî STL çàäåðæàëî âûïóñê ñòàíäàðòà äî 1998. Äàæå MSVC++ (Microsoft Visual C++) äî ñèõïîð íå ïîääåðæèâàåò âñå òðåáîâàíèÿ ñòàíäàðòà.STL - ýòî íå òîëüêî èíòåðôåéñ, íî è ðåàëèçàöèÿ êîòîðóþ íå ñîâñåìïîëíî ïîääåðæèâàåò äàæå .MSVC++. Òàêèì îáðàçîì ïëàòôîðìà STL ýòî íàáîð øàáëîíîâ + êîìïèëÿòîð.
Òàêèõ øàáëîíîâ, êàê â Ñ++, áîëüøåíèãäå íåòó. Ñåé÷àñ ãîòîâèòñÿ íîâûé ñòàíäàðò TR1 è ñòàíîâèòñÿ âèäíî,÷òî ñ++ ñòàë î÷åíü ñëîæíûì ( íå ïðîùå ÀÄÀ). Íî Ñ++ îäèí èç íàèáîëåå ìîùíûõ ßÏ ( è ñàìûé ìîùíûé ßÏ íà ñåãîäíÿøíèé äåíü). Ñåé÷àñðàçâèòèå Ñ++ èäåò ïî ïóòè ðàçâèòèÿ STL. C++ - ÿçûê â êîòîðîì äàíûî÷åíü ïðîñòûå áàçîâûå ñðåäñòâà, à âñå îñòàëüíîå ðåàëèçóåòñÿ ñ ïîìîùüþêëàññîâ, ÷òî äåëàåò Ñ++ íàèáîëåå ãèáêèì ßÏ. 1988 ãîäó ïîÿâèëñÿ ÿçûê îáåðîí, â 1993 - îáåðîí 2, êîòîðûé ÿâëÿåòñÿ ñàìûì êîìïàêòíûì ÎÎßÏ. åãî ðåàëèçàöèè èñïîëüçóåòñÿ ïðèíöèïìèíèìóìà ÿçûêîâûõ êîíñòðóêöèé.ßçûê Eiel - øèðîêî èçâåñòåí â óçêèõ êðóãàõ, íî ó íåãî íå ïîÿâèëîñüñâîåé ýêîëîãè÷åñêîé íèøè.
Ïðè÷èíà - â 1980 àêòèâíî èñïîëüçîâàëèñüÎÎßÏ, êîòîðûå ÿâëÿëèñü ðàñøèðåíèÿìè ðåàëüíî ñóùåñòâóþùèõ ßÏ.Ïðè ýòîì âñå íåäîñòàòêè áàçîâûõ ßÏ ïðîíèêàëè â ýòè ÿçûêè. Òàê, Ñ++- ðàñøèðåíèå Ñ, ïîëó÷èë âñå åãî íåäîñòàòêè.Objective C - ÿçûê Ñ â êîòîðûå äîáàâëåíû ÷àñòü êîíñòðóêöèåé smalltalk.Object Pascal, Turbo Pascal (ÎÎ íà÷èíàÿ ñ ïÿòîé âåðñèè), äàëåå - ñèñòåìàÄåëüôè. Ñåé÷àñ C# çàìåùàåò Delphi.Èòàê áîëüøèíñòâî ÎÎßÏ îñíîâàíû íà Ñ++, ïðè ýòîì òàêèå ÿçûêèêàê java, C#, Delphi -ñèëüíåå ñõîæè äðóã ñ äðóãîì ÷åì ñ Ñ++.ÑèñòåìàJ++ - ðåàëèçàöèÿ java íà VS.ßçûê Java - àíîíñèðîâàí â 1995 (C# - àíîíñèðîâàí â 1999).Ýòè ÿçûêèáûëè ðàçðàáîòàíû ñ íóëÿ - òî åñòü áåç ðàñ÷åòà íà ñîâìåñòèìîñòü.Ïðèíöèï java - WORA (write once - run anywhere).
Êîíöåïöèÿ ÿçûêàáëèçêà ê êîíöåïöèè óíèâåðñàëüíîãî ßÏ. åãî ñîñòàâ âõîäèò JVM - âèðòóàëüíàÿ ìàøèíà äëÿ èñïîëíåíèÿ áàéò êîäà.  60-å 70-å áûëè ïðîåêò ïîðåàëèçàöèè ìàøèíû êîòîðûå íà âõîä ïîëó÷àëè ßÏ âûñîêîãî óðîâíÿ, òî12åñòü ÿâëÿâøèåñÿ âåùåñòâåííûìè ðåàëèçàöèÿìè âèðòóàëüíûõ ìàøèí.Symbol ðåàëèçàöèÿ Algol60.  ÑÑÑÐ áûëà ðàçðàáîòàíà ìàøèíàÌÈÐ.  70-õ, ýòè ðàçðàáîòêè ñâåðíóëè è ñòàëè êîïèðîâàòü ðàçðàáîòêèèíîñòðàííûõ êîìïàíèé.ßçûê Lisp - ÿçûê èññëåäîâàíèÿ ÈÈ è ýêñïåðòíûõ ñèñòåì.
Áûëà êîìïàíèÿ êîòîðàÿ âûïóñêàëà àïïàðàòíûå ðåàëèçàöèè Lisp ìàøèí. Äàëåå áûëàèäåÿ èíòåðïðåòàöèè ïðîìåæóòî÷íîãî ïðåäñòàâëåíèÿ ïðîãðàììû. Ñèñòåìà UCSD-Pascal - òðåáîâàëñÿ åäèíûé êîìïèëÿòîð äëÿ ðàáîòû íà ðàçíûõàðõèòåêòóðàõ. Áûëà ðàçðàáîòàíà ñèñòåìà P-code (÷òî-òî òèïà ÏÎËÈÇ).Òî åñòü ñóùåñòâîâàë îäèí êîìïèëÿòîð ñ Pascal â P-code è ïî èíòåðïðåòàòîðó íà êàæäóþ àðõèòåêòóðó. Ýòî îêàçàëàñü ïðîñòîé è ýôôåêòèâíîéñèñòåìîé ðàáîòàþùåé íà ìíîæåñòâå ðàçëè÷íûõ àðõèòåêòóð.Àïïàðàòíàÿ ðåàëèçàöèÿ ßÏ - ìèêðîïðîöåññîð Katana - ìèêðîïðîöåññîð ðåàëèçóþùèé áàéò-êîä. ßçûê java áûë ïðåäëîæåí êàê ÷èñòûé ÎÎßÏñ ñèíòàêñèñîì ïîõîæèì íà Ñ++. Êðîìå òîãî ñóùåñòâóåò JVM - èíòåðïðåòàòîð áàéò êîäà ("ÿçûêà àññåìáëåðà"äëÿ JVM).RTL - real time lib - ïîääåðæêà ïðîãðàìì âî âðåìÿ ðàáîòû.Java Runtime Environment - JVM + RTL.
Âñå ÷òî íóæíî ÷òîá ðåàëèçîâàòü java äëÿ íåêîé àðõèòåêòóðû - ýòî ðåàëèçîâàòü JRE äëÿ ýòîé ïëàòôîðìû. Ñóùåñòâóåò íåñêîëüêî âàðèàíòîâ java ñèñòåì, íàïðèìåð java2ME (micro edition), SE (standard), EE (enterprise). Äëÿ âñåõ ñèñòåì îäèíè òîò æå êîìïèëÿòîð - îíè ðàçëè÷àþòñÿ òîëüêî íàáîðîì áèáëèîòåê, ïðèýòîì ñàì ÿçûê îäèí è òîò æå.Ñóùåñòâóåò ïðîãðàììà ïî ñåðòèôèêàöèèjava ìàøèí ( ôèðìîé Sum).1995 - çíàêîâûé ãîä, ïîÿâèëàñü Win95.
Ms õîòåëè ñäåëàòü ñâîé èíòåðíåò MSN. Óñòàíîâêà WIn95 íå äîïóñêàëà âîçìîæíîñòü ðàáîòû ñ îòêðûòûìè ñåòÿìè. È òóò ïîÿâèëñÿ ïðîåêò êîòîðûé ïîçâîëÿë ðàáîòàòüíà ëþáîé ïëàòôîðìå. Áîëåå òîãà java - èçíà÷àëüíî èíòåðíåò ÿçûê, javaapplet ïðèëîæåíèå âûïîëíÿþùèåñÿ â èíòåðíåò browser. Áûë ïðèäóìàí ÿçûê LiveScript - ÿçûêå ðàçðàáàòûâàåìûé êàê çàìåíà html. Òîãäàäàæå áûëè èäåè ÷òî ñêîðî âñå áóäóò ïèñàòü íà java, è òîëüêî èíòåðíåòïðèëîæåíèÿ,íî ýòîãî íå ïðîèçîøëî.Ãëàâíûå íåäîñòàòêè java - ïîòåðè ñêîðîñòè íà èíòåðïðåòàöèè è íåýôôåêòèâíîñòü ñáîðêè ìóñîðà.
Ïðè ýòîì java - èäåàëüíûé âûõîä êîãäà íóæíî îáåñïå÷èòü ìîíî ÿçû÷íóþ ñðåäó íà ìíîãèõ ïëàòôîðìàõ. Ïðè ýòîì javaîñòàåòñÿ ñîáñòâåííîñòüþ ôèðìû Sun. Ýòî ïðèâåëî ê íåêîìó íåæåëàíèþìíîãèõ ïåðåõîäèòü íà java, íî íåñìîòðÿ íà ýòî java ñåé÷àñ î÷åíü ðàñïðîñòðàíåííûé ßÏ. Ïî ñðàâíåíèþ ñ Ñ++ java áîëåå ñîâðåìåíåí (÷èñòûéÎÎßÏ, ïðîùå ÷åì Ñ++).ßçûê C# - ðàçðàáîòêà MS. Ðàíüøå ÷òîáû ïðîãðàììèðîâàòü íóæíîáûëî èçó÷èòü ßÏ è òî êàê çàïóñêàåòñÿ ïðîãðàììà â íåêîé âû÷èñëèòåëü13íîé ñðåäå.
Òåïåðü æå íóæíî åùå çíàòü ïëàòôîðìó ïîä êîòîðóþ áóäåòïèñàòüñÿ ïðîãðàììà. Ñåé÷àñ ñàìîå ñëîæíîå - èçó÷åíèå ñîîòâåòñòâóþùèõAPI. ( Unix, íàïðèìåð, èç áîëüøå 1000).Ïîäõîä MS äîñòàòî÷íî ñèëüíî îòëè÷àåòñÿ îò ýòîãî. Âìåñòî ñòàíäàðòèçàöèè ßÏ, îíè ïðåäëîæèëè ñòàíäàðòèçîâàòü áèáëèîòåêè.  ðåçóëüòàòåïîÿâèëñÿ ñòàíäàðò CLI (common language infrostructure).  ýòîò ñòàíäàðòâõîäèò- CTS îáùàÿ ñèñòåìà òèïîâ- Il ïðîìåæóòî÷íûé ÿçûê (âàðèàíò àññåìáëåðà), íî íå çàâèñèò îò ïëàòôîðìû.- Pe ôîðìàò - ôîðìàò èñïîëíÿåìûõ ôàéëîâ - íå çàâèñèò îò ïëàòôîðìû.- ñòàíäàðòèçàöèÿ RTLòî åñòü âñåãäà îäèí è òîò æå ñáîðùèê ìóñîðà, îäèí è òîò æå íàáîð êîëëåêöèé.
Òåïåð íå âàæíî êàêîé âûáðàòü ÿçûê - âàæíî ÷òîá îí âõîäèë â ýòóñïåöèôèêàöèþ. Ves - âèðòóàëüíàÿ èñïîëíèòåëüíàÿ ñðåäà. CLR - commonlanguage runtime - ðåàëèçàöèÿ âèðòóàëüíîé èñïîëíèòåëüíîé ñèñòåìû â.NET.JScript.NETVB.NETFoxPro.NETC++/CLIÑ++ â åãî îáû÷íîé ðåàëèçàöèè íåëüçÿ ðåàëèçîâàòü â ýòîé ñèñòåìå (íàïðèìåð ñáîðêè ìóñîðà â ýòî ÿçûêå íåòó) ïîýòîìó CLI "óïðàâëÿåìûé"Ñ++.
Òî åñòü ê ñèíòàêñèñó Ñ++ äîáàâèëè íîâûå ñïåöèôè÷åñêèåäëÿ .NET êëþ÷åâûå ñëîâà. Ìîæíî ñêàçàòü ÷òî, ê Ñ++ äîáàâèëè ÿçûêC#.Äàëåå òðåáîâàëñÿ "ðîäíîé"ßÏ äëÿ ýòîé ñèñòåìû - ñàìûé óäîáíûéÿçûê äëÿ ýòîé ñèñòåìû,ïðè ýòîì íå òðåáîâàëàñü ñîâìåñòèìîñòü, òàê êàêðàçðàáàòûâàëñÿ ñ 0, òàêèì ÿçûêîì ñòàë C#.JSharp - ýòî ÷èñòûé ÿçûê java, íî ïðè ýòîì åãî RTL áåðåòñÿ èç CLR(.NET áèáëèîòåêè).Òî åñòü ýòî áûëî óêàçàíèå íà âîçìîæíîñòü ïåðåõîäà ñ ïî÷òè ëþáîé ïëàòôîðìû íà ïëàòôîðìó .NET. Ðåàëèçàöèÿ Ñ++ â.NET ñòðàäàåò áîëüøèì ÷èñëîì îøèáîê.