лекции (2008) (by Kravets) (укороченное) (1160827), страница 4
Текст из файла (страница 4)
Ýòî ïðèâåëî áû ê îïðåäåëåííûì ïðîáëåìàì, ïîýòîìó áûëî ââåäåíî ïîíÿòèå ñòàíäàðòà. äàííîì êóðñå ïîíÿòèå ðåàëèçàöèè îñîáî íå çàòðàãèâàåòñÿ, òî åñòü ßÏ îïèñûâàþòñÿ â îñíîâíîì àáñòðàãèðîâàíî îò ðåàëèçàöèè, íî áóäåì êàñàòüñÿ ýòîé ïîçèöèè â òåõ ñëó÷àÿõ êîãäà äåòàëè ðåàëèçàöèè âàæíû ñòî÷êè çðåíèÿ îïðàâäàííîñòè èñïîëüçîâàíèÿ òîé èëè îíîé êîíñòðóêöèè( Ñ++ âèðòóàëüíûå ôóíêöèè, ëîêàëüíûå ïåðåìåííûå â ñòåêå è òàê äàëåå). Íàïðèìåð ÎÎßÏ íå âñåãäà ðåàëèçóþò ìíîæåñòâåííîå íàñëåäîâàíèå ïðè÷èíà ýòîìó òî ÷òî äèíàìè÷åñêîå ñâÿçûâàíèå òðóäíî ýôôåêòèâíî ðåàëèçîâàòü.Àâòîðñêàÿ ïîçèöèÿ.Ëþáîé ßÏ ñîâîêóïíîñòü êîìïðîìèññîâ.
Òî åñòü íåëüçÿ äîáàâëÿòü â ßÏ âñå ÷òî õî÷åòñÿ, òàê êàê âðåçóëüòàòå ìîãóò ïîëó÷èòüñÿ òàêèå ¾ìîíñòðû¿ êàê ÀÄÀ. Àâòîðñêàÿ ïîçèöèÿ ðàññìàòðèâàåò ïî÷åìó äàííàÿêîíñòðóêöèÿ áûëà ðåàëèçîâàíà â äàííîì ÿçûêå â òîì èëè èíîì âèäå. Íàïðèìåð, â Ñ++ íå âîøëè íåêîòîðûåïîíÿòèÿ èç Àäû (õîòÿ êîìèòåò ïî ñòàíäàðòèçàöèè ïðåäëàãàë ââåñòè èõ), â íåì íåò âèðòóàëüíûõ êîíñòðóêòîðîâ, è òàê äàëåå.4.Ñåìèîòå÷åñêàÿ (ñåìèîòèêà íàóêà î çíàêîâûé ñèñòåìàõ).Ðàññìîòðåíèå ñ ýòîé ïîçèöèè ïîçâîëÿåò óâèäåòü ïðîáëåìû êîòîðûå ìîãóò âîçíèêíóòü â ßÏ ñ áîëåå îáùåãî âèäà.
Íàïðèìåð ïðîáëåìà íåîäíîçíà÷íîñòèñîîáùåíèé. (Ñèíòàêñèñ, ñåìàíòèêà, ïðàãìàòèêà). Ïðèìåð ñèíòàêñè÷åñêîé íåîäíîçíà÷íîñòè ñóáúåêò ïîñûëàåò ñîîáùåíèå, à ïðèíèìàþùèé ïî-äðóãîìó èíòåðïðåòèðóåò åãî ñòðóêòóðó (¾Ïðèâåò îñâîáîäèòåëÿì âîñòîêàîò Ôåëèêñà Ýäìóíîâè÷à Äåðæèíñêîãî¿).  ßÏ òàêèõ íåîäíîçíà÷íîñòåé ïðàêòè÷åñêèõ íåò,íî â íåêîòîðûå îíèåñòü. Íàïðèìåðif B1 then if B2then S1else S2Çäåñü íå ÿñíî ê êàêîìó áëîêó îòíîñèòñÿ else.Îäíàêî ïîäîáíûå íåîäíîçíà÷íîñòè ðåøàþòñÿ ëèáî íà ýòàïå îáñóæäåíèå ñòàíäàðòà, ëèáî óæå ïîñëå âûõîäà.Çàìåòèì ÷òî âñå ßÏ èìåþò ïî÷òè âñåãäà îäíîçíà÷íóþ ñèíòàêñè÷åñêóþ ñòðóêòóðó.Ñåìàíòè÷åñêàÿ íåîäíîçíà÷íîñòü òîæå î÷åíü íåïðèÿòíà âåùü, ïðè ýòîì ïðîùå âñåãî íàïèñàòü êîìïèëÿòîð äëÿ ïðîñòîãî ßÏ, êîòîðûé ïîëíîñòüþ óäîâëåòâîðÿåò ñòàíäàðòó.
Õóäøèé âàðèàíò, êîãäà îäèíàêîâûåêîíñòðóêöèè ïî-ðàçíîìó òðàíñëèðóþòñÿ èëè ðåàëèçóþòñÿ áåç íèêàêèõ ñîîáùåíèé îá îøèáêàõ.Ïðàãìàòè÷åñêàÿ îøèáêà (îøèáêà â ïîíèìàíèè ¾çà÷åì?¿). Ìû íå áóäåì ðàññìàòðèâàòü òàêèå îøèáêè.5.Ñîöèàëüíàÿ ïîçèöèÿ.Âñå ßÏ ñîçäàíû ëþäüìè è ôóíêöèîíèðóþò â îáùåñòâå. Òî åñòü ìíîãèå ôåíîìåíû ñâÿçàííûå ñ ßÏ íåîáúÿñíèìû ñ òî÷êè çðåíèÿ ïåðâûõ 4 ïðè÷èí (ýêîëîãè÷åñêèå íèøè, óñïåõ ôîðòðàíà è òàê äàëåå).
Ñ ñîöèàëüíîéòî÷êè çðåíèÿ ìíîãèå ßÏ ÿâëÿþòñÿ õîðîøèìè, äàæå åñëè îíè ïëîõèå ñ îñòàëüíûõ òî÷åê çðåíèÿ, íî òåì íåìåíåå îíè ïîïóëÿðíû èìåííî â ñèëó ñîöèàëüíîé ïîçèöèè. Òàê ñìåíà ßÏ ïðîöåññ äîâîëüíî òÿæåëûé èìåííîäëÿ ëþäåé, òî åñòü ýòî ñîöèàëüíàÿ ïîçèöèÿ.Åùå ïðèìåð 2 êîíêóðèðóþùèå ñèñòåìû ïîä win32 Delphi è Visual Basic, ïî ïåðâûì 4 ïîçèöèÿì Delphiïðåâîñõîäèë VB, íî ïî ñîöèàëüíîé ïîçèöèè îí ñèëüíî ïðîèãðûâàë VB (VB áûë ðàñêðó÷åí).Ïóíêò 2. Îñíîâíûå ïîíÿòèÿ.Òðè îñíîâíûõ ïîíÿòèÿ äàííûå, îïåðàöèè è ñâÿçûâàíèå (ñ÷èòàþòñÿ àòîìàðíûìè è íå îïðåäåëÿþòñÿ). ëþáîì ßÏ åñòü, î÷åâèäíî, äàííûå è îïåðàöèè. ×òî æå êàñàåòñÿ ñâÿçûâàíèÿ, òî îí íåì âïåðâûå çàãîâîðèëè â 70-õ.
Ïîíÿòèå ñâÿçûâàíèå èãðàåò ðîëü íå ìåíüøóþ ÷åì äàííûå è îïåðàöèè. Ïðèìåð ñâÿçûâàíèå ìåõàíèçì ñâÿçûâàíèÿ ôîðìàëüíûõ è ôàêòè÷åñêèõ ïàðàìåòðîâ ( îñíîâíîå çíà÷åíèå ïðèäàåòñÿ âðåìåíèñâÿçûâàíèÿ).Íàïðèìåð i=12; Âàæíî â êàêîé ìîìåíò ïðîèñõîäèò ñâÿçûâàíèå çíà÷åíèÿ i c 12. Íàïðèìåð constint i = 12 íà ýòàïå êîìïèëÿöèè. const X a; âî âðåìÿ çàïóñêà êîíñòðóêòîðà. Âûäåëÿþò íåñêîëüêî ýòàïîâ òðàíñëÿöèè, êîìïîíîâêè, âûïîëíåíèÿ...
Ïðè ýòîì ýòè ýòàïû ìîãóò áûòü ðàñøèðåíû. ×àùå âñåãî âûäåëÿþòñÿ2 ýòàïà ñòàòè÷åñêîå ñâÿçûâàíèå è äèíàìè÷åñêîå ñâÿçûâàíèå. Ñòàòè÷åñêîå âî âðåìÿ òðàíñëÿöèè èëè âîâðåìÿ ðåäàêòèðîâàíèÿ ñâÿçåé. Äèíàìè÷åñêîå âî âðåìÿ âûïîëíåíèÿ.Ðåàëèçàöèÿ ñòðîê (ïàñêàëåâñêèé è Ñèøíûé).10Íåêîòîðûå äàííûå ïðîùå èçîáðàæàòü êàê îïåðàöèè è íàîáîðîò , íàïðèìåð ïîëó÷åíèå äëèíû ñòðîêè äëÿïàñêàëåâñêîé ñòðîêè (äàííûå ïðåäñòàâëÿþòñÿ êàê îïåðàöèÿ).
Îïåðàöèè ïðåäñòàâèìûå êàê äàííûå íàçûâàþòñÿ ñâîéñòâàìè. Íàïðèìåð âèçóàëüíîå îêíî èìååò ïðèâÿçêó (x,y) îáû÷íî êîîðäèíàòû ëåâîé âåðõíåéòî÷êè, è óñòàíîâëåíèå ýòèõ ïàðàìåòðîâ â êëàññå âûçîâ áîëüøîãî ÷èñëà ïðîöåäóð, õîòÿ âûçûâàåòñÿ îíîêàê îïåðàöèè ñ äàííûìè (x = <smth>). Èòàê ýòî òèïè÷íîå ñâîéñòâî, òî åñòü ýòî óäîáíî ðàññìàòðèâàòüêàê äàííûå, íî èçìåíåíèå ýòîãî âûçûâàåò îïåðàöèè.Ðàññìîòðèì áîëåå ïîäðîáíî ïîíÿòèå äàííûõ â ßÏ.
Ïî÷òè âñå äàííûå îáëàäàþò ñëåäóþùèìè àòðèáóòàìè òèï äàííûõ, èìÿ, çíà÷åíèå, âðåìÿ æèçíè, îáëàñòü âèäèìîñòè. Âñå äàííûå ïðèíàäëåæàòü îäíîìó èçíåñêîëüêèõ ìíîæåñòâ òèïîâ äàííûõ. Òèï äàííûõ ýòî ìíîæåñòâî çíà÷åíèé, êîòîðîå îïðåäåëÿåòñÿ ñòðóêòóðîé äàííûõ + íàáîð îïåðàöèé íàä ýòèì òèïîì. Òîëüêî ïî âèäó äàííûõ íåëüçÿ îïðåäåëèòü ÷òî ýòî çà îáúåêòòàê êàê ðàçíûå òèïû äàííûõ ìîãóò èìåòü îäèíàêîâóþ ñòðóêòóðû ( âàæíî çíàíèå ìíîæåñòâà îïåðàöèé è èõñåìàíòèêà).Íåò áåçòèïîâûõ ßÏ åñòü ÿçûêè ñ äèíàìè÷åñêîé òèïèçàöèåé ( òèï îáúåêòà îïðåäåëÿåòñÿ íà ýòàïå ðàáîòûïðîãðàììû), áîëüøèíñòâî òàêèõ ßÏ èíòåðïðåòèðóåìûå. Ïðè ýòîì åñòü ßÏ â êîòîðûõ òèïû äàííûõ ìîãóòâ ÿâíîì âèäå íå ñóùåñòâîâàòü ýòî òàê íàçûâàåìûå ïðîòîòèïíûå ßÏ.Íàïðèìåð â C# ñóùåñòâóåò òàêîå îáúÿâëåíèå êàê var a; òî åñòü îïðåäåëÿåòñÿ ïðîñòî ïåðåìåííàÿ à, òèïêîòîðîé îïðåäåëÿåòñÿ êîãäà åé áóäåò ïðèñâîåíî çíà÷åíèå.
 ïðîòîòèïíûõ æå ßÏ åñòü îïðåäåëåííûå îáúåêòû,ó êîòîðûõ åñòü ñëîòû, â êîòîðûå ìîæíî ïîëîæèòü êàê îáúåêò äàííûõ, òàê è êîä ïðîöåäóðû.  ëþáîìïðîòîòèïíîì ßÏ åñòü îïåðàöèÿ êëîíèðîâàíèÿ, êîòîðàÿ âûäàåò ïîëíóþ êîïèþ îáúåêòà. Ïðèìåðîì òàêèõ ßÏÿâëÿþòñÿ javaScript, self. Ïðè ýòîì â javaScript ýòî ïîíÿòèå íåñêîëüêî çàâóàëèðîâàííî. Self ñòàë èçâåñòåíñîâñåì íåäàâíî.Èòàê â ïðîòîòèïíûõ ßÏ òîæå åñòü òèï äàííûõ, íî åãî îïðåäåëåíèå îòëè÷àåòñÿ îò îïðåäåëåíèÿ òèïàäàííûõ â êëàññè÷åñêèõ ßÏ. Òî åñòü îáúåêò ìîæåò ïåðåõîäèòü èç îäíîãî òèïà äàííûõ â äðóãîé. Êîíòðîëüçà ïîâåäåíèåì îáúåêòà âî âðåìÿ âûïîëíåíèÿ èñõîäÿ èç åãî ñòàòè÷åñêèõ õàðàêòåðèñòèê êâàçèñòàòè÷åñêèéêîíòðîëü.Àòðèáóòû òèïà äàííûõ. íåêîòîðûõ ñëó÷àÿõ èìÿ ÿâëÿåòñÿ åäèíñòâåííûì è ñàìûì âàæíûì àòðèáóòîì èäåíòèôèêàòîðà (àòîì àÿçûêà LISP).
Ïðè ýòîì áûâàþò è áåçûìÿííûå îáúåêòû.(êîíñòàíòà 5 ÿçûêà ïàñêàëü, îáúåêòû ïîëó÷åííûå ïînew). Òàê æå äîïîëíèòåëüíóþ íåíàäåæíîñòü ââîäÿò ßÏ áåç ñáîðêè ìóñîðà â êîòîðûõ àíîíèìíûå îáúåêòû íåîòëè÷àþòñÿ îò èìåíîâàííûõ.  C# ïîÿâèëñÿ ñïåöèàëüíûé ñïåöèôèêàòîð readonly, êîòîðûé ñïåöèôèöèðóåòìîìåíò ñâÿçûâàíèÿ (readonly òîëüêî ñòàòè÷åñêèå).Âðåìÿ æèçíè.Ñâÿçàííî ñ ïîíÿòèåì êëàññà ïàìÿòè. Êëàññû ïàìÿòè ñòàòè÷åñêàÿ ( âñå âðåìÿ ðàáîòû ïðîãðàììû), êâàçèñòàòè÷åñêàÿ (ñòàòè÷åñêèé â ïðåäåëàõ áëîêà), äèíàìè÷åñêàÿ (ñîçäàþòñÿ ïî new malloc è òàê äàëåå, óíè÷òîæåíèå delete, free, èëè ñáîðêà ìóñîðà),persistent(ñîõðàíÿåìûé ìåæäó çàïóñêàìè ïðîãðàììû.
Ðåàëèçóåòñÿòîëüêî áèáëèîòå÷íûìè âûçîâàìè).11Ëåêöèÿ 6Îáëàñòü äåéñòâèÿ (ïîíÿòèå èìååò ñìûñë äëÿ èìåíîâàííûõ îáúåêòîâ äàííûõ) òà ÷àñòü ïðîãðàììû, âêîòîðîé èìÿ äåéñòâèòåëüíî. Âàæíû äâà ïîíÿòèå îïðåäåëÿþùåå âõîæäåíèå èìåíè (îïðåäåëåíèå èëè îáúÿâëåíèå èìåíè), îáû÷íî åäèíñòâåííî, è èñïîëüçóþùåå âõîæäåíèå èìåíè. Áîëüøèíñòâî ßÏ êîíñòðóèðóåòñÿòàê ÷òîá ñóùåñòâîâàëî åäèíñòâåííîå îïðåäåëÿþùåå âõîæäåíèå.Åñòü 2 âèäà îáëàñòåé äåéñòâèÿ ñòàòè÷åñêèå ( îïðåäåëÿþòñÿ ïî òåêñòó ïðîãðàììû åùå äî åå çàïóñêà íàýòàïå êîìïèëÿöèè) è äèíàìè÷åñêèå ( âñòðå÷àþòñÿ ðåäêî).
Ïîíÿòèå áëîêà ñòàòè÷åñêàÿ îáëàñòü äåéñòâèÿ.var i;proc p;var i;beginP1;end p;proc P1;begini:=1;end P1;beginP;P1;end;Òàêàÿ ñòðóêòóðà ïîÿâèëàñü âïåðâûå â ÀËÃÎË 60 è ïåðåøëà ïîòîì âî âñå îñòàëüíûå ßÏ.  ÿçûêàõ ñäèíàìè÷åñêîé îáëàñòüþ äåéñòâèÿ ïîèñê îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ñòåêà ( òî åñòü â ïðè âûçîâå ïðîöåäóðûP1 èç P áóäåò èçìåíåíî çíà÷åíèå ëîêàëüíîé i(òîé ÷òî îïðåäåëåíà â P)). Ñ++ åñòü ïðèìåð äèíàìè÷åñêîé îáëàñòè äåéñòâèÿ - ïîèñê ëîâóøåê ïðè îáðàáîòêå èñêëþ÷åíèé. Íî âîñíîâíîì â ñîâðåìåííûõ ßÏ èñïîëüçóþòñÿ ñòàòè÷åñêèå îáëàñòè äåéñòâèÿ. Ïåðâàÿ ïðè÷èíà ýòîìó ïðîñòîòàîòëàäêè ïðîãðàìì, âòîðàÿ ýôôåêòèâíîñòü ðåàëèçàöèè ( àäðåñ ïåðåìåííîé îïðåäåëåí è íå òðåáóåòñÿ ååïîèñê ïî ñòåêó).Ïóíêò 3.
Êîíöåïòóàëüíàÿ ñõåìà ðàññìîòðåíèÿ.Ãëàâíàÿ ïðîáëåìà ïðåæäå âñåãî ñëîæíîñòü. Âïåðâûå ëþäè ñòîëêíóëèñü ñ ïðîáëåìàìè ïðè ïðîãðàììèðîâàíèè â íà÷àëå 60-õ ïðè ïðîãðàììèðîâàíèè íà OS360. Ðàçðàáîòêà ýòîé ÎÑ øëà òðè ãîäà è êîãäà îíà âûøëà,ñîäåðæàëà îãðîìíîå êîëè÷åñòâî íåýôôåêòèâíîñòåé, ïðè ýòîì ñàìûì ãëàâíûì íåäîñòàòêîì áûëà íåãîòîâíîñòü ñàìîé ñèñòåìû. Áàçèñ êîìïüþòåðîâ, äëÿ êîòîðûõ ïèøóòñÿ ïðîãðàììû î÷åíü âåëèê. Ïðè ýòîì ðàçðûâìåæäó êîìïüþòåðàìè è ðåàëüíûì ìèðîì, êîòîðûé íóæíî îïèñàòü â ïðîãðàììå êðàéíå âåëèê. Äëÿ ïðåîäîëåíèè ýòîãî ïðèäóìàí ìåõàíèçì àáñòðàêöèè.