You are on page 1of 29

6.

ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü


116 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

ÅéóáãùãÞ
Óôá ðñïçãïýìåíá êåöÜëáéá áíáöåñèÞêáìå áíáëõôéêÜ óôçí áíÜðôõîç
ôùí áëãïñßèìùí êáé ôùí äéáöüñùí ôå÷íéêþí. Óôá åðüìåíá êåöÜëáéá èá á-
ó÷ïëçèïýìå ìå ôïí ðñïãñáììáôéóìü äçëáäÞ ôç äéáôýðùóç ôùí áëãïñßè-
ìùí óå ôÝôïéá ìïñöÞ, þóôå íá ìðïñïýí íá õëïðïéçèïýí áðü ôïí õðïëïãé-
óôÞ. Ôï êåöÜëáéï áõôü áó÷ïëåßôáé ìå ãåíéêÝò Ýííïéåò ðïõ åßíáé áðáñáßôç-
ôåò ðñéí áðü ôçí åíáó÷üëçóç ìå ôç äéáäéêáóßá ôïõ ðñïãñáììáôéóìïý. Ïñß-
æåôáé ç Ýííïéá ôïõ ðñïãñÜììáôïò, ðáñïõóéÜæåôáé ìßá óýíôïìç éóôïñßá
ôùí ãëùóóþí ðñïãñáììáôéóìïý êáé ôùí åéäþí ðñïãñáììáôéóìïý, êáèþò
êáé ïé ôå÷íéêÝò ðïõ ÷ñçóéìïðïéïýíôáé ãéá ôç óùóôÞ äçìéïõñãßá ðñïãñáì-
ìÜôùí. ÓõãêåêñéìÝíá ðáñïõóéÜæïíôáé ïé ôå÷íéêÝò ôçò éåñáñ÷éêÞò ó÷åäßá-
óçò ðñïãñáììÜôùí, ôïõ ôìçìáôéêïý ðñïãñáììáôéóìïý êáé êýñéá ïé áñ÷Ýò
ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý. Åðßóçò ðåñéãñÜöåôáé ç äéáäéêáóßá ðïõ
áêïëïõèåßôáé áðü ôç ôç óýíôáîç ôïõ ðñïãñÜììáôïò ìÝ÷ñé ôçí ôåëéêÞ ôïõ
åêôÝëåóç áðü ôïí õðïëïãéóôÞ êáé ôç ëÞøç ôùí áðïôåëåóìÜôùí.

Äéäáêôéêïß óôü÷ïé
Óôü÷ïé ôïõ êåöáëáßïõ áõôïý åßíáé ï ìáèçôÞò :
ë Íá ïñßæåé ôé åßíáé ðñüãñáììá êáé íá êáôáôÜóóåé êáé íá óõãêñßíåé ôéò
ãëþóóåò ðñïãñáììáôéóìïý.
ë Íá áíáãíùñßæåé ôá êõñéüôåñá åßäç ðñïãñáììáôéóìïý êáé íá ðåñéãñÜ-
öåé ôá âáóéêÜ ÷áñáêôçñéóôéêÜ ôùí ôå÷íéêþí ðïõ ÷ñçóéìïðïéïýíôáé.
ë Íá äéáôõðþíåé ôá ðëåïíåêôÞìáôá ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý.
ë Íá ðåñéãñÜöåé ôç äéáäéêáóßá åêôÝëåóçò åíüò ðñïãñÜììáôïò.
ë Íá áíáöÝñåé ôá âáóéêÜ ðñïãñÜììáôá ðïõ ðåñéÝ÷åé Ýíá ðñïãñáììáôé-
óôéêü ðåñéâÜëëïí

ÐñïåñùôÞóåéò
3 Ç äçìéïõñãßá ôïõ áëãïñßèìïõ áñêåß ãéá íá åðéëýóïõìå Ýíá ðñüâëçìá
óôïí õðïëïãéóôÞ;
3 Ðþò äéá÷åéñßæåôáé ôéò ðëçñïöïñßåò ï õðïëïãéóôÞò;
3 Ãíùñßæåéò êÜðïéåò ãëþóóåò ðñïãñáììáôéóìïý;
3 Ðþò êáé ãáôß åîåëßóóïíôáé ïé ãëþóóåò;
3 Ç ýðáñîç óõãêåêñéìÝíùí ìåèïäïëïãéþí êáé ôå÷íéêþí âïçèÜåé óôçí åðß-
ëõóç ôùí ðñïâëçìÜôùí;
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
117

6. 1 Ç Ýííïéá ôïõ ðñïãñÜììáôïò


Ç åðßëõóç åíüò ðñïâëÞìáôïò ìå ôïí õðïëïãéóôÞ ðåñéëáìâÜíåé, üðùò Ý-
÷åé Þäç áíáöåñèåß, ôñßá åîßóïõ óçìáíôéêÜ óôÜäéá.
ë Ôïí áêñéâÞ ðñïóäéïñéóìü ôïõ ðñïâëÞìáôïò.
ë Ôçí áíÜðôõîç ôïõ áíôßóôïé÷ïõ áëãïñßèìïõ.
ë Ôç äéáôýðùóç ôïõ áëãïñßèìïõ óå êáôáíïçôÞ ìïñöÞ áðü ôïí õðïëïãé-
óôÞ.
Ï ðñïãñáììáôéóìüò áó÷ïëåßôáé ìå ôï ôñßôï áõôü óôÜäéï, ôç äçìéïõñãßá
ôïõ ðñïãñÜììáôïò äçëáäÞ ôïõ óõíüëïõ ôùí åíôïëþí ðïõ ðñÝðåé íá äï-
èïýí óôïí õðïëïãéóôÞ, þóôå íá õëïðïéçèåß ï áëãüñéèìïò ãéá ôçí åðßëõóç
ôïõ ðñïâëÞìáôïò. Ôï ðñüãñáììá, ôï ïðïßï ãñÜöåôáé óå êÜðïéá ãëþóóá
ðñïãñáììáôéóìïý, äåí åßíáé áðëÜ ç õëïðïßçóç ôïõ áëãïñßèìïõ, áëëÜ âáóé-
êü óôïé÷åßï ôïõ åßíáé ôá äåäïìÝíá êáé ïé äïìÝò äåäïìÝíùí åðß ôùí ïðïßùí å-
íåñãåß. ÁíáöÝñèçêå Þäç üôé ïé áëãüñéèìïé êáé ïé äïìÝò äåäïìÝíùí åßíáé ìéá
áäéÜóðáóôç åíüôçôá.
Ï ðñïãñáììáôéóìüò åßíáé áõôüò ðïõ äßíåé ôçí åíôýðùóç üôé, ïé õðïëï-
ãéóôÝò åßíáé Ýîõðíåò ìç÷áíÝò ðïõ åðéëýïõí ôá ðïëýðëïêá ðñïâëÞìáôá.
Ç åíôýðùóç áõôÞ üìùò åßíáé áðëþò ìßá øåõäáßóèçóç. Ï õðïëïãéóôÞò,
Ïé ãëþóóåò ðñïãñáììáôé-
ùò ãíùóôüí, åßíáé ìßá ìç÷áíÞ ðïõ êáôáëáâáßíåé ìüíï äýï êáôáóôÜóåéò, ïé óìïý áíáðôý÷èçêáí ìå óêï-
ïðïßåò áíôéðñïóùðåýïíôáé ìå äýï áñéèìïýò ôï ìçäÝí êáé ôï Ýíá, ôá øçößá ðü ôçí åðéêïéíùíßá ôïõ áí-
ôïõ äõáäéêïý óõóôÞìáôïò. Ôï ìüíï ðñÜãìá ðïõ êÜíåé ï õðïëïãéóôÞò åßíáé èñþðïõ (ðñïãñáììáôéóôÞ) ìå
óôïé÷åéþäåéò åíÝñãåéåò óå áêïëïõèßåò áõôþí ôùí äýï øçößùí, áëëÜ áõôÝò ôç ìç÷áíÞ (õðïëïãéóôÞ)
ôéò åíÝñãåéåò ôéò åêôåëåß ìá áóýëëçðôç ôá÷ýôçôá. Ï õðïëïãéóôÞò ìðïñåß á-
ðëÜ íá áðïèçêåýåé óôç ìíÞìç ôéò áêïëïõèßåò ôùí äõáäéêþí øçößùí, íá ôéò
áíáêôÜ, íá êÜíåé óôïé÷åéþäåéò áñéèìçôéêÝò ðñÜîåéò ìå áõôÝò êáé íá ôéò óõ-
ãêñßíåé.

6.2 ÉóôïñéêÞ áíáäñïìÞ


Áðü ôç äçìéïõñãßá ôïõ ðñþôïõ õðïëïãéóôÞ ìÝ÷ñé óÞìåñá Ý÷ïõí áëëÜ-
îåé ðÜñá ðïëëÜ ðñÜãìáôá. Ïé ðñþôïé õðïëïãéóôÝò, ôåñÜóôéïé óå ìÝãåèïò
áëëÜ ìå ðÜñá ðïëý ðåñéïñéóìÝíåò äõíáôüôçôåò êáé ìéêñÝò ôá÷ýôçôáò åðå-
îåñãáóßáò åîåëß÷èçêáí óå ðïëý ìéêñïýò óå ìÝãåèïò õðïëïãéóôÝò ìå ôåñÜ-
óôéåò üìùò äõíáôüôçôåò êáé ôá÷ýôçôåò åðåîåñãáóßáò.
Åíþ ëïéðüí ôï õëéêü (hardware) ôùí õðïëïãéóôþí âåëôéþíåôáé, ôåëåéï-
ðïéåßôáé êáé ôáõôü÷ñïíá ðáñÝ÷åé íÝåò äõíáôüôçôåò åðåîåñãáóßáò, ïé âáóé-
118 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

êÝò áñ÷Ýò ëåéôïõñãßáò ôùí õðïëïãéóôþí ðïõ äéáôõðþèçêáí ôï ìáêñéíü


1945 áðü ôïí Öïí Íüõìáí, äåí Üëëáîáí ðñáêôéêÜ êáèüëïõ. Ôçí ßäéá áñãÞ
åîÝëéîç ïõóéáóôéêÜ Ý÷ïõí êáé ïé ãëþóóåò ðñïãñáììáôéóìïý, ïé ïðïßåò áí
êáé åîåëßóóïíôáé êáé óõíå÷þò åìðëïõôßæïíôáé ìå íÝåò äõíáôüôçôåò, ôá ÷á-
ñáêôçñéóôéêÜ ôïõò êáé ïé âáóéêÝò ôïõò éäéüôçôåò ïõóéáóôéêÜ ðáñáìÝíïõí
ôá ßäéá.

6.2.1 Ãëþóóåò ìç÷áíÞò


Áñ÷éêÜ ãéá íá ìðïñÝóåé ï õðïëïãéóôÞò íá åêôåëÝóåé ìßá ïðïéáäÞðïôå
ëåéôïõñãßá, Ýðñåðå íá äïèïýí êáôåõèåßáí ïé êáôÜëëçëåò áêïëïõèßåò áðü 0
Åíá ðñüãñáììá óå ãëþóóá êáé 1, äçëáäÞ åíôïëÝò óå ìïñöÞ êáôáíïçôÞ áðü ôïí õðïëïãéóôÞ áëëÜ áêá-
ìç÷áíÞò åßíáé ìéá áêïëïõèßá ôáíüçôåò áðü ôïí Üíèñùðï. Ï ôñüðïò áõôüò Þôáí åðßðïíïò êáé åëÜ÷éóôïé
äõáäéêþí øçößùí, ðïõ áðï- ìðïñïýóáí íá ôïí õëïðïéÞóïõí, áöïý áðáéôïýóå âáèéÜ ãíþóç ôïõ õëéêïý
ôåëïýí åíôïëÝò ðñïò ôïí å- êáé ôçò áñ÷éôåêôïíéêÞò ôïõ õðïëïãéóôÞ.
ðåîåñãáóôÞ ãéá óôïé÷åéþäåéò
ëåéôïõñãßåò. Ï ðñþôïò õðïëïãéóôÞò ï ðåñßöçìïò ENIAC ãéá íá “ðñïãñáììáôéóôåß”,
þóôå íá åêôåëÝóåé êÜðïéïõò õðïëïãéóìïýò, Ýðñåðå íá áëëÜîïõí èÝóç åêá-
ôïíôÜäåò äéáêüðôåò êáé íá ñõèìéóôïýí áíôßóôïé÷á üëåò ïé êáëùäéþóåéò,
äéáäéêáóßá åîáéñåôéêÜ åðßðïíç êáé ÷ñïíïâüñá. Ï “ðñïãñáììáôéóìüò” ôùí
ðñþôùí áõôþí õðïëïãéóôþí, äåí Þôáí ïõóéáóôéêÜ ðñïãñáììáôéóìüò ìå
ôç óçìåñéíÞ Ýííïéá ôïõ üñïõ. Ï õðïëïãéóôÞò áíáäéáñèñùíüôáí, þóôå íá å-
êôåëÝóåé ôïõò áðáéôïýìåíïõò õðïëïãéóìïýò êáé óôç óõíÝ÷åéá Ýðñåðå íá
áëëÜîåé ðÜëé ç äéÜñèñùóÞ ôïõ, þóôå íá åêôåëÝóåé Ýíáí Üëëï õðïëïãéóìü.
Ïé åíôïëÝò åíüò ðñïãñÜììáôïò êáé óÞìåñá ìåôáôñÝðïíôáé óå áêïëïõ-
èßåò ðïõ áðïôåëïýíôáé áðü 0 êáé 1, ôéò åíôïëÝò óå ãëþóóá ìç÷áíÞò, üðùò
ïíïìÜæïíôáé, ïé ïðïßåò åêôåëïýíôáé áðü ôïí õðïëïãéóôÞ.

6.2.2 ÓõìâïëéêÝò ãëþóóåò Þ ãëþóóåò ÷áìçëïý åðéðÝäïõ


Áðü ôá ðñþôá ÷ñüíéá Üñ÷éóáí íá ãßíïíôáé ðñïóðÜèåéåò ãéá ôç äçìéïõñ-
ãßá ìßáò óõìâïëéêÞò ãëþóóáò, ç ïðïßá åíþ èá Ý÷åé Ýííïéá ãéá ôïí Üíèñùðï,
èá ìåôáôñÝðåôáé åóùôåñéêÜ áðü ôïõò õðïëïãéóôÝò óôéò áíôßóôïé÷åò áêï-
ëïõèßåò áðü 0 êáé 1. Ãéá ðáñÜäåéãìá ç ëÝîç ADD (ðñüóèåóå) áêïëïõèïýìå-
íç áðü äýï áñéèìïýò, åßíáé êáôáíïçôÞ áðü ôïí Üíèñùðï êáé áðïìíçìï-
íåýåôáé ó÷åôéêÜ åýêïëá. Ç åíôïëÞ áõôÞ èá ìåôáöñáóôåß áðü ôïí õðïëïãé-
óôÞ óå ìßá áêïëïõèßá äõáäéêþí øçößùí êáé óôç óõíÝ÷åéá ìðïñåß íá åêôåëå-
óôåß. Ôï Ýñãï ôçò ìåôÜöñáóçò ôï áíáëáìâÜíåé Ýíá åéäéêü ðñüãñáììá, ï
óõìâïëïìåôáöñáóôÞò (assembler).
Ç ÷ñÞóç ôùí ðñþôùí áõôþí óõìâïëéêþí ãëùóóþí, ðïõ óõíå÷ßæïõí íá
÷ñçóéìïðïéïýíôáé ãéá åéäéêïýò óêïðïýò, Þôáí óáöþò ìéá åîÝëéîç áðü ôéò á-
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
119

êáôáíüçôåò áêïëïõèßåò äõáäéêþí óôïé÷åßùí. Ùóôüóï ðáñÝìåíáí óôåíÜ


óõíäåäåìÝíåò ìå ôçí áñ÷éôåêôïíéêÞ ôïõ êÜèå õðïëïãéóôÞ. Åðßóçò äåí äéÝèå-
ôáí åíôïëÝò ðéï óýíèåôùí ëåéôïõñãéþí ïäçãþíôáò Ýôóé óå ìáêñïóêåëÞ
ðñïãñÜììáôá, ðïõ Þôáí äýóêïëï íá ãñáöïýí êáé êýñéá íá óõíôçñçèïýí.
Áêüìç ôá ðñïãñÜììáôá äåí ìðïñïýí íá ìåôáöåñèïýí óå Üëëïí äéáöïñåôé-
êü õðïëïãéóôÞ, áêüìç êáé ôïõ ßäéïõ êáôáóêåõáóôÞ. Ïé ãëþóóåò áõôÝò ïíï- Ïé åíôïëÝò óå óõìâïëéêÞ
ãëþóóá áðïôåëïýíôáé áðü
ìÜæïíôáé óõìâïëéêÝò Þ ãëþóóåò ÷áìçëïý åðéðÝäïõ, áöïý åîáñôþíôáé áðü
óõìâïëéêÜ ïíüìáôá ðïõ áíôé-
ôçí áñ÷éôåêôïíéêÞ ôïõ õðïëïãéóôÞ. óôïé÷ïýí óå åíôïëÝò ôçò
ãëþóóáò ìç÷áíÞò. Ïé óõìâï-
10101000 00001010 INDEX=$01 sum = 0 ëéêÝò ãëþóóåò åßíáé óõíäå-
FOR index=1 TO 10 äåìÝíåò ìå ôçí áñ÷éôåêôïíé-
10001100 00000001 SUM=$02
êÞ êÜèå õðïëïãéóôÞ
00111100 LDA #10 sum=sum+index
01010001 00000001 STA INDEX NEXT index
01000011 00000001 CLA END
11000000 11111010 LOOP ADD INDEX
10001100 00000010 DEC INDEX
BNE LOOP
11111111
STA SUM
BRK

Ó÷. 6.1. Åíá ðñüãñáììá óå ãëþóóá ìç÷áíÞò, óå óõìâïëéêÞ ãëþóóá êáé óå ãëþóóá
õøçëïý åðéðÝäïõ ãéá ôïí õðïëïãéóìü ôïõ áèñïßóìáôïò ôùí áñéèìþí 1 Ýùò 10

6.2.3 Ãëþóóåò õøçëïý åðéðÝäïõ


Ïé ðáñáðÜíù áíåðÜñêåéåò ôùí óõìâïëéêþí ãëùóóþí êáé ç ðñïóðÜ-
èåéá ãéá êáëýôåñç åðéêïéíùíßá áíèñþðïõ-ìç÷áíÞò, ïäÞãçóáí óôá ôÝëç ôçò
äåêáåôßáò ôïõ 50 óôçí åìöÜíéóç ôùí ðñþôùí ãëùóóþí ðñïãñáììáôéóìïý
õøçëïý åðéðÝäïõ.
Ôï 1957 ç IBM áíÜðôõîå ôçí ðñþôç ãëþóóá õøçëïý åðéðÝäïõ ôç
FORTRAN. Ôï üíïìá FORTRAN ðñïÝñ÷åôáé áðü ôéò ëÝîåéò FORmula
TRANslation, ðïõ óçìáßíïõí ìåôÜöñáóç ôýðùí. Ç FORTRAN áíáðôý÷èç-
êå ùò ãëþóóá êáôÜëëçëç ãéá ôçí åðßëõóç ìáèçìáôéêþí êáé åðéóôçìïíéêþí
ðñïâëçìÜôùí. Ôï ðñüãñáììá ðïõ ãñÜöåôáé óå FORTRAN Þ óå ïðïéáäÞðï-
ôå Üëëç ãëþóóá õøçëïý åðéðÝäïõ, ìåôáöñÜæåôáé áðü ôïí ßäéï ôïí õðïëï-
ãéóôÞ óôéò áêïëïõèßåò ôùí åíôïëþí ôçò ìç÷áíÞò ìå ôç âïÞèåéá åíüò åéäéêïý
ðñïãñÜììáôïò, ðïõ ïíïìÜæåôáé ìåôáãëùôôéóôÞò. Ôï ßäéï ðñüãñáììá
FORTRAN ìðïñåß íá åêôåëåóôåß óå ïðïéïäÞðïôå Üëëï õðïëïãéóôÞ, áñêåß íá
õðÜñ÷åé ï áíôßóôïé÷ïò ìåôáãëùôôéóôÞò ãéá ôïí õðïëïãéóôÞ áõôü. Ç ãëþó-
óá FORTRAN ìåôÜ áðü ðïëëÝò áëëáãÝò, ðñïóèÞêåò êáé âåëôéþóåéò ÷ñçóé-
ìïðïéåßôáé áêüìç êáé óÞìåñá ãéá åðéóôçìïíéêÝò åöáñìïãÝò.
120 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

C PROGRAM EQUATION
READ(*,1) A,B
1 FORMAT(F5.1)
IF (A.EQ.0) GO TO 20
X=(-1.)*B/A
WRITE(*,2) X
2 FORMAT(‘X=’,F10.2)
GO TO 50
20 IF (B.EQ.0) WRITE(*,3)
IF (B.NE.0) WRITE(*,4)
3 FORMAT(‘ÁÏÑÉÓÔÇ’)
4 FORMAT(‘ÁÄÕÍÁÔÇ’)
50 STOP
END

Ó÷.6.2. Ç ãëþóóá FORTRAN õðÞñîå ç ðñþôç ãëþóóá ðñïãñáììáôéóìïý õøçëïý åðé-


ðÝäïõ. Ðñüêåéôáé ãéá ãëþóóá êáôÜëëçëç ãéá õðïëïãéóìïýò, åíþ õóôåñåß óôç äéá÷åß-
ñéóç áñ÷åßùí äåäïìÝíùí êáé ãåíéêüôåñá áëöáñéèìçôéêþí ðëçñïöïñéþí. Ãíþñéóå
ðïëëÝò âåëôéþóåéò ìå êõñéüôåñïõò óôáèìïýò ôéò åêäüóåéò 4, 77, 90/95 êáé Visual
FORTRAN. Ôï ðñüãñáììá ôïõ ðáñáäåßãìáôïò åðéëýåé ôçí åîßóùóç á’ âáèìïý.

Ç FORTRAN ðáñÜ ôá éó÷õñÜ ÷áñáêôçñéóôéêÜ ôçò êáé ôéò óõíå÷åßò áëëá-


ãÝò ðïõ ôç êáèéóôïýóáí óõíå÷þò áðïôåëåóìáôéêüôåñç, äåí ìðïñïýóå íá
êáëýøåé ôéò áðáéôÞóåéò óå üëïõò ôïõò ôïìåßò äñáóôçñéïôÞôùí, üðùò êáé
êáìßá Üëëç ãëþóóá ðñïãñáììáôéóìïý äåí êáôÜöåñå. ¸ôóé áíáðôý÷èçêáí
êáé óõíå÷ßæïõí íá áíáðôýóóïíôáé ðïëëÝò ãëþóóåò ðñïãñáììáôéóìïý ãéá
äéÜöïñåò ðåñéï÷Ýò äñáóôçñéïôÞôùí.
Ôï 1960 áíáðôý÷èçêå ìßá Üëëç ãëþóóá, óôáèìüò óôïí ðñïãñáììáôé-
óìü ç ãëþóóá COBOL. Ç COBOL üðùò äçëþíåé êáé ôï üíïìá ôçò (CÏm-
mon Business Oriented Language - ÊïéíÞ ãëþóóá ðñïóáíáôïëéóìÝíç óôéò å-
ðé÷åéñÞóåéò) åßíáé êáôÜëëçëç ãéá áíÜðôõîç åìðïñéêþí åöáñìïãþí, êáé ãå-
íéêüôåñá äéá÷åéñéóôéêþí åöáñìïãþí, ôïìÝáò üðïõ ç FORTRAN õóôåñïýóå.
Ç COBOL êáèéåñþèçêå ùò ðñüôõðï êáé ÷ñçóéìïðïéÞèçêå áðü ðïëëÝò åðé-
÷åéñÞóåéò êáèþò êáé áðü üëç ôç äçìüóéá äéïßêçóç. Ç ãëþóóá ãíþñéóå ðïë-
ëÝò åêäüóåéò êáé ðÜñá ðïëëÝò åöáñìïãÝò âñßóêïíôáé óå ÷ñÞóç áêüìç êáé
óÞìåñá.
Ìéá áðü ôéò óçìáíôéêüôåñåò ãëþóóá ðñïãñáììáôéóìïý ìå åëÜ÷éóôç
ðñáêôéêÞ åöáñìïãÞ áëëÜ ðïõ åðçñÝáóå éäéáßôåñá ôïí ðñïãñáììáôéóìü
êáé ôéò åðüìåíåò ãëþóóåò, åßíáé ç ALGOL (ALGOrithmic Language – Áëãïñéè-
ìéêÞ ãëþóóá). Áíáðôý÷èçêå áðü Åõñùðáßïõò åðéóôÞìïíåò, áñ÷éêÜ ôï
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
121

IDENTIFICATION DIVISION.
PROGRAM-ID. EQUATION.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC.
OBJECT-COMPUTER. IBM-PC.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 X PIC S9(6)V9.
77 A PIC S9(6).
77 B PIC S9(6).
77 W-X PIC -(6),-.
PROCEDURE DIVISION.
ARXH.
DISPLAY ‘ ÄÙÓÅ Á’.
ACCEPT A.
DISPLAY ‘ ÄÙÓÅ Â’.
ACCEPT B.
DISPLAY ‘ ‘.
IF A = 0 GO TO ROYT-1.
COMPUTE X = B * (- 1) / A.
MOVE X TO W-X.
DISPLAY ‘ H ËÕÓÇ ÅÉÍÁÉ : ‘ W-X.
STOP RUN.
ROYT-1.
IF B = 0
DISPLAY ‘ ÁÏÑÉÓÔÇ’
ELSE
DISPLAY ‘ ÁÄÕÍÁÔÇ’.
STOP RUN.

Ó÷. 6.3. Ç ãëþóóá COBOL äçìéïõñãÞèçêå áðü ôçí Grace Marray Hopper áîéùìáôéêü
ôïõ ðïëåìéêïý íáõôéêïý ôùí ÇÐÁ ôï 1960. Ç COBOL Ýêáíå äõíáôÞ ôçí áîéïðïßçóç ôùí
-
õðïëïãéóôþí áðü ôéò åðé÷åéñÞóåéò êáé ôïõò ïñãáíéóìïýò ðáñÝ÷ïíôáò éó÷õñüôáôåò äõ
íáôüôçôåò äéá÷åßñéóçò áñ÷åßùí äåäïìÝíùí. Åíá ðñüãñáììá COBOL äéáèÝôåé ôÝóóåñéò
õðïäéáéñÝóåéò (divisions). Ç ãëþóóá ÷ñçóéìïðïéåß ðåñéãñáöéêü ôñüðï ãéá ôç óýíôáîç
ôùí åíôïëþí ìå ÷ñÞóç ñçìÜôùí ôçò áããëéêÞò ãëþóóáò, üðùò ADD, MULTIPLY, MOVE
ê.ëð. ìå áðïôÝëåóìá ôç äçìéïõñãßá ãåíéêÜ ìáêñïóêåëþí ðñïãñáììÜôùí. - ÊÜèå åíôï
ëÞ ôçò ãëþóóáò ôåñìáôßæåôáé ìå ôåëåßá. Ôï ðñüãñáììá ôïõ ðáñáäåßãìáôïò åðéëýåé
ôçí åîßóùóç á’ âáèìïý.
122 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

10 REM ÅÐÉËÕÓÇ ÅÎÉÓÙÓÇÓ Á’ÂÁÈÌÏÕ


20 INPUT “A=”,A
30 INPUT “B=”,B
40 IF A=0 THEN 100
50 X=-B/A
60 PRINT “X=”;X
70 END
100 IF B=0 THEN PRINT “ÁÏÑÉÓÔÇ” ELSE PRINT “ÁÄÕÍÁÔÇ”
110 END

Ó÷. 6.4. Ç ãëþóóá BASIC äçìéïõñãÞèçêå ôï 1964 óôï Dartmouth College áðü
- ôïõò êá
èçãçôÝò Kemeny êáé Kurtz. Óôü÷ïò ôùí äçìéïõñãþí ôçò Þôáí ç õëïðïßçóç ìéáò áðëÞò
ãëþóóáò ðñïãñáììáôéóìïý ãéá åêðáéäåõôéêïýò óêïðïýò. Ç BASIC ãíþñéóå - åêðëçêôé
êÞ äéÜäïóç ìå ôçí åìöÜíéóç ôùí ìéêñïûðïëïãéóôþí (1975). Ï ðñþôïò äéåñìçíåõôÞò
ôçò ãëþóóáò óå 8Ê ROM Þôáí Ýñãï ôùí Bill Gates êáé Paul Allen. Áò óçìåéùèåß
- üôé, ç å
ôáéñßá Microsoft éäñýèçêå áðü ôïí Bill Gates ãéá ôçí åìðïñéêÞ åêìåôÜëëåõóç áõôïý
ôïõ äéåñìçíåõôÞ. Ç Ýêäïóç GWBASIC ðáñïõóéÜæåôáé ôï 1981 ìå ôïí IBM PC. Êýñéï ÷á-
ñáêôçñéóôéêü ôçò ãëþóóáò åßíáé ç ýðáñîç áñéèìþí ôùí ãñáììþí ôïõ ðñïãñÜììáôïò,
ïé ïðïßïé ÷ñçóéìïðïéïýíôáé êáé ùò èÝóåéò ðñïïñéóìïý åíôïëþí äéáêëÜäùóçò. ÅîÝëéîç
ôçò ãëþóóáò åßíáé ïé åêäüóåéò QuickBASIC êáé Visual BASIC. Ôï ðñüãñáììá ôïõ ðáñá-
äåßãìáôïò åðéëýåé ôçí åîßóùóç á’ âáèìïý.

1960, ìå óêïðü ôç äçìéïõñãßá ãåíéêÞò öýóçò ðñïãñáììÜôùí ðïõ íá ìç


óõíäÝïíôáé ìå óõãêåêñéìÝíåò åöáñìïãÝò.
Óôá ìÝóá ôçò äåêáåôßáò ôïõ 60 áíáðôý÷èçêå ç ãëþóóá PL/1
(Programming Language/1 – Ãëþóóá Ðñïãñáììáôéóìïý õð´ áñéèìüí 1) ðïõ
ðñïóðÜèçóå, ÷ùñßò åðéôõ÷ßá íá êáëýøåé üëïõò ôïõò ôïìåßò ôïõ ðñïãñáì-
ìáôéóìïý, åðéóôçìïíéêïýò êáé åìðïñéêïýò, áíôéêáèéóôþíôáò ôüóï ôç
FORTRAN üóï êáé ôçí COBOL .
Óôï ÷þñï ôçò Ôå÷íçôÞò Íïçìïóýíçò áíáðôý÷èçêáí äýï ãëþóóåò áñêå-
ôÜ äéáöïñåôéêÝò áðü üëåò ôéò Üëëåò. Óôá ìÝóá ôïõ 60 áíáðôý÷èçêå óôï
ÌÉÔ ç LISP (LISt Processor- ÅðåîåñãáóôÞò Ëßóôáò), ãëþóóá ç ïðïßá ðñïóá-
íáôïëßæåôáé óå ÷åéñéóìü ëéóôþí áðü óýìâïëá êáé ç PROLOG
(PROgramming LOGic –Ëïãéêüò Ðñïãñáììáôéóìüò) óôéò áñ÷Ýò ôïõ 70. Ïé
äýï áõôÝò ãëþóóåò ÷ñçóéìïðïéïýíôáé óå ðñïâëÞìáôá Ôå÷íçôÞò íïçìïóý-
íçò (Ýìðåéñá óõóôÞìáôá, ðáéãíßäéá, åðåîåñãáóßá öõóéêþí ãëùóóþí
ê.ëð.).
Äýï óçìáíôéêüôáôåò ãëþóóåò ãåíéêïý óêïðïý, ïé ïðïßåò áíáðôý÷èçêáí
ôç äåêáåôßá ôïõ 60 áëëÜ ÷ñçóéìïðïéïýíôáé ðÜñá ðïëý óôéò çìÝñåò ìáò, åß-
íáé ç BASIC êáé ç PASCAL.
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
123

TO KYBOS :A
REPEAT 4 [FD :A RT 90]
PU SETPOS [20 20] PD
REPEAT 4 [FD :A RT 90]
PU HOME PD
REPEAT 2 [FD :A RT 45 FD 29 RT 135]
PU SETX :A SETY 0 PD
REPEAT 2 [FD :A RT 45 FD 29 RT 135]
HOME
END

Ó÷. 6.5. Ç ãëþóóá ðñïãñáììáôéóìïý LOGO ïëïêëçñþèçêå ôï 1967 óôç Âïóôþíç áðü
ôïí Seymoyr Papert. Ôï üíïìÜ ôçò ðñïÝñ÷åôáé áðü ôçí åëëçíéêÞ ëÝîç “ëüãïò”.
- Ðñü
êåéôáé ãéá ãëþóóá êáôÜëëçëç ãéá ôçí åéóáãùãÞ óôïí ðñïãñáììáôéóìü-ìáèçôþí ìé
êñÞò çëéêßáò. Ôï ðñüãñáììá ôïõ ðáñáäåßãìáôïò ó÷åäéÜæåé Ýíáí êýâï áêìÞò
- Á ìå äéá
äï÷éêÝò êéíÞóåéò ôçò ÷åëþíáò.

Ç ãëþóóá ðñïãñáììáôéóìïý BASIC (Beginner’s All Purpose Symbolic


Instruction Code – Óõìâïëéêüò Êþäéêáò Åíôïëþí ÃåíéêÞò ×ñÞóçò ãéá Áñ÷Ü-
ñéïõò) áñ÷éêÜ áíáðôý÷èçêå, üðùò äçëþíåé êáé ôï üíïìá ôçò, ùò ãëþóóá
ãéá ôçí åêðáßäåõóç áñ÷áñßùí óôïí ðñïãñáììáôéóìü. Ó÷åäéÜóôçêå ãéá íá
ãñÜöïíôáé óýíôïìá ðñïãñÜììáôá, ôá ïðïßá åêôåëïýíôáé ìå ôç âïÞèåéá
äéåñìçíåõôÞ (interpreter). Ç áíÜðôõîç üìùò ôùí ìéêñïûðïëïãéóôþí êáé ïé
óõíå÷åßò åêäüóåéò ôçò ãëþóóáò âïÞèçóáí óôçí åîÜðëùóÞ ôçò, ôüóï þóôå
íá ãßíåé ßóùò ç äçìïöéëÝóôåñç ãëþóóá óôïõò ðñïóùðéêïýò õðïëïãéóôÝò.
Ç ôõðïðïßçóç ôçò äå áðü ôç Microsoft ìå ôéò åêäüóåéò QuickBasic êáé êýñéá
ìå ôç Visual Basic, êáèéÝñùóå ôç ãëþóóá ùò ðñüôõðï ãéá áíÜðôõîç åöáñ-
ìïãþí óå ðñïóùðéêïýò õðïëïãéóôÝò
Ç ãëþóóá PASCAL (äçìéïýñãçìá ôïõ êáèçãçôÞ Niklaus Wirth) Ýöåñå ìå-
ãÜëåò áëëáãÝò óôïí ðñïãñáììáôéóìü. ÐáñïõóéÜóôçêå ôï 1970 êáé óôçñß-
÷ôçêå ðÜíù óôçí ALGOL. Åßíáé ìßá ãëþóóá ãåíéêÞò ÷ñÞóçò, ç ïðïßá åßíáé
êáôÜëëçëç ôüóï ãéá ôçí åêðáßäåõóç üóï êáé ôç äçìéïõñãßá éó÷õñþí ðñï-
ãñáììÜôùí êÜèå ôýðïõ. ×áñáêôçñéóôéêü ôçò ãëþóóáò åßíáé ç ç êáôáëëçëü-
ôçôá ãéá ôç äçìéïõñãßá äïìçìÝíùí ðñïãñáììÜôùí. Ç PASCAL ãíþñéóå êáé
óõíå÷ßæåé íá ãíùñßæåé ôåñÜóôéá åîÜðëùóç åéäéêÜ óôï ÷þñï ôùí ìéêñïûðï-
ëïãéóôþí êáé áðïôÝëåóå ôç âÜóç ãéá ôçí áíÜðôõîç Üëëùí éó÷õñüôåñùí
ãëùóóþí üðùò ç ADA êáé ç Modula-2.
Óôá ìÝóá ôïõ 1960 ðáñïõóéÜóôçêå ãéá ðñþôç öïñÜ ìßá ôå÷íéêÞ ó÷åäßá-
óçò ðñïãñáììÜôùí ðïõ Ýìåëëå íá áëëÜîåé ñéæéêÜ ôïí ôñüðï áíÜðôõîçò
ðñïãñáììÜôùí êáèþò êáé ôéò ßäéåò ôéò ãëþóóåò ðñïãñáììáôéóìïý. Ç ôå÷íé-
êÞ ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý ç ïðïßá åîáóöáëßæåé ôç äçìéïõñãßá
124 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

(DEFUN a-exisosi (a b)
(setf apot (- (/ b a)))
(princ “Ç åîßóùóç ”)
(princ a)
(princ “x + ”)
(princ b)
(princ “ = 0 Ý÷åé óáí ëýóç ÷ = ”)
(princ apot))

Ó÷. 6.6. Ç ãëþóóá LISP äçìéïõñãÞèçêå ôï 1959 óôï ÌÉÔ. Ðñüêåéôáé ãéá ìç- äéáäéêáóéá
êÞ ãëþóóá ðïõ ðñïïñßæåôáé ãéá ôçí åðåîåñãáóßá óõìâïëéêþí äåäïìÝíùí. Âáóéêüò
ôýðïò äåäïìÝíùí, áðü ôïí ïðïßï åî Üëëïõ ðÞñå êáé ôï üíïìÜ ôçò, åßíáé -ç óõíäåäåìÝ
íç ëßóôá. Óôï ðáñÜäåéãìá öáßíåôáé ìéá óõíÜñôçóç ôçò ãëþóóáò, ðïõ åðéëýåé
- ôçí åîß
óùóç á’ âáèìïý. Ôï ðñüãñáììá åêôåëåßôáé äßíïíôáò óôç ãñáììÞ åíôïëþí ð.÷.
(a-exisosi 2 5).

ðñïãñáììÜôùí áðëþí óôç óõããñáöÞ êáé ôçí êáôáíüçóç êáé åýêïëùí óôç
äéüñèùóç. Ï äïìçìÝíïò ðñïãñáììáôéóìüò êáé ôá ÷áñáêôçñéóôéêÜ ôïõ èá
ðáñïõóéáóôïýí åêôåíþò óå åðüìåíç ðáñÜãñáöï.
Ìßá áêüìç ãëþóóá ðïõ ãíþñéóå ìåãÜëç äéÜäïóç åßíáé ç ãëþóóá C. Ç C
áíáðôý÷èçêå óôá åñãáóôÞñéá ôçò åôáéñåßáò BELL êáé ÷ñçóéìïðïéÞèçêå ãéá
ôçí áíÜðôõîç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò Unix, ãëþóóá ìå éó÷õñÜ ÷á-
ñáêôçñéóôéêÜ, ìåñéêÜ áðü áõôÜ êïéíÜ ìå ôçí Pascal êáôÜëëçëç ãéá áíÜðôõ-
îç äïìçìÝíùí åöáñìïãþí áëëÜ êáé ìå ðïëëÝò äõíáôüôçôåò ãëþóóáò ÷áìç-
ëïý åðéðÝäïõ. Ç C åîåëß÷ôçêå óôç ãëþóóá C++, ðïõ åßíáé áíôéêåéìåíï-
óôñáöÞò. Ç éäÝá ôïõ áíôéêåéìåíïóôñáöïýò ðñïãñáììáôéóìïý ðáñïõóéÜ-
óôçêå ãéá ðñþôç öïñÜ óôç äåêáåôßá ôïõ 70 êáé óõíå÷ßæåé áêüìç íá áðëþ-
íåôáé áëëÜæïíôáò ôïí ðáñáäïóéáêü ðñïãñáììáôéóìü. Ëüãù ôçò óçìáóßáò
ôïõ áíôéêåéìåíïóôñáöïýò ðñïãñáììáôéóìïý ìåñéêÜ óôïé÷åßá ôïõ ðáñïõ-
óéÜæïíôáé óå îå÷ùñéóôÞ ðáñÜãñáöï.
Ôá ôåëåõôáßá ÷ñüíéá ÷ñçóéìïðïéåßôáé éäéáßôåñá, åéäéêÜ ãéá ðñïãñáììáôé-
óìü óôï Äéáäßêôõï (Internet), ç JAVA. H JAVA åßíáé ìßá áíôéêåéìåíïóôñáöÞò
ãëþóóá ðïõ áíáðôý÷èçêå áðü ôçí åôáéñåßá SUN ìå óêïðü ôçí áíÜðôõîç
åöáñìïãþí, ðïõ èá åêôåëïýíôáé óå êáôáíåìçìÝíá ðåñéâÜëëïíôá, äçëáäÞ
óå äéáöïñåôéêïýò õðïëïãéóôÝò ïé ïðïßïé åßíáé óõíäåäåìÝíïé óôï Äéáäßêôõï.
Ôá ðñïãñÜììáôá áõôÜ ìðïñïýí íá åêôåëïýíôáé áðü äéáöïñåôéêïýò õðï-
ëïãéóôÝò, ðñïóùðéêïýò Þ ìåãÜëá óõóôÞìáôá ìå äéáöïñåôéêÜ ëåéôïõñãéêÜ
óõóôÞìáôá ÷ùñßò áëëáãÝò.
Ç åìöÜíéóç ôùí ãñáöéêþí ðåñéâáëëüíôùí åñãáóßáò äçìéïýñãçóå ôçí
áíÜãêç ãéá áíÜðôõîç ðñïãñáììÜôùí ðïõ íá åêìåôáëëåýïíôáé ôïí ãñáöé-
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
125

#include <stdio.h>

int main(int argc, char* argv[])


{
float a, b;

printf(“A = ”);
scanf(“%f”, &a);
printf(“B = ”);
scanf(“%f”, &b);
if (a == 0) {
if (b == 0) {
printf(“ÁÏÑÉÓÔÇ\n”);
}
else {
printf(“ÁÄÕÍÁÔÇ\n”);
}
}
else {
printf(“X = %f\n”, -b/a);
}

return 0;
}

Ó÷. 6.7. Ç ãëþóóá ðñïãñáììáôéóìïý C áíáðôý÷èçêå óôá åñãáóôÞñéá Bell-ôçò áìåñé


êáíéêÞò åôáéñßáò Áô&Ô ôï 1972 áðü ôïí Dennis Ritchie. Ç ãëþóóá C åßíáé ìéá äïìçìÝíç
äéáäéêáóéáêÞ ãëþóóá ãåíéêÞò ÷ñÞóçò ðïõ ÷áñáêôçñßæåôáé áðü ëéôüôçôá - óôçí Ýêöñá
óç êáé ìéá ðëïýóéá óõëëïãÞ ôåëåóôþí êáé ôýðùí äåäïìÝíùí. ÓôåíÜ óõíäåäåìÝíç ìå
-
ôï UNIX, ç ãëþóóá C ÷ñçóéìïðïéåßôáé åõñýôáôá ãéá ôç äçìéïõñãßá ëåéôïõñãéêþí óõ
óôçìÜôùí êáé Üëëùí ðáêÝôùí ëïãéóìéêïý. Ôï ðñüãñáììá ôïõ ðáñáäåßãìáôïò åðéëýåé
ôçí åîßóùóç á’ âáèìïý.

êü áõôü ôñüðï åðéêïéíùíßáò ÷ñÞóôç-õðïëïãéóôÞ. Óôá ðåñéóóüôåñá ðñï-


ãñáììáôéóôéêÜ ðåñéâÜëëïíôá ðïõ õðÞñ÷áí, Þôáí ðïëý äýóêïëç Ýùò áäý-
íáôç ç áíÜðôõîç åöáñìïãþí, éêáíþí íá åêìåôáëëåýïíôáé ôá ãñáöéêÜ áõ-
ôÜ ÷áñáêôçñéóôéêÜ.
¸ôóé åìöáíßóôçêáí ãëþóóåò Þ íÝåò åêäüóåéò ôùí ãëùóóþí ðïõ õëï-
ðïéïýóáí ôéò Ýííïéåò ôïõ ïäçãïýìåíïõ áðü ôï ãåãïíüò ðñïãñáììáôéóìïý
(object driven programming) êáé ôïõ ïðôéêïý ðñïãñáììáôéóìïý (visual
programming).
126 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

CLEAR
? “1. ÅÉÓÁÃÙÃÇ ÓÔÏÉ×ÅÉÙÍ”
? “2. ÅÊÔÕÐÙÓÇ ÅÔÉÊÅÔÙÍ”
? “3. ÐÑÏÂÏËÇ”
? “4. ÔÅËÏÓ”
INPUT “ÅðéëÝîôå [1..4] : “ TO CHOICE
DO CASE
CASE CHOICE=1
APPEND
CASE CHOICE=2
LABEL FORM PELATES
CASE CHOICE=3
BROWSE
OTHERWISE
QUIT
END CASE

Ó÷. 6.8. Ç dBASE ðáñïõóéÜóôçêå óôá ôÝëç ôçò äåêáåôßáò ôïõ 70 áðü ôçí åôáéñßá
Ashton-Tate áñ÷éêÜ ãéá ìéêñïõðïëïãéóôÝò 8-bit êáé áñãüôåñá ãéá ðñïóùðéêïýò õðï-
ëïãéóôÝò. Ç dBASE õðÞñîå ï óðïõäáéüôåñïò åêðñüóùðïò åîåëéãìÝíùí ãëùóóþí êáé
åñãáëåßùí ðñïãñáììáôéóìïý ôçò åðï÷Þò ìå êýñéï ÷áñáêôçñéóôéêü ôéò åîáéñåôéêÝò äõ-
íáôüôçôåò äéá÷åßñéóçò áñ÷åßùí (âÜóåùí) äåäïìÝíùí. Ç dBASE ìðïñïýóå íá ëåéôïõñ-
ãåß ìå Üìåóç åêôÝëåóç ôùí åíôïëþí ôçò ìÝóá áðü ìéá äéáëïãéêÞ äéåðáöÞ ÷ñÞóôç, ìå
-
óõíÝðåéá íá ìðïñåß íá ÷ñçóéìïðïéçèåß êáé áðü Üôïìá ìå åëÜ÷éóôåò ãíþóåéò ðñïãñáì
-
ìáôéóìïý. Ôï ãåãïíüò áõôü óõíÝâáëå óôçí åõñåßá äéÜäïóç ôùí ðñïóùðéêþí õðïëï
ãéóôþí. Ç ðëÝïí äéáäåäïìÝíç Ýêäïóç Þôáí ç dBASE III Plus. ÅîÝëéîÞ ôçò õðÞñîå ï
Clipper ìåôáãëùôôéæüìåíç ãëþóóá, ìå ôçí ïðïßá äçìéïõñãÞèçêáí ðëÞèïò- åìðïñé
-
êþí åöáñìïãþí óå ðñïóùðéêïýò õðïëïãéóôÝò. Ôá ðñïúüíôá áõôÜ, ðïõ óõ÷íÜ åðïíï
ìÜæïíôáé xBASE, õðÞñîáí ðñïÜããåëïé ôùí óçìåñéíþí ðáêÝôùí äéá÷åßñéóçò âÜóåùí
- ðáñïõ
äåäïìÝíùí üðùò ç Access. Ôï áðüóðáóìá ðñïãñÜììáôïò ôïõ ðáñáäåßãìáôïò
óéÜæåé Ýíá ìåíïý åðéëïãþí êáé åêôåëåß äéáêëÜäùóç óôçí áíôßóôïé÷ç ëåéôïõñãßá.

Ìå ôïí üñï ïðôéêü åííïïýìå ôç äõíáôüôçôá íá äçìéïõñãïýìå ãñáöéêÜ


ïëüêëçñï ôï ðåñéâÜëëïí ôçò åöáñìïãÞò ãéá ðáñÜäåéãìá ôá ðëáßóéá äéáëü-
Ïé ãëþóóåò õøçëïý
ãïõ Þ ôá ìåíïý. Ìå ôïí üñï ïäçãïýìåíï áðü ôï ãåãïíüò åííïïýìå ôç äõíá-
åðéðÝäïõ ÷ñçóéìïðïéïýí ùò
åíôïëÝò áðëÝò ëÝîåéò ôçò ôüôçôá íá åíåñãïðïéïýíôáé ëåéôïõñãßåò ôïõ ðñïãñÜììáôïò ìå ôçí åêôÝëå-
áããëéêÞò ãëþóóáò áêïëïõ- óç åíüò ãåãïíüôïò, ãéá ðáñÜäåéãìá ôçí åðéëïãÞ ìßáò åíôïëÞò áðü Ýíá ìå-
èþíôáò áõóôçñïýò êáíüíåò íïý Þ ôï êëéê ôïõ ðïíôéêéïý.
óýíôáîçò, ïé ïðïßåò ìåôá-
öñÜæïíôáé áðü ôïí ßäéï ôïí õ- Ïé ðéï äéáäåäïìÝíåò ãëþóóåò ðñïãñáììáôéóìïý óå ãñáöéêü ðåñéâÜë-
ðïëïãéóôÞ óå åíôïëÝò óå ëïí ãéá ðñïóùðéêïýò õðïëïãéóôÝò åßíáé ç Visual Basic, ç Visual C++ êáé ç
ãëþóóá ìç÷áíÞò Java.
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
127

ÐëåïíåêôÞìáôá ôùí ãëùóóþí õøçëïý åðéðÝäïõ


Óôá ðëåïíåêôÞìáôá ôùí ãëùóóþí ðñïãñáììáôéóìïý õøçëïý åðéðÝ-
äïõ óå ó÷Ýóç ìå ôéò óõìâïëéêÝò ìðïñïýí íá áíáöåñèïýí:
ë Ï öõóéêüôåñïò êáé ðéï “áíèñþðéíïò” ôñüðïò Ýêöñáóçò ôùí ðñï-
âëçìÜôùí. Ôá ðñïãñÜììáôá óå ãëþóóá õøçëïý åðéðÝäïõ åßíáé ðéï
êïíôÜ óôá ðñïâëÞìáôá ðïõ åðéëýïõí.
ë Ç áíåîáñôçóßá áðü ôïí ôýðï ôïõ õðïëïãéóôÞ. ÐñïãñÜììáôá óå ìßá
ãëþóóá õøçëïý åðéðÝäïõ ìðïñïýí íá åêôåëåóôïýí óå ïðïéïíäÞðï-
ôå õðïëïãéóôÞ ìå åëÜ÷éóôåò Þ êáèüëïõ ìåôáôñïðÝò. Ç äõíáôüôçôá
ôçò ìåôáöåñóéìüôçôáò ôùí ðñïãñáììÜôùí åßíáé óçìáíôéêü ðñï-
óüí.
ë Ç åõêïëßá ôçò åêìÜèçóçò êáé åêðáßäåõóçò ùò áðüññïéá ôùí ðñïç-
ãïõìÝíùí.
ë Ç äéüñèùóç ëáèþí êáé ç óõíôÞñçóç ðñïãñáììÜôùí óå ãëþóóá õ-
øçëïý åðéðÝäïõ åßíáé ðïëý åõêïëüôåñï Ýñãï.
ÓõíïëéêÜ ïé ãëþóóåò õøçëïý åðéðÝäïõ åëÜôôùóáí óçìáíôéêÜ ôï
÷ñüíï êáé ôï êüóôïò ðáñáãùãÞò íÝùí ðñïãñáììÜôùí, áöïý ëéãüôåñïé
ðñïãñáììáôéóôÝò ìðïñïýí óå ìéêñüôåñï ÷ñüíï íá áíáðôýîïõí ðñï-
ãñÜììáôá ðïõ ÷ñçóéìïðïéïýíôáé óå ðåñéóóüôåñïõò õðïëïãéóôÝò.

6.2.4 Ãëþóóåò 4çò ãåíéÜò


Ïé ãëþóóåò õøçëïý åðéðÝäïõ (ãëþóóåò 3çò ãåíéÜò) ãíþñéóáí ìåãÜëç å-
ðéôõ÷ßá ëüãù ôùí ðëåïíåêôçìÜôùí ðïõ ðáñïõóéÜæïõí. Ùóôüóï áðåõèý-
íïíôáé ìüíï óå ðñïãñáììáôéóôÝò. Ï ÷ñÞóôçò åíüò õðïëïãéóôÞ äåí åß÷å ôç
äõíáôüôçôá íá åðéöÝñåé áëëáãÝò óå êÜðïéï ðñüãñáììá, ðñïêåéìÝíïõ íá é-
êáíïðïéÞóåé ìéá íÝá áíÜãêç ôïõ. ÓôáäéáêÜ üìùò ðïëëÝò ãëþóóåò åöïäéÜ-
óôçêáí ìå åñãáëåßá ðñïãñáììáôéóìïý ðïõ áðïêñýðôïõí ðïëëÝò ëåðôïìÝ-
ñåéò áðü ôéò ôå÷íéêÝò õëïðïßçóçò êáé ìå áõôÜ ï ÷ñÞóôçò ìðïñåß íá åðéëýåé
ìüíïò ôïõ ìéêñÜ ðñïâëÞìáôá åöáñìïãþí. ÁõôÞ ç áõîáíüìåíç ôÜóç áðü-
êñõøçò ôçò áñ÷éôåêôïíéêÞò ôïõ õëéêïý êáé ôçò ôå÷íéêÞò ôïõ ðñïãñáììáôé-
óìïý ïäÞãçóå óôéò ãëþóóåò 4çò ãåíéÜò.
Óôéò ãëþóóåò áõôÝò ï ÷ñÞóôçò åíüò õðïëïãéóôÞ Ý÷åé ôç äõíáôüôçôá,
ó÷åôéêÜ åýêïëá, íá õðïâÜëåé åñùôÞóåéò óôï óýóôçìá Þ íá áíáðôýóóåé å-
128 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

Ôáîéíüìçóç ãëùóóþí ðñïãñáììáôéóìïý


‘Ïëåò ïé ãëþóóåò ðñïãñáììáôéóìïý ðïõ Ý÷ïõí áíáðôõ÷èåß ìÝ÷ñé óÞ-
ìåñá áíôéðñïóùðåýïõí äéÜöïñåò éäÝåò ðÜíù óôïí ðñïãñáììáôéóìü êáé
ç êÜèå ìßá åßíáé óõíÞèùò êáëýôåñá ðñïóáñìïóìÝíç óå ïñéóìÝíåò êáôç-
ãïñßåò ðñïâëçìÜôùí. Ç ìåãÜëç ðëåéïøçößá ôùí ãëùóóþí áíÞêåé óôçí
êáôçãïñßá ôùí äéáäéêáóéáêþí (procedural) ãëùóóþí. Åßíáé ãíùóôÝò åðß-
óçò êáé ùò áëãïñéèìéêÝò ãëþóóåò, ãéáôß åßíáé ó÷åäéáóìÝíåò ãéá íá åðé-
ôñÝðïõí ôçí õëïðïßçóç áëãïñßèìùí. Áëëåò êáôçãïñßåò ãëùóóþí õøç-
ëïý åðéðÝäïõ åßíáé:
ë Áíôéêåéìåíïóôñáöåßò ãëþóóåò (object -oriented languages)
ë ÓõíáñôçóéáêÝò ãëþóóåò (functional languages) ð.÷. LISP
ë Ìç äéáäéêáóéáêÝò ãëþóóåò (non procedural languages) ð.÷.
PROLOG. ×áñáêôçñßæïíôáé åðßóçò êáé ùò ãëþóóåò ðïëý õøçëïý å-
ðéðÝäïõ.
ë Ãëþóóåò åñùôáðáíôÞóåùí (query languages) ð.÷. SQL.
Ìéá Üëëç ôáîéíüìçóç ìðïñåß íá ðñïêýøåé ìå âÜóç ôçí ðåñéï÷Þ ÷ñÞ-
óçò. Ìå áõôü ôï êñéôÞñéï äéáêñßíïõìå:
ë Ãëþóóåò ãåíéêÞò ÷ñÞóçò. ÈåùñçôéêÜ êÜèå ãëþóóá ãåíéêÞò ÷ñÞóçò
ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôçí åðßëõóç ïðïéïõäÞðïôå ðñïâëÞ-
ìáôïò. Óôçí ðñÜîç ùóôüóï êÜèå ãëþóóá Ý÷åé ó÷åäéáóôåß ãéá íá á-
íôáðïêñßíåôáé êáëýôåñá óå ïñéóìÝíç êáôçãïñßá ðñïâëçìÜôùí. Äéá-
êñßíïíôáé óå:
3 Ãëþóóåò åðéóôçìïíéêÞò êáôåýèõíóçò (science-oriented langua-
ges) ð.÷. FORTRAN
3 Ãëþóóåò åìðïñéêÞò êáôåýèõíóçò (business-oriented languages)
ð.÷. COBOL.
Áò óçìåéùèåß üôé ïñéóìÝíåò ãëþóóåò ôá êáôáöÝñíïõí åîßóïõ êáëÜ
êáé óôïõò äýï ðñçãïýìåíïõò ôïìåßò ð.÷. BASIC, Pascal.
ë Ãëþóóåò ðñïãñáììáôéóìïý óõóôçìÜôùí (system programming
languages) ð.÷. C.
ë Ãëþóóåò ôå÷íçôÞò íïçìïóýíçò (artificial intelligence languages) ð.÷.
LISP, PROLOG.
ë Ãëþóóåò åéäéêÞò ÷ñÞóçò. Ðñüêåéôáé ãéá ãëþóóåò ðïõ ÷ñçóéìïðïéïý-
íôáé óå åéäéêÝò ðåñéï÷Ýò åöáñìïãþí üðùò ð.÷. óôá ãñáöéêÜ ìå õðï-
ëïãéóôÞ, óôç ñïìðïôéêÞ, óôç ó÷åäßáóç ïëïêëçñùìÝíùí êõêëùìÜ-
ôùí, óôá ÓõóôÞìáôá Äéïßêçóçò ÂÜóåùí ÄåäïìÝíùí, óôçí åêðáßäåõ-
óç ìÝóù õðïëïãéóôÞ ê.á.
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
129

öáñìïãÝò ðïõ áíáêôïýí ðëçñïöïñßåò áðü âÜóåéò äåäïìÝíùí êáé íá êá-


èïñßæåé ôïí áêñéâÞ ôñüðï åìöÜíéóçò áõôþí ôùí ðëçñïöïñéþí, üðùò óôï
ðáñÜäåéãìá ðïõ áêïëïõèåß.
SELECT ENAME, JOB, SAL
FROM EMPLOYES
WHERE DEPTNO=20
AND SAL > 300000;

Ç åñþôçóç áõôÞ óå SQL åêôåëåß áíáæÞôçóç óôç âÜóç äåäïìÝíùí


EMPLOYES êáé åðéóôñÝöåé ôï üíïìá, ôç èÝóç êáé ôï ìéóèü ôùí õðáëëÞëùí
ôçò äéåýèõíóçò 20 ðïõ êåñäßæïõí ðÜíù áðü 300.000 äñ÷.

Ðïéá åßíáé ç êáëýôåñç ãëþóóá


ðñïãñáììáôéóìïý
Óôçí éóôïñßá ôïõ ðñïãñáììáôéóìïý Ý÷ïõí áíáðôõ÷èåß ÷éëéÜäåò
ãëþóóåò êáé áõôÞ ôç óôéãìÞ ÷ñçóéìïðïéïýíôáé ìåñéêÝò åêáôïíôÜäåò. Õ-
ðÜñ÷ïõí ãëþóóåò êáôÜëëçëåò ãéá áíÜðôõîç åéäéêþí åöáñìïãþí êáé Üë-
ëåò êáôÜëëçëåò ãéá ãåíéêÞ ÷ñÞóç. ÕðÜñ÷ïõí ãëþóóåò êáôÜëëçëåò ãéá åê-
ðáßäåõóç êáé Üëëåò ãéá áíÜðôõîç åìðïñéêþí åöáñìïãþí. Ãëþóóåò ðïõ
åðéôñÝðïõí ôçí åýêïëç áíÜðôõîç åöáñìïãþí óå ãñáöéêü ðåñéâÜëëïí
êáé Üëëåò ðïõ åêìåôáëëåýïíôáé ôá ðáñÜëëçëá óõóôÞìáôá. ÕðÜñ÷ïõí
ãëþóóåò ðïëý éó÷õñÝò áëëÜ ðïëýðëïêåò êáé ãëþóóåò ÷ùñßò ìåãÜëåò äõ-
íáôüôçôåò áëëÜ áðëÝò êáé åýêïëåò óôçí åêìÜèçóç. Ï ðñïãñáììáôéóôÞò
êáëåßôáé íá åðéëÝîåé ôçí “êáëýôåñç” ãëþóóá ãéá íá õëïðïéÞóåé ôï ðñü-
ãñáììá.
Ìðïñïýìå íá éó÷õñéóôïýìå ìå âåâáéüôçôá üôé ìßá ãëþóóá ðñïãñáì-
ìáôéóìïý ðïõ íá åßíáé áíôéêåéìåíéêÜ êáëýôåñç áðü ôéò Üëëåò äåí õðÜñ÷åé,
ïýôå ðñüêåéôáé íá õðÜñîåé.
Ç åðéëïãÞ ôçò ãëþóóáò ãéá ôçí áíÜðôõîç ìéáò åöáñìïãÞò åîáñôÜôáé
áðü ôï åßäïò ôçò åöáñìïãÞò, ôï õðïëïãéóôéêü ðåñéâÜëëïí óôï ïðïßï èá
åêôåëåóôåß, ôá ðñïãñáììáôéóôéêÜ ðåñéâÜëëïíôá ðïõ äéáèÝôïõìå êáé êõ-
ñßùò ôéò ãíþóåéò ôïõ ðñïãñáììáôéóôÞ. ÓõíÞèùò ï ðñïãñáììáôéóôÞò å-
ðéëÝãåé ìßá ãëþóóá, ðïõ öõóéêÜ åðéôñÝðåé êáé äéåõêïëýíåé ôçí áíÜðôõ-
îç ôïõ åßäïõò ôçò åöáñìïãÞò óôï óõãêåêñéìÝíï ðåñéâÜëëïí ìå âÜóç ü-
ìùò ôéò ðñïóùðéêÝò ôïõ ãíþóåéò êáé ðñïôéìÞóåéò.
130 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

6.3 ÖõóéêÝò êáé ôå÷íçôÝò ãëþóóåò


Ïé ãëþóóåò ðñïãñáììáôéóìïý áíáðôý÷èçêáí, ãéá íá ìðïñåß ï ðñï-
ãñáììáôéóôÞò íá äßíåé ôéò åíôïëÝò ðïõ ðñÝðåé íá åêôåëÝóåé ï õðïëïãéóôÞò.
×ñçóéìïðïéïýíôáé äçëáäÞ ãéá ôçí åðéêïéíùíßá ôïõ áíèñþðïõ êáé ôçò ìç-
÷áíÞò, üðùò áíôßóôïé÷á ïé öõóéêÝò ãëþóóåò ÷ñçóéìïðïéïýíôáé ãéá ôçí å-
ðéêïéíùíßá ìåôáîý ôùí áíèñþðùí. Ïé ãëþóóåò ðñïãñáììáôéóìïý, ðïý åß-
íáé ôå÷íçôÝò ãëþóóåò, áêïëïõèïýí ôéò âáóéêÝò Ýííïéåò êáé áñ÷Ýò ôçò ãëùó-
óïëïãßáò, åðéóôÞìç ðïõ ìåëåôÜ ôéò öõóéêÝò ãëþóóåò.
Ìßá ãëþóóá ðñïóäéïñßæåôáé áðü ôï áëöÜâçôü ôçò, ôï ëåîéëüãéü ôçò, ôç
ãñáììáôéêÞ ôçò êáé ôÝëïò ôç óçìáóéïëïãßá ôçò.

Ôï áëöÜâçôï
ÁëöÜâçôï ìßáò ãëþóóáò êáëåßôáé ôï óýíïëï ôùí óôïé÷åßùí ðïõ ÷ñçóé-
ìïðïéåßôáé áðü ôç ãëþóóá.
Ãéá ðáñÜäåéãìá ç åëëçíéêÞ ãëþóóá ðåñéÝ÷åé ôá åîÞò óôïé÷åßá: Ôá ãñÜì-
ìáôá ôïõ áëöáâÞôïõ ðåæÜ êáé êåöáëáßá 48 äçëáäÞ ÷áñáêôÞñåò (Á-Ù êáé
á-ù), ôá 10 øçößá (0-9) êáé üëá ôá óçìåßá óôßîçò. Áíôßóôïé÷á ç áããëéêÞ
ãëþóóá ðåñéëáìâÜíåé ôá ãñÜììáôá ôïõ áããëéêïý áëöáâÞôïõ (A-Z êáé a-z)
êáèþò êáé ôá øçößá êáé üëá ôá óçìåßá óôßîçò ðïõ ÷ñçóéìïðïéïýíôáé.

Ôï ëåîéëüãéï
Ôï ëåîéëüãéï áðïôåëåßôáé áðü Ýíá õðïóýíïëï üëùí ôùí áêïëïõèéþí
ðïõ äçìéïõñãïýíôáé áðü ôá óôïé÷åßá ôïõ áëöáâÞôïõ, ôéò ëÝîåéò ðïõ åßíáé
äåêôÝò áðü ôçí ãëþóóá. Ãéá ðáñÜäåéãìá óôçí åëëçíéêÞ ãëþóóá ç áêïëïõ-
èßá ôùí ãñáììÜôùí ÁÂÃÁ åßíáé äåêôÞ áöïý áðïôåëåß ëÝîç, áëëÜ ç áêïëïõ-
èßá ÁÂÃÄÁ äåí áðïôåëåß ëÝîç ôçò åëëçíéêÞò ãëþóóáò, Üñá äåí åßíáé äåêôÞ.

Ç ÃñáììáôéêÞ
Ç ÃñáììáôéêÞ áðïôåëåßôáé áðü ôï ôõðéêü Þ ôõðïëïãéêü (accidence) êáé
ôï óõíôáêôéêü (syntax).
Ôõðéêü åßíáé ôï óýíïëï ôùí êáíüíùí ðïõ ïñßæåé ôéò ìïñöÝò ìå ôéò ï-
ðïßåò ìßá ëÝîç åßíáé áðïäåêôÞ. Ãéá ðáñÜäåéãìá óôçí åëëçíéêÞ ãëþóóá ïé ëÝ-
îåéò ãëþóóá, ãëþóóáò, ãëþóóåò åßíáé äåêôÝò, åíþ ç ëÝîç ãëþóóáô äåí åßíáé
áðïäåêôÞ.
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
131

Óõíôáêôéêü åßíáé ôï óýíïëï ôùí êáíüíùí ðïõ êáèïñßæåé ôç íïìéìüôçôá


ôçò äéÜôáîçò êáé ôçò óýíäåóçò ôùí ëÝîåùí ôçò ãëþóóáò ãéá ôç äçìéïõñãßá
ðñïôÜóåùí.
Ç ãíþóç ôïõ óõíôáêôéêïý åðéôñÝðåé ôç äçìéïõñãßá óùóôþí ðñïôÜóå-
ùí óôéò öõóéêÝò ãëþóóåò åíþ óôéò ãëþóóåò ðñïãñáììáôéóìïý ôç äçìéïõñ-
ãßá óùóôþí åíôïëþí.

Ç óçìáóéïëïãßá
Ç óçìáóéïëïãßá (Semantics) åßíáé ôï óýíïëï ôùí êáíüíùí ðïõ êáèïñßæåé
ôï íüçìá ôùí ëÝîåùí êáé êáôÜ åðÝêôáóç ôùí åêöñÜóåùí êáé ðñïôÜóåùí
ðïõ ÷ñçóéìïðïéïýíôáé óå ìßá ãëþóóá. ÊÜèå ãëþóóá ðñïóäéïñßæåôáé
áðü ôï áëöÜâçôï ôçò, ôï ëå-
Óôéò ãëþóóåò ðñïãñáììáôéóìïý ïé ïðïßåò åßíáé ôå÷íçôÝò ãëþóóåò, ï äç- îéëüãéï ôçò, ôç ãñáììáôéêÞ
ìéïõñãüò ôçò ãëþóóáò áðïöáóßæåé ôç óçìáóéïëïãßá ôùí ëÝîåùí ôçò ãëþó- ôçò êáé ôç óçìáóéïëïãßá ôçò.
óáò.

ÄéáöïñÝò öõóéêþí êáé ôå÷íçôþí ãëùóóþí.


Ìßá âáóéêÞ äéáöïñÜ ìåôáîý öõóéêþí êáé ôå÷íçôþí ãëùóóþí åßíáé ç äõ-
íáôüôçôá åîÝëéîÞò ôïõò. Ïé öõóéêÝò ãëþóóåò åîåëßóóïíôáé óõíå÷þò, íÝåò
ëÝîåéò äçìéïõñãïýíôáé, êáíüíåò ãñáììáôéêÞò êáé óýíôáîçò áëëÜæïõí ìå ôçí
ðÜñïäï ôïõ ÷ñüíïõ êáé áõôü ãéáôß ç ãëþóóá ÷ñçóéìïðïéåßôáé ãéá ôçí åðé-
êïéíùíßá ìåôáîý áíèñþðùí, ðïõ åîåëßóóïíôáé êáé áëëÜæïõí áíÜëïãá ìå
ôéò åðï÷Ýò êáé ôïí êïéíùíéêü ðåñßãõñï.
Áíôßèåôá ïé ôå÷íçôÝò ãëþóóåò ÷áñáêôçñßæïíôáé áðü óôáóéìüôçôá, á-
öïý êáôáóêåõÜæïíôáé óõíåéäçôÜ ãéá Ýíá óõãêåêñéìÝíï óêïðü.
Ùóôüóï óõ÷íÜ ïé ãëþóóåò ðñïãñáììáôéóìïý âåëôéþíïíôáé êáé ìåôáâÜ-
ëïíôáé áðü ôïõò äçìéïõñãïýò ôïõò, ìå óêïðü íá äéïñèùèïýí áäõíáìßåò Þ
íá êáëýøïõí ìåãáëýôåñï åýñïò åöáñìïãþí Þ ôÝëïò íá áêïëïõèÞóïõí ôéò
íÝåò åîåëßîåéò. Ïé ãëþóóåò ðñïãñáììáôéóìïý áëëÜæïõí óå åðßðåäï äéáëÝ-
êôïõ (ãéá ðáñÜäåéãìá GW-Basic êáé QuickBasic) Þ óå åðßðåäï åðÝêôáóçò
(ãéá ðáñÜäåéãìá Basic êáé Visual Basic).

6.4 Ôå÷íéêÝò ó÷åäßáóçò ðñïãñáììÜôùí


Áðü ôçí áñ÷Þ ôçò åìöÜíéóçò ôùí õðïëïãéóôþí ãßíïíôáé óõíå÷åßò ðñï-
óðÜèåéåò áíÜðôõîçò ìåèïäïëïãéþí êáé ôå÷íéêþí ðñïãñáììáôéóìïý, ðïõ
èá åîáóöáëßæïõí ôç äçìéïõñãßá áðëþí êáé êïìøþí ðñïãñáììÜôùí, ôçí
132 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

åýêïëç ãñáöÞ ôïõò üóï êáé ôçí êáôáíüçóÞ ôïõò.

6.4.1 Éåñáñ÷éêÞ ó÷åäßáóç ðñïãñÜììáôïò


Ç ôå÷íéêÞ ôçò éåñáñ÷éêÞò ó÷åäßáóçò êáé åðßëõóçò Þ ç äéáäéêáóßá ó÷åäßá-
óçò “áðü åðÜíù ðñïò ôá êÜôù” üðùò óõ÷íÜ ïíïìÜæåôáé (top-down
program design) ðåñéëáìâÜíåé ôïí êáèïñéóìü ôùí âáóéêþí ëåéôïõñãéþí å-
íüò ðñïãñÜììáôïò, óå áíþôåñï åðßðåäï, êáé óôç óõíÝ÷åéá ôç äéÜóðáóç
ôùí ëåéôïõñãéþí áõôþí óå üëï êáé ìéêñüôåñåò ëåéôïõñãßåò, ìÝ÷ñé ôï ôåëåõ-
ôáßï åðßðåäï ðïõ ïé ëåéôïõñãßåò åßíáé ðïëý áðëÝò, þóôå íá åðéëõèïýí åý-
Ç éåñáñ÷éêÞ ó÷åäßáóç Þ éå- êïëá.
ñáñ÷éêüò ðñïãñáììáôéóìüò
÷ñçóéìïðïéåß ôç óôñáôçãéêÞ Óêïðüò ôçò éåñáñ÷éêÞò ó÷åäßáóçò åßíáé ç äéÜóðáóç ëïéðüí ôïõ ðñïâëÞ-
ôçò óõíå÷ïýò äéáßñåóçò ôïõ ìáôïò óå ìéá óåéñÜ áðü áðëïýóôåñá õðïðñïâëÞìáôá, ôá ïðïßá íá åßíáé
ðñïâëÞìáôïò óå õðïðñïâëÞ- åýêïëï íá åðéëõèïýí ïäçãþíôáò óôçí åðßëõóç ôïõ áñ÷éêïý ðñïâëÞìáôïò.
ìáôá
Ãéá ôçí õðïâïÞèçóç ôçò éåñáñ÷éêÞò ó÷åäßáóçò ÷ñçóéìïðïéïýíôáé äéÜ-
öïñåò äéáãñáììáôéêÝò ôå÷íéêÝò, üðùò ãéá ðáñÜäåéãìá ôï äéÜãñáììá ôïõ
ó÷Þìáôïò 6.4.

6.4.2 Ôìçìáôéêüò ðñïãñáììáôéóìüò


Ç éåñáñ÷éêÞ ó÷åäßáóç ðñïãñÜììáôïò õëïðïéåßôáé ìå ôïí ôìçìáôéêü
ðñïãñáììáôéóìü. ÌåôÜ ôçí áíÜëõóç ôïõ ðñïâëÞìáôïò óå áíôßóôïé÷á õ-
ðïðñïâëÞìáôá, êÜèå õðïðñüâëçìá áðïôåëåß áíåîÜñôçôç åíüôçôá (mo-
dule), ðïõ ãñÜöåôáé îå÷ùñéóôÜ áðü ôá õðüëïéðá ôìÞìáôá ðñïãñÜììá-
ôïò.
Ç óùóôÞ äéáßñåóç ôïõ áñ÷éêïý ðñïâëÞìáôïò óå õðïðñïâëÞìáôá êáé
êáôÜ óõíÝðåéá ôïõ áñ÷éêïý ðñïãñÜììáôïò óå ôìÞìáôá ðñïãñÜììáôïò åß-
íáé ìßá äéáäéêáóßá áñêåôÜ ðïëýðëïêç êáé èá åîåôáóôåß óå åðüìåíï êåöÜ-
ëáéï.
Åäþ ðñÝðåé íá óçìåéùèåß üôé ï ôìçìáôéêüò ðñïãñáììáôéóìüò äéåõêïëý-
íåé ôç äçìéïõñãßá ôïõ ðñïãñÜììáôïò, ìåéþíåé ôá ëÜèç êáé åðéôñÝðåé ôçí
åõêïëüôåñç ðáñáêïëïýèçóç, êáôáíüçóç êáé óõíôÞñçóç ôïõ ðñïãñÜììá-
ôïò áðü ôñßôïõò.

6.4.3 ÄïìçìÝíïò ðñïãñáììáôéóìüò


Ç ìåèïäïëïãßá ðïõ óÞìåñá Ý÷åé åðéêñáôÞóåé áðüëõôá êáé ó÷åäüí üëåò
ïé óýã÷ñïíåò ãëþóóåò ðñïãñáììáôéóìïý õðïóôçñßæïõí, åßíáé ï äïìçìÝíïò
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
133

Ó÷. 6.4. Éåñáñ÷éêÞ ó÷åäßáóç õðïëïãéóìïý ôïõ öüñïõ åéóïäÞìáôïò

ðñïãñáììáôéóìüò (structured programming). Ï äïìçìÝíïò ðñïãñáììáôé-


óìüò ðáñïõóéÜóôçêå óôá ìÝóá ôïõ 1960.
ÓõãêåêñéìÝíá ôï 1964 óå Ýíá óõíÝäñéï óôï ÉóñáÞë ðáñïõóéÜóôçêå Ýíá
êåßìåíï ôùí Bohm êáé Jacopini ìå ôéò èåùñçôéêÝò áñ÷Ýò ôïõ äïìçìÝíïõ ðñï-
ãñáììáôéóìïý. Ïé áðüøåéò ôïõò äåí Ýãéíáí áñ÷éêÜ åõñýôåñá ãíùóôÝò êáé
áðïäåêôÝò, áëëÜ ôï 1968 ï êáèçãçôÞò Edsger Dijkstra äçìïóßåõóå Ýíá êåß-
ìåíï ðïõ Ýêáíå éäéáßôåñç áßóèçóç êáé Ýìåëëå íá áëëÜîåé óôáäéáêÜ ôïí ôñü-
ðï ðñïãñáììáôéóìïý êáèþò êáé ôéò ßäéåò ôéò ãëþóóåò ðñïãñáììáôéóìïý. Ï
ôßôëïò ôçò ìåëÝôçò áõôÞò Þôáí “GO TO Statement Considered Harmful - ç å-
íôïëÞ GOTO èåùñåßôáé åðéâëáâÞò” êáé èåìåëßùíå ôï äïìçìÝíï ðñïãñáì-
ìáôéóìü. ×ñåéÜóôçêå üìùò íá ðåñÜóïõí áñêåôÜ ÷ñüíéá, þóôå íá áñ÷ßóåé íá
äéáäßäåôáé ç ÷ñÞóç ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý.
Ôçí åðï÷Þ åêåßíç äåí õðÞñ÷å ìßá ìåèïäïëïãßá ãéá ôçí áíÜðôõîç ôùí
ðñïãñáììÜôùí, ôá ðñïãñÜììáôá Þôáí ìåãÜëá êáé éäéáßôåñá ìðåñäåìÝíá
ìå áðïôÝëåóìá íá îïäåýåôáé ðÜñá ðïëýò ÷ñüíïò ôüóï óôçí óõããñáöÞ üóï
êýñéá óôç äéüñèùóç êáé ôç ìåôÝðåéôá óõíôÞñçóç ôïõò. Âáóéêüò ëüãïò ãéá
ôá ðñïâëÞìáôá áõôÜ Þôáí ç áëüãéóôç ÷ñÞóç ìßáò åíôïëÞò, ôçò åíôïëÞò
GOTO ðïý ÷ñçóéìïðïéïýìåíç Üëëáæå äéáñêþò ôç ñïÞ ôïõ ðñïãñÜììáôïò.
Ï äïìçìÝíïò ðñïãñáììáôéóìüò áíáðôý÷èçêå áðü ôçí áíÜãêç íá õðÜñ÷åé
134 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

GOTO: Ôï ìáýñï ðñüâáôï ôïõ ðñïãñáììáôéóìïý


Óôçí éóôïñßá ôïõ ðñïãñáììáôéóìïý êáìßá Üëëç åíôïëÞ äåí óõæçôÞ-
èçêå ôüóï ðïëý üóï ç åíôïëÞ GOTO (ðÞãáéíå). Ç åíôïëÞ GOTO Ý÷åé ùò
áðïôÝëåóìá ôçí áëëáãÞ ôçò ñïÞò ôïõ ðñïãñÜììáôïò, ôçò äéáêëÜäùóçò
óå ìßá Üëëç åíôïëÞ ôïõ ðñïãñÜììáôïò åêôüò áðü ôçí åðüìåíç. Ç åíôïëÞ
áõôÞ ÷þñéóå ôïõò ðñïãñáììáôéóôÝò óå äýï áíôéìá÷üìåíåò ïìÜäåò. Ç
ìßá áðïôåëåßôï áðü öáíáôéêïýò õðïóôçñéêôÝò ôçò ÷ñÞóçò ôïõ GOTO,
ïé ïðïßïé ìå ôç ÷ñÞóç ôçò Ýëõíáí åýêïëá êáé áâáóÜíéóôá ðñïâëÞìáôá
ôçò áíÜðôõîçò ôùí ðñïãñáììÜôùí ôïõò êáé ç äåýôåñç ìå ðïëÝìéïõò
ðïõ Ýâëåðáí üôé ç åíôïëÞ áõôÞ Þôáí õðåýèõíç ãéá ôç äõóêïëßá óôçí áñ-
÷éêÞ ó÷åäßáóç ôçò ëýóçò, óôçí ðáñáêïëïýèçóç êáé êáôáíüçóç ôïõ ðñï-
ãñÜììáôïò êáé ôÝëïò óôç óõíôÞñçóç. Ï äïìçìÝíïò ðñïãñáììáôéóìüò
ðñïÞëèå áðü ôçí áíÜãêç ôïõ ðåñéïñéóìïý ôçò áíåîÝëåãêôçò ÷ñÞóçò ôïõ
GOTO.
Ç ÷ñÞóç ôçò åíôïëÞò áõôÞò èá ðáñïõóéáóôåß ìå Ýíá áðëü ðáñÜäåéã-
ìá, åíþ ãéá ëüãïõò óýãêñéóçò äßíåôáé ï øåõäïêþäéêáò ìå ÷ñÞóç ôçò äï-
ìÞò åðéëïãÞò, üðùò ðáñïõóéÜóôçêå óôá ðñïçãïýìåíá êåöÜëáéá
,,,,,
ÁÍ Áñéèìüò>0 ÔÏÔÅ GOTO 1
ÁÍ Áñéèìüò=0 ÔÏÔÅ GOTO 2
ÃÑÁØÅ ‘Áñíçôéêüò’
GOTO 4
1:ÃÑÁØÅ ‘Èåôéêüò’
GOTO 4
2: ÃÑÁØÅ ‘ÌçäÝí’
GOTO 4
4:! ÓõíÝ÷åéá,

,,,,
ÁÍ Áñéèìüò>0 ÔÏÔÅ ÃÑÁØÅ ‘Èåôéêüò’
ÁËËÉÙÓ_ÁÍ Áñéèìüò=0 ÔÏÔÅ ÃÑÁØÅ ‘ÌçäÝí’
ÁËËÉÙÓ ÃÑÁØÅ ‘Áñíçôéêüò’
ÔÅËÏÓ_ÁÍ
,,,

Ç ÷ñÞóç ôïõ GOTO êÜíåé áêüìá êáé áõôü ôï ìéêñü ôìÞìá ðñïãñÜì-
ìáôïò äýóêïëï óôçí êáôáíüçóç ôïõ êáé óôçí ðáñáêïëïýèçóÞ ôïõ.

ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
135

¼ëåò ïé óýã÷ñïíåò ãëþóóåò ðñïãñáììáôéóìïý, õðïóôçñßæïõí ôï äï-


ìçìÝíï ðñïãñáììáôéóìü êáé äéáèÝôïõí åíôïëÝò ðïõ êáèéóôïýí ôç ÷ñÞóç
ôïõ GOTO ðåñéôôÞ. Ãéá ëüãïõò üìùò óõìâáôüôçôáò ìå ôéò ðáëéüôåñåò
åêäüóåéò ôïõò êáèþò êáé ãéá ëüãïõò óõíôÞñçóçò ðáëéþí ðñïãñáììÜ-
ôùí, ìåñéêÝò ôç äéáôçñïýí óôï ñåðåñôüñéï ôùí åíôïëþí ôïõò.
Óôç óõíÝ÷åéá áõôïý ôïõ âéâëßïõ ç åíôïëÞ GOTO äåí èá ìáò áðáó÷ï-
ëÞóåé êáé êáëü åßíáé íá ìç ÷ñçóéìïðïéåßôáé óôçí áíÜðôõîç ðñïãñáììÜ-
ôùí.

ìßá êïéíÞ ìåèïäïëïãßá óôçí áíÜðôõîç ôùí ðñïãñáììÜôùí êáé ôç ìåßùóç


ôùí åíôïëþí GOTO ðïõ ÷ñçóéìïðïéïýíôáé óôï ðñüãñáììá.
Ï äïìçìÝíïò ðñïãñáììáôéóìüò äåí åßíáé áðëþò Ýíá åßäïò ðñïãñáììá-
ôéóìïý, åßíáé ìßá ìåèïäïëïãßá óýíôáîçò ðñïãñáììÜôùí ðïõ Ý÷åé óêïðü íá
âïçèÞóåé ôïí ðñïãñáììáôéóôÞ óôçí áíÜðôõîç óýíèåôùí ðñïãñáììÜôùí,
íá ìåéþóåé ôá ëÜèç, íá åîáóöáëßóåé ôçí åýêïëç êáôáíüçóç ôùí ðñïãñáì-
ìÜôùí êáé íá äéåõêïëýíåé ôéò äéïñèþóåéò êáé ôéò áëëáãÝò óå áõôÜ.
Ï äïìçìÝíïò ðñïãñáììáôéóìüò óôçñßæåôáé óôç ÷ñÞóç ôñéþí êáé ìüíï
óôïé÷åéùäþí ëïãéêþí äïìþí, ôç äïìÞ ôçò áêïëïõèßáò, ôç äïìÞ ôçò åðé-
ëïãÞò êáé ôç äïìÞ ôçò åðáíÜëçøçò. ¼ëá ôá ðñïãñÜììáôá ìðïñïýí íá
ãñáöïýí ÷ñçóéìïðïéþíôáò ìüíï áõôÝò ôéò ôñåéò äïìÝò êáèþò êáé óõí-
äõáóìü ôïõò. ÊÜèå ðñüãñáììá üðùò êáé êÜèå åíüôçôá ðñïãñÜììáôïò
Ý÷åé ìüíï ìßá åßóïäï êáé ìüíï ìßá Ýîïäï.
Ïé ôñåéò áõôÝò äïìÝò ðáñïõóéÜóôçêáí óôï êåöÜëáéï 2 êáé èá åðáíáëç-
öèïýí óôá åðüìåíá êåöÜëáéá.
Áí êáé ï äïìçìÝíïò ðñïãñáììáôéóìüò áñ÷éêÜ åìöáíßóôçêå óáí ìßá ðñï-
óðÜèåéá ðåñéïñéóìïý ôùí åíôïëþí GOTO, óÞìåñá áðïôåëåß ôç âáóéêÞ ìå-
èïäïëïãßá ðñïãñáììáôéóìïý.
Ï äïìçìÝíïò ðñïãñáììáôéóìüò åíèáññýíåé êáé âïçèÜåé ôçí áíÜëõóç
ôïõ ðñïãñÜììáôïò óå åðß ìÝñïõò ôìÞìáôá, Ýôóé þóôå óÞìåñá ï üñïò äïìç-
ìÝíïò ðñïãñáììáôéóìüò ðåñéÝ÷åé ôüóï ôçí éåñáñ÷éêÞ ó÷åäßáóç üóï êáé ôïí
ôìçìáôéêü ðñïãñáììáôéóìü.
136 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

ÐëåïíåêôÞìáôá ôïõ äïìçìÝíïõ


ðñïãñáììáôéóìïý
ÅðéãñáììáôéêÜ ìðïñïýìå íá áíáöÝñïõìå ôá åîÞò ðëåïíåêôÞìáôá
ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý.
ë Äçìéïõñãßá áðëïýóôåñùí ðñïãñáììÜôùí.
ë ¢ìåóç ìåôáöïñÜ ôùí áëãïñßèìùí óå ðñïãñÜììáôá.
ë Äéåõêüëõíóç áíÜëõóçò ôïõ ðñïãñÜììáôïò óå ôìÞìáôá.
ë Ðåñéïñéóìüò ôùí ëáèþí êáôÜ ôçí áíÜðôõîç ôïõ ðñïãñÜììáôïò.
ë Äéåõêüëõíóç óôçí áíÜãíùóç êáé êáôáíüçóç ôïõ ðñïãñÜììáôïò
áðü ôñßôïõò.
ë Åõêïëüôåñç äéüñèùóç êáé óõíôÞñçóç.

6.5 ÁíôéêåéìåíïóôñáöÞò ðñïãñáììáôéóìüò


Ìßá íÝá éäÝá óôïí ðñïãñáììáôéóìü ãåííÞèçêå óôéò ðáãùìÝíåò íïñâçãé-
êÝò áêôÝò óôá ôÝëç ôçò äåêáåôßáò ôïõ ‘70 êáé ðÝñáóå ðïëý ãñÞãïñá óôçí
Üëëç ìåñéÜ ôïõ Áôëáíôéêïý. Ðñüêåéôáé ãéá ìéá íÝá ôÜóç áíôéìåôþðéóçò
ðñïãñáììáôéóôéêþí áíôéëÞøåùí êáé äïìþí ðïõ ïíïìÜæåôáé áíôéêåéìåíï-
óôñáöÞò (object-oriented) ðñïãñáììáôéóìüò. Ôçí ôåëåõôáßá äåêáåôßá Ý÷åé
ãßíåé ç åðéêñáôïýóá êáôÜóôáóç êáé Ý÷åé áëëÜîåé ñéæéêÜ ôá ìÝ÷ñé ðñéí áðü
ëßãá ÷ñüíéá ãíùóôÜ êáé óôáèåñÜ óçìåßá áíáöïñÜò ôùí ðñïãñáììáôéóôþí.
Ç éäÝá ôïõ áíôéêåéìåíïóôñáöïýò ðñïãñáììáôéóìïý Þ ôçò áíôéêåéìåíï-
óôñáöïýò ó÷åäßáóçò Ý÷åé ôéò ñßæåò ôçò óå ðïëý áðëïúêÞ éäÝá. ¸íá ðñü-
ãñáììá ðåñéãñÜöåé “åíÝñãåéåò” (åðåîåñãáóßá) ðïõ åöáñìüæïíôáé ðÜíù óå
äåäïìÝíá. ¸íá âáóéêü åñþôçìá ðïõ ôßèåôáé åßíáé áí ç öéëïóïößá, ç äïìÞ
ôïõ ðñïãñÜììáôïò åßíáé ðñïôéìüôåñï íá óôçñßæåôáé óôéò “åíÝñãåéåò” Þ óôá
äåäïìÝíá. Ç áðÜíôçóç óå áõôü ôï åñþôçìá ðñïóäéïñßæåé êáé ôç âáóéêÞ
äéáöïñÜ áíÜìåóá óôéò ðáñáäïóéáêÝò ðñïãñáììáôéóôéêÝò ôå÷íéêÝò êáé
óôçí áíôéêåéìåíïóôñáöÞ ðñïóÝããéóç.
Ç áíôéêåéìåíïóôñáöÞò ó÷åäßáóç åêëáìâÜíåé ùò ðñùôåýïíôá äïìéêÜ
óôïé÷åßá åíüò ðñïãñÜììáôïò ôá äåäïìÝíá, áðü ôá ïðïßá äçìéïõñãïýíôáé
ìå êáôÜëëçëç ìïñöïðïßçóç ôá áíôéêåßìåíá (objects). ÁõôÞ ç ó÷åäßáóç á-
ðïäåß÷èçêå üôé åðéöÝñåé êáëýôåñá áðïôåëÝóìáôá, áöïý ôá ðñïãñÜììáôá
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
137

ðïõ äçìéïõñãïýíôáé åßíáé ðåñéóóüôåñï åõÝëéêôá êáé åðáíá÷ñçóéìïðïéÞóé-


ìá. ÂÝâáéá, äçìéïõñãïýíôáé ìßá óåéñÜ áðü åýëïãá åñùôÞìáôá, üðùò “Ôé á-
êñéâþò åßíáé Ýíá áíôéêåßìåíï;”, “Ðþò ðñïóäéïñßæïõìå êáé ðåñéãñÜöïõìå
Ýíá áíôéêåßìåíï;”, “Ðþò ôï ðñüãñáììá ÷åéñßæåôáé ôá áíôéêåßìåíá;” “Ðþò
ôá áíôéêåßìåíá óõó÷åôßæïíôáé ìåôáîý ôïõò;”. ÁðáíôÞóåéò óå áõôÜ ôá åñù-
ôÞìáôá êáèþò êáé áíáëõôéêÞ ðáñïõóßáóç ôïõ áíôéêåéìåíïóôñáöïýò ðñï-
ãñáììáôéóìïý õðÜñ÷ïõí óôï êåöÜëáéï 11.
ÖõóéêÜ ï áíôéêåéìåíïóôñáöÞò ðñïãñáììáôéóìüò ÷ñçóéìïðïéåß ôçí éå-
ñáñ÷éêÞ ó÷åäßáóç, ôïí ôìçìáôéêü ðñïãñáììáôéóìü êáé áêïëïõèåß ôéò áñ÷Ýò
ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý.

6.6 ÐáñÜëëçëïò ðñïãñáììáôéóìüò


Ìßá Üëëç ìïñöÞ ðñïãñáììáôéóìïý ðïõ áíáðôýóóåôáé ôåëåõôáßá êáé
ðéèáíüí óôï ìÝëëïí íá ãíùñßóåé ìåãÜëç Üíèçóç, åßíáé ï ðáñÜëëçëïò ðñï-
ãñáììáôéóìüò. Ó÷åôéêÜ ðñüóöáôá åìöáíßóôçêáí õðïëïãéóôÝò ðïõ îå-
öåýãïõí áðü ôçí êëáóéêÞ áñ÷éôåêôïíéêÞ êáé äéáèÝôïõí ðåñéóóüôåñïõò
áðü Ýíáí åðåîåñãáóôÝò. Ïé åðåîåñãáóôÝò áõôïß ìïéñÜæïíôáé ôçí ßäéá ìíÞ-
ìç êáé ëåéôïõñãïýí ðáñÜëëçëá åêôåëþíôáò äéáöïñåôéêÝò åíôïëÝò ôïõ éäßïõ
ðñïãñÜììáôïò. Ïé õðïëïãéóôÝò áõôïß åìöáíßæïíôáé èåùñçôéêÜ íá ðåôõ-
÷áßíïõí ôá÷ýôçôåò, ðïõ åßíáé áóýëëçðôåò ãéá ôïõò ôõðéêïýò õðïëïãéóôÝò
ìå Ýíáí åðåîåñãáóôÞ. Ãéá íá åêìåôáëëåõôïýìå üìùò ôçí ôá÷ýôçôá ðïõ
ðñïóöÝñåé ç áñ÷éôåêôïíéêÞ ôïõò, ðñÝðåé ôï ðñüâëçìá íá äéáéñåèåß óå ôìÞ-
ìáôá ðïõ åêôåëïýíôáé ðáñÜëëçëá êáé óôç óõíÝ÷åéá íá ðñïãñáììáôéóôåß
óå Ýíá ðñïãñáììáôéóôéêü ðåñéâÜëëïí ðïõ íá åðéôñÝðåé ôïí ðáñÜëëçëï Ìéá ãëþóóá ðñïãñáììáôé-
óìïý ðïõ õðïóôçñßæåé ðáñÜë-
ðñïãñáììáôéóìü.
ëçëï ðñïãñáììáôéóìü åßíáé ç
‘Ïðùò áíáöÝñèçêå êáé óôï êåöÜëáéï 5, ï ðáñÜëëçëïò ðñïãñáììáôé- OCCAM.
óìüò áðïôåëåß ìßá óçìáíôéêÞ åðéóôçìïíéêÞ ðåñéï÷Þ, ç ïðïßá îåöåýãåé áðü
ôá üñéá áõôïý ôïõ âéâëßïõ.

6.7 ÐñïãñáììáôéóôéêÜ ðåñéâÜëëïíôá


ÊÜèå ðñüãñáììá ðïõ ãñÜöôçêå óå ïðïéáäÞðïôå ãëþóóá ðñïãñáììá-
ôéóìïý, ðñÝðåé íá ìåôáôñáðåß óå ìïñöÞ áíáãíùñßóéìç êáé åêôåëÝóéìç áðü
ôïí õðïëïãéóôÞ, äçëáäÞ óå åíôïëÝò ãëþóóáò ìç÷áíÞò.
Ç ìåôáôñïðÞ áõôÞ åðéôõã÷Üíåôáé ìå ôç ÷ñÞóç åéäéêþí ìåôáöñáóôéêþí
ðñïãñáììÜôùí. ÕðÜñ÷ïõí äýï ìåãÜëåò êáôçãïñßåò ôÝôïéùí ðñïãñáììÜ-
138 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

ôùí, ïé ìåôáãëùôôéóôÝò (compilers) êáé ïé äéåñìçíåõôÝò (interpreters). Ï ìå-


ôáãëùôôéóôÞò äÝ÷åôáé óôçí åßóïäï Ýíá ðñüãñáììá ãñáììÝíï óå ìéá ãëþó-
óá õøçëïý åðéðÝäïõ êáé ðáñÜãåé Ýíá éóïäýíáìï ðñüãñáììá óå ãëþóóá
ìç÷áíÞò. Ôï ôåëåõôáßï ìðïñåß íá åêôåëåßôáé ïðïôåäÞðïôå áðü ôïí õðïëï-
ãéóôÞ êáé åßíáé ôåëåßùò áíåîÜñôçôï áðü ôï áñ÷éêü ðñüãñáììá. Áíôßèåôá ï
äéåñìçíåõôÞò äéáâÜæåé ìßá ðñïò ìßá ôéò åíôïëÝò ôïõ áñ÷éêïý ðñïãñÜììáôïò
êáé ãéá êÜèå ìéá åêôåëåß áìÝóùò ìéá éóïäýíáìç áêïëïõèßá åíôïëþí ìç÷á-
íÞò.
Ôï áñ÷éêü ðñüãñáììá ëÝãåôáé ðçãáßï ðñüãñáììá (source), åíþ ôï ðñü-
ãñáììá ðïõ ðáñÜãåôáé áðü ôï ìåôáãëùôôéóôÞ ëÝãåôáé áíôéêåßìåíï ðñü-
ãñáììá (object).
Ôï áíôéêåßìåíï ðñüãñáììá åßíáé ìåí óå ìïñöÞ êáôáíïçôÞ áðü ôïí õðï-
ëïãéóôÞ, áëëÜ óõíÞèùò äåí åßíáé óå èÝóç íá åêôåëåóôåß. ×ñåéÜæåôáé íá óõ-
ìðëçñùèåß êáé íá óõíäåèåß ìå Üëëá ôìÞìáôá ðñïãñÜììáôïò áðáñáßôçôá
ãéá ôçí åêôÝëåóÞ ôïõ, ôìÞìáôá ðïõ åßôå ôá ãñÜöåé ï ðñïãñáììáôéóôÞò åßôå
âñßóêïíôáé óôéò âéâëéïèÞêåò (libraries) ôçò ãëþóóáò. Ôï ðñüãñáììá ðïõ å-
ðéôñÝðåé áõôÞ ôç óýíäåóç ïíïìÜæåôáé óõíäÝôçò – öïñôùôÞò (linker-
loader). Ôï áðïôÝëåóìá ôïõ óõíäÝôç åßíáé ç ðáñáãùãÞ ôïõ åêôåëÝóéìïõ
ðñïãñÜììáôïò (executable), ôï ïðïßï åßíáé ôï ôåëéêü ðñüãñáììá ðïõ åêôå-
ëåßôáé áðü ôïí õðïëïãéóôÞ. Ãéá ôï ëüãï áõôü ç óõíïëéêÞ äéáäéêáóßá áðïêá-
ëåßôáé ìåôáãëþôôéóç êáé óýíäåóç.
Ç äçìéïõñãßá ôïõ åêôåëÝóéìïõ ðñïãñÜììáôïò ãßíåôáé ìüíï óôçí ðåñß-
ðôùóç, ðïõ ôï áñ÷éêü ðñüãñáììá äåí ðåñéÝ÷åé ëÜèç. Ôéò ðåñéóóüôåñåò öï-
ñÝò êÜèå ðñüãñáììá áñ÷éêÜ èá Ý÷åé ëÜèç. Ôá ëÜèç ôïõ ðñïãñÜììáôïò åß-
íáé ãåíéêÜ äýï åéäþí, ëïãéêÜ êáé óõíôáêôéêÜ. Ôá ëïãéêÜ ëÜèç åìöáíßæïíôáé
ìüíï óôçí åêôÝëåóç, åíþ ôá óõíôáêôéêÜ ëÜèç óôï óôÜäéï ôçò ìåôáãëþôôé-
óçò.

Ó÷. 6.5. Ìåôáãëþôôéóç êáé óýíäåóç ðñïãñÜììáôïò


ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
139

ÅêôåíÞò ðáñïõóßáóç ôùí ëáèþí êáé ôùí ôñüðùí ðïõ áíôéìåôùðßæï-


íôáé ãßíåôáé óå åðüìåíï êåöÜëáéï. Åäþ áíáöÝñïõìå üôé ôá ëïãéêÜ ëÜèç ðïõ
åßíáé ôá ðëÝïí óïâáñÜ êáé äýóêïëá óôç äéüñèùóç ôïõò, ïöåßëïíôáé óå
óöÜëìáôá êáôÜ ôçí õëïðïßçóç ôïõ áëãïñßèìïõ, åíþ ôá óõíôáêôéêÜ ïöåß-
ëïíôáé óå áíáãñáììáôéóìïýò ïíïìÜôùí åíôïëþí, ðáñÜëçøç äÞëùóçò äå-
äïìÝíùí êáé ðñÝðåé ðÜíôá íá äéïñèùèïýí, þóôå íá ðáñá÷èåß ôï ôåëéêü å-
êôåëÝóéìï ðñüãñáììá.
Ï ìåôáãëùôôéóôÞò Þ ï äéåñìçíåõôÞò áíé÷íåýåé ëïéðüí ôá ëÜèç êáé åìöá-
íßæåé êáôÜëëçëá äéáãíùóôéêÜ ìçíýìáôá. Ôï óôÜäéï ðïõ áêïëïõèåß åßíáé ç
äéüñèùóç ôùí ëáèþí. Ôï äéïñèùìÝíï ðñüãñáììá åðáíáûðïâÜëåôáé ãéá
ìåôáãëþôôéóç êáé ç äéáäéêáóßá áõôÞ åðáíáëáìâÜíåôáé, ìÝ÷ñéò üôïõ åîáëç-
öèïýí ðëÞñùò üëá ôá ëÜèç.
Ç ÷ñÞóç ìåôáãëùôôéóôÞ Ý÷åé ôï ìåéïíÝêôçìá, üôé ðñïôïý ÷ñçóéìïðïç-
èåß Ýíá ðñüãñáììá, ðñÝðåé íá ðåñÜóåé áðü ôç äéáäéêáóßá ôçò ìåôáãëþôôé-
óçò êáé óýíäåóçò. Áðü ôçí Üëëç ìåñéÜ ç ÷ñÞóç äéåñìçíåõôÞ Ý÷åé ôï ðëåïíÝ-
êôçìá ôçò Üìåóçò åêôÝëåóçò êáé óõíåðþò êáé ôçò Üìåóçò äéüñèùóçò. ‘Ï-
ìùò ç åêôÝëåóç ôïõ ðñïãñÜììáôïò êáèßóôáôáé ðéï áñãÞ, óçìáíôéêÜ ìåñé-
êÝò öïñÝò, áðü åêåßíç ôïõ éóïäýíáìïõ åêôåëÝóéìïõ ðñïãñÜììáôïò ðïõ
ðáñÜãåé ï ìåôáãëùôôéóôÞò. ÐÜíôùò ôá óýã÷ñïíá ðñïãñáììáôéóôéêÜ ðåñé-

Ó÷. 6.6. Äéáäéêáóßá ìåôÜöñáóçò êáé åêôÝëåóçò åíüò ðñïãñÜììáôïò


140 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

âÜëëïíôá ðáñïõóéÜæïíôáé óõíÞèùò ìå ìåéêôÝò õëïðïéÞóåéò, üðïõ ÷ñçóé-


ìïðïéåßôáé äéåñìçíåõôÞò êáôÜ ôç öÜóç äçìéïõñãßáò ôïõ ðñïãñÜììáôïò êáé
ìåôáãëùôôéóôÞò ãéá ôçí ôåëéêÞ Ýêäïóç êáé åêìåôÜëëåõóç ôïõ ðñïãñÜììá-
ôïò.
Ôá óýã÷ñïíá ïëïêëçñùìÝíá Ãéá ôçí áñ÷éêÞ óýíôáîç ôùí ðñïãñáììÜôùí êáé ôç äéüñèùóÞ ôïõò óôç
ðñïãñáììáôéóôéêÜ ðåñéâÜë- óõíÝ÷åéá ÷ñçóéìïðïéåßôáé Ýíá åéäéêü ðñüãñáììá ðïõ ïíïìÜæåôáé óõíôÜ-
ëïíôá äåí ðáñÝ÷ïõí áðëþò êôçò (editor). Ï óõíôÜêôçò åßíáé ïõóéáóôéêÜ Ýíáò ìéêñüò åðåîåñãáóôÞò êåé-
Ýíá ìåôáöñáóôÞ ìéáò ãëþó-
ìÝíïõ, ìå äõíáôüôçôåò üìùò ðïõ äéåõêïëýíïõí ôç ãñÞãïñç ãñáöÞ ôùí å-
óáò ðñïãñáììáôéóìïý. Ðå-
ñéÝ÷ïõí üëá ôá ðñïãñÜììáôá íôïëþí ôùí ðñïãñáììÜôùí
êáé ôá åñãáëåßá ðïõ áðáéôïý- Ãéá ôç äçìéïõñãßá, ôç ìåôÜöñáóç êáé ôçí åêôÝëåóç åíüò ðñïãñÜììáôïò
íôáé êáé âïçèïýí ôç óõããñá-
áðáéôïýíôáé ôïõëÜ÷éóôïí ôñßá ðñïãñÜììáôá: ï óõíôÜêôçò, ï ìåôáãëùôôé-
öÞ, ôçí åêôÝëåóç êáé êýñéá
ôç äéüñèùóç ôùí ðñïãñáììÜ- óôÞò êáé ï óõíäÝôçò. Ôá óýã÷ñïíá ðñïãñáììáôéóôéêÜ ðåñéâÜëëïíôá ðáñÝ-
ôùí. ÷ïõí áõôÜ ôá ðñïãñÜììáôá ìå åíéáßï ôñüðï.
Ôï êÜèå ðñïãñáììáôéóôéêü ðåñéâÜëëïí Ý÷åé öõóéêÜ äéáöïñåôéêÜ åñãá-
ëåßá êáé éäéüôçôåò. Ãéá ðáñÜäåéãìá Ýíá ðåñéâÜëëïí ïðôéêïý (visual) ðñï-
ãñáììáôéóìïý ðñÝðåé íá ðåñéÝ÷åé ïðùóäÞðïôå êáé åéäéêü óõíôÜêôç ðïõ íá
äéåõêïëýíåé ôç äçìéïõñãßá ãñáöéêþí áíôéêåéìÝíùí (ãéá ðáñÜäåéãìá öüñ-
ìåò, ëßóôåò, ðáñÜèõñá äéáëüãïõ) ðáñÝ÷ïíôáò óôïí ðñïãñáììáôéóôÞ ôá á-
íôßóôïé÷á ãñáöéêÜ åñãáëåßá.

Áíáêåöáëáßùóç
Äçìéïõñãßá ðñïãñÜììáôïò åßíáé ç ìåôáôñïðÞ ôïõ áëãïñßèìïõ ðïõ åðé-
ëýåé Ýíá ðñüâëçìá óå åíôïëÝò ðñïãñÜììáôïò. Ïé åíôïëÝò ãñÜöïíôáé óå êÜ-
ðïéá áðü ôéò åêáôïíôÜäåò ãëþóóåò ðñïãñáììáôéóìïý, ðïõ Ý÷ïõí áíáðôõ-
÷èåß ìå óêïðü íá äéåõêïëýíïõí ôçí åðßëõóç óõãêåêñéìÝíïõ ôýðïõ ðñïâëç-
ìÜôùí. Ç åðéëïãÞ ôçò êáôáëëçëüôåñçò ãëþóóáò åîáñôÜôáé áðü ôï åßäïò
ôçò åöáñìïãÞò, ôï õðïëïãéóôéêü ðåñéâÜëëïí ðïõ èá åêôåëåóôåß, ôéò ãíþ-
óåéò êáé ôéò ðñïôéìÞóåéò ôïõ ðñïãñáììáôéóôÞ.
Ïé ôå÷íéêÝò ðïõ ÷ñçóéìïðïéïýíôáé ãéá ôçí áíÜðôõîç ðñïãñáììÜôùí åß-
íáé ôçò éåñáñ÷éêÞò ó÷åäßáóçò, ôïõ ôìçìáôéêïý ðñïãñáììáôéóìïý êáé ôïõ
äïìçìÝíïõ ðñïãñáììáôéóìïý, ðïõ åðéôñÝðïõí ôç äçìéïõñãßá ðñïãñáì-
ìÜôùí êáôáíïçôþí êáé áðëþí, åíþ äéåõêïëýíïõí ôç äéüñèùóç êáé ôç óõ-
íôÞñçóç ôùí åöáñìïãþí. ¸íá åßäïò ðñïãñáììáôéóìïý ðïõ ãíùñßæåé éäéáß-
ôåñç Üíèçóç ôåëåõôáßá, åßíáé ï áíôéêåéìåíïóôñáöÞò ðñïãñáììáôéóìüò.
ÊÜèå ðñüãñáììá ãéá íá åêôåëåóôåß áðü ôïí õðïëïãéóôÞ ÷ñåéÜæåôáé
ðñþôá íá ìåôáôñáðåß óå ìïñöÞ êáôáíïçôÞ áðü áõôüí. Ç ìåôáôñïðÞ áõ-
ôÞ ãßíåôáé áðü ôïõò ìåôáãëùôôéóôÝò Þ ôïõò äéåñìçíåõôÝò, ïé ïðïßïé åðéóç-
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
141

ìáßíïõí êáé ôá óõíôáêôéêÜ ëÜèç, ðïõ Ý÷åé êÜèå ðñüãñáììá. Ç óýíôáîç ôïõ
ðñïãñÜììáôïò, ç ìåôÜöñáóç, ç äéüñèùóç ôùí ëáèþí êáé ç åêôÝëåóç ôïõ
ãßíåôáé ìå ôá ïëïêëçñùìÝíá ðñïãñáììáôéóôéêÜ ðåñéâÜëëïíôá ðïõ äéáèÝ-
ôïõí ðïëëÜ åñãáëåßá ãéá ôçí õðïâïÞèçóç ôçò áíÜðôõîçò ôùí åöáñìïãþí.

ÅñùôÞóåéò - ÈÝìáôá ãéá óõæÞôçóç


ë Ôé ïíïìÜæåôáé ðñüãñáììá;
ë Ôé åßíáé ïé ãëþóóåò ìç÷áíÞò;
ë Ðïéåò ïé äéáöïñÝò ôùí ãëùóóþí õøçëïý åðéðÝäïõ áðü áõôÝò ÷áìçëïý
åðéðÝäïõ;
ë Ðïéåò ãëþóóåò õøçëïý åðéðÝäïõ ãíùñßæåéò;
ë Ôé ïíïìÜæïõìå ïðôéêü ðñïãñáììáôéóìü êáé ôé ïäçãïýìåíï áðü ôá ãåãï-
íüôá;
ë Ðþò ðñïóäéïñßæåôáé ìßá öõóéêÞ ãëþóóá;
ë Ðïéåò ïé êõñéüôåñåò äéáöïñÝò ôùí öõóéêþí êáé ôùí ôå÷íçôþí ãëùó-
óþí;
ë Ðþò ãßíåôáé ç ðáñÜóôáóç ôçò éåñáñ÷éêÞò ó÷åäßáóçò ðñïãñÜììáôïò;
ë Ðïéåò ïé áñ÷Ýò ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý;
ë Ðïéá ôá ðëåïíåêôÞìáôá ôïõ äïìçìÝíïõ ðñïãñáììáôéóìïý;
ë Ôé ïíïìÜæåôáé áíôéêåéìåíïóôñáöÞò ðñïãñáììáôéóìüò;
ë Ðïéá ç äéáäéêáóßá ãéá ôçí ìåôÜöñáóç êáé åêôÝëåóç åíüò ðñïãñÜììá-
ôïò;
ë Ðïéåò ïé äéáöïñÝò ìåôáãëùôôéóôÞ êáé äéåñìçíåõôÞ;
ë Ðïéá ðñïãñÜììáôá êáé åñãáëåßá ðåñéÝ÷åé Ýíá ðñïãñáììáôéóôéêü ðåñé-
âÜëëïí;

ËÝîåéò êëåéäéÜ
Ðñüãñáììá, Ãëþóóá ìç÷áíÞò, ÓõìâïëéêÞ ãëþóóá, Ãëþóóåò õøçëïý å-
ðéðÝäïõ, Ôìçìáôéêüò ðñïãñáììáôéóìüò, ÄïìçìÝíïò ðñïãñáììáôéóìüò, Á-
íôéêåéìåíïóôñáöÞò ðñïãñáììáôéóìüò, ÌåôáãëùôôéóôÞò, ÄéåñìçíåõôÞò,
Ðñïãñáììáôéóôéêü ðåñéâÜëëïí
142 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâÜëëïí

Âéâëéïãñáößá
1. Ph. Breton, Éóôïñßá ôçò ÐëçñïöïñéêÞò, Åêäüóåéò Äßáõëïò, ÁèÞíá,
2. Ã. Ìðáìðéíéþôçò, ÈåùñçôéêÞ Ãëùóóïëïãßá, ÁèÞíá, 1986.
3. ×ñ. Êïßëéáò-Óôñ, Êáëáöáôïýäçò, Ôï ðñþôï âéâëßï ôçò ÐëçñïöïñéêÞò,
Åêäüóåéò ÍÝùí Ôå÷íïëïãéþí, ÁèÞíá, 1992.
4. Åãêõêëïðáßäåéá ÐëçñïöïñéêÞò êáé Ôå÷íïëïãßáò Õðïëïãéóôþí, Åêäü-
óåéò ÍÝùí Ôå÷íïëïãéþí, ÁèÞíá, 1986.
5. Áè.ÔóïõñïðëÞò-Óô.Êëçìüðïõëïò, Áðü ôç FORTRAN 77 óôç FORTRAN
90, Åêäüóåéò ÐåëåêÜíïò, ÁèÞíá, 1995.
6. ×. Êïßëéáò-Óôñ. Ìáñáãêüò, Ç ãëþóóá COBOL êáé ïé åöáñìïãÝò ôçò,
Åêäüóåéò ÍÝùí Ôå÷íïëïãéþí, ÁèÞíá, ÁèÞíá, 1992.
7. Ê. ÌáñéíÜêçò-Í. Éùáííßäçò, Structure & Advanced COBOL, Åêäüóåéò ‘Å-
ëéî, ÁèÞíá, 1992.
8. ×. Êïßëéáò-Áë. ÔïìáñÜò, GWBASIC Èåùñßá êáé ÅöáñìïãÝò, Åêäüóåéò
ÍÝùí Ôå÷íïëïãéþí, ÁèÞíá, 1992.
9. Ì. ÊáôæïõñÜêç-Ì. Ãåñãáôóïýëçò-Ó. Êüêêïôïò, PROãñáììáôßæïíôáò
óôç LOGéêÞ, ‘Åêäïóç ÅÐÕ, ÁèÞíá, 1991.
10. Áéê. Ãåùñãïðïýëïõ, LOGO ÂÞìá ðñïò ÂÞìá, Åêäüóåéò ÍÝùí Ôå÷íïëï-
ãéþí, ÁèÞíá, 1991.
11. Áë. ÔïìáñÜò, C Èåùñßá êáé ÐñÜîç, Åêäüóåéò ÍÝùí Ôå÷íïëïãéþí, ÁèÞ-
íá, 1995.
12. M.ÌáëéÜððçò, SQL ÐåñéâÜëëïíôá ÁíÜðôõîçò Åöáñìïãþí 4çò ÃåíéÜò,
Åêäüóåéò ÍÝùí Ôå÷íïëïãéþí, ÁèÞíá, 1995.
13. E. Horowitz, ÂáóéêÝò áñ÷Ýò ãëùóóþí ðñïãñáììáôéóìïý, ÊëåéäÜñéè-
ìïò, ÁèÞíá, 1995.
14. R. Shackelford, Introduction to Computing and Algorithms,
Addison-Wesley, USA, 1998.
15. W. Hutching-H. Somers, An Introduction to Machine Translation,
Academic Press, London, 1992.
ÅéóáãùãÞ óôïí ðñïãñáììáôéóìü
143

Äéåõèýíóåéò Äéáäéêôýïõ
ë cuiwww.unige.ch/langlist
ÊáôÜëïãïò üëùí ôùí ãëùóóþí ðñïãñáììáôéóìïý ðïõ õðÜñ÷ïõí. Ðå-
ñéÝ÷åé ðåñéóóüôåñåò áðü 2000 ãëþóóåò êáé åíçìåñþíåôáé óõíå÷þò.
ë www.swcp.com/~dodrill/
ÐåñéÝ÷åé ðëçñïöïñßåò áëëÜ êáé ðïëëÝò åêðáéäåõôéêÝò áóêÞóåéò ãéá äéÜ-
öïñåò ãëþóóåò ðñïãñáììáôéóìïý.
ë www.progsource.com
ÃåíéêÝò ðëçñïöïñßåò, ðïëëÝò åöáñìïãÝò, ÷ñÞóéìá âïçèçôéêÜ ðñïãñÜì-
ìáôá êáèþò êáé áíáöïñÝò óå Üëëåò äéåõèýíóåéò ãéá ðïëëÝò ãëþóóåò ðñï-
ãñáììáôéóìïý üðùò Pascal, Delphi, C/C++, Java, Perl, Visual Basic.
ë www.hensa.ac.uk/parallel/
Ðëçñïöïñßåò ãéá ôïí ðáñÜëëçëï ðñïãñáììáôéóìü êáé ôéò ãëþóóåò ðïõ
õðïóôçñßæïõí ôïí ðáñÜëëçëï ðñïãñáììáôéóìü.
ë Softwaredesign.com/objects.html
ÃåíéêÝò óõíïðôéêÝò ðëçñïöïñßåò ãéá ôï ôé åßíáé áíôéêåéìåíïóôñáöÞò
ðñïãñáììáôéóìüò êáé ôá âáóéêÜ ÷áñáêôçñéóôéêÜ ôïõ áíôéêåéìåíïóôñá-
öïýò ðñïãñáììáôéóìïý.
ë Iamwww.unibe.ch/~scg/Ooinfo
Óôïé÷åßá ãéá ôïí áíôéêåéìåíïóôñáöÞ ðñïãñáììáôéóìü, ôéò ãëþóóåò ðïõ
÷ñçóéìïðïéïýíôáé êáé ðïëëÝò ó÷åôéêÝò äéåõèýíóåéò.

You might also like