Professional Documents
Culture Documents
Book 22 187 1 100.en - Ar
Book 22 187 1 100.en - Ar
ﻣﻘﺪﻣﺎﺕ
1
ﺏ
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 2
ﻗﺒﻞﺃﻥ ﻧﺒﺪﺃ ﻓﻲ ﻣﻨﺎﻗﺸﺔ ﻣﻔﺎﻫﻴﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻳﺠﺐ ﺃﻥ ﻧﺄﺧﺬ ﻓﻲ ﺍﻻﻋﺘﺒﺎﺭ ﺑﻌﺾ
ﺍﻟﻤﻘﺪﻣﺎﺕ.ﺃﻭﻻ ً ،ﻧﺸﺮﺡ ﺑﻌﺾ ﺍﻷﺳﺒﺎﺏ ﺍﻟﺘﻲ ﺗﺠﻌﻞ ﻃﻼﺏ ﻋﻠﻮﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻭﻣﻄﻮﺭﻱ
ﺍﻟﺒﺮﺍﻣﺞﺍﻟﻤﺤﺘﺮﻓﻴﻦ ﻳﺪﺭﺳﻮﻥ ﺍﻟﻤﻔﺎﻫﻴﻢ ﺍﻟﻌﺎﻣﺔ ﻟﺘﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﻭﺗﻘﻴﻴﻤﻬﺎ .ﺗﻌﺘﺒﺮ ﻫﺬﻩ
ﺍﻟﻤﻨﺎﻗﺸﺔﺫﺍﺕ ﻗﻴﻤﺔ ﺧﺎﺻﺔ ﻷﻭﻟﺉﻚ ﺍﻟﺬﻳﻦ ﻳﻌﺘﻘﺪﻭﻥ ﺃﻥ ﺍﻟﻤﻌﺮﻓﺔ ﺍﻟﻌﻤﻠﻴﺔ ﺑﻠﻐﺔ ﺃﻭ ﻟﻐﺘﻴﻦ ﻣﻦ ﻟﻐﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔﻛﺎﻓﻴﺔ ﻟﻌﻠﻤﺎء ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﺑﻌﺪ ﺫﻟﻚ ،ﻧﺼﻒ ﺑﺈﻳﺠﺎﺯ ﻣﺠﺎﻻﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ .ﺑﻌﺪ ﺫﻟﻚ ،
ﻧﻈﺮﺍًﻷﻥ ﺍﻟﻜﺘﺎﺏ ﻳﻘﻴﻢ ﺗﺮﺍﻛﻴﺐ ﺍﻟﻠﻐﺔ ﻭﻣﻴﺰﺍﺗﻬﺎ ،ﻓﺈﻧﻨﺎ ﻧﻘﺪﻡ ﻗﺎﺉﻤﺔ ﺑﺎﻟﻤﻌﺎﻳﻴﺮ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ
ﺑﻤﺜﺎﺑﺔﺃﺳﺎﺱ ﻟﻤﺜﻞ ﻫﺬﻩ ﺍﻷﺣﻜﺎﻡ .ﺑﻌﺪ ﺫﻟﻚ ،ﻧﻨﺎﻗﺶ ﺍﻟﺘﺄﺛﻴﺮﻳﻦ ﺍﻟﺮﺉﻴﺴﻴﻴﻦ ﻋﻠﻰ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ:
ﻫﻨﺪﺳﺔﺍﻵﻟﺔ ﻭﻣﻨﻬﺠﻴﺎﺕ ﺗﺼﻤﻴﻢ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺑﻌﺪ ﺫﻟﻚ ،ﻧﻘﺪﻡ ﻓﺉﺎﺕ ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ.
ﺍﻟﺘﺎﻟﻲ،
ﻧﻈﺮﺍًﻷﻥ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﻳﺪﻭﺭ ﺃﻳﻀﺎً ﺣﻮﻝ ﺗﻄﺒﻴﻖ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻓﺈﻥ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻳﺘﻀﻤﻦ ﻧﻈﺮﺓ
ﻋﺎﻣﺔﻋﻠﻰ ﺍﻟﻤﻨﺎﻫﺞ ﺍﻟﻌﺎﻣﺔ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﻟﻠﺘﻨﻔﻴﺬ .ﺃﺧﻴﺮﺍً ،ﻧﺼﻒ ﺑﺈﻳﺠﺎﺯ ﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ ﻟﺒﻴﺉﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔﻭﻧﻨﺎﻗﺶ ﺗﺄﺛﻴﺮﻫﺎ ﻋﻠﻰ ﺇﻧﺘﺎﺝ ﺍﻟﺒﺮﺍﻣﺞ.
• ﺯﻳﺎﺩﺓﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﻟﺘﻌﺒﻴﺮ ﻋﻦ ﺍﻷﻓﻜﺎﺭ.ﻣﻦ ﺍﻟﻤﻌﺘﻘﺪ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﺃﻥ ﺍﻟﻌﻤﻖ ﺍﻟﺬﻱ ﻳﻤﻜﻦ
ﻟﻠﻨﺎﺱﺍﻟﺘﻔﻜﻴﺮ ﻓﻴﻪ ﻳﺘﺄﺛﺮ ﺑﺎﻟﻘﻮﺓ ﺍﻟﺘﻌﺒﻴﺮﻳﺔ ﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻳﻨﻘﻠﻮﻥ ﺑﻬﺎ ﺃﻓﻜﺎﺭﻫﻢ .ﺃﻭﻟﺉﻚ ﺍﻟﺬﻳﻦ
ﻟﺪﻳﻬﻢﻓﻬﻢ ﺿﻌﻴﻒ ﻟﻠﻐﺔ ﺍﻟﻄﺒﻴﻌﻴﺔ ﻣﻘﻴﺪﻭﻥ ﻓﻲ ﺗﻌﻘﻴﺪ ﺃﻓﻜﺎﺭﻫﻢ ،ﻻ ﺳﻴﻤﺎ ﻓﻲ ﻋﻤﻖ
ﺍﻟﺘﺠﺮﻳﺪ.ﺑﻌﺒﺎﺭﺓ ﺃﺧﺮﻯ ،ﻳﺼﻌﺐ ﻋﻠﻰ ﺍﻟﻨﺎﺱ ﺗﺼﻮﺭ ﺍﻟﻬﻴﺎﻛﻞ ﺍﻟﺘﻲ ﻻ ﻳﻤﻜﻨﻬﻢ ﻭﺻﻔﻬﺎ ﺷﻔﻬﻴﺎ ً
ﺃﻭﻛﺘﺎﺑﻴﺎً.
ﺍﻟﻤﺒﺮﻣﺠﻮﻥ ،ﻓﻲ ﻋﻤﻠﻴﺔ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ،ﻣﻘﻴﺪﻭﻥ ﺑﺎﻟﻤﺜﻞ .ﺗﻀﻊ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻳﻄﻮﺭﻭﻥ
ﺑﻬﺎﺍﻟﺒﺮﺍﻣﺞ ﻗﻴﻮﺩﺍً ﻋﻠﻰ ﺃﻧﻮﺍﻉ ﻫﻴﺎﻛﻞ ﺍﻟﺘﺤﻜﻢ ﻭﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﺍﻟﺘﺠﺮﺩ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻬﻢ
ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ؛ﻭﺑﺎﻟﺘﺎﻟﻲ ،ﻓﺈﻥ ﺃﺷﻜﺎﻝ ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺎﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻬﻢ ﺇﻧﺸﺎﺅﻫﺎ ﻣﺤﺪﻭﺩﺓ ﺑﺎﻟﻤﺜﻞ.
ﻳﻤﻜﻦﺃﻥ ﻳﺆﺩﻱ ﺍﻟﻮﻋﻲ ﺑﻤﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ ﻣﻴﺰﺍﺕ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺇﻟﻰ ﺗﻘﻠﻴﻞ ﻫﺬﻩ ﺍﻟﻘﻴﻮﺩ
ﻓﻲﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ .ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺠﻴﻦ ﺯﻳﺎﺩﺓ ﻧﻄﺎﻕ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ
ﻣﻦﺧﻼﻝ ﺗﻌﻠﻢ ﺗﺮﺍﻛﻴﺐ ﻟﻐﺔ ﺟﺪﻳﺪﺓ.
ﻗﺪﻳﻘُﺎﻝ ﺇﻥ ﺗﻌﻠﻢ ﻗﺪﺭﺍﺕ ﺍﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﻻ ﻳﺴﺎﻋﺪ ﺍﻟﻤﺒﺮﻣﺞ ﺍﻟﺬﻱ ﻳﺠُﺒﺮ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ
ﻟﻐﺔﺗﻔﺘﻘﺮ ﺇﻟﻰ ﺗﻠﻚ ﺍﻟﻘﺪﺭﺍﺕ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﻫﺬﻩ ﺍﻟﺤﺠﺔ ﻻ ﺗﺼﻤﺪ ،ﻷﻧﻪ ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ
ﺍﻷﺣﻴﺎﻥ ،ﻳﻤﻜﻦ ﻣﺤﺎﻛﺎﺓ ﺑﻨﻴﺎﺕ ﺍﻟﻠﻐﺔ ﺑﻠﻐﺎﺕ ﺃﺧﺮﻯ ﻻ ﺗﺪﻋﻢ ﺗﻠﻚ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ.
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻗﺪ ﻳﺼﻤﻢ ﻣﺒﺮﻣﺞ ﺳﻲ ﺗﻌﻠﻢ ﺑﻨﻴﺔ ﻭﺍﺳﺘﺨﺪﺍﻣﺎﺕ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ
ﺍﻟﺘﺮﺍﺑﻄﻴﺔﻓﻲ ﺑﻴﺮﻝ ) Wallﻭﺁﺧﺮﻭﻥ (2000 ،ﻫﻴﺎﻛﻞ ﺗﺤﺎﻛﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺘﺮﺍﺑﻄﻴﺔ ﻓﻲ ﺗﻠﻚ
ﺍﻟﻠﻐﺔ.ﻓﻲ ﺃﺧﺮﻯ
3 1.1ﺃﺳﺒﺎﺏ ﺩﺭﺍﺳﺔ ﻣﻔﺎﻫﻴﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﻜﻠﻤﺎﺕ ،ﻓﺈﻥ ﺩﺭﺍﺳﺔ ﻣﻔﺎﻫﻴﻢ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺗﺒﻨﻲ ﺗﻘﺪﻳﺮﺍً ﻟﺨﺼﺎﺉﺺ ﺍﻟﻠﻐﺔ ﺍﻟﻘﻴﻤﺔ ﻭﺗﺒﻨﻴﻬﺎ
ﻭﺗﺸﺠﻊﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ،ﺣﺘﻰ ﻋﻨﺪﻣﺎ ﻻ ﺗﺪﻋﻢ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻳﺴﺘﺨﺪﻣﻮﻧﻬﺎ ﻫﺬﻩ
ﺍﻟﻤﻴﺰﺍﺕﻭﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ.
ﻏﺎﻟﺒﺎًﻣﺎ ﻳﻤﻜﻦ ﻣﺤﺎﻛﺎﺓ ﺑﻌﺾ ﻣﻴﺰﺍﺕ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ ﺑﻠﻐﺔ ﺃﺧﺮﻯ .ﻭﻣﻊ ﺫﻟﻚ ،ﻳﻔُﻀﻞ
ﺍﺳﺘﺨﺪﺍﻡﻣﻴﺰﺓ ﺗﻢ ﺩﻣﺞ ﺗﺼﻤﻴﻤﻬﺎ ﻓﻲ ﻟﻐﺔ ﺑﺪﻻ ًﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺤﺎﻛﺎﺓ ﻟﺘﻠﻚ ﺍﻟﻤﻴﺰﺓ ،ﻭﺍﻟﺘﻲ
ﻏﺎﻟﺒﺎًﻣﺎ ﺗﻜﻮﻥ ﺃﻗﻞ ﺃﻧﺎﻗﺔ ﻭﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً ﻭﺃﻗﻞ ﺃﻣﺎﻧﺎً.
• ﺯﻳﺎﺩﺓﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺗﻌﻠﻢ ﻟﻐﺎﺕ ﺟﺪﻳﺪﺓ.ﻻ ﺗﺰﺍﻝ ﺑﺮﻣﺠﺔ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺗﺨﺼﺼﺎً ﺻﻐﻴﺮﺍً ﻧﺴﺒﻴﺎً ،ﻭﻻ
ﺗﺰﺍﻝﻣﻨﻬﺠﻴﺎﺕ ﺍﻟﺘﺼﻤﻴﻢ ﻭﺃﺩﻭﺍﺕ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﻭﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺣﺎﻟﺔ ﺗﻄﻮﺭ ﻣﺴﺘﻤﺮ.
ﻫﺬﺍﻳﺠﻌﻞ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﻣﻬﻨﺔ ﻣﺜﻴﺮﺓ ،ﻭﻟﻜﻨﻪ ﻳﻌﻨﻲ ﺃﻳﻀﺎً ﺃﻥ ﺍﻟﺘﻌﻠﻢ ﺍﻟﻤﺴﺘﻤﺮ ﺿﺮﻭﺭﻱ.
ﻳﻤﻜﻦﺃﻥ ﺗﻜﻮﻥ ﻋﻤﻠﻴﺔ ﺗﻌﻠﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺟﺪﻳﺪﺓ ﻃﻮﻳﻠﺔ ﻭﺻﻌﺒﺔ ،ﺧﺎﺻﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺸﺨﺺ
ﻳﺸﻌﺮﺑﺎﻟﺮﺍﺣﺔ ﻣﻊ ﻟﻐﺔ ﻭﺍﺣﺪﺓ ﺃﻭ ﻟﻐﺘﻴﻦ ﻓﻘﻂ ﻭﻟﻢ ﻳﻔﺤﺺ ﻣﻔﺎﻫﻴﻢ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺑﺸﻜﻞ ﻋﺎﻡ
ﻣﻄﻠﻘﺎً.ﺑﻤﺠﺮﺩ ﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﻓﻬﻢ ﺷﺎﻣﻞ ﻟﻠﻤﻔﺎﻫﻴﻢ ﺍﻷﺳﺎﺳﻴﺔ ﻟﻠﻐﺎﺕ ،ﻳﺼﺒﺢ ﻣﻦ ﺍﻷﺳﻬﻞ
ﺑﻜﺜﻴﺮﺭﺅﻳﺔ ﻛﻴﻔﻴﺔ ﺩﻣﺞ ﻫﺬﻩ ﺍﻟﻤﻔﺎﻫﻴﻢ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻌﻠﻤﻬﺎ .ﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ ،ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﺍﻟﺬﻳﻦ ﻳﻔﻬﻤﻮﻥ ﻣﻔﺎﻫﻴﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ ﺳﻴﻜﻮﻥ ﻟﺪﻳﻬﻢ ﻭﻗﺖ
ﺃﺳﻬﻞﻓﻲ ﺗﻌﻠﻢ ،.Java )Arnold et al
ﺗﺤﺪﺙﻧﻔﺲ ﺍﻟﻈﺎﻫﺮﺓ ﻓﻲ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻄﺒﻴﻌﻴﺔ .ﻛﻠﻤﺎ ﻋﺮﻓﺖ ﻗﻮﺍﻋﺪ ﻟﻐﺘﻚ ﺍﻷﻡ ﺑﺸﻜﻞ
ﺃﻓﻀﻞ ،ﻛﺎﻥ ﻣﻦ ﺍﻷﺳﻬﻞ ﺗﻌﻠﻢ ﻟﻐﺔ ﺛﺎﻧﻴﺔ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻓﺈﻥ ﺗﻌﻠﻢ ﻟﻐﺔ ﺛﺎﻧﻴﺔ ﻟﻪ ﻓﺎﺉﺪﺓ
ﻓﻲﺗﻌﻠﻴﻤﻚ ﺍﻟﻤﺰﻳﺪ ﻋﻦ ﻟﻐﺘﻚ ﺍﻷﻭﻟﻰ.
.1ﻻﺣﻆ ﺃﻥ ﻫﺬﺍ ﺍﻟﻔﻬﺮﺱ ﻫﻮ ﻣﻘﻴﺎﺱ ﻭﺍﺣﺪ ﻓﻘﻂ ﻟﺸﻌﺒﻴﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻭﺩﻗﺘﻪ ﻏﻴﺮ ﻣﻘﺒﻮﻟﺔ ﻋﺎﻟﻤﻴﺎً.
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 4
ﺍﻟﻮﻗﺖ.ﺗﻈﻬﺮ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻔﻬﺮﺱ ﺃﻳﻀﺎً ﺃﻥ ﺗﻮﺯﻳﻊ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻳﺘﻐﻴﺮ ﺩﺍﺉﻤﺎً .ﻳﺸﻴﺮ
ﻋﺪﺩﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻭﺍﻟﻄﺒﻴﻌﺔ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﻟﻺﺣﺼﺎءﺍﺕ ﺇﻟﻰ ﺃﻥ ﻛﻞ ﻣﻄﻮﺭ ﺑﺮﺍﻣﺞ ﻳﺠﺐ
ﺃﻥﻳﻜﻮﻥ ﻣﺴﺘﻌﺪﺍً ﻟﺘﻌﻠﻢ ﻟﻐﺎﺕ ﻣﺨﺘﻠﻔﺔ.
• ﻓﻬﻢﺃﻓﻀﻞ ﻷﻫﻤﻴﺔ ﺍﻟﺘﻨﻔﻴﺬ.ﻓﻲ ﺗﻌﻠﻢ ﻣﻔﺎﻫﻴﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻣﻦ ﺍﻟﻤﺜﻴﺮ ﻟﻼﻫﺘﻤﺎﻡ
ﻭﺍﻟﻀﺮﻭﺭﻱﺃﻥ ﻧﺘﻄﺮﻕ ﺇﻟﻰ ﻗﻀﺎﻳﺎ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﻲ ﺗﺆﺛﺮ ﻋﻠﻰ ﺗﻠﻚ ﺍﻟﻤﻔﺎﻫﻴﻢ .ﻓﻲ ﺑﻌﺾ
ﺍﻟﺤﺎﻻﺕ ،ﻳﺆﺩﻱ ﻓﻬﻢ ﻣﺸﻜﻼﺕ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﻓﻬﻢ ﺳﺒﺐ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺎﺕ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ ﻫﻲ
ﻋﻠﻴﻬﺎ.ﺑﺪﻭﺭﻫﺎ ،ﺗﺆﺩﻱ ﻫﺬﻩ ﺍﻟﻤﻌﺮﻓﺔ ﺇﻟﻰ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻠﻐﺔ ﺑﺸﻜﻞ ﺃﻛﺜﺮ ﺫﻛﺎء ً،
ﺣﻴﺚﺗﻢ ﺗﺼﻤﻴﻤﻬﺎ ﻻﺳﺘﺨﺪﺍﻣﻬﺎ .ﻳﻤﻜﻨﻨﺎ ﺃﻥ ﻧﺼﺒﺢ ﻣﺒﺮﻣﺠﻴﻦ ﺃﻓﻀﻞ ﻣﻦ ﺧﻼﻝ ﻓﻬﻢ
ﺍﻟﺨﻴﺎﺭﺍﺕﺑﻴﻦ ﺗﺮﺍﻛﻴﺐ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻭﻋﻮﺍﻗﺐ ﺗﻠﻚ ﺍﻻﺧﺘﻴﺎﺭﺍﺕ.
ﻳﻤﻜﻦﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﺃﻧﻮﺍﻉ ﻣﻌﻴﻨﺔ ﻣﻦ ﺃﺧﻄﺎء ﺍﻟﺒﺮﺍﻣﺞ ﻭﺇﺻﻼﺣﻬﺎ ﻓﻘﻂ ﺑﻮﺍﺳﻄﺔ ﻣﺒﺮﻣﺞ
ﻳﻌﺮﻑﺑﻌﺾ ﺗﻔﺎﺻﻴﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺫﺍﺕ ﺍﻟﺼﻠﺔ .ﻓﺎﺉﺪﺓ ﺃﺧﺮﻯ ﻟﻔﻬﻢ ﻗﻀﺎﻳﺎ ﺍﻟﺘﻨﻔﻴﺬ ﻫﻲ ﺃﻧﻪ
ﻳﺴﻤﺢﻟﻨﺎ ﺑﺘﺼﻮﺭ ﻛﻴﻒ ﻳﻨﻔﺬ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺗﺮﺍﻛﻴﺐ ﻟﻐﻮﻳﺔ ﻣﺨﺘﻠﻔﺔ .ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ،ﺗﻮﻓﺮ
ﺑﻌﺾﺍﻟﻤﻌﺮﻓﺔ ﺑﻘﻀﺎﻳﺎ ﺍﻟﺘﻨﻔﻴﺬ ﺗﻠﻤﻴﺤﺎﺕ ﺣﻮﻝ ﺍﻟﻜﻔﺎءﺓ ﺍﻟﻨﺴﺒﻴﺔ ﻟﻠﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺒﺪﻳﻠﺔ ﺍﻟﺘﻲ
ﻳﻤﻜﻦﺍﺧﺘﻴﺎﺭﻫﺎ ﻟﻠﺒﺮﻧﺎﻣﺞ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﻻ ﻳﺪﺭﻙ ﺍﻟﻤﺒﺮﻣﺠﻮﻥ ﺍﻟﺬﻳﻦ ﻳﻌﺮﻓﻮﻥ
ﺍﻟﻘﻠﻴﻞﻋﻦ ﺗﻌﻘﻴﺪ ﺗﻨﻔﻴﺬ ﻣﻜﺎﻟﻤﺎﺕ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﺃﻥ ﺑﺮﻧﺎﻣﺠﺎً ﻓﺮﻋﻴﺎً ﺻﻐﻴﺮﺍً ﻳﺪُﻋﻰ ﻛﺜﻴﺮﺍً
ﻳﻤﻜﻦﺃﻥ ﻳﻜﻮﻥ ﺍﺧﺘﻴﺎﺭ ﺗﺼﻤﻴﻢ ﻏﻴﺮ ﻓﻌﺎﻝ ﻟﻠﻐﺎﻳﺔ.
ﻧﻈﺮﺍًﻷﻥ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﻻ ﻳﺘﻄﺮﻕ ﺇﻻ ﺇﻟﻰ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﻗﻀﺎﻳﺎ ﺍﻟﺘﻨﻔﻴﺬ ،ﻓﺈﻥ ﺍﻟﻔﻘﺮﺗﻴﻦ
ﺍﻟﺴﺎﺑﻘﺘﻴﻦﺗﺨﺪﻣﺎﻥ ﺃﻳﻀﺎً ﺍﻷﺳﺎﺱ ﺍﻟﻤﻨﻄﻘﻲ ﻟﺪﺭﺍﺳﺔ ﺗﺼﻤﻴﻢ ﺍﻟﻤﺘﺮﺟﻢ.
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻌﺘﻘﺪ ﺍﻟﻜﺜﻴﺮ ﻣﻦ ﺍﻟﻨﺎﺱ ﺃﻧﻪ ﻛﺎﻥ ﻣﻦ ﺍﻷﻓﻀﻞ ﻟﻮ ﺃﻥ ) ALGOL 60
ﺑﺎﻛﻮﺱﻭﺁﺧﺮﻭﻥ (1963 ،ﻗﺪ ﺃﺯﺍﺡ ﻓﻮﺭﺗﺮﺍﻥ )ﻣﻴﺘﻜﺎﻟﻒ ﻭﺁﺧﺮﻭﻥ (2004 ،ﻓﻲ
5 1.2ﻣﺠﺎﻻﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﻓﻲﺃﻭﺍﺉﻞ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ،ﻷﻧﻬﺎ ﻛﺎﻧﺖ ﺃﻛﺜﺮ ﺃﻧﺎﻗﺔ ﻭﻛﺎﻥ ﻟﺪﻳﻬﺎ ﺑﻴﺎﻧﺎﺕ ﺗﺤﻜﻢ ﺃﻓﻀﻞ ﺑﻜﺜﻴﺮ ،ﻣﻦ
ﺑﻴﻦﺃﺳﺒﺎﺏ ﺃﺧﺮﻯ .ﻳﺮﺟﻊ ﺫﻟﻚ ﺟﺰﺉﻴﺎً ﺇﻟﻰ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻭﻣﺪﻳﺮﻱ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﻓﻲ ﺫﻟﻚ
ﺍﻟﻮﻗﺖ ،ﻭﻛﺜﻴﺮ ﻣﻨﻬﻢ ﻟﻢ ﻳﻔﻬﻢ ﺑﻮﺿﻮﺡ ﺍﻟﺘﺼﻤﻴﻢ ﺍﻟﻤﻔﺎﻫﻴﻤﻲ ﻟـ .ALGOL 60ﻟﻘﺪ ﻭﺟﺪﻭﺍ
ﻭﺻﻔﻪﺻﻌﺐ ﺍﻟﻘﺮﺍءﺓ )ﻭﻫﻮ ﻣﺎ ﻛﺎﻥ ﻋﻠﻴﻪ( ﻭﺣﺘﻰ ﺃﻛﺜﺮ ﺻﻌﻮﺑﺔ ﻓﻲ ﺍﻟﻘﺮﺍءﺓ .ﻳﻔﻬﻢ .ﻟﻢ ﻳﻘﺪﺭﻭﺍ
ﻓﻮﺍﺉﺪﺑﻨﻴﺔ ﺍﻟﻜﺘﻠﺔ ،ﻭﺍﻟﺘﻜﺮﺍﺭ ،ﻭﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻟﻤﻨﻈﻤﺔ ﺟﻴﺪﺍً ،ﻟﺬﻟﻚ ﻓﺸﻠﻮﺍ ﻓﻲ ﺭﺅﻳﺔ
ﻓﻮﺍﺉﺪ ALGOL 60ﻋﻠﻰ .Fortran
ﺑﺸﻜﻞﻋﺎﻡ ،ﺇﺫﺍ ﻛﺎﻥ ﺃﻭﻟﺉﻚ ﺍﻟﺬﻳﻦ ﻳﺨﺘﺎﺭﻭﻥ ﺍﻟﻠﻐﺎﺕ ﻋﻠﻰ ﺩﺭﺍﻳﺔ ﺟﻴﺪﺓ ،ﻓﺮﺑﻤﺎ ﺗﻀﻐﻂ
ﺍﻟﻠﻐﺎﺕﺍﻷﻓﻀﻞ ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ﻋﻠﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻷﻓﻘﺮ.
1.2ﻣﺠﺎﻻﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺗﻢﺗﻄﺒﻴﻖ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻓﻲ ﻋﺪﺩ ﻻ ﻳﺤﺼﻰ ﻣﻦ ﺍﻟﻤﺠﺎﻻﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ،ﻣﻦ ﺍﻟﺘﺤﻜﻢ ﻓﻲ
ﻣﺤﻄﺎﺕﺍﻟﻄﺎﻗﺔ ﺍﻟﻨﻮﻭﻳﺔ ﺇﻟﻰ ﺗﻮﻓﻴﺮ ﺃﻟﻌﺎﺏ ﺍﻟﻔﻴﺪﻳﻮ ﻓﻲ ﺍﻟﻬﻮﺍﺗﻒ ﺍﻟﻤﺤﻤﻮﻟﺔ .ﺑﺴﺒﺐ ﻫﺬﺍ ﺍﻟﺘﻨﻮﻉ
ﺍﻟﻜﺒﻴﺮﻓﻲ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ،ﺗﻢ ﺗﻄﻮﻳﺮ ﻟﻐﺎﺕ ﺑﺮﻣﺠﺔ ﺫﺍﺕ ﺃﻫﺪﺍﻑ ﻣﺨﺘﻠﻔﺔ ﺟﺪﺍً .ﻓﻲ ﻫﺬﺍ
ﺍﻟﻘﺴﻢ ،ﻧﻨﺎﻗﺶ ﺑﺈﻳﺠﺎﺯ ﺑﻌﺾ ﻣﺠﺎﻻﺕ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻭﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﻬﺎ.
1.2.1ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ
ﺗﻢﺍﺧﺘﺮﺍﻉ ﺍﻟﺤﻮﺍﺳﻴﺐ ﺍﻟﺮﻗﻤﻴﺔ ﺍﻷﻭﻟﻰ ،ﺍﻟﺘﻲ ﻇﻬﺮﺕ ﻓﻲ ﺃﻭﺍﺧﺮ ﺍﻷﺭﺑﻌﻴﻨﻴﺎﺕ ﻭﺃﻭﺍﺉﻞ
ﺍﻟﺨﻤﺴﻴﻨﻴﺎﺕﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ ،ﻭﺍﺳﺘﺨﺪﻣﺖ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ .ﻋﺎﺩﺓ ،ﺍﺳﺘﺨﺪﻣﺖ
ﺍﻟﺘﻄﺒﻴﻘﺎﺕﺍﻟﻌﻠﻤﻴﺔ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ ﻫﻴﺎﻛﻞ ﺑﻴﺎﻧﺎﺕ ﺑﺴﻴﻄﺔ ﻧﺴﺒﻴﺎً ،ﻭﻟﻜﻨﻬﺎ ﺗﻄﻠﺒﺖ ﺃﻋﺪﺍﺩﺍً
ﻛﺒﻴﺮﺓﻣﻦ ﺍﻟﺤﺴﺎﺑﺎﺕ ﺍﻟﺤﺴﺎﺑﻴﺔ ﻟﻠﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ .ﻛﺎﻧﺖ ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﻫﻲ
ﺍﻟﻤﺼﻔﻮﻓﺎﺕﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ؛ ﻛﺎﻧﺖ ﻫﻴﺎﻛﻞ ﺍﻟﺘﺤﻜﻢ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﻫﻲ ﻋﺪ ﺍﻟﺤﻠﻘﺎﺕ
ﻭﺍﻻﺧﺘﻴﺎﺭﺍﺕ.ﺗﻢ ﺗﺼﻤﻴﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻟﻤﺒﻜﺮﺓ ﺍﻟﺘﻲ ﺗﻢ ﺍﺧﺘﺮﺍﻋﻬﺎ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ
ﺍﻟﻌﻠﻤﻴﺔﻟﺘﻮﻓﻴﺮ ﺗﻠﻚ ﺍﻻﺣﺘﻴﺎﺟﺎﺕ .ﻛﺎﻧﺖ ﺍﻟﻤﻨﺎﻓﺴﺔ ﻫﻲ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ،ﻟﺬﺍ ﻛﺎﻧﺖ ﺍﻟﻜﻔﺎءﺓ ﻫﻲ
ﺍﻟﺸﻐﻞﺍﻟﺸﺎﻏﻞ .ﻛﺎﻧﺖ ﻟﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻷﻭﻟﻰ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ .ﺗﻢ ﺗﺼﻤﻴﻢ 60
ALGOLﻭﻣﻌﻈﻢ ﺃﺣﻔﺎﺩﻩ ﺃﻳﻀﺎً ﻟﻼﺳﺘﺨﺪﺍﻡ ﻓﻲ ﻫﺬﻩ ﺍﻟﻤﻨﻄﻘﺔ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻬﺎ ﻣﺼﻤﻤﺔ
ﻟﻼﺳﺘﺨﺪﺍﻡﻓﻲ ﺍﻟﻤﺠﺎﻻﺕ ﺫﺍﺕ ﺍﻟﺼﻠﺔ ﺃﻳﻀﺎً.
1.2.2ﺗﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ
ﺑﺪﺃﺍﺳﺘﺨﺪﺍﻡ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ ﻓﻲ ﺍﻟﺨﻤﺴﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ .ﺗﻢ
ﺗﻄﻮﻳﺮﺃﺟﻬﺰﺓ ﻛﻤﺒﻴﻮﺗﺮ ﺧﺎﺻﺔ ﻟﻬﺬﺍ ﺍﻟﻐﺮﺽ ،ﺇﻟﻰ ﺟﺎﻧﺐ ﻟﻐﺎﺕ ﺧﺎﺻﺔ .ﺃﻭﻝ ﻟﻐﺔ ﺭﻓﻴﻌﺔ ﺍﻟﻤﺴﺘﻮﻯ
ﻧﺎﺟﺤﺔﻟﻸﻋﻤﺎﻝ ﻛﺎﻧﺖ (، COBOL )ISO / IEC ، 2002
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 6
ﻇﻬﺮﺕﺍﻟﻨﺴﺨﺔ ﺍﻷﻭﻟﻴﺔ ﻣﻨﻬﺎ ﻓﻲ ﻋﺎﻡ .1960ﻭﻻ ﺗﺰﺍﻝ ﺍﻟﻠﻐﺔ ﺍﻷﻛﺜﺮ ﺍﺳﺘﺨﺪﺍﻣﺎً ﻟﻬﺬﻩ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ.
ﺗﺘﻤﻴﺰﻟﻐﺎﺕ ﺍﻷﻋﻤﺎﻝ ﺑﻤﺮﺍﻓﻖ ﻹﻧﺘﺎﺝ ﺗﻘﺎﺭﻳﺮ ﻣﻔﺼﻠﺔ ،ﻭﻃﺮﻕ ﺩﻗﻴﻘﺔ ﻟﻮﺻﻒ ﻭﺗﺨﺰﻳﻦ ﺍﻷﺭﻗﺎﻡ
ﺍﻟﻌﺸﺮﻳﺔﻭﺑﻴﺎﻧﺎﺕ ﺍﻷﺣﺮﻑ ،ﻭﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺗﺤﺪﻳﺪ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺑﻴﺔ ﺍﻟﻌﺸﺮﻳﺔ.
ﻛﺎﻧﺖﻫﻨﺎﻙ ﺗﻄﻮﺭﺍﺕ ﻗﻠﻴﻠﺔ ﻓﻲ ﻟﻐﺎﺕ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ ﺧﺎﺭﺝ ﻧﻄﺎﻕ ﺗﻄﻮﻳﺮ ﻭﺗﻄﻮﺭ
.COBOLﻟﺬﻟﻚ ،ﻳﺘﻀﻤﻦ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ ﻣﻨﺎﻗﺸﺎﺕ ﻣﺤﺪﻭﺩﺓ ﻓﻘﻂ ﺣﻮﻝ ﺍﻟﻬﻴﺎﻛﻞ ﻓﻲ .COBOL
1.2.3ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ
ﺍﻟﺬﻛﺎءﺍﻻﺻﻄﻨﺎﻋﻲ ) (AIﻫﻮ ﻣﺠﺎﻝ ﻭﺍﺳﻊ ﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻳﺘﻤﻴﺰ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺤﺴﺎﺑﺎﺕ
ﺍﻟﺮﻣﺰﻳﺔﺑﺪﻻ ًﻣﻦ ﺍﻟﺤﺴﺎﺑﺎﺕ ﺍﻟﺮﻗﻤﻴﺔ .ﻳﻌﻨﻲ ﺍﻟﺤﺴﺎﺏ ﺍﻟﺮﻣﺰﻱ ﺃﻧﻪ ﻳﺘﻢ ﺍﻟﺘﻼﻋﺐ ﺑﺎﻟﺮﻣﻮﺯ ،ﺍﻟﺘﻲ
ﺗﺘﻜﻮﻥﻣﻦ ﺃﺳﻤﺎء ﺑﺪﻻ ًﻣﻦ ﺃﺭﻗﺎﻡ .ﺃﻳﻀﺎً ،ﻳﺘﻢ ﺇﺟﺮﺍء ﺍﻟﺤﺴﺎﺏ ﺍﻟﺮﻣﺰﻱ ﺑﺸﻜﻞ ﺃﻛﺜﺮ ﻣﻼءﻣﺔ ﻣﻊ
ﻗﻮﺍﺉﻢﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﺪﻻ ًﻣﻦ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ .ﻳﺘﻄﻠﺐ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﺒﺮﻣﺠﺔ ﺃﺣﻴﺎﻧﺎً ﻣﺮﻭﻧﺔ
ﺃﻛﺒﺮﻣﻦ ﻣﺠﺎﻻﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻷﺧﺮﻯ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ﺑﻌﺾ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺬﻛﺎء
ﺍﻻﺻﻄﻨﺎﻋﻲ ،ﺗﻜﻮﻥ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺇﻧﺸﺎء ﻣﻘﺎﻃﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻭﺗﻨﻔﻴﺬﻫﺎ ﺃﺛﻨﺎء ﺍﻟﺘﻨﻔﻴﺬ ﺃﻣﺮﺍً
ﻣﻼﺉﻤﺎً.
ﻛﺎﻧﺖﺃﻭﻝ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻣﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﺗﻢ ﺗﻄﻮﻳﺮﻫﺎ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺬﻛﺎء
ﺍﻻﺻﻄﻨﺎﻋﻲﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ) LISPﻣﻜﺎﺭﺛﻲ ﻭﺁﺧﺮﻭﻥ ، (1965 ،ﻭﺍﻟﺘﻲ ﻇﻬﺮﺕ ﻓﻲ ﻋﺎﻡ
.1959ﺗﻤﺖ ﻛﺘﺎﺑﺔ ﻣﻌﻈﻢ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ ﺍﻟﺘﻲ ﺗﻢ ﺗﻄﻮﻳﺮﻫﺎ ﻗﺒﻞ ﻋﺎﻡ 1990ﺑﻠﻐﺔ
LISPﺃﻭ ﺃﺣﺪ ﺃﻗﺮﺑﺎﺉﻬﺎ .ﻭﻟﻜﻦ ﺧﻼﻝ ﺃﻭﺍﺉﻞ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ،ﻇﻬﺮ ﻧﻬﺞ ﺑﺪﻳﻞ ﻟﺒﻌﺾ ﻫﺬﻩ
ﺍﻟﺘﻄﺒﻴﻘﺎﺕ -ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ (.Prolog )Clocksin and Mellish ، 2003
ﻓﻲﺍﻵﻭﻧﺔ ﺍﻷﺧﻴﺮﺓ ،ﺗﻤﺖ ﻛﺘﺎﺑﺔ ﺑﻌﺾ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ ﺑﻠﻐﺎﺕ ﺃﻧﻈﻤﺔ ﻣﺜﻞ (
، C. Scheme )Dybvig، 2003ﻭﻳﺘﻢ ﺗﻘﺪﻳﻢ ﻟﻬﺠﺔ LISPﻭ Prologﻓﻲ ﺍﻟﻔﺼﻠﻴﻦ 15ﻭ 16
ﻋﻠﻰﺍﻟﺘﻮﺍﻟﻲ.
1.2.4ﺑﺮﻣﺠﺔ ﺍﻷﻧﻈﻤﺔ
ﻳﻌُﺮﻑﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﺃﺩﻭﺍﺕ ﺩﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﻟﻨﻈﺎﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺑﺸﻜﻞ ﺟﻤﺎﻋﻲ ﺑﺎﺳﻤﻪﺑﺮﺍﻣﺞ
ﺍﻷﻧﻈﻤﺔ .ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﺍﻣﺞ ﺍﻷﻧﻈﻤﺔ ﺑﺸﻜﻞ ﻣﺴﺘﻤﺮ ﺗﻘﺮﻳﺒﺎً ﻭﻟﺬﺍ ﻳﺠﺐ ﺃﻥ ﺗﻜﻮﻥ ﻓﻌﺎﻟﺔ .ﻋﻼﻭﺓ
ﻋﻠﻰﺫﻟﻚ ،ﻳﺠﺐ ﺃﻥ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﻴﺰﺍﺕ ﻣﻨﺨﻔﻀﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺗﺴﻤﺢ ﻟﻜﺘﺎﺑﺔ ﻭﺍﺟﻬﺎﺕ ﺍﻟﺒﺮﺍﻣﺞ
ﻟﻸﺟﻬﺰﺓﺍﻟﺨﺎﺭﺟﻴﺔ.
ﻓﻲﺍﻟﺴﺘﻴﻨﻴﺎﺕ ﻭﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ ،ﻃﻮﺭﺕ ﺑﻌﺾ ﺍﻟﺸﺮﻛﺎﺕ ﺍﻟﻤﺼﻨﻌﺔ
ﻷﺟﻬﺰﺓﺍﻟﻜﻤﺒﻴﻮﺗﺮ ،ﻣﺜﻞ IBMﻭ Digitalﻭ ) Burroughsﺍﻵﻥ (UNISYSﻟﻐﺎﺕ ﺧﺎﺻﺔ ﻋﺎﻟﻴﺔ
ﺍﻟﻤﺴﺘﻮﻯﻣﻮﺟﻬﺔ ﻧﺤﻮ ﺍﻵﻟﺔ ﻟﺒﺮﺍﻣﺞ ﺍﻷﻧﻈﻤﺔ ﻋﻠﻰ ﺃﺟﻬﺰﺗﻬﻢ .ﺑﺎﻟﻨﺴﺒﺔ ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﺮﻛﺰﻳﺔ
ﻣﻦ ، IBMﻛﺎﻧﺖ ﺍﻟﻠﻐﺔ ﻫﻲ ، PL / Sﻭﻫﻲ ﻟﻬﺠﺔ PL / I؛ ﺑﺎﻟﻨﺴﺒﺔ ﺇﻟﻰ ، Digitalﻛﺎﻧﺖ BLISS
،ﻟﻐﺔ ﺑﻤﺴﺘﻮﻯ ﺃﻋﻠﻰ ﺑﻘﻠﻴﻞ ﻣﻦ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ؛ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺒﻮﺭﻭﺯ ،ﻓﻘﺪ ﺗﻢ ﺗﻤﺪﻳﺪﻩ .ALGOLﻭﻣﻊ
ﺫﻟﻚ ،ﺗﺘﻢ ﺍﻵﻥ ﻛﺘﺎﺑﺔ ﻣﻌﻈﻢ ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ ﺑﻠﻐﺎﺕ ﺑﺮﻣﺠﺔ ﺃﻛﺜﺮ ﻋﻤﻮﻣﻴﺔ ،ﻣﺜﻞ Cﻭ .++ C
ﺗﻤﺖﻛﺘﺎﺑﺔ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ UNIXﺑﺎﻟﻜﺎﻣﻞ ﺗﻘﺮﻳﺒﺎً ﺑﻠﻐﺔ ( ، C )ISO ، 1999ﻣﻤﺎ ﺟﻌﻞ ﻣﻦ
ﺍﻟﺴﻬﻞﻧﺴﺒﻴﺎً ﻧﻘﻠﻪ ﺃﻭ ﻧﻘﻠﻪ ﺇﻟﻰ ﺃﺟﻬﺰﺓ ﻣﺨﺘﻠﻔﺔ .ﺑﻌﺾ ﺧﺼﺎﺉﺺ ﻟﻐﺔ Cﺗﺠﻌﻠﻬﺎ ﺧﻴﺎﺭﺍً ﺟﻴﺪﺍً
ﻟﺒﺮﻣﺠﺔﺍﻷﻧﻈﻤﺔ .ﺇﻧﻪ ﻣﻨﺨﻔﺾ ﺍﻟﻤﺴﺘﻮﻯ ﻭﻓﻌﺎﻝ ﻓﻲ ﺍﻟﺘﻨﻔﻴﺬ ﻭﻻ ﻳﺜﻘﻞ ﻛﺎﻫﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺎﻟﻜﺜﻴﺮ
7 1.3ﻣﻌﺎﻳﻴﺮ ﺗﻘﻴﻴﻢ ﺍﻟﻠﻐﺔ
ﻗﻴﻮﺩﺍﻟﺴﻼﻣﺔ .ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮﻥ ﻣﺒﺮﻣﺠﻮ ﺍﻷﻧﻈﻤﺔ ﻣﺒﺮﻣﺠﻴﻦ ﻣﻤﺘﺎﺯﻳﻦ ﻭﻳﻌﺘﻘﺪﻭﻥ ﺃﻧﻬﻢ ﻻ ﻳﺤﺘﺎﺟﻮﻥ
ﺇﻟﻰﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻘﻴﻮﺩ .ﻭﻣﻊ ﺫﻟﻚ ،ﻳﺠﺪ ﺑﻌﺾ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻏﻴﺮ ﺍﻟﻨﻈﺎﻣﻴﻴﻦ ﺃﻥ ﻟﻐﺔ Cﺧﻄﻴﺮﺓ ﺟﺪﺍً
ﻻﺳﺘﺨﺪﺍﻣﻬﺎﻓﻲ ﺃﻧﻈﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻜﺒﻴﺮﺓ ﻭﺍﻟﻤﻬﻤﺔ.
1.2.5ﺑﺮﺍﻣﺞ ﺍﻟﻮﻳﺐ
ﻳﺘﻢﺩﻋﻢ ﺷﺒﻜﺔ ﺍﻟﻮﻳﺐ ﺍﻟﻌﺎﻟﻤﻴﺔ ﻣﻦ ﺧﻼﻝ ﻣﺠﻤﻮﻋﺔ ﺍﻧﺘﻘﺎﺉﻴﺔ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ،ﺑﺪءﺍً ﻣﻦ ﻟﻐﺎﺕ
ﺍﻟﺘﺮﻣﻴﺰ ،ﻣﺜﻞ ، HTMLﻭﻫﻲ ﻟﻴﺴﺖ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ،ﺇﻟﻰ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺫﺍﺕ ﺍﻷﻏﺮﺍﺽ ﺍﻟﻌﺎﻣﺔ ،
ﻣﺜﻞ .Javaﺑﺴﺒﺐ ﺍﻟﺤﺎﺟﺔ ﺍﻟﻤﻨﺘﺸﺮﺓ ﻟﻤﺤﺘﻮﻯ ﻭﻳﺐ ﺩﻳﻨﺎﻣﻴﻜﻲ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺘﻢ ﺗﻀﻤﻴﻦ ﺑﻌﺾ
ﺍﻟﻘﺪﺭﺓﺍﻟﺤﺴﺎﺑﻴﺔ ﻓﻲ ﺗﻘﻨﻴﺔ ﻋﺮﺽ ﺍﻟﻤﺤﺘﻮﻯ .ﻳﻤﻜﻦ ﺗﻮﻓﻴﺮ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ ﻣﻦ ﺧﻼﻝ ﺗﻀﻤﻴﻦ ﻛﻮﺩ
ﺍﻟﺒﺮﻣﺠﺔﻓﻲ ﻣﺴﺘﻨﺪ .HTMLﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮﻥ ﻫﺬﺍ ﺍﻟﺮﻣﺰ ﻓﻲ ﺷﻜﻞ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻧﺼﻴﺔ ،ﻣﺜﻞ
JavaScriptﺃﻭ .PHPﻫﻨﺎﻙ ﺃﻳﻀﺎً ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺸﺒﻴﻬﺔ ﺑﺎﻟﻌﻼﻣﺎﺕ ﺍﻟﺘﻲ ﺗﻢ ﺗﻤﺪﻳﺪﻫﺎ ﻟﺘﺸﻤﻞ
ﺍﻟﺘﺮﻛﻴﺒﺎﺕﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﻓﻲ ﻣﻌﺎﻟﺠﺔ ﺍﻟﻤﺴﺘﻨﺪﺍﺕ ،ﻭﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﺍﻟﻘﺴﻢ 1.5ﻭﻓﻲ
ﺍﻟﻔﺼﻞ.2
ﺑﻌﺾﺍﻟﺨﺼﺎﺉﺺ ﺍﻟﺘﻲ ﺗﺆﺛﺮ ﻋﻠﻰ ﺛﻼﺛﺔ ﻣﻦ ﺍﻷﺭﺑﻌﺔ ﺍﻷﻛﺜﺮ ﺃﻫﻤﻴﺔ ﻣﻦ ﻫﺬﻩ ﺍﻟﻤﻌﺎﻳﻴﺮ
ﻣﻮﺿﺤﺔﻓﻲ ﺍﻟﺠﺪﻭﻝ ، 1.1ﻭﺍﻟﻤﻌﺎﻳﻴﺮ ﻧﻔﺴﻬﺎ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﺍﻷﻗﺴﺎﻡ ﺍﻟﺘﺎﻟﻴﺔ2.ﻻﺣﻆ ﺃﻧﻪ ﺗﻢ
ﺗﻀﻤﻴﻦﺃﻫﻢ ﺍﻟﺨﺼﺎﺉﺺ ﻓﻘﻂ ﻓﻲ ﺍﻟﺠﺪﻭﻝ ،ﻣﻤﺎ ﻳﻌﻜﺲ ﺍﻟﻤﻨﺎﻗﺸﺔ ﻓﻲ ﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ
ﺍﻟﺘﺎﻟﻴﺔ.ﺭﺑﻤﺎ ﻳﻤﻜﻦ ﻟﻠﻤﺮء ﺃﻥ ﻳﺪﻋﻲ ﺃﻧﻪ ﺇﺫﺍ ﺍﻋﺘﺒﺮ ﺍﻟﻤﺮء ﺧﺼﺎﺉﺺ ﺃﻗﻞ ﺃﻫﻤﻴﺔ ،ﻓﻴﻤﻜﻦ ﺃﻥ
ﺗﺸﺘﻤﻞﺟﻤﻴﻊ ﻣﻮﺍﺿﻊ ﺍﻟﺠﺪﻭﻝ ﺗﻘﺮﻳﺒﺎً ﻋﻠﻰ "ﺗﻌﺪﺍﺩ ﻧﻘﻄﻲ".
ﻻﺣﻆﺃﻥ ﺑﻌﺾ ﻫﺬﻩ ﺍﻟﺨﺼﺎﺉﺺ ﻭﺍﺳﻌﺔ ﻭﻏﺎﻣﻀﺔ ﺇﻟﻰ ﺣﺪ ﻣﺎ ،ﻣﺜﻞ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ ،ﻓﻲ
ﺣﻴﻦﺃﻥ ﺍﻟﺒﻌﺾ ﺍﻵﺧﺮ ﻋﺒﺎﺭﺓ ﻋﻦ ﺗﺮﺍﻛﻴﺐ ﻟﻐﻮﻳﺔ ﻣﺤﺪﺩﺓ ،ﻣﺜﻞ ﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ .ﻋﻼﻭﺓ ﻋﻠﻰ
ﺫﻟﻚ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻤﻨﺎﻗﺸﺔ ﻗﺪ ﺗﺒﺪﻭ ﻭﻛﺄﻧﻬﺎ ﺗﻮﺣﻲ ﺑﺄﻥ ﺍﻟﻤﻌﺎﻳﻴﺮ ﻟﻬﺎ ﺃﻫﻤﻴﺔ ﻣﺘﺴﺎﻭﻳﺔ ،
ﻓﺈﻥﻫﺬﺍ ﺍﻟﻤﻌﻨﻰ ﻏﻴﺮ ﻣﻘﺼﻮﺩ ،ﻭﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﺍﻷﻣﺮ ﻟﻴﺲ ﻛﺬﻟﻚ.
.2ﺍﻟﻤﻌﻴﺎﺭ ﺍﻷﺳﺎﺳﻲ ﺍﻟﺮﺍﺑﻊ ﻫﻮ ﺍﻟﺘﻜﻠﻔﺔ ،ﻭﺍﻟﺘﻲ ﻟﻢ ﻳﺘﻢ ﺗﻀﻤﻴﻨﻬﺎ ﻓﻲ ﺍﻟﺠﺪﻭﻝ ﻷﻧﻬﺎ ﻣﺮﺗﺒﻄﺔ ﺑﺸﻜﻞ ﻃﻔﻴﻒ ﻓﻘﻂ
ﺑﺎﻟﻤﻌﺎﻳﻴﺮﺍﻷﺧﺮﻯ ﻭﺍﻟﺨﺼﺎﺉﺺ ﺍﻟﺘﻲ ﺗﺆﺛﺮ ﻋﻠﻴﻬﺎ.
ﻣﻘﺪﻣﺎﺕ ﺍﻟﻔﺼﻞ1 8
ﻣﻌﺎﻳﻴﺮ
1.3.1ﺳﻬﻮﻟﺔ ﺍﻟﻘﺮﺍءﺓ
ﺃﺣﺪﺃﻫﻢ ﻣﻌﺎﻳﻴﺮ ﺍﻟﺤﻜﻢ ﻋﻠﻰ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻫﻮ ﺳﻬﻮﻟﺔ ﻗﺮﺍءﺓ ﺍﻟﺒﺮﺍﻣﺞ ﻭﻓﻬﻤﻬﺎ .ﻗﺒﻞ ﻋﺎﻡ ، 1970
ﻛﺎﻥﻳﺘﻢ ﺍﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﻣﻦ ﺣﻴﺚ ﻛﺘﺎﺑﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ.
ﻛﺎﻧﺖﺍﻟﺴﻤﺔ ﺍﻹﻳﺠﺎﺑﻴﺔ ﺍﻷﺳﺎﺳﻴﺔ ﻟﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻫﻲ ﺍﻟﻜﻔﺎءﺓ .ﺗﻢ ﺗﺼﻤﻴﻢ ﺗﺮﺍﻛﻴﺐ ﺍﻟﻠﻐﺔ ﻣﻦ
ﻭﺟﻬﺔﻧﻈﺮ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺃﻛﺜﺮ ﻣﻦ ﻭﺟﻬﺔ ﻧﻈﺮ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﻭﻟﻜﻦ ﻓﻲ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ،ﺗﻢ
ﺗﻄﻮﻳﺮﻣﻔﻬﻮﻡ ﺩﻭﺭﺓ ﺣﻴﺎﺓ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ) .(Booch ، 1987ﺗﻢ ﻧﻘﻞ ﺍﻟﺘﺮﻣﻴﺰ ﺇﻟﻰ ﺩﻭﺭ ﺃﺻﻐﺮ ﺑﻜﺜﻴﺮ ،
ﻭﺗﻢﺍﻻﻋﺘﺮﺍﻑ ﺑﺎﻟﺼﻴﺎﻧﺔ ﻛﺠﺰء ﺭﺉﻴﺴﻲ ﻣﻦ ﺍﻟﺪﻭﺭﺓ ،ﻻ ﺳﻴﻤﺎ ﻣﻦ ﺣﻴﺚ ﺍﻟﺘﻜﻠﻔﺔ .ﻧﻈﺮﺍً ﻷﻥ
ﺳﻬﻮﻟﺔﺍﻟﺼﻴﺎﻧﺔ ﻳﺘﻢ ﺗﺤﺪﻳﺪﻫﺎ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﻣﻦ ﺧﻼﻝ ﺳﻬﻮﻟﺔ ﻗﺮﺍءﺓ ﺍﻟﺒﺮﺍﻣﺞ ،ﻓﻘﺪ ﺃﺻﺒﺤﺖ
ﻗﺎﺑﻠﻴﺔﺍﻟﻘﺮﺍءﺓ ﻣﻘﻴﺎﺳﺎً ﻣﻬﻤﺎً ﻟﺠﻮﺩﺓ ﺍﻟﺒﺮﺍﻣﺞ ﻭﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻛﺎﻥ ﻫﺬﺍ ﻣﻨﻌﻄﻔﺎً ﻣﻬﻤﺎً ﻓﻲ ﺗﻄﻮﺭ
ﻟﻐﺎﺕﺍﻟﺒﺮﻣﺠﺔ .ﻛﺎﻥ ﻫﻨﺎﻙ ﺗﻘﺎﻃﻊ ﻣﻤﻴﺰ ﻣﻦ ﺍﻟﺘﺮﻛﻴﺰ ﻋﻠﻰ ﺗﻮﺟﻴﻪ ﺍﻵﻟﺔ ﺇﻟﻰ ﺍﻟﺘﺮﻛﻴﺰ ﻋﻠﻰ ﺍﻟﺘﻮﺟﻪ
ﺍﻟﺒﺸﺮﻱ.
ﻳﺠﺐﺍﻟﻨﻈﺮ ﻓﻲ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻓﻲ ﺳﻴﺎﻕ ﻣﺠﺎﻝ ﺍﻟﻤﺸﻜﻠﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺇﺫﺍ ﻛﺎﻥ
ﺍﻟﺒﺮﻧﺎﻣﺞﺍﻟﺬﻱ ﻳﺼﻒ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﻣﻜﺘﻮﺑﺎً ﺑﻠﻐﺔ ﻏﻴﺮ ﻣﺼﻤﻤﺔ ﻟﻬﺬﺍ ﺍﻻﺳﺘﺨﺪﺍﻡ ،ﻓﻘﺪ ﻳﻜﻮﻥ
ﺍﻟﺒﺮﻧﺎﻣﺞﻏﻴﺮ ﻃﺒﻴﻌﻲ ﻭﻣﻌﻘﺪﺍً ،ﻣﻤﺎ ﻳﺠﻌﻞ ﻗﺮﺍءﺗﻪ ﺻﻌﺒﺔ ﺑﺸﻜﻞ ﻏﻴﺮ ﻋﺎﺩﻱ.
ﺗﺼﻒﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺨﺼﺎﺉﺺ ﺍﻟﺘﻲ ﺗﺴﺎﻫﻢ ﻓﻲ ﺳﻬﻮﻟﺔ ﻗﺮﺍءﺓ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ.
1.3.1.1ﺍﻟﺒﺴﺎﻃﺔ ﺍﻟﺸﺎﻣﻠﺔ
ﺗﺆﺛﺮﺍﻟﺒﺴﺎﻃﺔ ﺍﻟﻜﻠﻴﺔ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺑﺸﺪﺓ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺘﻬﺎ ﻟﻠﻘﺮﺍءﺓ .ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﺪﺩ ﻛﺒﻴﺮ
ﻣﻦﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻷﺳﺎﺳﻴﺔ ﻫﻲ ﺃﻛﺜﺮ ﺻﻌﻮﺑﺔ ﻓﻲ ﺍﻟﺘﻌﻠﻢ ﻣﻦ ﻟﻐﺔ ﺫﺍﺕ ﻋﺪﺩ ﺃﻗﻞ .ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺘﻌﻠﻢ
ﺍﻟﻤﺒﺮﻣﺠﻮﻥﺍﻟﺬﻳﻦ ﻳﺠﺐ ﻋﻠﻴﻬﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ﻛﺒﻴﺮﺓ ﻣﺠﻤﻮﻋﺔ ﻓﺮﻋﻴﺔ ﻣﻦ ﺍﻟﻠﻐﺔ ﻭﻳﺘﺠﺎﻫﻠﻮﻥ
ﻣﻴﺰﺍﺗﻬﺎﺍﻷﺧﺮﻯ .ﻳﺴﺘﺨﺪﻡ ﻧﻤﻂ ﺍﻟﺘﻌﻠﻢ ﻫﺬﺍ ﺃﺣﻴﺎﻧﺎً ﻹﻋﻔﺎء ﺍﻟﻌﺪﺩ ﺍﻟﻜﺒﻴﺮ ﻣﻦ ﺗﺮﺍﻛﻴﺐ ﺍﻟﻠﻐﺔ ،
9 1.3ﻣﻌﺎﻳﻴﺮ ﺗﻘﻴﻴﻢ ﺍﻟﻠﻐﺔ
ﻟﻜﻦﻫﺬﻩ ﺍﻟﺤﺠﺔ ﻏﻴﺮ ﺻﺤﻴﺤﺔ .ﺗﺤﺪﺙ ﻣﺸﻜﻼﺕ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻋﻨﺪﻣﺎ ﻳﺘﻌﻠﻢ ﻣﺆﻟﻒ ﺍﻟﺒﺮﻧﺎﻣﺞ
ﻣﺠﻤﻮﻋﺔﻓﺮﻋﻴﺔ ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﺗﻠﻚ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﻲ ﻳﻌﺮﻓﻬﺎ ﺍﻟﻘﺎﺭﺉ.
ﺍﻟﺴﻤﺔﺍﻟﺜﺎﻧﻴﺔ ﺍﻟﻤﻌﻘﺪﺓ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻫﻲﺗﻌﺪﺩ ﺍﻟﻤﻴﺰﺍﺕ -ﺃﻱ ﺃﻥ ﻳﻜﻮﻥ ﻟﺪﻳﻚ ﺃﻛﺜﺮ ﻣﻦ
ﻃﺮﻳﻘﺔﻹﻧﺠﺎﺯ ﻋﻤﻠﻴﺔ ﻣﻌﻴﻨﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ، Javaﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺯﻳﺎﺩﺓ ﻣﺘﻐﻴﺮ
ﻋﺪﺩﺻﺤﻴﺢ ﺑﺴﻴﻂ ﺑﺄﺭﺑﻊ ﻃﺮﻕ ﻣﺨﺘﻠﻔﺔ:
ﺍﻟﻌﺪ++
+ +ﺍﻟﻌﺪ
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻌﺒﺎﺭﺗﻴﻦ ﺍﻷﺧﻴﺮﻳﻦ ﻟﻬﻤﺎ ﻣﻌﺎﻧﻲ ﻣﺨﺘﻠﻔﺔ ﻗﻠﻴﻼ ًﻋﻦ ﺑﻌﻀﻬﻤﺎ ﺍﻟﺒﻌﺾ ﻭﻋﻦ
ﺍﻵﺧﺮﻳﻦﻓﻲ ﺑﻌﺾ ﺍﻟﺴﻴﺎﻗﺎﺕ ،ﺇﻻ ﺃﻥ ﻛﻞ ﻣﻨﻬﻤﺎ ﻟﻬﺎ ﻧﻔﺲ ﺍﻟﻤﻌﻨﻰ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻛﺘﻌﺒﻴﺮﺍﺕ
ﻗﺎﺉﻤﺔﺑﺬﺍﺗﻬﺎ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﻫﺬﻩ ﺍﻻﺧﺘﻼﻓﺎﺕ ﻓﻲ ﺍﻟﻔﺼﻞ .7
ﺍﻟﻤﺸﻜﻠﺔﺍﻟﺜﺎﻟﺜﺔ ﺍﻟﻤﺤﺘﻤﻠﺔ ﻫﻲﺍﻟﻤﺸﻐﻞ ﺍﻟﺰﺍﺉﺪ ،ﺣﻴﺚ ﻳﻜﻮﻥ ﻟﺮﻣﺰ ﻋﺎﻣﻞ ﻭﺍﺣﺪ ﺃﻛﺜﺮ ﻣﻦ
ﻣﻌﻨﻰ.ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻫﺬﺍ ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮﻥ ﻣﻔﻴﺪﺍً ،ﺇﻻ ﺃﻧﻪ ﻳﻤﻜﻦ ﺃﻥ ﻳﺆﺩﻱ ﺇﻟﻰ ﺗﻘﻠﻴﻞ ﻗﺎﺑﻠﻴﺔ
ﺍﻟﻘﺮﺍءﺓﺇﺫﺍ ﺳﻤُﺢ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺑﺈﻧﺸﺎء ﺍﻟﺘﺤﻤﻴﻞ ﺍﻟﺰﺍﺉﺪ ﺍﻟﺨﺎﺹ ﺑﻬﻢ ﻭﻋﺪﻡ ﺍﻟﻘﻴﺎﻡ ﺑﺬﻟﻚ ﺑﺸﻜﻞ
ﻣﻌﻘﻮﻝ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻪ ﻣﻦ ﺍﻟﻤﻘﺒﻮﻝ ﺍﺳﺘﺨﺪﺍﻡ + overloadﻻﺳﺘﺨﺪﺍﻣﻪ
ﻓﻲﻛﻞ ﻣﻦ ﺟﻤﻊ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﻭﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻫﺬﺍ ﺍﻟﺘﺤﻤﻴﻞ ﺍﻟﺰﺍﺉﺪ
ﻳﺒﺴﻂﺍﻟﻠﻐﺔ ﻋﻦ ﻃﺮﻳﻖ ﺗﻘﻠﻴﻞ ﻋﺪﺩ ﺍﻟﻤﺸﻐﻠﻴﻦ .ﻭﻣﻊ ﺫﻟﻚ ،ﺍﻓﺘﺮﺽ ﺃﻥ ﺍﻟﻤﺒﺮﻣﺞ ﻣﻌﺮﻑ +
ﻣﺴﺘﺨﺪﻡﺑﻴﻦ ﻣﻌﺎﻣﻼﺕ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺃﺣﺎﺩﻳﺔ ﺍﻟﺒﻌﺪ ﻟﻴﻌﻨﻲ ﻣﺠﻤﻮﻉ ﻛﻞ ﻋﻨﺎﺻﺮ ﻛﻼ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ.
ﻧﻈﺮﺍًﻷﻥ ﺍﻟﻤﻌﻨﻰ ﺍﻟﻤﻌﺘﺎﺩ ﻹﺿﺎﻓﺔ ﺍﻟﻤﺘﺠﻪ ﻳﺨﺘﻠﻒ ﺗﻤﺎﻣﺎً ﻋﻦ ﻫﺬﺍ ،ﻓﺈﻧﻪ ﺳﻴﺠﻌﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺃﻛﺜﺮ
ﺇﺭﺑﺎﻛﺎًﻟﻜﻞ ﻣﻦ ﺍﻟﻤﺆﻟﻒ ﻭﻗﺮﺍء ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺃﺣﺪ ﺍﻷﻣﺜﻠﺔ ﺍﻷﻛﺜﺮ ﺗﻄﺮﻓﺎً ﻋﻠﻰ ﺍﺭﺗﺒﺎﻙ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻫﻮ ﻗﻴﺎﻡ
ﺍﻟﻤﺴﺘﺨﺪﻡﺑﺘﻌﺮﻳﻒ +ﺑﻴﻦ ﻣﻌﺎﻣﻠﻴﻦ ﻣﺘﺠﻬﻴﻦ ﻟﻴﻌﻨﻲ ﺍﻟﻔﺮﻕ ﺑﻴﻦ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻷﻭﻟﻰ ﻟﻜﻞ ﻣﻨﻬﻤﺎ.
ﺗﻤﺖﻣﻨﺎﻗﺸﺔ ﺍﻟﺤﻤﻞ ﺍﻟﺰﺍﺉﺪ ﻟﻠﻤﺸﻐﻞ ﺑﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺍﻟﻔﺼﻞ .7
ﺍﻟﺒﺴﺎﻃﺔﻓﻲ ﺍﻟﻠﻐﺎﺕ ﻳﻤﻜﻦ ﺑﺎﻟﻄﺒﻊ ﺗﺠﺎﻭﺯﻫﺎ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻌﺘﺒﺮ ﺷﻜﻞ ﻭﻣﻌﻨﻰ
ﻣﻌﻈﻢﻋﺒﺎﺭﺍﺕ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻧﻤﺎﺫﺝ ﻣﻦ ﺍﻟﺒﺴﺎﻃﺔ ،ﻛﻤﺎ ﺗﺮﻯ ﻋﻨﺪﻣﺎ ﺗﻔﻜﺮ ﻓﻲ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﻲ
ﺗﻈﻬﺮﻓﻲ ﺍﻟﻘﺴﻢ ﺍﻟﺘﺎﻟﻲ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﻫﺬﻩ ﺍﻟﺒﺴﺎﻃﺔ ﺗﺠﻌﻞ ﺑﺮﺍﻣﺞ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﺃﻗﻞ ﻗﺎﺑﻠﻴﺔ
ﻟﻠﻘﺮﺍءﺓ.ﻷﻧﻬﺎ ﺗﻔﺘﻘﺮ ﺇﻟﻰ ﺑﻴﺎﻧﺎﺕ ﺗﺤﻜﻢ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً ،ﻓﺈﻥ ﻫﻴﻜﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺃﻗﻞ ﻭﺿﻮﺣﺎً ؛ ﻷﻥ
ﺍﻟﻌﺒﺎﺭﺍﺕﺑﺴﻴﻄﺔ ،ﻫﻨﺎﻙ ﺣﺎﺟﺔ ﺇﻟﻰ ﻋﺪﺩ ﺃﻛﺒﺮ ﻣﻨﻬﺎ ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻤﺎﺛﻠﺔ ﺑﻠﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ.
ﺗﻨﻄﺒﻖﻫﺬﻩ ﺍﻟﺤﺠﺞ ﻧﻔﺴﻬﺎ ﻋﻠﻰ ﺍﻟﺤﺎﻟﺔ ﺍﻷﻗﻞ ﺗﻄﺮﻓﺎً ﻟﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﻣﻊ ﻋﺪﻡ ﻛﻔﺎﻳﺔ
ﻋﻨﺎﺻﺮﺍﻟﺘﺤﻜﻢ ﻭﻫﻴﻜﻠﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ.
1.3.1.2ﺍﻟﺘﻌﺎﻣﺪ
ﺍﻟﺘﻌﺎﻣﺪﻓﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻳﻌﻨﻲ ﺃﻧﻪ ﻳﻤﻜﻦ ﺩﻣﺞ ﻣﺠﻤﻮﻋﺔ ﺻﻐﻴﺮﺓ ﻧﺴﺒﻴﺎً ﻣﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺒﺪﺍﺉﻴﺔ
ﻓﻲﻋﺪﺩ ﺻﻐﻴﺮ ﻧﺴﺒﻴﺎً ﻣﻦ ﺍﻟﻄﺮﻕ ﻟﺒﻨﺎء ﻫﻴﺎﻛﻞ ﺍﻟﺘﺤﻜﻢ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻠﻐﺔ .ﻋﻼﻭﺓ ﻋﻠﻰ
ﺫﻟﻚ ،ﻛﻞ ﻣﺠﻤﻮﻋﺔ ﻣﻤﻜﻨﺔ ﻣﻦ ﺍﻷﻭﻟﻴﺎﺕ ﻗﺎﻧﻮﻧﻴﺔ ﻭﺫﺍﺕ ﻣﻐﺰﻯ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺿﻊ ﻓﻲ
ﺍﻋﺘﺒﺎﺭﻙ
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 10
ﺃﻧﻮﺍﻉﺍﻟﺒﻴﺎﻧﺎﺕ .ﻟﻨﻔﺘﺮﺽ ﺃﻥ ﺍﻟﻠﻐﺔ ﺑﻬﺎ ﺃﺭﺑﻌﺔ ﺃﻧﻮﺍﻉ ﻣﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺒﺪﺍﺉﻴﺔ )ﻋﺪﺩ ﺻﺤﻴﺢ ،ﻋﺪﺩ
ﻋﺸﺮﻱ ،ﻣﺰﺩﻭﺝ ،ﻭﺣﺮﻑ( ﻭﻋﺎﻣﻼﻥ ﻣﻦ ﺍﻟﻨﻮﻉ )ﻣﺼﻔﻮﻓﺔ ﻭﻣﺆﺷﺮ( .ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﻄﺒﻴﻖ
ﻣﺸﻐﻠﻲﺍﻟﻨﻮﻋﻴﻦ ﻋﻠﻰ ﺃﻧﻔﺴﻬﻢ ﻭﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻷﻭﻟﻴﺔ ﺍﻷﺭﺑﻌﺔ ،ﻓﻴﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ
ﻫﻴﺎﻛﻞﺍﻟﺒﻴﺎﻧﺎﺕ.
ﻣﻌﻨﻰﻣﻴﺰﺓ ﺍﻟﻠﻐﺔ ﺍﻟﻤﺘﻌﺎﻣﺪﺓ ﻣﺴﺘﻘﻠﺔ ﻋﻦ ﺳﻴﺎﻕ ﻇﻬﻮﺭﻫﺎ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ) .ﺍﻟﻜﻠﻤﺔﻣﺘﻌﺎﻣﺪﻳﺄﺗﻲ
ﻣﻦﺍﻟﻤﻔﻬﻮﻡ ﺍﻟﺮﻳﺎﺿﻲ ﻟﻠﻨﺎﻗﻼﺕ ﺍﻟﻤﺘﻌﺎﻣﺪﺓ ،ﻭﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻣﺴﺘﻘﻠﺔ ﻋﻦ ﺑﻌﻀﻬﺎ ﺍﻟﺒﻌﺾ (.ﺍﻟﺘﻌﺎﻣﺪ
ﻳﺄﺗﻲﻣﻦ ﺗﻨﺎﻇﺮ ﺍﻟﻌﻼﻗﺎﺕ ﺑﻴﻦ ﺍﻷﻭﻟﻴﺎﺕ .ﻳﺆﺩﻱ ﺍﻻﻓﺘﻘﺎﺭ ﺇﻟﻰ ﺍﻟﺘﻌﺎﻣﺪ ﺇﻟﻰ ﺍﺳﺘﺜﻨﺎءﺍﺕ ﻟﻘﻮﺍﻋﺪ
ﺍﻟﻠﻐﺔ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻟﻤﺆﺷﺮﺍﺕ ،ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻣﻦ
ﺍﻟﻤﻤﻜﻦﺗﺤﺪﻳﺪ ﻣﺆﺷﺮ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻱ ﻧﻮﻉ ﻣﺤﺪﺩ ﻣﺤﺪﺩ ﻓﻲ ﺍﻟﻠﻐﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﺇﺫﺍ ﻟﻢ ﻳﺴُﻤﺢ
ﻟﻠﻤﺆﺷﺮﺍﺕﺑﺎﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ،ﻓﻼ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻌﺮﻓﺔ
ﻣﻦﻗﺒﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﺍﻟﺘﻲ ﻳﺤﺘﻤﻞ ﺃﻥ ﺗﻜﻮﻥ ﻣﻔﻴﺪﺓ.
ﻳﻤﻜﻨﻨﺎﺗﻮﺿﻴﺢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻌﺎﻣﺪ ﻛﻤﻔﻬﻮﻡ ﺗﺼﻤﻴﻢ ﻣﻦ ﺧﻼﻝ ﻣﻘﺎﺭﻧﺔ ﺟﺎﻧﺐ ﻭﺍﺣﺪ ﻣﻦ
ﻟﻐﺎﺕﺍﻟﺘﺠﻤﻴﻊ ﻷﺟﻬﺰﺓ ﻛﻤﺒﻴﻮﺗﺮ IBMﺍﻟﻤﺮﻛﺰﻳﺔ ﻭﺳﻠﺴﻠﺔ VAXﻣﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺼﻐﻴﺮﺓ.
ﻧﺤﻦﻧﻌﺘﺒﺮ ﻣﻮﻗﻔﺎً ﻭﺍﺣﺪﺍً ﺑﺴﻴﻄﺎً :ﺇﺿﺎﻓﺔ ﻗﻴﻤﺘﻴﻦ ﺻﺤﻴﺤﺘﻴﻦ 32ﺑﺖ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺍﻟﺬﺍﻛﺮﺓ ﺃﻭ
ﺍﻟﺴﺠﻼﺕﻭﺍﺳﺘﺒﺪﺍﻝ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻤﺘﻴﻦ ﺑﺎﻟﻤﺠﻤﻮﻉ .ﺗﺤﺘﻮﻱ ﺣﻮﺍﺳﻴﺐ IBMﺍﻟﻤﺮﻛﺰﻳﺔ ﻋﻠﻰ
ﺗﻌﻠﻴﻤﺘﻴﻦﻟﻬﺬﺍ ﺍﻟﻐﺮﺽ ،ﻭﺍﻟﺘﻲ ﻟﻬﺎ ﺍﻷﺷﻜﺎﻝ
ﻣﻌﺎﻣﻞ ، ADDL_1ﺍﻟﻤﻌﺎﻣﻞ_2
ﺍﻟﺬﻱﻫﻮ ﺩﻻﻻﺕ
ﺗﺮﺗﺒﻂﺍﻟﺘﻌﺎﻣﺪﻳﺔ ﺍﺭﺗﺒﺎﻃﺎً ﻭﺛﻴﻘﺎً ﺑﺎﻟﺒﺴﺎﻃﺔ :ﻛﻠﻤﺎ ﻛﺎﻥ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﺃﻛﺜﺮ ﺗﻌﺎﻣﺪﺍً ،ﻗﻞ ﻋﺪﺩ
ﺍﻻﺳﺘﺜﻨﺎءﺍﺕﺍﻟﺘﻲ ﺗﺘﻄﻠﺒﻬﺎ ﻗﻮﺍﻋﺪ ﺍﻟﻠﻐﺔ .ﺗﻌﻨﻲ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ﺍﻷﻗﻞ ﺩﺭﺟﺔ ﺃﻋﻠﻰ ﻣﻦ ﺍﻻﻧﺘﻈﺎﻡ ﻓﻲ
ﺍﻟﺘﺼﻤﻴﻢ ،ﻣﻤﺎ ﻳﺠﻌﻞ ﺍﻟﻠﻐﺔ ﺃﺳﻬﻞ ﻓﻲ ﺍﻟﺘﻌﻠﻢ ﻭﺍﻟﻘﺮﺍءﺓ ﻭﺍﻟﻔﻬﻢ .ﻳﻤﻜﻦ ﻷﻱ ﺷﺨﺺ ﺗﻌﻠﻢ ﺟﺰءﺍً
ﻛﺒﻴﺮﺍًﻣﻦ ﺍﻟﻠﻐﺔ ﺍﻹﻧﺠﻠﻴﺰﻳﺔ ﺃﻥ ﻳﺸﻬﺪ ﻋﻠﻰ ﺻﻌﻮﺑﺔ ﺗﻌﻠﻢ ﺍﺳﺘﺜﻨﺎءﺍﺗﻬﺎ ﺍﻟﻌﺪﻳﺪﺓ ﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ )ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﺃﻧﺎﻗﺒﻞﻩﻣﺎﻋﺪﺍ ﺑﻌﺪﺝ(.
ﻛﺄﻣﺜﻠﺔﻋﻠﻰ ﺍﻻﻓﺘﻘﺎﺭ ﺇﻟﻰ ﺍﻟﺘﻌﺎﻣﺪ ﻓﻲ ﻟﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ،ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﻘﻮﺍﻋﺪ
ﻭﺍﻻﺳﺘﺜﻨﺎءﺍﺕﺍﻟﺘﺎﻟﻴﺔ ﻓﻲ .Cﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻟﻐﺔ Cﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻧﻮﻋﻴﻦ ﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ
ﺍﻟﻤﻨﻈﻤﺔﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻭﺍﻟﺴﺠﻼﺕ )ﻫﻴﻜﻞﻳﻤﻜﻦ ﺇﺭﺟﺎﻉ ﺍﻟﺴﺠﻼﺕ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ ﻭﻟﻜﻦ ﻻ
ﻳﻤﻜﻦﻟﻠﻤﺼﻔﻮﻓﺎﺕ .ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻋﻀﻮ ﺍﻟﺒﻨﻴﺔ ﺃﻱ ﻧﻮﻉ ﺑﻴﺎﻧﺎﺕ ﺑﺎﺳﺘﺜﻨﺎء s( ،ﻓﺎﺭﻍﺃﻭ ﻫﻴﻜﻞ ﻣﻦ
ﻧﻔﺲﺍﻟﻨﻮﻉ .ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻋﻨﺼﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺃﻱ ﻧﻮﻉ ﺑﻴﺎﻧﺎﺕ ﺑﺎﺳﺘﺜﻨﺎءﻓﺎﺭﻍﺃﻭ ﻭﻇﻴﻔﺔ .ﻳﺘﻢ
ﺗﻤﺮﻳﺮﺍﻟﻤﻌﻠﻤﺎﺕ ﺑﺎﻟﻘﻴﻤﺔ ،ﻣﺎ ﻟﻢ ﺗﻜﻦ ﻣﺼﻔﻮﻓﺎﺕ ،ﻭﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻳﺘﻢ ﺗﻤﺮﻳﺮﻫﺎ ﻓﻌﻠﻴﺎً ﻋﻦ
ﻃﺮﻳﻖﺍﻟﻤﺮﺟﻊ )ﻷﻥ ﻇﻬﻮﺭ ﺍﺳﻢ ﻣﺼﻔﻮﻓﺔ ﺑﺪﻭﻥ ﺣﺮﻑ ﻣﻨﺨﻔﺾ ﻓﻲ ﺑﺮﻧﺎﻣﺞ Cﻳﺘﻢ ﺗﻔﺴﻴﺮﻩ ﻋﻠﻰ
ﺃﻧﻪﻋﻨﻮﺍﻥ ﺍﻟﻌﻨﺼﺮ ﺍﻷﻭﻝ ﻟﻠﻤﺼﻔﻮﻓﺔ( .
ﺃ +ﺏ
ﻏﺎﻟﺒﺎًﻣﺎ ﻳﻌﻨﻲ ﻫﺬﺍ ﺍﻟﺘﻌﺒﻴﺮ ﺃﻥ ﻗﻴﻢﺃﻭﺏﻳﺘﻢ ﺟﻠﺒﻬﺎ ﻭﺇﺿﺎﻓﺘﻬﺎ ﻣﻌﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﺇﺫﺍﺃﻳﺤﺪﺙ ﺃﻥ ﻳﻜﻮﻥ
ﻣﺆﺷﺮﺍً ،ﻓﻬﻮ ﻳﺆﺛﺮ ﻋﻠﻰ ﻗﻴﻤﺔﺏ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺇﺫﺍﺃﻳﺸﻴﺮ ﺇﻟﻰ ﻗﻴﻤﺔ ﻋﺎﺉﻤﺔ ﺗﺸﻐﻞ ﺃﺭﺑﻌﺔ
ﺑﺎﻳﺖ ،ﺛﻢ ﻗﻴﻤﺔﺏ
ﻳﺠﺐﺗﺤﺠﻴﻤﻬﺎ -ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻣﻀﺮﻭﺑﺔ ﻓﻲ - 4ﻗﺒﻞ ﺇﺿﺎﻓﺘﻬﺎ ﺇﻟﻰﺃ.ﻟﺬﻟﻚ ،ﻓﺈﻥ ﻧﻮﻉﺃﻳﺆﺛﺮ ﻋﻠﻰ
ﻋﻼﺝﻗﻴﻤﺔﺏ.ﺳﻴﺎﻕﺏﻳﺆﺛﺮ ﻋﻠﻰ ﻣﻌﻨﺎﻫﺎ.
ﻳﻤﻜﻦﺃﻥ ﻳﺴﺒﺐ ﺍﻟﻜﺜﻴﺮ ﻣﻦ ﺍﻟﺘﻌﺎﻣﺪ ﺃﻳﻀﺎً ﻣﺸﺎﻛﻞ .ﺭﺑﻤﺎ ﺗﻜﻮﻥ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻷﻛﺜﺮ ﺗﻌﺎﻣﺪﺍً
ﻫﻲ ( .ALGOL 68 )van Wijngaarden et al. ، 1969ﻛﻞ ﺑﻨﺎء ﻟﻐﺔ ﻓﻲ ALGOL 68ﻟﻪ
ﻧﻮﻉ ،ﻭﻻ ﺗﻮﺟﺪ ﻗﻴﻮﺩ ﻋﻠﻰ ﻫﺬﻩ ﺍﻷﻧﻮﺍﻉ .ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺫﻟﻚ ،ﺗﻨﺘﺞ ﻣﻌﻈﻢ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﻗﻴﻤﺎً .ﺗﺴﻤﺢ
ﻫﺬﻩﺍﻟﺤﺮﻳﺔ ﺍﻟﺘﻮﺍﻓﻘﻴﺔ ﺑﺒﻨﺎءﺍﺕ ﻣﻌﻘﺪﺓ ﻟﻠﻐﺎﻳﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻤﻜﻦ ﺃﻥ ﻳﻈﻬﺮ ﺍﻟﺸﺮﻃﻲ
ﻋﻠﻰﺃﻧﻪ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﺴﺮ ﻣﻦ ﺍﻟﻤﻬﻤﺔ ،ﺟﻨﺒﺎً ﺇﻟﻰ ﺟﻨﺐ ﻣﻊ ﺍﻹﻋﻼﻧﺎﺕ ﻭﻋﺒﺎﺭﺍﺕ ﻣﺘﻨﻮﻋﺔ ﺃﺧﺮﻯ ،
ﻃﺎﻟﻤﺎﺃﻥ ﺍﻟﻨﺘﻴﺠﺔ ﻫﻲ ﻋﻨﻮﺍﻥ .ﻫﺬﺍ ﺍﻟﺸﻜﻞ ﺍﻟﻤﺘﻄﺮﻑ ﻣﻦ ﺍﻟﺘﻌﺎﻣﺪ ﻳﺆﺩﻱ ﺇﻟﻰ ﺗﻌﻘﻴﺪ ﻏﻴﺮ ﺿﺮﻭﺭﻱ.
ﻋﻼﻭﺓﻋﻠﻰ ﺫﻟﻚ ،ﻧﻈﺮﺍً ﻷﻥ ﺍﻟﻠﻐﺎﺕ ﺗﺘﻄﻠﺐ ﻋﺪﺩﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺍﻷﻭﻟﻴﺎﺕ ،ﻓﺈﻥ ﺩﺭﺟﺔ ﻋﺎﻟﻴﺔ ﻣﻦ
ﺍﻟﺘﻌﺎﻣﺪﺗﺆﺩﻱ ﺇﻟﻰ ﺍﻧﻔﺠﺎﺭ ﻓﻲ ﺍﻟﺘﻮﻟﻴﻔﺎﺕ .ﻟﺬﻟﻚ ،ﺣﺘﻰ ﻟﻮ ﻛﺎﻧﺖ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺑﺴﻴﻄﺔ ،ﻓﺈﻥ
ﺃﻋﺪﺍﺩﻫﻢﺍﻟﻬﺎﺉﻠﺔ ﺗﺆﺩﻱ ﺇﻟﻰ ﺍﻟﺘﻌﻘﻴﺪ.
ﻭﺑﺎﻟﺘﺎﻟﻲ ،ﻓﺈﻥ ﺍﻟﺒﺴﺎﻃﺔ ﻓﻲ ﺍﻟﻠﻐﺔ ﻫﻲ ﻋﻠﻰ ﺍﻷﻗﻞ ﺟﺰﺉﻴﺎً ﻧﺘﻴﺠﺔ ﻣﺰﻳﺞ ﻣﻦ ﻋﺪﺩ ﺻﻐﻴﺮ
ﻧﺴﺒﻴﺎًﻣﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺒﺪﺍﺉﻴﺔ ﻭﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺤﺪﻭﺩ ﻟﻤﻔﻬﻮﻡ ﺍﻟﺘﻌﺎﻣﺪ.
1.3.1.3ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ
ﻳﻌﺪﻭﺟﻮﺩ ﺍﻟﺘﺴﻬﻴﻼﺕ ﺍﻟﻜﺎﻓﻴﺔ ﻟﺘﺤﺪﻳﺪ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻓﻲ ﺍﻟﻠﻐﺔ ﻭﺳﻴﻠﺔ
ﻣﺴﺎﻋﺪﺓﻣﻬﻤﺔ ﺃﺧﺮﻯ ﻟﻘﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻓﺘﺮﺽ ﺃﻥ ﻧﻮﻋﺎً ﺭﻗﻤﻴﺎً ﻳﺴُﺘﺨﺪﻡ
ﻟﻌﻼﻣﺔﻣﺆﺷﺮ ﻷﻧﻪ ﻻ ﻳﻮﺟﺪ ﻧﻮﻉ ﻣﻨﻄﻘﻲ ﻓﻲ ﺍﻟﻠﻐﺔ .ﻓﻲ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ،ﻗﺪ ﻳﻜﻮﻥ ﻟﺪﻳﻨﺎ ﻣﻬﻤﺔ
ﻣﺜﻞﻣﺎ ﻳﻠﻲ:
timeOut =1
ﻣﻌﻨﻰﻫﺬﺍ ﺍﻟﺒﻴﺎﻥ ﻏﻴﺮ ﻭﺍﺿﺢ ،ﺑﻴﻨﻤﺎ ﻓﻲ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﺘﻀﻤﻦ ﺍﻷﻧﻮﺍﻉ ﺍﻟﻤﻨﻄﻘﻴﺔ ،ﺳﻴﻜﻮﻥ ﻟﺪﻳﻨﺎ ﻣﺎ
ﻳﻠﻲ:
= timeOutﺣﻘﻴﻘﻲ
1.3.1.4ﺍﻟﺘﺼﻤﻴﻢ ﺍﻟﻨﺤﻮﻱ
ﺇﻥﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺃﻭ ﺷﻜﻞ ﻋﻨﺎﺻﺮ ﺍﻟﻠﻐﺔ ﻟﻪ ﺗﺄﺛﻴﺮ ﻛﺒﻴﺮ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﻗﺮﺍءﺓ ﺍﻟﺒﺮﺍﻣﺞ .ﻓﻴﻤﺎ ﻳﻠﻲ ﺑﻌﺾ
ﺍﻷﻣﺜﻠﺔﻋﻠﻰ ﺧﻴﺎﺭﺍﺕ ﺍﻟﺘﺼﻤﻴﻢ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺘﻲ ﺗﺆﺛﺮ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ:
• ﻛﻠﻤﺎﺕﺧﺎﺻﺔ.ﻳﺘﺄﺛﺮ ﻣﻈﻬﺮ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻭﺑﺎﻟﺘﺎﻟﻲ ﻗﺎﺑﻠﻴﺔ ﻗﺮﺍءﺓ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺸﺪﺓ ﺑﺄﺷﻜﺎﻝ ﺍﻟﻜﻠﻤﺎﺕ
ﺍﻟﺨﺎﺻﺔﻟﻠﻐﺔ )ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺑﻴﻨﻤﺎﻭ
ﻓﺼﻞ ،ﻭﻝ( .ﻣﻦ ﺍﻟﻤﻬﻢ ﺑﺸﻜﻞ ﺧﺎﺹ ﻃﺮﻳﻘﺔ ﺗﻜﻮﻳﻦ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﺮﻛﺒﺔ ،ﺃﻭ ﻣﺠﻤﻮﻋﺎﺕ
ﺍﻟﻌﺒﺎﺭﺍﺕ ،ﺑﺸﻜﻞ ﺃﺳﺎﺳﻲ ﻓﻲ ﺑﻨﻴﺎﺕ ﺍﻟﺘﺤﻜﻢ .ﺍﺳﺘﺨﺪﻣﺖ ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﺃﺯﻭﺍﺟﺎً ﻣﺘﻄﺎﺑﻘﺔ
ﻣﻦﺍﻟﻜﻠﻤﺎﺕ ﺃﻭ ﺍﻟﺮﻣﻮﺯ ﺍﻟﺨﺎﺻﺔ ﻟﺘﻜﻮﻳﻦ ﻣﺠﻤﻮﻋﺎﺕ .ﺗﺴﺘﺨﺪﻡ Cﻭﺃﺣﻔﺎﺩﻫﺎ ﺍﻷﻗﻮﺍﺱ
ﻟﺘﺤﺪﻳﺪﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﺮﻛﺒﺔ .ﺗﻌﺎﻧﻲ ﻛﻞ ﻫﺬﻩ ﺍﻟﻠﻐﺎﺕ ﻷﻥ ﻣﺠﻤﻮﻋﺎﺕ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻳﺘﻢ ﺇﻧﻬﺎﺅﻫﺎ
ﺩﺍﺉﻤﺎًﺑﻨﻔﺲ ﺍﻟﻄﺮﻳﻘﺔ ،ﻣﻤﺎ ﻳﺠﻌﻞ ﻣﻦ ﺍﻟﺼﻌﺐ ﺗﺤﺪﻳﺪ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﺇﻧﻬﺎﺅﻫﺎ ﻋﻨﺪﻣﺎ
ﻧﻬﺎﻳﺔﺃﻭ ﻳﻈﻬﺮ ﻗﻮﺱ ﺃﻳﻤﻦ .ﻳﻮﺿﺢ ﻛﻞ ﻣﻦ Fortran 95ﻭ Adaﻫﺬﺍ ﺍﻷﻣﺮ ﺑﺎﺳﺘﺨﺪﺍﻡ
ﺻﻴﻐﺔﺇﻏﻼﻕ ﻣﻤﻴﺰﺓ ﻟﻜﻞ ﻧﻮﻉ ﻣﻦ ﻣﺠﻤﻮﻋﺎﺕ ﺍﻟﺒﻴﺎﻧﺎﺕ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﺴﺘﺨﺪﻡ Ada
ﺇﻧﻬﺎءﺇﺫﺍﻹﻧﻬﺎء ﺑﻨﺎء ﺍﻟﺘﺤﺪﻳﺪ ﻭﺣﻠﻘﺔ ﺍﻟﻨﻬﺎﻳﺔ
ﻹﻧﻬﺎءﺑﻨﺎء ﺣﻠﻘﺔ .ﻫﺬﺍ ﻣﺜﺎﻝ ﻋﻠﻰ ﺍﻟﺘﻌﺎﺭﺽ ﺑﻴﻦ ﺍﻟﺒﺴﺎﻃﺔ ﺍﻟﺬﻱ ﻳﻨﺘﺞ ﻋﻨﻪ ﻋﺪﺩ ﺃﻗﻞ ﻣﻦ
ﺍﻟﻜﻠﻤﺎﺕﺍﻟﻤﺤﺠﻮﺯﺓ ،ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻓﻲ ، ++ Cﻭﺍﻟﻘﺮﺍءﺓ ﺍﻷﻛﺒﺮ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﺗﻨﺘﺞ ﻋﻦ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻤﺰﻳﺪ ﻣﻦ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﺤﺠﻮﺯﺓ ،ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻓﻲ .Ada
ﻫﻨﺎﻙﻣﺴﺄﻟﺔ ﻣﻬﻤﺔ ﺃﺧﺮﻯ ﻭﻫﻲ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺨﺎﺻﺔ ﻟﻠﻐﺔ
ﻛﺄﺳﻤﺎءﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺇﺫﺍ ﻛﺎﻥ ﺍﻷﻣﺮ ﻛﺬﻟﻚ ،ﻓﻘﺪ ﺗﻜﻮﻥ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺎﺗﺠﺔ ﻣﺮﺑﻜﺔ ﻟﻠﻐﺎﻳﺔ.
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ، Fortran 95ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺨﺎﺻﺔ ،ﻣﺜﻞﻳﻔﻌﻞ
ﻭﻧﻬﺎﻳﺔ،ﻫﻲ ﺃﺳﻤﺎء ﻣﺘﻐﻴﺮﺍﺕ ﻗﺎﻧﻮﻧﻴﺔ ،ﻟﺬﺍ ﻓﺈﻥ ﻇﻬﻮﺭ ﻫﺬﻩ ﺍﻟﻜﻠﻤﺎﺕ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﻣﺎ ﻗﺪ ﻳﺸﻴﺮ
ﺃﻭﻻ ﻳﺸﻴﺮ ﺇﻟﻰ ﺷﻲء ﺧﺎﺹ.
13 1.3ﻣﻌﺎﻳﻴﺮ ﺗﻘﻴﻴﻢ ﺍﻟﻠﻐﺔ
• ﺍﻟﺸﻜﻞﻭﺍﻟﻤﻌﻨﻰ.ﺗﺼﻤﻴﻢ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺑﺤﻴﺚ ﻳﺸﻴﺮ ﻇﻬﻮﺭﻫﺎ ﺟﺰﺉﻴﺎً ﻋﻠﻰ ﺍﻷﻗﻞ ﺇﻟﻰ ﺍﻟﻐﺮﺽ
ﻣﻨﻬﺎ ،ﻭﻫﻮ ﻣﺴﺎﻋﺪﺓ ﻭﺍﺿﺤﺔ ﻟﺴﻬﻮﻟﺔ ﺍﻟﻘﺮﺍءﺓ .ﻳﺠﺐ ﺃﻥ ﺗﺘﺒﻊ ﺍﻟﺪﻻﻻﺕ ﺃﻭ ﺍﻟﻤﻌﻨﻰ ﻣﺒﺎﺷﺮﺓ
ﻣﻦﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺃﻭ ﺍﻟﺸﻜﻞ .ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ،ﻳﺘﻢ ﺍﻧﺘﻬﺎﻙ ﻫﺬﺍ ﺍﻟﻤﺒﺪﺃ ﻣﻦ ﺧﻼﻝ
ﺗﺮﻛﻴﺒﺘﻴﻦﻟﻐﻮﻳﺘﻴﻦ ﻣﺘﻄﺎﺑﻘﺘﻴﻦ ﺃﻭ ﻣﺘﺸﺎﺑﻬﻴﻦ ﻓﻲ ﺍﻟﻤﻈﻬﺮ ﻭﻟﻜﻦ ﻟﻬﻤﺎ ﻣﻌﺎﻧﻲ ﻣﺨﺘﻠﻔﺔ ،
ﺍﻋﺘﻤﺎﺩﺍًﻋﻠﻰ ﺍﻟﺴﻴﺎﻕ ﺭﺑﻤﺎ .ﻓﻲ
ﺝـ ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ـ ﻣﻌﻨﻰ ﺍﻟﻜﻠﻤﺔ ﺍﻟﻤﺤﺠﻮﺯﺓﺛﺎﺑﺘﺔﻳﻌﺘﻤﺪ ﻋﻠﻰ ﺳﻴﺎﻕ ﻣﻈﻬﺮﻩ .ﺇﺫﺍ ﺗﻢ
ﺍﺳﺘﺨﺪﺍﻣﻪﻓﻲ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺩﺍﺧﻞ ﺩﺍﻟﺔ ،ﻓﻬﺬﺍ ﻳﻌﻨﻲ ﺃﻥ ﺍﻟﻤﺘﻐﻴﺮ ﻳﺘﻢ ﺇﻧﺸﺎﺅﻩ ﻓﻲ ﻭﻗﺖ
ﺍﻟﺘﺮﺟﻤﺔ.ﺇﺫﺍ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻓﻲ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺧﺎﺭﺝ ﺟﻤﻴﻊ ﺍﻟﻮﻇﺎﺉﻒ ،ﻓﻬﺬﺍ ﻳﻌﻨﻲ ﺃﻥ
ﺍﻟﻤﺘﻐﻴﺮﻣﺮﺉﻲ ﻓﻘﻂ ﻓﻲ ﺍﻟﻤﻠﻒ ﺍﻟﺬﻱ ﻳﻈﻬﺮ ﻓﻴﻪ ﺗﻌﺮﻳﻔﻪ ؛ ﺃﻱ ﺃﻧﻪ ﻻ ﻳﺘﻢ ﺗﺼﺪﻳﺮﻩ ﻣﻦ ﻫﺬﺍ
ﺍﻟﻤﻠﻒ.
ﺇﺣﺪﻯﺍﻟﺸﻜﺎﻭﻯ ﺍﻷﺳﺎﺳﻴﺔ ﺣﻮﻝ ﺃﻭﺍﻣﺮ shellﺍﻟﺨﺎﺻﺔ ﺑـ (UNIX )Raymond، 2004
ﻫﻲﺃﻥ ﻣﻈﻬﺮﻫﺎ ﻻ ﻳﺸﻴﺮ ﺩﺍﺉﻤﺎً ﺇﻟﻰ ﻭﻇﻴﻔﺘﻬﺎ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻣﻌﻨﻰ ﺃﻣﺮ grepUNIX
ﻳﻤﻜﻦﻓﻚ ﺭﻣﻮﺯﻫﺎ ﻓﻘﻂ ﻣﻦ ﺧﻼﻝ ﺍﻟﻤﻌﺮﻓﺔ ﺍﻟﺴﺎﺑﻘﺔ ،ﺃﻭ ﺭﺑﻤﺎ ﺍﻟﺬﻛﺎء ﻭﺍﻹﻟﻤﺎﻡ ﺑﻤﺤﺮﺭ ، UNIX
ﺇﺩ.ﻣﻈﻬﺮ ﺍﻝgrepﻻ ﻳﺸﻴﺮ ﺇﻟﻰ ﺃﻱ ﺷﻲء ﻟﻠﻤﺒﺘﺪﺉﻴﻦ ﻓﻲ ) .UNIXﻓﻲﺇﺩ ،ﺍﻻﻣﺮ/ﺗﻌﺒﻴﺮ ﻋﺎﺩﻱ/
ﻳﺒﺤﺚﻋﻦ ﺳﻠﺴﻠﺔ ﻓﺮﻋﻴﺔ ﺗﻄﺎﺑﻖ ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﻌﺎﺩﻱ .ﻳﺴﺒﻖ ﻫﺬﺍ ﺑـﺯﻳﺠﻌﻠﻪ ﺃﻣﺮﺍً ﻋﺎﻣﺎً ،ﻣﻊ
ﺗﺤﺪﻳﺪﺃﻥ ﻧﻄﺎﻕ ﺍﻟﺒﺤﺚ ﻫﻮ ﺍﻟﻤﻠﻒ ﺍﻟﺬﻱ ﻳﺘﻢ ﺗﺤﺮﻳﺮﻩ ﺑﺎﻟﻜﺎﻣﻞ .ﺍﺗﺒﺎﻉ ﺍﻷﻣﺮ ﺑﺎﻣﺘﺪﺍﺩﺹﻳﺤﺪﺩ
ﺃﻥﺍﻷﺳﻄﺮ ﺫﺍﺕ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﻤﻄﺎﺑﻘﺔ ﺳﺘﺘﻢ ﻃﺒﺎﻋﺘﻬﺎ .ﻟﺬﺍﺯ/ﺗﻌﺒﻴﺮ ﻋﺎﺩﻱ /ﻉ ،ﻭﺍﻟﺘﻲ
ﻳﻤﻜﻦﺍﺧﺘﺼﺎﺭﻫﺎ ﺑﻮﺿﻮﺡ ﻛـgrepﻳﻄﺒﻊ ﻛﻞ ﺍﻷﺳﻄﺮ ﻓﻲ ﻣﻠﻒ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺳﻼﺳﻞ ﻓﺮﻋﻴﺔ
ﺗﻄﺎﺑﻖﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﻌﺎﺩﻱ(.
1.3.2ﺍﻟﻘﺎﺑﻠﻴﺔ ﻟﻠﻜﺘﺎﺑﺔ
ﺍﻟﻘﺎﺑﻠﻴﺔﻟﻠﻜﺘﺎﺑﺔ ﻫﻲ ﻣﻘﻴﺎﺱ ﻟﻤﺪﻯ ﺳﻬﻮﻟﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻠﻐﺔ ﻹﻧﺸﺎء ﺑﺮﺍﻣﺞ ﻟﻤﺠﺎﻝ ﻣﺸﻜﻠﺔ ﻣﺨﺘﺎﺭ.
ﺗﺆﺛﺮﺃﻳﻀﺎً ﻣﻌﻈﻢ ﺧﺼﺎﺉﺺ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﺆﺛﺮ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ .ﻳﺄﺗﻲ ﻫﺬﺍ
ﻣﺒﺎﺷﺮﺓﻣﻦ ﺣﻘﻴﻘﺔ ﺃﻥ ﻋﻤﻠﻴﺔ ﻛﺘﺎﺑﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺗﺘﻄﻠﺐ ﻣﻦ ﺍﻟﻤﺒﺮﻣﺞ ﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ ﺇﻋﺎﺩﺓ ﻗﺮﺍءﺓ
ﺟﺰءﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺬﻱ ﺗﻤﺖ ﻛﺘﺎﺑﺘﻪ ﺑﺎﻟﻔﻌﻞ.
ﻛﻤﺎﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ،ﻳﺠﺐ ﻣﺮﺍﻋﺎﺓ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ ﻓﻲ ﺳﻴﺎﻕ ﻣﺠﺎﻝ ﺍﻟﻤﺸﻜﻠﺔ
ﺍﻟﻬﺪﻑﻟﻠﻐﺔ .ﺑﺒﺴﺎﻃﺔ ،ﻣﻦ ﻏﻴﺮ ﺍﻟﻤﻌﻘﻮﻝ ﻣﻘﺎﺭﻧﺔ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ ﺑﻠﻐﺘﻴﻦ ﻓﻲ ﻣﺠﺎﻝ ﺗﻄﺒﻴﻖ ﻣﻌﻴﻦ
ﻋﻨﺪﻣﺎﺗﻢ ﺗﺼﻤﻴﻢ ﺇﺣﺪﺍﻫﻤﺎ ﻟﻬﺬﺍ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺍﻷﺧﺮﻯ ﻟﻢ ﻳﺘﻢ ﺗﺼﻤﻴﻤﻬﺎ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،
ﺗﺨﺘﻠﻒﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ ﻓﻲ ( Visual BASIC )VBﻭ Cﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻹﻧﺸﺎء ﺑﺮﻧﺎﻣﺞ ﻳﺤﺘﻮﻱ ﻋﻠﻰ
ﻭﺍﺟﻬﺔﻣﺴﺘﺨﺪﻡ ﺭﺳﻮﻣﻴﺔ ،ﻭﺍﻟﺘﻲ ﻳﻌﺘﺒﺮ VBﻣﺜﺎﻟﻴﺎً ﻟﻬﺎ .ﻛﻤﺎ ﺃﻥ ﻛﺘﺎﺑﺎﺗﻬﻢ ﻣﺨﺘﻠﻔﺔ ﺗﻤﺎﻣﺎً ﻋﻦ
ﺑﺮﺍﻣﺞﺃﻧﻈﻤﺔ ﺍﻟﻜﺘﺎﺑﺔ ،ﻣﺜﻞ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ،ﺍﻟﺬﻱ ﺗﻢ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺳﻲ ﻣﻦ ﺃﺟﻠﻪ.
ﺗﺼﻒﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺃﻫﻢ ﺍﻟﺨﺼﺎﺉﺺ ﺍﻟﺘﻲ ﺗﺆﺛﺮ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ ﻓﻲ ﺍﻟﻠﻐﺔ.
1.3.2.1ﺍﻟﺒﺴﺎﻃﺔ ﻭﺍﻟﺘﻌﺎﻣﺪ
ﺇﺫﺍﻛﺎﻧﺖ ﺍﻟﻠﻐﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ،ﻓﻘﺪ ﻻ ﻳﻜﻮﻥ ﺑﻌﺾ
ﺍﻟﻤﺒﺮﻣﺠﻴﻦﻋﻠﻰ ﺩﺭﺍﻳﺔ ﺑﻬﺎ ﺟﻤﻴﻌﺎً .ﻳﻤﻜﻦ ﺃﻥ ﻳﺆﺩﻱ ﻫﺬﺍ ﺍﻟﻤﻮﻗﻒ ﺇﻟﻰ ﺇﺳﺎءﺓ ﺍﺳﺘﺨﺪﺍﻡ ﺑﻌﺾ
ﺍﻟﻤﻴﺰﺍﺕﻭﺇﺳﺎءﺓ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺧﺮﻯ ﻗﺪ ﺗﻜﻮﻥ ﺇﻣﺎ ﺃﻛﺜﺮ ﺃﻧﺎﻗﺔ ﺃﻭ ﺃﻛﺜﺮ
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 14
ﻛﻔﺎءﺓ ،ﺃﻭ ﻛﻠﻴﻬﻤﺎ ،ﻣﻦ ﺗﻠﻚ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ .ﻗﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ،ﻛﻤﺎ ﺃﺷﺎﺭ (، Hoare )1973
ﺍﺳﺘﺨﺪﺍﻡﻣﻴﺰﺍﺕ ﻏﻴﺮ ﻣﻌﺮﻭﻓﺔ ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﺨﻄﺄ ،ﻣﻊ ﻧﺘﺎﺉﺞ ﻏﺮﻳﺒﺔ .ﻟﺬﻟﻚ ،ﻓﺈﻥ ﻋﺪﺩﺍً ﺃﻗﻞ ﻣﻦ
ﺍﻟﺘﺮﻛﻴﺒﺎﺕﺍﻟﺒﺪﺍﺉﻴﺔ ﻭﻣﺠﻤﻮﻋﺔ ﻣﺘﺴﻘﺔ ﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ ﻟﻠﺠﻤﻊ ﺑﻴﻨﻬﺎ )ﺃﻱ ﺍﻟﺘﻌﺎﻣﺪ( ﺃﻓﻀﻞ ﺑﻜﺜﻴﺮ ﻣﻦ
ﻣﺠﺮﺩﻭﺟﻮﺩ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻷﻭﻟﻴﺎﺕ .ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ ﺗﺼﻤﻴﻢ ﺣﻞ ﻟﻤﺸﻜﻠﺔ ﻣﻌﻘﺪﺓ ﺑﻌﺪ ﺗﻌﻠﻢ
ﻣﺠﻤﻮﻋﺔﺑﺴﻴﻄﺔ ﻓﻘﻂ ﻣﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺒﺪﺍﺉﻴﺔ.
ﻣﻦﻧﺎﺣﻴﺔ ﺃﺧﺮﻯ ،ﻳﻤﻜﻦ ﺃﻥ ﻳﺆﺩﻱ ﺍﻹﻓﺮﺍﻁ ﻓﻲ ﺍﻟﺘﻌﺎﻣﺪ ﺇﻟﻰ ﺍﻹﺿﺮﺍﺭ ﺑﺎﻟﻜﺘﺎﺑﺔ .ﻳﻤﻜﻦ ﺃﻻ ﻳﺘﻢ
ﺍﻛﺘﺸﺎﻑﺍﻷﺧﻄﺎء ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﺃﻱ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻷﻭﻟﻴﺎﺕ ﺗﻘﺮﻳﺒﺎً ﻗﺎﻧﻮﻧﻴﺔ .ﻳﻤﻜﻦ ﺃﻥ
ﻳﺆﺩﻱﻫﺬﺍ ﺇﻟﻰ ﺳﺨﺎﻓﺎﺕ ﺍﻟﺸﻔﺮﺓ ﺍﻟﺘﻲ ﻻ ﻳﻤﻜﻦ ﻟﻠﻤﺘﺮﺟﻢ ﺍﻛﺘﺸﺎﻓﻬﺎ.
1.3.2.2ﺩﻋﻢ ﺍﻟﺘﺠﺮﻳﺪ
ﺑﺎﺧﺘﺼﺎﺭ،ﺍﻟﺘﺠﺮﻳﺪﺗﻌﻨﻲ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺗﺤﺪﻳﺪ ﺛﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻬﻴﺎﻛﻞ ﺃﻭ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻤﻌﻘﺪﺓ ﺑﻄﺮﻕ
ﺗﺴﻤﺢﺑﺘﺠﺎﻫﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ .ﺍﻟﺘﺠﺮﻳﺪ ﻫﻮ ﻣﻔﻬﻮﻡ ﺭﺉﻴﺴﻲ ﻓﻲ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﻤﻌﺎﺻﺮﺓ.ﻫﺬﺍ ﺍﻧﻌﻜﺎﺱ ﻟﻠﺪﻭﺭ ﺍﻟﻤﺮﻛﺰﻱ ﺍﻟﺬﻱ ﻳﻠﻌﺒﻪ ﺍﻟﺘﺠﺮﻳﺪ ﻓﻲ ﻣﻨﻬﺠﻴﺎﺕ ﺗﺼﻤﻴﻢ ﺍﻟﺒﺮﺍﻣﺞ
ﺍﻟﺤﺪﻳﺜﺔ.ﻟﺬﺍ ﻓﺈﻥ ﺩﺭﺟﺔ ﺍﻟﺘﺠﺮﻳﺪ ﺍﻟﺘﻲ ﺗﺴﻤﺢ ﺑﻬﺎ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻭﻃﺒﻴﻌﻴﺔ ﺗﻌﺒﻴﺮﻫﺎ ﻣﻬﻤﺎﻥ ﻟﻜﺘﺎﺑﺘﻬﺎ.
ﻳﻤﻜﻦﺃﻥ ﺗﺪﻋﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻓﺉﺘﻴﻦ ﻣﺘﻤﻴﺰﺗﻴﻦ ﻣﻦ ﺍﻟﺘﺠﺮﻳﺪ ﻭﺍﻟﻌﻤﻠﻴﺔ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ.
ﻣﺜﺎﻝﺑﺴﻴﻂ ﻋﻠﻰ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺠﺮﻳﺪ ﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻋﻲ ﻟﺘﻨﻔﻴﺬ ﺧﻮﺍﺭﺯﻣﻴﺔ ﺍﻟﻔﺮﺯ
ﺍﻟﻤﻄﻠﻮﺑﺔﻋﺪﺓ ﻣﺮﺍﺕ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺑﺪﻭﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ،ﻳﺠﺐ ﺗﻜﺮﺍﺭ ﺭﻣﺰ ﺍﻟﻔﺮﺯ ﻓﻲ ﺟﻤﻴﻊ
ﺍﻷﻣﺎﻛﻦﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻓﻴﻬﺎ ﻣﻄﻠﻮﺑﺔ ،ﻣﻤﺎ ﻳﺠﻌﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺃﻃﻮﻝ ﺑﻜﺜﻴﺮ ﻭﺃﻛﺜﺮ ﺻﻌﻮﺑﺔ ﻓﻲ ﺍﻟﻜﺘﺎﺑﺔ.
ﺭﺑﻤﺎﺍﻷﻫﻢ ﻣﻦ ﺫﻟﻚ ،ﺇﺫﺍ ﻟﻢ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ،ﻓﺴﻴﺘﻢ ﺗﺸﻮﻳﺶ ﺍﻟﻜﻮﺩ ﺍﻟﺬﻱ
ﺍﺳﺘﺨﺪﻡﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ﻟﻠﻔﺮﺯ ﺑﺘﻔﺎﺻﻴﻞ ﺧﻮﺍﺭﺯﻣﻴﺔ ﺍﻟﻔﺮﺯ ،ﻣﻤﺎ ﻳﺆﺩﻱ ﺇﻟﻰ ﺣﺠﺐ ﺍﻟﺘﺪﻓﻖ
ﻭﺍﻟﻬﺪﻑﺍﻟﻌﺎﻡ ﻟﻬﺬﺍ ﺍﻟﺮﻣﺰ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ.
ﻛﻤﺜﺎﻝﻋﻠﻰ ﺗﺠﺮﻳﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ،ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺷﺠﺮﺓ ﺛﻨﺎﺉﻴﺔ ﺗﺨﺰﻥ ﺑﻴﺎﻧﺎﺕ ﻋﺪﺩ ﺻﺤﻴﺢ
ﻓﻲﻋﻘﺪﻫﺎ .ﻋﺎﺩﺓ ًﻣﺎ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﺸﺠﺮﺓ ﺍﻟﺜﻨﺎﺉﻴﺔ ﺑﻠﻐﺔ ﻻ ﺗﺪﻋﻢ ﺍﻟﻤﺆﺷﺮﺍﺕ ﻭﺇﺩﺍﺭﺓ
ﺍﻟﺘﺨﺰﻳﻦﺍﻟﺪﻳﻨﺎﻣﻴﻜﻲ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻛﻮﻣﺔ ،ﻣﺜﻞ ، Fortran 77ﻣﺜﻞ ﺛﻼﺛﺔ ﻣﺼﻔﻮﻓﺎﺕ ﺃﻋﺪﺍﺩ
ﺻﺤﻴﺤﺔﻣﺘﻮﺍﺯﻳﺔ ،ﺣﻴﺚ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﺛﻨﻴﻦ ﻣﻦ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﻛﻨﺼﻮﺹ ﻓﺮﻋﻴﺔ ﻟﺘﺤﺪﻳﺪ
ﻋﻘﺪﺍﻟﻨﺴﻞ .ﻓﻲ ++ Cﻭ ، Javaﻳﻤﻜﻦ ﺗﻨﻔﻴﺬ ﻫﺬﻩ ﺍﻷﺷﺠﺎﺭ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺗﺠﺮﻳﺪ ﻋﻘﺪﺓ ﺷﺠﺮﺓ ﻓﻲ
ﺷﻜﻞﻓﺉﺔ ﺑﺴﻴﻄﺔ ﻣﻊ ﻣﺆﺷﺮﻳﻦ )ﺃﻭ ﻣﺮﺍﺟﻊ( ﻭﻋﺪﺩ ﺻﺤﻴﺢ .ﺇﻥ ﻃﺒﻴﻌﻴﺔ ﺍﻟﺘﻤﺜﻴﻞ ﺍﻷﺧﻴﺮ ﺗﺠﻌﻞ
ﻛﺘﺎﺑﺔﺑﺮﻧﺎﻣﺞ ﻳﺴﺘﺨﺪﻡ ﺍﻷﺷﺠﺎﺭ ﺍﻟﺜﻨﺎﺉﻴﺔ ﻓﻲ ﻫﺬﻩ ﺍﻟﻠﻐﺎﺕ ﺃﺳﻬﻞ ﺑﻜﺜﻴﺮ ﻣﻦ ﻛﺘﺎﺑﺔ ﻭﺍﺣﺪﺓ ﻓﻲ 77
.Fortranﺇﻧﻬﺎ ﻣﺴﺄﻟﺔ ﺑﺴﻴﻄﺔ ﺗﺘﻌﻠﻖ ﺑﻤﺠﺎﻝ ﺣﻞ ﺍﻟﻤﺸﻜﻠﺔ ﺣﻴﺚ ﺗﻜﻮﻥ ﺍﻟﻠﻐﺔ ﺃﻗﺮﺏ ﺇﻟﻰ ﻣﺠﺎﻝ
ﺍﻟﻤﺸﻜﻠﺔ.
1.3.2.3ﺍﻟﺘﻌﺒﻴﺮﻳﺔ
ﻳﻤﻜﻦﺃﻥ ﺗﺸﻴﺮ ﺍﻟﺘﻌﺒﻴﺮﻳﺔ ﻓﻲ ﺍﻟﻠﻐﺔ ﺇﻟﻰ ﻋﺪﺓ ﺧﺼﺎﺉﺺ ﻣﺨﺘﻠﻔﺔ .ﻓﻲ ﻟﻐﺔ ﻣﺜﻞ (Rose ، 1976
، APL )Gilman andﻓﻬﺬﺍ ﻳﻌﻨﻲ ﺃﻥ ﻫﻨﺎﻙ ﻋﻮﺍﻣﻞ ﺗﺸﻐﻴﻞ ﻗﻮﻳﺔ ﺟﺪﺍً ﺗﺴﻤﺢ ﺑﺈﻧﺠﺎﺯ ﻗﺪﺭ ﻛﺒﻴﺮ
ﻣﻦﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺑﻴﺔ
15 1.3ﻣﻌﺎﻳﻴﺮ ﺗﻘﻴﻴﻢ ﺍﻟﻠﻐﺔ
ﻣﻊﺑﺮﻧﺎﻣﺞ ﺻﻐﻴﺮ ﺟﺪﺍً .ﻭﺑﺸﻜﻞ ﺃﻛﺜﺮ ﺷﻴﻮﻋﺎً ،ﻓﻬﺬﺍ ﻳﻌﻨﻲ ﺃﻥ ﺍﻟﻠﻐﺔ ﻟﺪﻳﻬﺎ ﻃﺮﻕ ﻣﻼﺉﻤﺔ ﻧﺴﺒﻴﺎً ،
ﻭﻟﻴﺴﺖﻣﺮﻫﻘﺔ ،ﻟﺘﺤﺪﻳﺪ ﺍﻟﺤﺴﺎﺑﺎﺕ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ، Cﺍﻟﺘﺮﻣﻴﺰﺍﻟﻌﺪ ++ﻫﻮ ﺃﻛﺜﺮ
ﻣﻼءﻣﺔﻭﺃﻗﺼﺮ ﻣﻦﺍﻟﻌﺪ = ﺍﻟﻌﺪ .1 +ﺃﻳﻀﺎ ،ﻭﺛﻢﻋﺎﻣﻞ ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ Adaﻫﻮ ﻃﺮﻳﻘﺔ
ﻣﻼﺉﻤﺔﻟﺘﺤﺪﻳﺪ ﺗﻘﻴﻴﻢ ﺍﻟﺪﺍﺉﺮﺓ ﺍﻟﻘﺼﻴﺮﺓ ﻟﻠﺘﻌﺒﻴﺮ ﺍﻟﻤﻨﻄﻘﻲ .ﺇﺩﺭﺍﺝ ﻣﻠﻒﻝﺍﻟﻌﺒﺎﺭﺓ ﻓﻲ Java
ﺗﺠﻌﻞﻛﺘﺎﺑﺔ ﺣﻠﻘﺎﺕ ﺍﻟﻌﺪ ﺃﺳﻬﻞ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡﺑﻴﻨﻤﺎ ،ﻭﻫﻮ ﺃﻣﺮ ﻣﻤﻜﻦ ﺃﻳﻀﺎً .ﻛﻞ ﻫﺬﺍ ﻳﺰﻳﺪ ﻣﻦ
ﻗﺎﺑﻠﻴﺔﺍﻟﻜﺘﺎﺑﺔ ﻟﻠﻐﺔ.
1.3.3ﺍﻟﻤﻮﺛﻮﻗﻴﺔ
ﻳﻘُﺎﻝﺃﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﻜﻦ ﺍﻻﻋﺘﻤﺎﺩ ﻋﻠﻴﻪ ﺇﺫﺍ ﻛﺎﻥ ﻳﻌﻤﻞ ﻭﻓﻘﺎً ﻟﻤﻮﺍﺻﻔﺎﺗﻪ ﻓﻲ ﻇﻞ ﺟﻤﻴﻊ ﺍﻟﻈﺮﻭﻑ.
ﺗﺼﻒﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻴﺰﺍﺕ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻟﻬﺎ ﺗﺄﺛﻴﺮ ﻛﺒﻴﺮ ﻋﻠﻰ ﻣﻮﺛﻮﻗﻴﺔ
ﺍﻟﺒﺮﺍﻣﺞﻓﻲ ﻟﻐﺔ ﻣﻌﻴﻨﺔ.
1.3.3.1ﻓﺤﺺ ﺍﻟﻨﻮﻉ
ﻓﺤﺺﺍﻟﻨﻮﻉﻫﻮ ﻣﺠﺮﺩ ﺍﺧﺘﺒﺎﺭ ﻷﺧﻄﺎء ﺍﻟﻜﺘﺎﺑﺔ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﻣﻌﻴﻦ ،ﺇﻣﺎ ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﻤﺘﺮﺟﻢ ﺃﻭ ﺃﺛﻨﺎء
ﺗﻨﻔﻴﺬﺍﻟﺒﺮﻧﺎﻣﺞ .ﻳﻌﺪ ﻓﺤﺺ ﺍﻟﻨﻮﻉ ﻋﺎﻣﻼ ًﻣﻬﻤﺎً ﻓﻲ ﻣﻮﺛﻮﻗﻴﺔ ﺍﻟﻠﻐﺔ .ﻧﻈﺮﺍً ﻷﻥ ﻓﺤﺺ ﻧﻮﻉ ﻭﻗﺖ
ﺍﻟﺘﺸﻐﻴﻞﻣﻜﻠﻒ ،ﻓﺈﻥ ﻓﺤﺺ ﻧﻮﻉ ﻭﻗﺖ ﺍﻟﺘﺮﺟﻤﺔ ﻣﺮﻏﻮﺏ ﻓﻴﻪ ﺃﻛﺜﺮ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻳﺘﻢ
ﺍﻛﺘﺸﺎﻑﺍﻷﺧﻄﺎء ﺍﻟﺴﺎﺑﻘﺔ ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ ،ﻓﻜﻠﻤﺎ ﻛﺎﻥ ﺇﺟﺮﺍء ﺍﻹﺻﻼﺣﺎﺕ ﺍﻟﻤﻄﻠﻮﺑﺔ ﺃﻗﻞ ﺗﻜﻠﻔﺔ.
ﻳﺘﻄﻠﺐﺗﺼﻤﻴﻢ Javaﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺃﻧﻮﺍﻉ ﺟﻤﻴﻊ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻭﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺗﻘﺮﻳﺒﺎً ﻓﻲ ﻭﻗﺖ
ﺍﻟﺘﺮﺟﻤﺔ.ﻫﺬﺍ ﻳﻘﻀﻲ ﻓﻌﻠﻴﺎً ﻋﻠﻰ ﺃﺧﻄﺎء ﺍﻟﻜﺘﺎﺑﺔ ﻓﻲ ﻭﻗﺖ ﺍﻟﺘﺸﻐﻴﻞ ﻓﻲ ﺑﺮﺍﻣﺞ .Javaﺗﻤﺖ
ﻣﻨﺎﻗﺸﺔﺍﻷﻧﻮﺍﻉ ﻭﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻟﻨﻮﻉ ﺑﻌﻤﻖ ﻓﻲ ﺍﻟﻔﺼﻞ .6
ﺃﺣﺪﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﻛﻴﻔﻴﺔ ﻓﺸﻞ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻟﻜﺘﺎﺑﺔ ،ﺳﻮﺍء ﻓﻲ ﻭﻗﺖ ﺍﻟﺘﺮﺟﻤﺔ ﺃﻭ ﻭﻗﺖ
ﺍﻟﺘﺸﻐﻴﻞ ،ﺃﺩﻯ ﺇﻟﻰ ﺃﺧﻄﺎء ﺑﺮﻧﺎﻣﺞ ﻻ ﺣﺼﺮ ﻟﻬﺎ ﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻌﻠﻤﺎﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ﻓﻲ ﻟﻐﺔ
Cﺍﻷﺻﻠﻴﺔ ) .(Kernighan and Ritchie ، 1978ﻓﻲ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ،ﻟﻢ ﻳﺘﻢ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻧﻮﻉ
ﺍﻟﻤﻌﻠﻤﺔﺍﻟﻔﻌﻠﻴﺔ ﻓﻲ ﺍﺳﺘﺪﻋﺎء ﺩﺍﻟﺔ ﻟﺘﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻧﻮﻋﻬﺎ ﻳﻄﺎﺑﻖ ﻧﻮﻉ ﺍﻟﻤﻌﻠﻤﺔ ﺍﻟﺮﺳﻤﻴﺔ
ﺍﻟﻤﻘﺎﺑﻠﺔﻓﻲ ﺍﻟﻮﻇﻴﻔﺔ .ﺍﻥintﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺘﻐﻴﺮ ﺍﻟﻨﻮﻉ ﻛﻤﻌﺎﻣﻞ ﻓﻌﻠﻲ ﻓﻲ ﺍﺳﺘﺪﻋﺎء ﺩﺍﻟﺔ
ﺗﺘﻮﻗﻊaﻳﻄﻔﻮﺍﻛﺘﺐ ﻛﻤﻌﺎﻣﻞ ﺭﺳﻤﻲ ،ﻭﻟﻦ ﻳﻜﺘﺸﻒ ﺍﻟﻤﺘﺮﺟﻢ ﻭﻻ ﻧﻈﺎﻡ ﻭﻗﺖ ﺍﻟﺘﺸﻐﻴﻞ ﻋﺪﻡ
ﺍﻻﺗﺴﺎﻕ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻧﻈﺮﺍً ﻷﻥ ﺳﻠﺴﻠﺔ ﺍﻟﺒﺖ ﺍﻟﺘﻲ ﺗﻤﺜﻞ ﺍﻟﻌﺪﺩ ﺍﻟﺼﺤﻴﺢ 23ﻏﻴﺮ
ﻣﺮﺗﺒﻄﺔﺑﺸﻜﻞ ﺃﺳﺎﺳﻲ ﺑﺴﻠﺴﻠﺔ ﺍﻟﺒﺖ ﺍﻟﺘﻲ ﺗﻤﺜﻞ ﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ ، 23ﺇﺫﺍ ﺗﻢ ﺇﺭﺳﺎﻝ ﻋﺪﺩ
ﺻﺤﻴﺢ 23ﺇﻟﻰ ﺩﺍﻟﺔ ﺗﺘﻮﻗﻊ ﻣﻌﻠﻤﺔ ﻓﺎﺻﻠﺔ ﻋﺎﺉﻤﺔ ،ﻓﺈﻥ ﺃﻱ ﺍﺳﺘﺨﺪﺍﻣﺎﺕ ﻟﻠﻤﻌﺎﻣﻞ ﻓﻲ ﺳﺘﻨﺘﺞ
ﺍﻟﻮﻇﻴﻔﺔﻫﺮﺍء .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺼﻌﺐ ﺗﺸﺨﻴﺺ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻤﺸﻜﻼﺕ3.ﻟﻘﺪ ﻗﻀﻰ
ﺍﻹﺻﺪﺍﺭﺍﻟﺤﺎﻟﻲ ﻣﻦ Cﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻤﺸﻜﻠﺔ ﻣﻦ ﺧﻼﻝ ﻃﻠﺐ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻧﻮﻉ ﺟﻤﻴﻊ ﺍﻟﻤﻌﻠﻤﺎﺕ.
ﺍﻟﺒﺮﺍﻣﺞﺍﻟﻔﺮﻋﻴﺔ ﻭﺗﻘﻨﻴﺎﺕ ﺗﺠﺎﻭﺯ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﺍﻟﻔﺼﻞ .9
.3ﺭﺩﺍ ًﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻤﺸﻜﻠﺔ ﻭﻏﻴﺮﻫﺎ ﻣﻦ ﺍﻟﻤﺸﺎﻛﻞ ﺍﻟﻤﺸﺎﺑﻬﺔ ،ﺗﺘﻀﻤﻦ ﺃﻧﻈﻤﺔ UNIXﺑﺮﻧﺎﻣﺞ ﻓﺎﺉﺪﺓ ﻣﺴﻤﻰﺍﻟﻮﺑﺮ
ﻳﻘﻮﻡﺑﻔﺤﺺ ﺑﺮﺍﻣﺞ Cﺑﺤﺜﺎً ﻋﻦ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻤﺸﻜﻼﺕ.
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 16
1.3.3.2ﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ
ﺇﻥﻗﺪﺭﺓ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺍﻋﺘﺮﺍﺽ ﺃﺧﻄﺎء ﻭﻗﺖ ﺍﻟﺘﺸﻐﻴﻞ )ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺍﻟﻈﺮﻭﻑ ﻏﻴﺮ ﺍﻟﻌﺎﺩﻳﺔ
ﺍﻷﺧﺮﻯﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺍﻛﺘﺸﺎﻓﻬﺎ( ،ﻭﺍﺗﺨﺎﺫ ﺍﻹﺟﺮﺍءﺍﺕ ﺍﻟﺘﺼﺤﻴﺤﻴﺔ ،ﺛﻢ ﺍﻟﻤﺘﺎﺑﻌﺔ ﻫﻲ
ﻣﺴﺎﻋﺪﺓﻭﺍﺿﺤﺔ ﻟﻠﻮﺛﻮﻗﻴﺔ .ﺗﺴﻤﻰ ﻫﺬﻩ ﺍﻟﻠﻐﺔﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎء .ﺗﺘﻀﻤﻦ Adaﻭ ++ Cﻭ Java
ﻭ # Cﺇﻣﻜﺎﻧﺎﺕ ﻭﺍﺳﻌﺔ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ،ﻭﻟﻜﻦ ﻫﺬﻩ ﺍﻟﺘﺴﻬﻴﻼﺕ ﻏﻴﺮ ﻣﻮﺟﻮﺩﺓ ﻋﻤﻠﻴﺎً
ﻓﻲﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ Cﻭ .Fortranﺗﻤﺖ
ﻣﻨﺎﻗﺸﺔﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ﻓﻲ ﺍﻟﻔﺼﻞ .14
1.3.3.3ﺍﻟﺘﻌﺮﺝ
ﺗﻌﺮﻳﻔﻬﺎﺑﺸﻜﻞ ﻋﺎﻡ،ﺍﺳﻢ ﻣﺴﺘﻌﺎﺭﻫﻮ ﻭﺟﻮﺩ ﺍﺳﻤﻴﻦ ﻣﻤﻴﺰﻳﻦ ﺃﻭ ﺃﻛﺜﺮ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﻤﺎ
ﻟﻠﻮﺻﻮﻝﺇﻟﻰ ﺧﻠﻴﺔ ﺍﻟﺬﺍﻛﺮﺓ ﻧﻔﺴﻬﺎ .ﻣﻦ ﺍﻟﻤﻘﺒﻮﻝ ﺍﻵﻥ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﺃﻥ ﺍﻻﺳﻢ ﺍﻟﻤﺴﺘﻌﺎﺭ ﻫﻮ
ﻣﻴﺰﺓﺧﻄﻴﺮﺓ ﻓﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ .ﺗﺴﻤﺢ ﻣﻌﻈﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺑﻨﻮﻉ ﻣﻦ ﺍﻷﺳﻤﺎء ﺍﻟﻤﺴﺘﻌﺎﺭﺓ -ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﻳﺘﻢ ﺗﻌﻴﻴﻦ ﻣﺆﺷﺮﻳﻦ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﻧﻔﺲ ﺍﻟﻤﺘﻐﻴﺮ ،ﻭﻫﻮ ﺃﻣﺮ ﻣﻤﻜﻦ ﻓﻲ ﻣﻌﻈﻢ
ﺍﻟﻠﻐﺎﺕ.ﻓﻲ ﻣﺜﻞ ﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ،ﻳﺠﺐ ﺃﻥ ﻳﺘﺬﻛﺮ ﺍﻟﻤﺒﺮﻣﺞ ﺩﺍﺉﻤﺎً ﺃﻥ ﺗﻐﻴﻴﺮ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﻲ ﻳﺸﻴﺮ
ﺇﻟﻴﻬﺎﺃﺣﺪﻫﻤﺎ ﻳﻐﻴﺮ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﻲ ﻳﺸﻴﺮ ﺇﻟﻴﻬﺎ ﺍﻵﺧﺮ .ﻳﻤﻜﻦ ﺣﻈﺮ ﺑﻌﺾ ﺃﻧﻮﺍﻉ ﺍﻟﺘﺸﻮﻳﺶ ،ﻛﻤﺎ ﻫﻮ
ﻣﻮﺿﺢﻓﻲ ﺍﻟﻔﺼﻠﻴﻦ 5ﻭ 9ﺑﺘﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ.
ﻓﻲﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ،ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﺳﻤﺎء ﺍﻟﻤﺴﺘﻌﺎﺭﺓ ﻟﻠﺘﻐﻠﺐ ﻋﻠﻰ ﺃﻭﺟﻪ ﺍﻟﻘﺼﻮﺭ ﻓﻲ ﻣﺮﺍﻓﻖ
ﺗﺠﺮﻳﺪﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻠﻐﺔ .ﺗﻌﻤﻞ ﺍﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﻋﻠﻰ ﺗﻘﻴﻴﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﺳﻤﺎء ﺍﻟﻤﺴﺘﻌﺎﺭﺓ
ﺑﺸﻜﻞﻛﺒﻴﺮ ﻟﺰﻳﺎﺩﺓ ﻣﻮﺛﻮﻗﻴﺘﻬﺎ.
ﺗﺆﺛﺮﺇﻣﻜﺎﻧﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻋﻠﻰ ﺍﻟﻤﻮﺛﻮﻗﻴﺔ ﻓﻲ ﻣﺮﺣﻠﺘﻲ ﺍﻟﻜﺘﺎﺑﺔ ﻭﺍﻟﺼﻴﺎﻧﺔ ﻟﺪﻭﺭﺓ ﺍﻟﺤﻴﺎﺓ .ﺍﻟﺒﺮﺍﻣﺞ
ﺍﻟﺘﻲﻳﺼﻌﺐ ﻗﺮﺍءﺗﻬﺎ ﻳﺼﻌﺐ ﻛﺘﺎﺑﺘﻬﺎ ﻭﺗﻌﺪﻳﻠﻬﺎ.
1.3.4ﺍﻟﺘﻜﻠﻔﺔ
ﺍﻟﺘﻜﻠﻔﺔﺍﻹﺟﻤﺎﻟﻴﺔ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻫﻲ ﺩﺍﻟﺔ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺧﺼﺎﺉﺼﻬﺎ.
ﺃﻭﻻ ً،ﻫﻨﺎﻙ ﺗﻜﻠﻔﺔ ﺗﺪﺭﻳﺐ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻠﻐﺔ ،ﻭﻫﻲ ﺩﺍﻟﺔ ﻋﻠﻰ ﺑﺴﺎﻃﺔ ﺍﻟﻠﻐﺔ
ﻭﺗﻌﺎﻣﺪﻫﺎﻭﺧﺒﺮﺓ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻠﻐﺎﺕ ﺍﻷﻛﺜﺮ ﻗﻮﺓ ﻟﻴﺴﺖ ﺑﺎﻟﻀﺮﻭﺭﺓ ﺃﻛﺜﺮ
ﺻﻌﻮﺑﺔﻓﻲ ﺍﻟﺘﻌﻠﻢ ،ﺇﻻ ﺃﻧﻬﺎ ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻜﻮﻥ ﻛﺬﻟﻚ.
ﺛﺎﻧﻴﺎً ،ﻫﻨﺎﻙ ﺗﻜﻠﻔﺔ ﻛﺘﺎﺑﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﺎﻟﻠﻐﺔ .ﻫﺬﻩ ﻫﻲ ﻭﻇﻴﻔﺔ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻠﻐﺔ ﻟﻠﻜﺘﺎﺑﺔ ،ﻭﺍﻟﺘﻲ
ﺗﻌﺘﻤﺪﺟﺰﺉﻴﺎً ﻋﻠﻰ ﻗﺮﺑﻬﺎ ﻓﻲ ﺍﻟﻐﺮﺽ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻌﻴﻦ .ﺍﻟﺠﻬﻮﺩ ﺍﻷﺻﻠﻴﺔ ﻟﺘﺼﻤﻴﻢ ﻭ
17 1.3ﻣﻌﺎﻳﻴﺮ ﺗﻘﻴﻴﻢ ﺍﻟﻠﻐﺔ
ﺗﻨﻔﻴﺬﻟﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﻛﺎﻧﺖ ﻣﺪﻓﻮﻋﺔ ﺑﺎﻟﺮﻏﺒﺔ ﻓﻲ ﺧﻔﺾ ﺗﻜﺎﻟﻴﻒ ﺇﻧﺸﺎء ﺍﻟﺒﺮﺍﻣﺞ.
ﻳﻤﻜﻦﺗﻘﻠﻴﻞ ﻛﻞ ﻣﻦ ﺗﻜﻠﻔﺔ ﺗﺪﺭﻳﺐ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻭﺗﻜﻠﻔﺔ ﻛﺘﺎﺑﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﻠﻐﺔ ﻣﺎ ﺑﺸﻜﻞ ﻛﺒﻴﺮ
ﻓﻲﺑﻴﺉﺔ ﺑﺮﻣﺠﺔ ﺟﻴﺪﺓ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺑﻴﺉﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺍﻟﻘﺴﻢ .1.8
ﺛﺎﻟﺜﺎً ،ﻫﻨﺎﻙ ﺗﻜﻠﻔﺔ ﺗﺮﺟﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﺎﻟﻠﻐﺔ .ﻛﺎﻥ ﺍﻟﻌﺎﺉﻖ ﺍﻟﺮﺉﻴﺴﻲ ﺃﻣﺎﻡ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺒﻜﺮ
ﻟـ Adaﻫﻮ ﺍﻟﺘﻜﻠﻔﺔ ﺍﻟﺒﺎﻫﻈﺔ ﻟﺘﺸﻐﻴﻞ ﺍﻟﺠﻴﻞ ﺍﻷﻭﻝ ﻣﻦ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ .Adaﺗﻢ ﺗﻘﻠﻴﻞ
ﻫﺬﻩﺍﻟﻤﺸﻜﻠﺔ ﻣﻦ ﺧﻼﻝ ﻇﻬﻮﺭ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ Adaﺍﻟﻤﺤﺴﻨّﺔ.
ﺭﺍﺑﻌﺎً ،ﺗﺘﺄﺛﺮ ﺗﻜﻠﻔﺔ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ ﻣﺎ ﺑﺸﻜﻞ ﻛﺒﻴﺮ ﺑﺘﺼﻤﻴﻢ ﺗﻠﻚ ﺍﻟﻠﻐﺔ.
ﺳﺘﻤﻨﻊﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﺘﻄﻠﺐ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻧﻮﻉ ﻭﻗﺖ ﺍﻟﺘﺸﻐﻴﻞ ﺗﻨﻔﻴﺬ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕﺍﻟﺒﺮﻣﺠﻴﺔ ﺑﺴﺮﻋﺔ ،ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺟﻮﺩﺓ ﺍﻟﻤﺘﺮﺟﻢ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻛﻔﺎءﺓ ﺍﻟﺘﻨﻔﻴﺬ
ﻛﺎﻧﺖﺍﻟﺸﻐﻞ ﺍﻟﺸﺎﻏﻞ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺒﻜﺮﺓ ،ﺇﻻ ﺃﻧﻬﺎ ﺗﻌﺘﺒﺮ ﺍﻵﻥ ﺃﻗﻞ ﺃﻫﻤﻴﺔ.
ﻳﻤﻜﻦﺇﺟﺮﺍء ﻣﻔﺎﺿﻠﺔ ﺑﺴﻴﻄﺔ ﺑﻴﻦ ﺗﻜﻠﻔﺔ ﺍﻟﺘﺮﺟﻤﺔ ﻭﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺘﺮﺟﻢ.ﺗﺤﺴﻴﻦ
ﻫﻮﺍﻻﺳﻢ ﺍﻟﺬﻱ ﻳﻄﻠﻖ ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻲ ﻗﺪ ﻳﺴﺘﺨﺪﻣﻬﺎ ﺍﻟﻤﺘﺮﺟﻤﻮﻥ ﻟﺘﻘﻠﻴﻞ ﺍﻟﺤﺠﻢ ﻭ
/ﺃﻭ ﺯﻳﺎﺩﺓ ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ ﺍﻟﺸﻔﺮﺓ ﺍﻟﺘﻲ ﻳﻨﺘﺠﻮﻧﻬﺎ .ﺇﺫﺍ ﺗﻢ ﺇﺟﺮﺍء ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﻟﺘﺤﺴﻴﻦ ﺃﻭ ﻟﻢ ﻳﺘﻢ
ﺇﺟﺮﺍءﺃﻱ ﺗﺤﺴﻴﻦ ،ﻓﻴﻤﻜﻦ ﺇﺟﺮﺍء ﺍﻟﺘﺠﻤﻴﻊ ﺑﺸﻜﻞ ﺃﺳﺮﻉ ﺑﻜﺜﻴﺮ ﻣﻤﺎ ﻟﻮ ﺗﻢ ﺑﺬﻝ ﺟﻬﺪ ﻛﺒﻴﺮ ﻹﻧﺘﺎﺝ
ﻛﻮﺩﻣﺤﺴﻦ .ﻳﺘﺄﺛﺮ ﺍﻻﺧﺘﻴﺎﺭ ﺑﻴﻦ ﺍﻟﺒﺪﻳﻠﻴﻦ ﺑﺎﻟﺒﻴﺉﺔ ﺍﻟﺘﻲ ﺳﻴﺘﻢ ﻓﻴﻬﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺘﺮﺟﻢ .ﻓﻲ
ﻣﻌﻤﻞﻟﺒﺪء ﺍﻟﺒﺮﻣﺠﺔ ﻟﻠﻄﻼﺏ ،ﺍﻟﺬﻳﻦ ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻘﻮﻣﻮﻥ ﺑﺘﺠﻤﻴﻊ ﺑﺮﺍﻣﺠﻬﻢ ﻋﺪﺓ ﻣﺮﺍﺕ ﺃﺛﻨﺎء
ﺍﻟﺘﻄﻮﻳﺮﻭﻟﻜﻨﻬﻢ ﻳﺴﺘﺨﺪﻣﻮﻥ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻓﻲ ﻭﻗﺖ ﺍﻟﺘﻨﻔﻴﺬ )ﺑﺮﺍﻣﺠﻬﻢ
ﺻﻐﻴﺮﺓﻭﻳﺠﺐ ﻋﻠﻴﻬﻢ ﺗﻨﻔﻴﺬﻫﺎ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻣﺮﺓ ﻭﺍﺣﺪﺓ ﻓﻘﻂ( ،ﻳﺠﺐ ﺇﺟﺮﺍء ﺍﻟﻘﻠﻴﻞ ﻣﻦ
ﺍﻟﺘﺤﺴﻴﻦﺃﻭ ﻋﺪﻡ ﺍﻟﻘﻴﺎﻡ ﺑﺬﻟﻚ ﻋﻠﻰ ﺍﻹﻃﻼﻕ .ﻓﻲ ﺑﻴﺉﺔ ﺍﻹﻧﺘﺎﺝ ،ﺣﻴﺚ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﺍﻣﺞ
ﺍﻟﻤﺘﺮﺟﻤﺔﻋﺪﺓ ﻣﺮﺍﺕ ﺑﻌﺪ ﺍﻟﺘﻄﻮﻳﺮ ،ﻣﻦ ﺍﻷﻓﻀﻞ ﺩﻓﻊ ﺗﻜﻠﻔﺔ ﺇﺿﺎﻓﻴﺔ ﻟﺘﺤﺴﻴﻦ ﺍﻟﻜﻮﺩ.
ﺍﻟﻌﺎﻣﻞﺍﻟﺨﺎﻣﺲ ﻓﻲ ﺗﻜﻠﻔﺔ ﺍﻟﻠﻐﺔ ﻫﻮ ﺗﻜﻠﻔﺔ ﻧﻈﺎﻡ ﺗﻄﺒﻴﻖ ﺍﻟﻠﻐﺔ .ﺃﺣﺪ ﺍﻟﻌﻮﺍﻣﻞ ﺍﻟﺘﻲ ﺗﻔﺴﺮ
ﺍﻟﻘﺒﻮﻝﺍﻟﺴﺮﻳﻊ ﻟـ Javaﻫﻮ ﺃﻥ ﺃﻧﻈﻤﺔ ﺍﻟﻤﺘﺮﺟﻢ /ﺍﻟﻤﺘﺮﺟﻢ ﺍﻟﻔﻮﺭﻱ ﺃﺻﺒﺤﺖ ﻣﺘﺎﺣﺔ ﻟﻬﺎ ﺑﻌﺪ ﻭﻗﺖ
ﻗﺼﻴﺮﻣﻦ ﺇﺻﺪﺍﺭ ﺗﺼﻤﻴﻤﻬﺎ .ﺳﻴﻜﻮﻥ ﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻳﻜﻮﻥ ﻧﻈﺎﻡ ﺗﻨﻔﻴﺬﻫﺎ ﺑﺎﻫﻆ ﺍﻟﺜﻤﻦ ﺃﻭ ﻳﻌﻤﻞ ﻓﻘﻂ
ﻋﻠﻰﺃﺟﻬﺰﺓ ﺑﺎﻫﻈﺔ ﺍﻟﺜﻤﻦ ﻓﺮﺻﺔ ﺃﻗﻞ ﺑﻜﺜﻴﺮ ﻓﻲ ﺃﻥ ﺗﺼﺒﺢ ﻣﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ .ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﺳﺎﻋﺪﺕ ﺍﻟﺘﻜﻠﻔﺔ ﺍﻟﻌﺎﻟﻴﺔ ﻟﻤﺠﻤﻌﻲ Adaﻣﻦ ﺍﻟﺠﻴﻞ ﺍﻷﻭﻝ ﻓﻲ ﻣﻨﻊ Adaﻣﻦ ﺃﻥ
ﺗﺼﺒﺢﺷﺎﺉﻌﺔ ﻓﻲ ﺃﻳﺎﻣﻬﺎ ﺍﻷﻭﻟﻰ.
ﺳﺎﺩﺳﺎ ً،ﻫﻨﺎﻙ ﺗﻜﻠﻔﺔ ﺿﻌﻒ ﺍﻟﻤﻮﺛﻮﻗﻴﺔ .ﺇﺫﺍ ﻓﺸﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻧﻈﺎﻡ ﺣﺮﺝ ،ﻣﺜﻞ ﻣﺤﻄﺔ
ﻟﻠﻄﺎﻗﺔﺍﻟﻨﻮﻭﻳﺔ ﺃﻭ ﺟﻬﺎﺯ ﺍﻷﺷﻌﺔ ﺍﻟﺴﻴﻨﻴﺔ ﻟﻼﺳﺘﺨﺪﺍﻡ ﺍﻟﻄﺒﻲ ،ﻓﻘﺪ ﺗﻜﻮﻥ ﺍﻟﺘﻜﻠﻔﺔ ﻋﺎﻟﻴﺔ ﺟﺪﺍً.
ﻳﻤﻜﻦﺃﻥ ﻳﻜﻮﻥ ﻓﺸﻞ ﺍﻷﻧﻈﻤﺔ ﻏﻴﺮ ﺍﻟﺤﺮﺟﺔ ﺃﻳﻀﺎً ﻣﻜﻠﻔﺎً ﻟﻠﻐﺎﻳﺔ ﻣﻦ ﺣﻴﺚ ﻓﻘﺪﺍﻥ ﺍﻷﻋﻤﺎﻝ ﺃﻭ
ﺍﻟﺪﻋﺎﻭﻯﺍﻟﻘﻀﺎﺉﻴﺔ ﻓﻲ ﺍﻟﻤﺴﺘﻘﺒﻞ ﺑﺴﺒﺐ ﺃﻧﻈﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻌﻴﺒﺔ.
ﺍﻻﻋﺘﺒﺎﺭﺍﻷﺧﻴﺮ ﻫﻮ ﺗﻜﻠﻔﺔ ﺻﻴﺎﻧﺔ ﺍﻟﺒﺮﺍﻣﺞ ،ﻭﺍﻟﺘﻲ ﺗﺘﻀﻤﻦ ﻛﻼ ًﻣﻦ ﺍﻟﺘﺼﺤﻴﺤﺎﺕ ﻭﺍﻟﺘﻌﺪﻳﻼﺕ
ﻹﺿﺎﻓﺔﻭﻇﺎﺉﻒ ﺟﺪﻳﺪﺓ .ﺗﻌﺘﻤﺪ ﺗﻜﻠﻔﺔ ﺻﻴﺎﻧﺔ ﺍﻟﺒﺮﺍﻣﺞ ﻋﻠﻰ ﻋﺪﺩ ﻣﻦ ﺧﺼﺎﺉﺺ ﺍﻟﻠﻐﺔ ،ﻭﻫﻲ
ﻗﺎﺑﻠﻴﺔﺍﻟﻘﺮﺍءﺓ ﻓﻲ ﺍﻟﻤﻘﺎﻡ ﺍﻷﻭﻝ .ﻧﻈﺮﺍً ﻷﻥ ﺍﻟﺼﻴﺎﻧﺔ ﻳﺘﻢ ﺇﺟﺮﺍﺅﻫﺎ ﻏﺎﻟﺒﺎً ﺑﻮﺍﺳﻄﺔ ﺃﻓﺮﺍﺩ ﺑﺨﻼﻑ
ﺍﻟﻤﺆﻟﻒﺍﻷﺻﻠﻲ ﻟﻠﺒﺮﻧﺎﻣﺞ ،ﻓﺈﻥ ﺿﻌﻒ ﺍﻟﻘﺮﺍءﺓ ﻳﻤﻜﻦ ﺃﻥ ﻳﺠﻌﻞ ﺍﻟﻤﻬﻤﺔ ﺻﻌﺒﺔ ﻟﻠﻐﺎﻳﺔ.
ﻻﻳﻤﻜﻦ ﺍﻟﻤﺒﺎﻟﻐﺔ ﻓﻲ ﺃﻫﻤﻴﺔ ﺇﻣﻜﺎﻧﻴﺔ ﺻﻴﺎﻧﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺗﺸﻴﺮ ﺍﻟﺘﻘﺪﻳﺮﺍﺕ ﺇﻟﻰ ﺃﻧﻪ ﺑﺎﻟﻨﺴﺒﺔ
ﻷﻧﻈﻤﺔﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻜﺒﻴﺮﺓ ﺫﺍﺕ ﺍﻷﻋﻤﺎﺭ ﺍﻟﻄﻮﻳﻠﺔ ﻧﺴﺒﻴﺎً ،ﻳﻤﻜﻦ ﺃﻥ ﺗﺼﻞ ﺗﻜﺎﻟﻴﻒ ﺍﻟﺼﻴﺎﻧﺔ ﺇﻟﻰ
ﺿﻌﻔﻴﻦﺇﻟﻰ ﺃﺭﺑﻌﺔ ﺃﺿﻌﺎﻑ ﺗﻜﺎﻟﻴﻒ ﺍﻟﺘﻄﻮﻳﺮ ).(Sommerville ، 2005
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 18
ﻣﻦﺑﻴﻦ ﺟﻤﻴﻊ ﺍﻟﻌﻮﺍﻣﻞ ﺍﻟﻤﺴﺎﻫﻤﺔ ﻓﻲ ﺗﻜﺎﻟﻴﻒ ﺍﻟﻠﻐﺔ ،ﻫﻨﺎﻙ ﺛﻼﺛﺔ ﻋﻮﺍﻣﻞ ﺃﻛﺜﺮ ﺃﻫﻤﻴﺔ:
ﺗﻄﻮﻳﺮﺍﻟﺒﺮﺍﻣﺞ ،ﻭﺍﻟﺼﻴﺎﻧﺔ ،ﻭﺍﻟﻤﻮﺛﻮﻗﻴﺔ .ﻧﻈﺮﺍً ﻷﻥ ﻫﺎﺗﻴﻦ ﺍﻟﻮﻇﻴﻔﺘﻴﻦ ﻫﻤﺎ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ
ﻭﺍﻟﻘﺮﺍءﺓ ،ﻓﺈﻥ ﻣﻌﻴﺎﺭ ﺍﻟﺘﻘﻴﻴﻢ ﻫﺬﻳﻦ ﻫﻤﺎ ،ﺑﺪﻭﺭﻩ ،ﺍﻷﻛﺜﺮ ﺃﻫﻤﻴﺔ.
ﺑﺎﻟﻄﺒﻊ ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻋﺪﺩ ﻣﻦ ﺍﻟﻤﻌﺎﻳﻴﺮ ﺍﻷﺧﺮﻯ ﻟﺘﻘﻴﻴﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻣﺜﺎﻝ ﻭﺍﺣﺪ ﻫﻮ
ﻗﺎﺑﻠﻴﺔﺍﻟﺘﻨﻘﻞ ،ﺃﻭ ﺍﻟﺴﻬﻮﻟﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺑﻬﺎ ﻧﻘﻞ ﺍﻟﺒﺮﺍﻣﺞ ﻣﻦ ﺗﻄﺒﻴﻖ ﺇﻟﻰ ﺁﺧﺮ .ﺗﺘﺄﺛﺮ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻨﻘﻞ
ﺑﺸﺪﺓﺑﺪﺭﺟﺔ ﺗﻮﺣﻴﺪ ﺍﻟﻠﻐﺔ .ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ،ﻣﺜﻞ ، BASICﻟﻴﺴﺖ ﻣﻮﺣﺪﺓ ﻋﻠﻰ ﺍﻹﻃﻼﻕ ،ﻣﻤﺎ
ﻳﺠﻌﻞﺍﻟﺒﺮﺍﻣﺞ ﺑﻬﺬﻩ ﺍﻟﻠﻐﺎﺕ ﺻﻌﺒﺔ ﻟﻠﻐﺎﻳﺔ ﻟﻼﻧﺘﻘﺎﻝ ﻣﻦ ﺗﻄﺒﻴﻖ ﺇﻟﻰ ﺁﺧﺮ .ﺍﻟﺘﻘﻴﻴﺲ ﻋﻤﻠﻴﺔ ﺻﻌﺒﺔ
ﻭﺗﺴﺘﻐﺮﻕﻭﻗﺘﺎ ﻃﻮﻳﻼ .ﺑﺪﺃﺕ ﻟﺠﻨﺔ ﺍﻟﻌﻤﻞ ﻋﻠﻰ ﺇﻧﺘﺎﺝ ﻧﺴﺨﺔ ﻣﻌﻴﺎﺭﻳﺔ ﻣﻦ ++ Cﻓﻲ ﻋﺎﻡ .1989
ﻭﺗﻤﺖﺍﻟﻤﻮﺍﻓﻘﺔ ﻋﻠﻴﻬﺎ ﻓﻲ ﻋﺎﻡ .1998
ﻣﻌﻈﻢﺍﻟﻤﻌﺎﻳﻴﺮ ،ﺧﺎﺻﺔ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻭﺍﻟﻜﺘﺎﺑﺔ ﻭﺍﻟﻤﻮﺛﻮﻗﻴﺔ ،ﻟﻴﺴﺖ ﻣﺤﺪﺩﺓ ﺑﺪﻗﺔ ﻭﻻ
ﻗﺎﺑﻠﺔﻟﻠﻘﻴﺎﺱ ﺗﻤﺎﻣﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﻬﻲ ﻣﻔﺎﻫﻴﻢ ﻣﻔﻴﺪﺓ ﻭﺗﻮﻓﺮ ﺭﺅﻳﺔ ﻗﻴﻤﺔ ﻓﻲ ﺗﺼﻤﻴﻢ ﻭﺗﻘﻴﻴﻢ
ﻟﻐﺎﺕﺍﻟﺒﺮﻣﺠﺔ.
ﻣﻼﺣﻈﺔﺃﺧﻴﺮﺓ ﺣﻮﻝ ﻣﻌﺎﻳﻴﺮ ﺍﻟﺘﻘﻴﻴﻢ :ﻳﺘﻢ ﺗﻘﻴﻴﻢ ﻣﻌﺎﻳﻴﺮ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﺑﺸﻜﻞ ﻣﺨﺘﻠﻒ ﻣﻦ
ﻭﺟﻬﺎﺕﻧﻈﺮ ﻣﺨﺘﻠﻔﺔ .ﻳﻬﺘﻢ ﺍﻟﻘﺎﺉﻤﻮﻥ ﻋﻠﻰ ﺗﻨﻔﻴﺬ ﺍﻟﻠﻐﺔ ﻓﻲ ﺍﻟﻤﻘﺎﻡ ﺍﻷﻭﻝ ﺑﺼﻌﻮﺑﺔ ﺗﻨﻔﻴﺬ ﺑﻨﻴﺎﺕ
ﻭﻣﻴﺰﺍﺕﺍﻟﻠﻐﺔ .ﻳﺸﻌﺮ ﻣﺴﺘﺨﺪﻣﻮ ﺍﻟﻠﻐﺔ ﺑﺎﻟﻘﻠﻖ ﺑﺸﺄﻥ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻜﺘﺎﺑﺔ ﺃﻭﻻ ًﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻻﺣﻘﺎً.
ﻣﻦﺍﻟﻤﺮﺟﺢ ﺃﻥ ﻳﺆﻛﺪ ﻣﺼﻤﻤﻮ ﺍﻟﻠﻐﺔ ﻋﻠﻰ ﺍﻷﻧﺎﻗﺔ ﻭﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺟﺬﺏ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻮﺍﺳﻊ .ﻏﺎﻟﺒﺎً ﻣﺎ
ﺗﺘﻌﺎﺭﺽﻫﺬﻩ ﺍﻟﺨﺼﺎﺉﺺ ﻣﻊ ﺑﻌﻀﻬﺎ ﺍﻟﺒﻌﺾ.
1.4.1ﻫﻨﺪﺳﺔ ﺍﻟﺤﺎﺳﻮﺏ
ﻛﺎﻥﻟﻠﺒﻨﻴﺔ ﺍﻷﺳﺎﺳﻴﺔ ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺗﺄﺛﻴﺮ ﻋﻤﻴﻖ ﻋﻠﻰ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ .ﺗﻢ ﺗﺼﻤﻴﻢ ﻣﻌﻈﻢ
ﺍﻟﻠﻐﺎﺕﺍﻟﺸﺎﺉﻌﺔ ﻓﻲ ﺍﻟﺨﻤﺴﻴﻦ ﻋﺎﻣﺎً ﺍﻟﻤﺎﺿﻴﺔ ﺣﻮﻝ ﺑﻨﻴﺔ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺴﺎﺉﺪﺓ ،ﻭﺍﻟﺘﻲ ﺗﺴﻤﻰ
ﺍﻟﻌﻤﺎﺭﺓﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ ،ﻋﻠﻰ ﺍﺳﻢ ﺃﺣﺪ ﻣﻨﺸﺉﻴﻬﺎ ،ﺟﻮﻥ ﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ )ﻳﻨُﻄﻖ "ﻓﻮﻥ ﻧﻮﻳﻤﺎﻥ"(.
ﺗﺴﻤﻰﻫﺬﻩ ﺍﻟﻠﻐﺎﺕﺇﻟﺰﺍﻣﻲﺍﻟﻠﻐﺎﺕ .ﻓﻲ ﻛﻤﺒﻴﻮﺗﺮ ، von Neumannﻳﺘﻢ ﺗﺨﺰﻳﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ
ﻭﺍﻟﺒﺮﺍﻣﺞﻓﻲ ﻧﻔﺲ ﺍﻟﺬﺍﻛﺮﺓ .ﻭﺣﺪﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺮﻛﺰﻳﺔ ) ، (CPUﺍﻟﺘﻲ ﺗﻨﻔﺬ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ،ﻣﻨﻔﺼﻠﺔ
ﻋﻦﺍﻟﺬﺍﻛﺮﺓ .ﻟﺬﻟﻚ ،ﻳﺠﺐ ﻧﻘﻞ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ،ﺃﻭ ﻧﻘﻠﻬﺎ ﻋﺒﺮ ﺍﻷﻧﺎﺑﻴﺐ ،ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﺇﻟﻰ
ﻭﺣﺪﺓﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺮﻛﺰﻳﺔ .ﻳﺠﺐ ﺇﻋﺎﺩﺓ ﻧﺘﺎﺉﺞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻓﻲ ﻭﺣﺪﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺮﻛﺰﻳﺔ ﺇﻟﻰ
ﺍﻟﺬﺍﻛﺮﺓ.ﺗﻘﺮﻳﺒﺎً ﺟﻤﻴﻊ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺮﻗﻤﻴﺔ ﺍﻟﺘﻲ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﻣﻨﺬ ﺍﻷﺭﺑﻌﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ
ﺍﻟﻤﺎﺿﻲﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺑﻨﻴﺔ ﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ .ﻳﻈﻬﺮ ﺍﻟﻬﻴﻜﻞ ﺍﻟﻌﺎﻡ ﻟﺠﻬﺎﺯ ﻛﻤﺒﻴﻮﺗﺮ von Neumann
ﻓﻲﺍﻟﺸﻜﻞ .1.1
19 1.4ﺍﻟﺘﺄﺛﻴﺮﺍﺕ ﻋﻠﻰ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ
ﺍﻟﺸﻜﻞ1.1
ﻓﻮﻥﻧﻴﻮﻣﺎﻥ
ﺍﻟﺬﺍﻛﺮﺓ)ﺗﺨﺰﻳﻦ ﻛﻞ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ( ﻫﻨﺪﺳﺔﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﻧﺘﺎﺉﺞ
ﻋﻤﻠﻴﺎﺕ
ﻳﺘﺤﻜﻢ ﺍﻟﺤﺴﺎﺏﻭ
ﺃﺟﻬﺰﺓﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﻭﺣﺪﺓ ﻭﺣﺪﺓﺍﻟﻤﻨﻄﻖ
ﻭﺣﺪﺓﻣﻌﺎﻟﺠﺔ ﻣﺮﻛﺰﻳﺔ
ﺑﺴﺒﺐﺑﻨﻴﺔ ﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ ،ﻓﺈﻥ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﺮﻛﺰﻳﺔ ﻟﻠﻐﺎﺕ ﺍﻟﺤﺘﻤﻴﺔ ﻫﻲ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ،ﺍﻟﺘﻲ
ﺗﻤﺜﻞﺧﻼﻳﺎ ﺍﻟﺬﺍﻛﺮﺓ ؛ ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺨﺼﻴﺺ ،ﻭﺍﻟﺘﻲ ﺗﺴﺘﻨﺪ ﺇﻟﻰ ﻋﻤﻠﻴﺔ ﺍﻷﻧﺎﺑﻴﺐ ؛ ﻭﺍﻟﺼﻴﻐﺔ
ﺍﻟﺘﻜﺮﺍﺭﻳﺔﻟﻠﺘﻜﺮﺍﺭ ،ﻭﻫﻲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻷﻛﺜﺮ ﻓﺎﻋﻠﻴﺔ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﻜﺮﺍﺭ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ .ﻳﺘﻢ ﻧﻘﻞ
ﺍﻟﻌﻤﻠﻴﺎﺕﻓﻲ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﺇﻟﻰ ﻭﺣﺪﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺮﻛﺰﻳﺔ ،ﻭﻳﺘﻢ ﺇﺭﺟﺎﻉ ﻧﺘﻴﺠﺔ ﺗﻘﻴﻴﻢ
ﺍﻟﺘﻌﺒﻴﺮﺇﻟﻰ ﺧﻠﻴﺔ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﺘﻲ ﻳﻤﺜﻠﻬﺎ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﺴﺮ ﻣﻦ ﺍﻟﻤﻬﻤﺔ .ﺍﻟﺘﻜﺮﺍﺭ ﺳﺮﻳﻊ ﻋﻠﻰ ﺃﺟﻬﺰﺓ
ﻛﻤﺒﻴﻮﺗﺮ von Neumannﻷﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻣﺨﺰﻧﺔ ﻓﻲ ﺧﻼﻳﺎ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﻤﺠﺎﻭﺭﺓ ﻭﺗﻜﺮﺍﺭ ﺗﻨﻔﻴﺬ ﺟﺰء
ﻣﻦﺍﻟﻜﻮﺩ ﻻ ﻳﺘﻄﻠﺐ ﺳﻮﻯ ﺗﻌﻠﻴﻤﺎﺕ ﻓﺮﻉ .ﻻ ﺗﺸﺠﻊ ﻫﺬﻩ ﺍﻟﻜﻔﺎءﺓ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺩﻳﺔ ﻟﻠﺘﻜﺮﺍﺭ ،
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﺘﻜﺮﺍﺭ ﻳﻜﻮﻥ ﻓﻲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﺃﻛﺜﺮ ﻃﺒﻴﻌﻴﺔ.
ﻳﺤﺪﺙﺗﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ ﻛﻮﺩ ﺍﻵﻟﺔ ﻋﻠﻰ ﻛﻤﺒﻴﻮﺗﺮ ﻣﻌﻤﺎﺭﻱ von Neumannﻓﻲ ﻋﻤﻠﻴﺔ ﺗﺴﻤﻰ
ﺩﻭﺭﺓﺍﻟﺠﻠﺐ ﻭﺍﻟﺘﻨﻔﻴﺬ .ﻛﻤﺎ ﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ،ﺗﻮﺟﺪ ﺍﻟﺒﺮﺍﻣﺞ ﻓﻲ ﺍﻟﺬﺍﻛﺮﺓ ﻭﻟﻜﻦ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻓﻲ
ﻭﺣﺪﺓﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺮﻛﺰﻳﺔ .ﻳﺠﺐ ﻧﻘﻞ ﻛﻞ ﺗﻌﻠﻴﻤﺎﺕ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﺇﻟﻰ ﺍﻟﻤﻌﺎﻟﺞ .ﻳﺘﻢ
ﺍﻻﺣﺘﻔﺎﻅﺑﻌﻨﻮﺍﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺘﻲ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻓﻲ ﺳﺠﻞ ﻳﺴﻤﻰﻋﺪﺍﺩ ﺍﻟﺒﺮﻧﺎﻣﺞ.
ﻳﻤﻜﻦﻭﺻﻒ ﺩﻭﺭﺓ ﺍﻟﺠﻠﺐ ﻭﺍﻟﺘﻨﻔﻴﺬ ﺑﺒﺴﺎﻃﺔ ﻣﻦ ﺧﻼﻝ ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺗﻨﻔﻴﺬﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻛﺮﺭ
ﺍﻟﻨﻬﺎﻳﺔ
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 20
ﺗﻌﻨﻲﺧﻄﻮﺓ "ﻓﻚ ﺷﻔﺮﺓ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ" ﻓﻲ ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺔ ﺃﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻳﺘﻢ ﻓﺤﺼﻬﺎ ﻟﺘﺤﺪﻳﺪ ﺍﻹﺟﺮﺍء
ﺍﻟﺬﻱﺗﺤﺪﺩﻩ .ﻳﻨﺘﻬﻲ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ ﻣﻮﺍﺟﻬﺔ ﺗﻌﻠﻴﻤﺎﺕ ﺍﻹﻳﻘﺎﻑ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻧﺎﺩﺭﺍً ﻣﺎ
ﻳﺘﻢﺗﻨﻔﻴﺬ ﺗﻌﻠﻴﻤﺎﺕ ﺍﻹﻳﻘﺎﻑ ﻋﻠﻰ ﺟﻬﺎﺯ ﻛﻤﺒﻴﻮﺗﺮ ﻓﻌﻠﻲ .ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ ،ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﻋﻤﻠﻴﺎﺕ
ﺍﻟﻨﻘﻞﻣﻦ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺇﻟﻰ ﺑﺮﻧﺎﻣﺞ ﻣﺴﺘﺨﺪﻡ ﻟﺘﻨﻔﻴﺬﻩ ﺛﻢ ﺍﻟﻌﻮﺩﺓ ﺇﻟﻰ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻋﻨﺪ
ﺍﻛﺘﻤﺎﻝﺗﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ .ﻓﻲ ﻧﻈﺎﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺬﻱ ﻗﺪ ﻳﻜﻮﻥ ﻓﻴﻪ ﺃﻛﺜﺮ ﻣﻦ ﺑﺮﻧﺎﻣﺞ
ﻣﺴﺘﺨﺪﻡﻭﺍﺣﺪ ﻓﻲ ﺍﻟﺬﺍﻛﺮﺓ ﻓﻲ ﻭﻗﺖ ﻣﻌﻴﻦ ،ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً.
ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ،ﻓﺈﻥ ﺍﻟﻠﻐﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ﺃﻭ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻓﻴﻬﺎ ﺍﻟﻮﺳﻴﻠﺔ
ﺍﻷﺳﺎﺳﻴﺔﻟﻠﺤﺴﺎﺏ ﻫﻲ ﺗﻄﺒﻴﻖ ﺍﻟﻮﻇﺎﺉﻒ ﻋﻠﻰ ﻣﻌﻠﻤﺎﺕ ﻣﻌﻴﻨﺔ .ﻳﻤﻜﻦ ﺃﻥ ﺗﺘﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ
ﻭﻇﻴﻔﻴﺔﺑﺪﻭﻥ ﻧﻮﻉ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺤﺘﻤﻴﺔ ،ﺑﺪﻭﻥ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺺ ،
ﻭﺑﺪﻭﻥﺍﻟﺘﻜﺮﺍﺭ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻠﻤﺎء ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻗﺪ ﺷﺮﺣﻮﺍ ﺍﻟﻔﻮﺍﺉﺪ ﺍﻟﺘﻲ ﻻ ﺗﻌﺪ
ﻭﻻﺗﺤﺼﻰ ﻟﻠﻐﺎﺕ ﺍﻟﻮﻇﻴﻔﻴﺔ ،ﻣﺜﻞ ، Schemeﻓﻤﻦ ﻏﻴﺮ ﺍﻟﻤﺤﺘﻤﻞ ﺃﻥ ﻳﺤﻠﻮﺍ ﻣﺤﻞ ﺍﻟﻠﻐﺎﺕ
ﺍﻟﻀﺮﻭﺭﻳﺔﺣﺘﻰ ﻳﺘﻢ ﺗﺼﻤﻴﻢ ﻛﻤﺒﻴﻮﺗﺮ ﻏﻴﺮ von Neumannﻳﺴﻤﺢ ﺑﺎﻟﺘﻨﻔﻴﺬ ﺍﻟﻔﻌﺎﻝ ﻟﻠﺒﺮﺍﻣﺞ
ﺑﻠﻐﺎﺕﻭﻇﻴﻔﻴﺔ .ﻣﻦ ﺑﻴﻦ ﺃﻭﻟﺉﻚ ﺍﻟﺬﻳﻦ ﺗﺤﺴﺮﻭﺍ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﺤﻘﻴﻘﺔ ،ﻛﺎﻥ ﺟﻮﻥ ﺑﺎﻛﻮﺱ )(1978
ﺍﻟﻤﺼﻤﻢﺍﻟﺮﺉﻴﺴﻲ ﻟﻠﻨﺴﺨﺔ ﺍﻷﺻﻠﻴﺔ ﻣﻦ ﻓﻮﺭﺗﺮﺍﻥ ،ﺃﻛﺜﺮﻫﻢ ﺑﻼﻏﺔ.
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺣﻘﻴﻘﺔ ﺃﻥ ﺑﻨﻴﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺤﺘﻤﻴﺔ ﺗﻢ ﺗﺼﻤﻴﻤﻬﺎ ﻋﻠﻰ ﻏﺮﺍﺭ ﺑﻨﻴﺔ ﺍﻵﻟﺔ ،
ﺑﺪﻻ ًﻣﻦ ﻗﺪﺭﺍﺕ ﻭﻣﻴﻮﻝ ﻣﺴﺘﺨﺪﻣﻲ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻳﻌﺘﻘﺪ ﺍﻟﺒﻌﺾ ﺃﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻠﻐﺎﺕ
ﺍﻟﺤﺘﻤﻴﺔﺃﻣﺮ ﻃﺒﻴﻌﻲ ﺇﻟﻰ ﺣﺪ ﻣﺎ ﺃﻛﺜﺮ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ﻭﻇﻴﻔﻴﺔ .ﻟﺬﻟﻚ ،ﻳﻌﺘﻘﺪ ﻫﺆﻻء ﺍﻷﺷﺨﺎﺹ
ﺃﻧﻪﺣﺘﻰ ﻟﻮ ﻛﺎﻧﺖ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻮﻇﻴﻔﻴﺔ ﻓﻌﺎﻟﺔ ﻣﺜﻞ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻀﺮﻭﺭﻳﺔ ،ﻓﺈﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔﺍﻹﻟﺰﺍﻣﻴﺔ ﺳﻴﻈﻞ ﻫﻮ ﺍﻟﻤﺴﻴﻄﺮ.
ﻛﺎﻥﺃﺣﺪ ﺍﻷﺳﺒﺎﺏ ﺍﻟﻤﻬﻤﺔ ﻟﻬﺬﺍ ﺍﻟﺒﺤﺚ ﻫﻮ ﺍﻟﺘﺤﻮﻝ ﻓﻲ ﺍﻟﺘﻜﻠﻔﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻟﻠﺤﻮﺳﺒﺔ ﻣﻦ
ﺍﻷﺟﻬﺰﺓﺇﻟﻰ ﺍﻟﺒﺮﺍﻣﺞ ،ﺣﻴﺚ ﺍﻧﺨﻔﻀﺖ ﺗﻜﺎﻟﻴﻒ ﺍﻷﺟﻬﺰﺓ ﻭﺯﺍﺩﺕ ﺗﻜﺎﻟﻴﻒ ﺍﻟﻤﺒﺮﻣﺞ .ﻛﺎﻧﺖ
ﺍﻟﺰﻳﺎﺩﺍﺕﻓﻲ ﺇﻧﺘﺎﺟﻴﺔ ﺍﻟﻤﺒﺮﻣﺞ ﺻﻐﻴﺮﺓ ﻧﺴﺒﻴﺎً .ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺫﻟﻚ ،ﺗﻢ ﺣﻞ ﺍﻟﻤﺸﻜﻼﺕ ﺍﻷﻛﺒﺮ
ﻭﺍﻷﻛﺜﺮﺗﻌﻘﻴﺪﺍً ﺑﺸﻜﻞ ﺗﺪﺭﻳﺠﻲ ﺑﻮﺍﺳﻄﺔ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﺑﺪﻻ ًﻣﻦ ﻣﺠﺮﺩ ﺣﻞ ﻣﺠﻤﻮﻋﺎﺕ ﻣﻦ
ﺍﻟﻤﻌﺎﺩﻻﺕﻟﻤﺤﺎﻛﺎﺓ ﻣﺴﺎﺭﺍﺕ ﺍﻷﻗﻤﺎﺭ ﺍﻟﺼﻨﺎﻋﻴﺔ ،ﻛﻤﺎ ﻓﻲ ﺃﻭﺍﺉﻞ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ،ﻛﺎﻧﺖ ﺍﻟﺒﺮﺍﻣﺞ
ﺗﻜُﺘﺐﻟﻤﻬﺎﻡ ﻛﺒﻴﺮﺓ ﻭﻣﻌﻘﺪﺓ ،ﻣﺜﻞ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﻣﺮﺍﻓﻖ ﺗﻜﺮﻳﺮ ﺍﻟﺒﺘﺮﻭﻝ ﺍﻟﻜﺒﻴﺮﺓ ﻭﺗﻮﻓﻴﺮ ﺃﻧﻈﻤﺔ ﺣﺠﺰ
ﻃﻴﺮﺍﻥﻋﺎﻟﻤﻴﺔ.
ﺗﻢﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ﺟﻨﺒﺎً ﺇﻟﻰ ﺟﻨﺐ ﻣﻊ ﻟﻐﺔ ﺗﺪﻋﻢ ﻣﻔﺎﻫﻴﻤﻬﺎ، 1989( :
.Smalltalk )Goldberg and Robsonﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ Smalltalkﻟﻢ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ
ﻋﻠﻰﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻣﺜﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ،ﺇﻻ ﺃﻥ ﺩﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ
ﺃﺻﺒﺢﺍﻵﻥ ﺟﺰءﺍً ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺤﺘﻤﻴﺔ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ( ، Ada 95 )ARM ، 1995ﻭ
، Javaﻭ ، ++ Cﻭ .# Cﻭﺟﺪﺕ ﺍﻟﻤﻔﺎﻫﻴﻢ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ﻃﺮﻳﻘﻬﺎ ﺃﻳﻀﺎً ﺇﻟﻰ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﻮﻇﻴﻔﻴﺔﻓﻲ ( CLOS )Bobrow et al. ، 1988ﻭ ، Syme) # Fﻭﺁﺧﺮﻭﻥ ، (2010 ،ﺑﺎﻹﺿﺎﻓﺔ
ﺇﻟﻰﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻓﻲ ( .Prolog ++ )Moss ، 1994ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺩﻋﻢ ﺍﻟﻠﻐﺔ ﻟﻠﺒﺮﻣﺠﺔ
ﺍﻟﺸﻴﺉﻴﺔﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺍﻟﻔﺼﻞ .12
ﺃﺩﺕﻛﻞ ﻫﺬﻩ ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﺘﻄﻮﺭﻳﺔ ﻓﻲ ﻣﻨﻬﺠﻴﺎﺕ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﺇﻟﻰ ﺗﺮﺍﻛﻴﺐ ﻟﻐﺔ
ﺟﺪﻳﺪﺓﻟﺪﻋﻤﻬﺎ.
1.5ﻓﺉﺎﺕ ﺍﻟﻠﻐﺔ
ﻏﺎﻟﺒﺎًﻣﺎ ﻳﺘﻢ ﺗﺼﻨﻴﻒ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺇﻟﻰ ﺃﺭﺑﻊ ﺳﻼﻝ :ﺇﻟﺰﺍﻣﻴﺔ ،ﻭﻇﻴﻔﻴﺔ ،ﻣﻨﻄﻘﻴﺔ ،ﻭﻣﻮﺟﻬﺔ
ﻟﻠﻜﺎﺉﻨﺎﺕ.ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻧﻨﺎ ﻻ ﻧﻌﺘﺒﺮ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ ﻟﺘﺸﻜﻴﻞ ﻓﺉﺔ
ﻣﻨﻔﺼﻠﺔﻣﻦ ﺍﻟﻠﻐﺎﺕ .ﻟﻘﺪ ﻭﺻﻔﻨﺎ ﻛﻴﻒ ﻧﺸﺄﺕ ﺍﻟﻠﻐﺎﺕ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﻤﻮﺟﻬﺔﻟﻠﻜﺎﺉﻨﺎﺕ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻹﻟﺰﺍﻣﻴﺔ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻧﻤﻮﺫﺝ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻮﺟﻪ
ﻟﻠﻜﺎﺉﻨﺎﺕﻳﺨﺘﻠﻒ ﺍﺧﺘﻼﻓﺎً ﻛﺒﻴﺮﺍً ﻋﻦ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﻤﻮﺟﻪ ﻧﺤﻮ ﺍﻹﺟﺮﺍءﺍﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﺎﺩﺓ ًﻣﻊ
ﺍﻟﻠﻐﺎﺕﺍﻟﺤﺘﻤﻴﺔ ،
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 22
ﺍﻣﺘﺪﺍﺩﺍﺕﻟﻠﻐﺔ ﺣﺘﻤﻴﺔ ﻣﻄﻠﻮﺑﺔ ﻟﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ ﻟﻴﺴﺖ ﻣﻜﺜﻔﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،
ﺍﻟﺘﻌﺒﻴﺮﺍﺕﻭﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺺ ﻭﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺤﻜﻢ ﻓﻲ Cﻭ Javaﻣﺘﻄﺎﺑﻘﺔ ﺗﻘﺮﻳﺒﺎً) .ﻣﻦ ﻧﺎﺣﻴﺔ
ﺃﺧﺮﻯ ،ﺗﺨﺘﻠﻒ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻭﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﻭﺩﻻﻻﺕ Javaﻋﻦ ﺗﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ (.Cﻳﻤﻜﻦ
ﺇﺟﺮﺍءﻋﺒﺎﺭﺍﺕ ﻣﻤﺎﺛﻠﺔ ﻟﻠﻐﺎﺕ ﺍﻟﻮﻇﻴﻔﻴﺔ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ.
ﻧﻮﻉﺁﺧﺮ ﻣﻦ ﺍﻟﻠﻐﺔ ،ﺍﻟﻠﻐﺔ ﺍﻟﻤﺮﺉﻴﺔ ،ﻫﻲ ﻓﺉﺔ ﻓﺮﻋﻴﺔ ﻟﻠﻐﺎﺕ ﺍﻷﻣﺮ .ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺮﺉﻴﺔ ﺍﻷﻛﺜﺮ
ﺷﻴﻮﻋﺎًﻫﻲ ﻟﻐﺎﺕ .NET.ﺗﺘﻀﻤﻦ ﻫﺬﻩ ﺍﻟﻠﻐﺎﺕ )ﺃﻭ ﺗﻄﺒﻴﻘﺎﺗﻬﺎ( ﺇﻣﻜﺎﻧﻴﺎﺕ ﺇﻧﺸﺎء ﺍﻟﺴﺤﺐ
ﻭﺍﻹﻓﻼﺕﻣﻦ ﻣﻘﺎﻃﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ .ﻛﺎﻧﺖ ﺗﺴﻤﻰ ﻫﺬﻩ ﺍﻟﻠﻐﺎﺕ ﺫﺍﺕ ﻳﻮﻡ ﻟﻐﺎﺕ ﺍﻟﺠﻴﻞ
ﺍﻟﺮﺍﺑﻊ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻫﺬﺍ ﺍﻻﺳﻢ ﻟﻢ ﻳﻌﺪ ﺻﺎﻟﺤﺎً ﻟﻼﺳﺘﺨﺪﺍﻡ .ﺗﻮﻓﺮ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺮﺉﻴﺔ ﻃﺮﻳﻘﺔ
ﺑﺴﻴﻄﺔﻹﻧﺸﺎء ﻭﺍﺟﻬﺎﺕ ﻣﺴﺘﺨﺪﻡ ﺭﺳﻮﻣﻴﺔ ﻟﻠﺒﺮﺍﻣﺞ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺑﺎﺳﺘﺨﺪﺍﻡ Studio
Visualﻟﺘﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺑﻠﻐﺎﺕ ، NET.ﻳﻤﻜﻦ ﺇﻧﺸﺎء ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻹﻧﺘﺎﺝ ﻋﺮﺽ ﻟﻌﻨﺼﺮ
ﺗﺤﻜﻢﻓﻲ ﺍﻟﻨﻤﻮﺫﺝ ،ﻣﺜﻞ ﺯﺭ ﺃﻭ ﻣﺮﺑﻊ ﻧﺺ ،ﺑﻀﻐﻄﺔ ﻣﻔﺘﺎﺡ ﻭﺍﺣﺪﺓ .ﺗﺘﻮﻓﺮ ﻫﺬﻩ ﺍﻹﻣﻜﺎﻧﺎﺕ ﺍﻵﻥ
ﺑﺠﻤﻴﻊﻟﻐﺎﺕ .NET.
ﻳﺸﻴﺮﺑﻌﺾ ﺍﻟﻤﺆﻟﻔﻴﻦ ﺇﻟﻰ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻛﻔﺉﺔ ﻣﻨﻔﺼﻠﺔ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻭﻣﻊ
ﺫﻟﻚ ،ﻓﺈﻥ ﺍﻟﻠﻐﺎﺕ ﻓﻲ ﻫﺬﻩ ﺍﻟﻔﺉﺔ ﻣﺮﺗﺒﻄﺔ ﺑﺒﻌﻀﻬﺎ ﺍﻟﺒﻌﺾ ﺑﻄﺮﻳﻘﺔ ﺍﻟﺘﻨﻔﻴﺬ ،ﺍﻟﺘﺮﺟﻤﺔ ﺍﻟﺠﺰﺉﻴﺔ
ﺃﻭﺍﻟﻜﺎﻣﻠﺔ ،ﺃﻛﺜﺮ ﻣﻦ ﺍﺭﺗﺒﺎﻃﻬﺎ ﺑﺘﺼﻤﻴﻢ ﻟﻐﺔ ﻣﺸﺘﺮﻛﺔ .ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺗﺴﻤﻰ ﻋﺎﺩﺓ ًﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﻨﺼﻴﺔ ،ﻣﻦ ﺑﻴﻨﻬﺎ Perlﻭ JavaScriptﻭ ، Rubyﻫﻲ ﻟﻐﺎﺕ ﺿﺮﻭﺭﻳﺔ ﺑﻜﻞ ﻣﻌﻨﻰ ﺍﻟﻜﻠﻤﺔ.
ﻟﻐﺔﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻫﻲ ﻣﺜﺎﻝ ﻋﻠﻰ ﻟﻐﺔ ﻗﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﻘﻮﺍﻋﺪ .ﻓﻲ ﻟﻐﺔ ﺍﻷﻣﺮ ،ﻳﺘﻢ ﺗﺤﺪﻳﺪ
ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺔﺑﺘﻔﺼﻴﻞ ﻛﺒﻴﺮ ،ﻭﻳﺠﺐ ﺗﻀﻤﻴﻦ ﺍﻟﺘﺮﺗﻴﺐ ﺍﻟﻤﺤﺪﺩ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺃﻭ ﺍﻟﻌﺒﺎﺭﺍﺕ.
ﻭﻣﻊﺫﻟﻚ ،ﻓﻲ ﺍﻟﻠﻐﺔ ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ﺍﻟﻘﻮﺍﻋﺪ ،ﻻ ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﺍﻟﻘﻮﺍﻋﺪ ﺑﺄﻱ ﺗﺮﺗﻴﺐ ﻣﻌﻴﻦ ،ﻭﻳﺠﺐ
ﺃﻥﻳﺨﺘﺎﺭ ﻧﻈﺎﻡ ﺗﻄﺒﻴﻖ ﺍﻟﻠﻐﺔ ﺗﺮﺗﻴﺒﺎً ﺗﺴُﺘﺨﺪﻡ ﻓﻴﻪ ﺍﻟﻘﻮﺍﻋﺪ ﻹﻧﺘﺎﺝ ﺍﻟﻨﺘﻴﺠﺔ ﺍﻟﻤﺮﺟﻮﺓ .ﻳﺨﺘﻠﻒ ﻫﺬﺍ
ﺍﻟﻨﻬﺞﻟﺘﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺍﺧﺘﻼﻓﺎً ﺟﺬﺭﻳﺎً ﻋﻦ ﺗﻠﻚ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻊ ﻓﺉﺘﻴﻦ ﺃﺧﺮﻳﻴﻦ ﻣﻦ ﺍﻟﻠﻐﺎﺕ
ﻭﻳﺘﻄﻠﺐﺑﻮﺿﻮﺡ ﻧﻮﻋﺎً ﻣﺨﺘﻠﻔﺎً ﺗﻤﺎﻣﺎً ﻣﻦ ﺍﻟﻠﻐﺔ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﻟﻐﺔ ﺑﺮﻭﻟﻮﺝ ،ﻭﻫﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﻤﻨﻄﻘﻴﺔﺍﻷﻛﺜﺮ ﺍﺳﺘﺨﺪﺍﻣﺎً ،ﻭﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻓﻲ ﺍﻟﻔﺼﻞ .16
ﻇﻬﺮﺕﻣﺠﻤﻮﻋﺔ ﻛﺒﻴﺮﺓ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺫﺍﺕ ﺍﻷﻏﺮﺍﺽ ﺍﻟﺨﺎﺻﺔ ﻋﻠﻰ ﻣﺪﺍﺭ ﺍﻟﺨﻤﺴﻴﻦ ﻋﺎﻣﺎً
ﺍﻟﻤﺎﺿﻴﺔ.ﺗﺘﺮﺍﻭﺡ ﻫﺬﻩ ﻣﻦ ﻣﻨُﺸﺊ ﺑﺮﻧﺎﻣﺞ ﺍﻟﺘﻘﺎﺭﻳﺮ ) ، (RPGﻭﺍﻟﺬﻱ ﻳﺴﺘﺨﺪﻡ ﻹﻧﺘﺎﺝ ﺗﻘﺎﺭﻳﺮ
ﺍﻷﻋﻤﺎﻝ ؛ﺇﻟﻰ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻤﺒﺮﻣﺠﺔ ﺗﻠﻘﺎﺉﻴﺎً ) ، (APTﻭﺍﻟﺘﻲ ﺗﺴُﺘﺨﺪﻡ ﻟﺘﻮﺟﻴﻪ ﺃﺩﻭﺍﺕ ﺍﻵﻟﺔ ﺍﻟﻘﺎﺑﻠﺔ
ﻟﻠﺒﺮﻣﺠﺔ ؛ﺇﻟﻰ ﻧﻈﺎﻡ ﻣﺤﺎﻛﺎﺓ ﺍﻷﻏﺮﺍﺽ ﺍﻟﻌﺎﻣﺔ ) ، (GPSSﻭﺍﻟﺬﻱ ﻳﺴﺘﺨﺪﻡ ﻟﻤﺤﺎﻛﺎﺓ ﺍﻷﻧﻈﻤﺔ .ﻫﺬﺍ
ﺍﻟﻜﺘﺎﺏﻻ ﻳﻨﺎﻗﺶ
23 1.7ﻃﺮﻕ ﺍﻟﺘﻨﻔﻴﺬ
ﺍﻟﻠﻐﺎﺕﺫﺍﺕ ﺍﻷﻏﺮﺍﺽ ﺍﻟﺨﺎﺻﺔ ،ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﺃﺳﺎﺳﺎً ﺇﻟﻰ ﻗﺎﺑﻠﻴﺘﻬﺎ ﻟﻠﺘﻄﺒﻴﻖ ﺍﻟﻀﻴﻖ ﻭﺻﻌﻮﺑﺔ
ﻣﻘﺎﺭﻧﺘﻬﺎﺑﺎﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ.
ﻣﻌﻴﺎﺭﺍﻥﻳﺘﻌﺎﺭﺿﺎﻥ ﻫﻤﺎ ﺍﻟﻤﻮﺛﻮﻗﻴﺔ ﻭﺗﻜﻠﻔﺔ ﺍﻟﺘﻨﻔﻴﺬ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﺘﻄﻠﺐ ﺗﻌﺮﻳﻒ
ﻟﻐﺔ Javaﻓﺤﺺ ﺟﻤﻴﻊ ﺍﻟﻤﺮﺍﺟﻊ ﺇﻟﻰ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺃﻥ ﺍﻟﻔﻬﺮﺱ ﺃﻭ ﺍﻟﻔﻬﺎﺭﺱ
ﻣﻮﺟﻮﺩﺓﻓﻲ ﻧﻄﺎﻗﺎﺗﻬﺎ ﺍﻟﻘﺎﻧﻮﻧﻴﺔ .ﺗﻀﻴﻒ ﻫﺬﻩ ﺍﻟﺨﻄﻮﺓ ﻗﺪﺭﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺗﻜﻠﻔﺔ ﺗﻨﻔﻴﺬ ﺑﺮﺍﻣﺞ Java
ﺍﻟﺘﻲﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﻤﺮﺍﺟﻊ ﻟﻌﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ .ﻻ ﺗﺘﻄﻠﺐ ﻟﻐﺔ Cﻓﺤﺺ ﻧﻄﺎﻕ
ﺍﻟﻔﻬﺮﺱ ،ﻟﺬﻟﻚ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺑﺮﺍﻣﺞ Cﺑﺸﻜﻞ ﺃﺳﺮﻉ ﻣﻦ ﺑﺮﺍﻣﺞ Javaﺍﻟﻤﻜﺎﻓﺉﺔ ﻟﻐﻮﻳﺎً ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ
ﻣﻦﺃﻥ ﺑﺮﺍﻣﺞ Javaﺃﻛﺜﺮ ﻣﻮﺛﻮﻗﻴﺔ .ﻗﺎﻡ ﻣﺼﻤﻤﻮ Javaﺑﺘﺒﺎﺩﻝ ﻛﻔﺎءﺓ ﺍﻟﺘﻨﻔﻴﺬ ﻣﻦ ﺃﺟﻞ ﺍﻟﻤﻮﺛﻮﻗﻴﺔ.
ﻛﻤﺜﺎﻝﺁﺧﺮ ﻋﻠﻰ ﺍﻟﻤﻌﺎﻳﻴﺮ ﺍﻟﻤﺘﻀﺎﺭﺑﺔ ﺍﻟﺘﻲ ﺗﺆﺩﻱ ﻣﺒﺎﺷﺮﺓ ﺇﻟﻰ ﻣﻘﺎﻳﻀﺎﺕ ﺍﻟﺘﺼﻤﻴﻢ ،ﺿﻊ
ﻓﻲﺍﻋﺘﺒﺎﺭﻙ ﺣﺎﻟﺔ .APLﻳﺘﻀﻤﻦ APLﻣﺠﻤﻮﻋﺔ ﻗﻮﻳﺔ ﻣﻦ ﺍﻟﻌﻮﺍﻣﻞ ﻟﻤﻌﺎﻣﻼﺕ ﺍﻟﺼﻔﻴﻒ.
ﺑﺴﺒﺐﺍﻟﻌﺪﺩ ﺍﻟﻜﺒﻴﺮ ﻣﻦ ﺍﻟﻤﺸﻐﻠﻴﻦ ،ﻛﺎﻥ ﻻﺑﺪ ﻣﻦ ﺗﻀﻤﻴﻦ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ﺍﻟﺠﺪﻳﺪﺓ ﻓﻲ
APLﻟﺘﻤﺜﻴﻞ ﺍﻟﻤﺸﻐﻠﻴﻦ .ﺃﻳﻀﺎً ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻮﺍﻣﻞ ﺗﺸﻐﻴﻞ APLﻓﻲ ﺗﻌﺒﻴﺮ
ﻭﺍﺣﺪﻃﻮﻳﻞ ﻭﻣﻌﻘﺪ .ﺇﺣﺪﻯ ﻧﺘﺎﺉﺞ ﻫﺬﻩ ﺍﻟﺪﺭﺟﺔ ﺍﻟﻌﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺘﻌﺒﻴﺮﻳﺔ ﻫﻲ ﺃﻧﻪ ﺑﺎﻟﻨﺴﺒﺔ
ﻟﻠﺘﻄﺒﻴﻘﺎﺕﺍﻟﺘﻲ ﺗﺘﻀﻤﻦ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻤﺼﻔﻮﻓﺔ ،ﻓﺈﻥ APLﻗﺎﺑﻞ ﻟﻠﻜﺘﺎﺑﺔ ﺑﺸﻜﻞ ﻛﺒﻴﺮ.
ﻓﻲﺍﻟﻮﺍﻗﻊ ،ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻗﺪﺭ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﺤﺴﺎﺑﺎﺕ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﺻﻐﻴﺮ ﺟﺪﺍً .ﻧﺘﻴﺠﺔ ﺃﺧﺮﻯ ﻫﻲ ﺃﻥ
ﺑﺮﺍﻣﺞ APLﻟﺪﻳﻬﺎ ﻗﺎﺑﻠﻴﺔ ﻗﺮﺍءﺓ ﺿﻌﻴﻔﺔ ﻟﻠﻐﺎﻳﺔ .ﻳﻤﺘﻠﻚ ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﻤﻀﻐﻮﻁ ﻭﺍﻟﻤﻮﺟﺰ ﺟﻤﺎﻻً ﺭﻳﺎﺿﻴﺎً
ﻣﻌﻴﻨﺎًﻭﻟﻜﻦ ﻳﺼﻌﺐ ﻋﻠﻰ ﺃﻱ ﺷﺨﺺ ﺁﺧﺮ ﻏﻴﺮ ﺍﻟﻤﺒﺮﻣﺞ ﻓﻬﻤﻪ .ﻻﺣﻆ ﺍﻟﻤﺆﻟﻒ ﺍﻟﺸﻬﻴﺮ ﺩﺍﻧﻴﺎﻝ
ﻣﻜﺮﺍﻛﻴﻦ) (1970ﺫﺍﺕ ﻣﺮﺓ ﺃﻧﻪ ﺍﺳﺘﻐﺮﻕ ﺃﺭﺑﻊ ﺳﺎﻋﺎﺕ ﻟﻘﺮﺍءﺓ ﻭﻓﻬﻢ ﺑﺮﻧﺎﻣﺞ APLﺍﻟﻤﻜﻮﻥ ﻣﻦ
ﺃﺭﺑﻌﺔﺃﺳﻄﺮ .ﻗﺎﻡ ﻣﺼﻤﻢ APLﺑﺎﻟﺘﺪﺍﻭﻝ ﻓﻲ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻟﻠﻜﺘﺎﺑﺔ.
ﺗﻜﺜﺮﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﺍﻟﺘﻌﺎﺭﺽ ﺑﻴﻦ ﻣﻌﺎﻳﻴﺮ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ )ﻭﺍﻟﺘﻘﻴﻴﻢ( ؛ ﺑﻌﻀﻬﺎ ﺧﻔﻲ ﻭﺍﻟﺒﻌﺾ
ﺍﻵﺧﺮﻭﺍﺿﺢ .ﻟﺬﻟﻚ ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻣﻬﻤﺔ ﺍﺧﺘﻴﺎﺭ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﻭﺍﻟﻤﻴﺰﺍﺕ ﻋﻨﺪ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ
ﺗﺘﻄﻠﺐﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻨﺎﺯﻻﺕ ﻭﺍﻟﻤﻔﺎﺿﻼﺕ.
1.7ﻃﺮﻕ ﺍﻟﺘﻨﻔﻴﺬ
ﻛﻤﺎﻫﻮ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻘﺴﻢ ، 1.4.1ﻓﺈﻥ ﺍﺛﻨﻴﻦ ﻣﻦ ﺍﻟﻤﻜﻮﻧﺎﺕ ﺍﻷﺳﺎﺳﻴﺔ ﻟﻠﻜﻤﺒﻴﻮﺗﺮ ﻫﻤﺎ ﺍﻟﺬﺍﻛﺮﺓ
ﺍﻟﺪﺍﺧﻠﻴﺔﻭﻣﻌﺎﻟﺠﻬﺎ .ﺗﺴﺘﺨﺪﻡ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﺪﺍﺧﻠﻴﺔ ﻟﺘﺨﺰﻳﻦ ﺍﻟﺒﺮﺍﻣﺞ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ .ﺍﻟﻤﻌﺎﻟﺞ ﻋﺒﺎﺭﺓ ﻋﻦ
ﻣﺠﻤﻮﻋﺔﻣﻦ ﺍﻟﺪﻭﺍﺉﺮ ﺍﻟﺘﻲ ﺗﻮﻓﺮ
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 24
ﻟﻐﺔﺍﻵﻟﺔ ﻟﻠﻜﻤﺒﻴﻮﺗﺮ ﻫﻲ ﻣﺠﻤﻮﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺨﺎﺻﺔ ﺑﻪ .ﻓﻲ ﺣﺎﻟﺔ ﻋﺪﻡ ﻭﺟﻮﺩ ﺑﺮﺍﻣﺞ ﺩﺍﻋﻤﺔ
ﺃﺧﺮﻯ ،ﻓﺈﻥ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﻮﺣﻴﺪﺓ ﺍﻟﺘﻲ "ﺗﻔﻬﻤﻬﺎ" ﻣﻌﻈﻢ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ.
ﻣﻦﺍﻟﻨﺎﺣﻴﺔ ﺍﻟﻨﻈﺮﻳﺔ ،ﻳﻤﻜﻦ ﺗﺼﻤﻴﻢ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻭﺑﻨﺎﺅﻩ ﺑﻠﻐﺔ ﻣﻌﻴﻨﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﻛﻠﻐﺔ ﺍﻵﻟﺔ
ﺍﻟﺨﺎﺻﺔﺑﻪ ،ﻭﻟﻜﻨﻪ ﺳﻴﻜﻮﻥ ﻣﻌﻘﺪﺍً ﻭﻣﻜﻠﻔﺎً ﻟﻠﻐﺎﻳﺔ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﺳﻴﻜﻮﻥ ﻏﻴﺮ ﻣﺮﻥ ﻟﻠﻐﺎﻳﺔ ،
ﻷﻧﻪﺳﻴﻜﻮﻥ ﻣﻦ ﺍﻟﺼﻌﺐ )ﻭﻟﻜﻦ ﻟﻴﺲ ﻣﻦ ﺍﻟﻤﺴﺘﺤﻴﻞ( ﺍﺳﺘﺨﺪﺍﻣﻪ ﻣﻊ ﻟﻐﺎﺕ ﺃﺧﺮﻯ ﻋﺎﻟﻴﺔ
ﺍﻟﻤﺴﺘﻮﻯ.ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺧﻴﺎﺭ ﺗﺼﻤﻴﻢ ﺍﻟﻤﺎﻛﻴﻨﺔ ﺍﻷﻛﺜﺮ ﻋﻤﻠﻴﺔ ﻓﻲ ﺍﻷﺟﻬﺰﺓ ﺑﻠﻐﺔ ﻣﻨﺨﻔﻀﺔ ﺍﻟﻤﺴﺘﻮﻯ
ﻟﻠﻐﺎﻳﺔﺗﻮﻓﺮ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺒﺪﺍﺉﻴﺔ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﺍﻟﻤﻄﻠﻮﺑﺔ ﻭﺗﺘﻄﻠﺐ ﺑﺮﻧﺎﻣﺞ ﻧﻈﺎﻡ ﻹﻧﺸﺎء ﻭﺍﺟﻬﺔ
ﻟﻠﺒﺮﺍﻣﺞﺑﻠﻐﺎﺕ ﺫﺍﺕ ﻣﺴﺘﻮﻯ ﺃﻋﻠﻰ.
ﻻﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻧﻈﺎﻡ ﺗﻄﺒﻴﻖ ﺍﻟﻠﻐﺔ ﻫﻮ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻮﺣﻴﺪ ﺍﻟﻤﻮﺟﻮﺩ ﻋﻠﻰ ﺟﻬﺎﺯ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ.
ﻣﻄﻠﻮﺏﺃﻳﻀﺎً ﻣﺠﻤﻮﻋﺔ ﻛﺒﻴﺮﺓ ﻣﻦ ﺍﻟﺒﺮﺍﻣﺞ ،ﺗﺴﻤﻰ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ،ﻭﺍﻟﺘﻲ ﺗﻮﻓﺮ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻷﻭﻟﻴﺔ
ﺫﺍﺕﺍﻟﻤﺴﺘﻮﻯ ﺍﻷﻋﻠﻰ ﻣﻦ ﺗﻠﻚ ﺍﻟﺨﺎﺻﺔ ﺑﻠﻐﺔ ﺍﻵﻟﺔ .ﺗﻮﻓﺮ ﻫﺬﻩ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻷﻭﻟﻴﺔ ﺇﺩﺍﺭﺓ ﻣﻮﺍﺭﺩ
ﺍﻟﻨﻈﺎﻡ ،ﻭﻋﻤﻠﻴﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ،ﻭﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﺍﻟﻤﻠﻔﺎﺕ ،ﻭﻣﺤﺮﺭﻱ ﺍﻟﻨﺼﻮﺹ ﻭ /ﺃﻭ
ﺍﻟﺒﺮﺍﻣﺞ ،ﻭﻣﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻷﺧﺮﻯ ﺍﻟﻤﻄﻠﻮﺑﺔ ﺑﺸﻜﻞ ﺷﺎﺉﻊ .ﻧﻈﺮﺍً ﻷﻥ ﺃﻧﻈﻤﺔ
ﺗﻨﻔﻴﺬﺍﻟﻠﻐﺔ ﺗﺤﺘﺎﺝ ﺇﻟﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﺮﺍﻓﻖ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ،ﻓﺈﻧﻬﺎ ﺗﺘﻔﺎﻋﻞ ﻣﻊ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ
ﺑﺪﻻ ًﻣﻦ ﺍﻟﺘﻌﺎﻣﻞ ﺍﻟﻤﺒﺎﺷﺮ ﻣﻊ ﺍﻟﻤﻌﺎﻟﺞ )ﺑﻠﻐﺔ ﺍﻵﻟﺔ(.
ﻳﺘﻢﻭﺿﻊ ﺗﻄﺒﻴﻘﺎﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﺍﻟﻠﻐﺔ ﻓﻮﻕ ﻭﺍﺟﻬﺔ ﻟﻐﺔ ﺍﻵﻟﺔ ﻟﻠﻜﻤﺒﻴﻮﺗﺮ .ﻳﻤﻜﻦ ﺍﻋﺘﺒﺎﺭ
ﻫﺬﻩﺍﻟﻄﺒﻘﺎﺕ ﺑﻤﺜﺎﺑﺔ ﺃﺟﻬﺰﺓ ﻛﻤﺒﻴﻮﺗﺮ ﺍﻓﺘﺮﺍﺿﻴﺔ ،ﻣﻤﺎ ﻳﻮﻓﺮ ﻭﺍﺟﻬﺎﺕ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺑﻤﺴﺘﻮﻳﺎﺕ
ﺃﻋﻠﻰ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻮﻓﺮ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﻣﺘﺮﺟﻢ ﻟﻐﺔ ﺳﻲ ﺣﺎﺳﻮﺏ ﺳﻲ ﻇﺎﻫﺮﻱ .ﻣﻊ
ﺑﺮﺍﻣﺞﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ ﺍﻷﺧﺮﻯ ،ﻳﻤﻜﻦ ﺃﻥ ﺗﺼﺒﺢ ﺍﻵﻟﺔ ﺃﻧﻮﺍﻋﺎً ﺃﺧﺮﻯ ﻣﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺍﻻﻓﺘﺮﺍﺿﻴﺔ.ﺗﻮﻓﺮ ﻣﻌﻈﻢ ﺃﻧﻈﻤﺔ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ.
ﺗﺸﻜﻞﺑﺮﺍﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻃﺒﻘﺔ ﺃﺧﺮﻯ ﺃﻋﻠﻰ ﻃﺒﻘﺔ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ .ﻳﻈﻬﺮ ﻋﺮﺽ
ﺍﻟﻄﺒﻘﺎﺕﻟﺠﻬﺎﺯ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻓﻲ ﺍﻟﺸﻜﻞ .1.2
ﻛﺎﻧﺖﺃﻧﻈﻤﺔ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﺨﺎﺻﺔ ﺑﺄﻭﻝ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ،ﺍﻟﺘﻲ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﻓﻲ
ﺃﻭﺍﺧﺮﺍﻟﺨﻤﺴﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ ،ﻣﻦ ﺑﻴﻦ ﺃﻛﺜﺮ ﺃﻧﻈﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺗﻌﻘﻴﺪﺍً ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ.
ﻓﻲﺍﻟﺴﺘﻴﻨﻴﺎﺕ ،ﺑﺬُﻟﺖ ﺟﻬﻮﺩ ﺑﺤﺜﻴﺔ ﻣﻜﺜﻔﺔ ﻟﻔﻬﻢ ﻭﺇﺿﻔﺎء ﺍﻟﻄﺎﺑﻊ ﺍﻟﺮﺳﻤﻲ ﻋﻠﻰ ﻋﻤﻠﻴﺔ ﺇﻧﺸﺎء
ﻫﺬﻩﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻠﻐﻮﻳﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ .ﻛﺎﻥ ﺃﻛﺒﺮ ﻧﺠﺎﺡ ﻟﻬﺬﻩ ﺍﻟﺠﻬﻮﺩ ﻓﻲ ﻣﺠﺎﻝ ﺗﺤﻠﻴﻞ ﺍﻟﻨﺤﻮ ،
ﻭﻳﺮﺟﻊﺫﻟﻚ ﺃﺳﺎﺳﺎً ﺇﻟﻰ ﺃﻥ ﻫﺬﺍ ﺍﻟﺠﺰء ﻣﻦ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻨﻔﻴﺬ ﻫﻮ ﺗﻄﺒﻴﻖ ﻷﺟﺰﺍء ﻣﻦ ﻧﻈﺮﻳﺔ ﺍﻷﻭﺗﻮﻣﺎﺗﺎ
ﻭﻧﻈﺮﻳﺔﺍﻟﻠﻐﺔ ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺘﻲ ﺗﻢ ﻓﻬﻤﻬﺎ ﺟﻴﺪﺍً ﺑﻌﺪ ﺫﻟﻚ.
1.7.1ﺍﻟﺘﺠﻤﻴﻊ
ﻳﻤﻜﻦﺗﻨﻔﻴﺬ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺑﺄﻱ ﻣﻦ ﺍﻟﻄﺮﻕ ﺍﻟﻌﺎﻣﺔ ﺍﻟﺜﻼﺙ .ﻣﻦ ﻧﺎﺣﻴﺔ ﺃﺧﺮﻯ ،ﻳﻤﻜﻦ ﺗﺮﺟﻤﺔ
ﺍﻟﺒﺮﺍﻣﺞﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ ،ﻭﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺗﻨﻔﻴﺬﻫﺎ ﻣﺒﺎﺷﺮﺓ ﻋﻠﻰ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﺗﺴﻤﻰ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺃ
ﻣﺘﺮﺟﻢ
25 1.7ﻃﺮﻕ ﺍﻟﺘﻨﻔﻴﺬ
ﺍﻟﻤﺠﻤﻊ
ﺁﺩﺍ
ﻣﺘﺮﺟﻢ
ﺍﻓﺘﺮﺍﺿﻲ
ﺣﺸَﺪ ...
ﻟﻐﺔ
ﺣﺎﺳﻮﺏ ﺍﻓﺘﺮﺍﺿﻲ
ﺁﺩﺍ
ﺣﺎﺳﻮﺏ
ﺗﻄﺒﻴﻖﻭﻳﺘﻤﺘﻊ ﺑﻤﻴﺰﺓ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﺴﺮﻳﻊ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺑﻤﺠﺮﺩ ﺍﻛﺘﻤﺎﻝ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺮﺟﻤﺔ .ﻳﺘﻢ ﺗﻨﻔﻴﺬ
ﻣﻌﻈﻢﺗﻄﺒﻴﻘﺎﺕ ﺍﻹﻧﺘﺎﺝ ﻟﻠﻐﺎﺕ ،ﻣﺜﻞ Cﻭ COBOLﻭ ++ Cﻭ ، Adaﺑﻮﺍﺳﻄﺔ ﺍﻟﻤﺘﺮﺟﻤﻴﻦ.
ﺍﻟﻠﻐﺔﺍﻟﺘﻲ ﻳﺘﺮﺟﻤﻬﺎ ﺍﻟﻤﺘﺮﺟﻢ ﺗﺴﻤﻰﻟﻐﺔ ﺍﻟﻤﺼﺪﺭ .ﺗﺘﻢ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻭﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ
ﻋﻠﻰﻋﺪﺓ ﻣﺮﺍﺣﻞ ،ﻭﺃﻫﻤﻬﺎ ﻣﺒﻴﻦ ﻓﻲ ﺍﻟﺸﻜﻞ .1.3
ﻳﺄﺧﺬﻣﺤﻠﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺍﻟﻮﺣﺪﺍﺕ ﺍﻟﻤﻌﺠﻤﻴﺔ ﻣﻦ ﻣﺤﻠﻞ ﺍﻟﻤﻌﺠﻢ ﻭﻳﺴﺘﺨﺪﻣﻬﺎ ﻟﺒﻨﺎء ﻫﻴﺎﻛﻞ
ﻫﺮﻣﻴﺔﺗﺴﻤﻰﺗﺤﻠﻴﻞ ﺍﻷﺷﺠﺎﺭ .ﺗﻤﺜﻞ ﺃﺷﺠﺎﺭ ﺍﻟﺘﺤﻠﻴﻞ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺒﺮﻧﺎﻣﺞ .ﻓﻲ ﻛﺜﻴﺮ
ﻣﻦﺍﻟﺤﺎﻻﺕ ،ﻻ ﻳﺘﻢ ﺇﻧﺸﺎء ﻫﻴﻜﻞ ﺷﺠﺮﺓ ﺗﺤﻠﻴﻞ ﻓﻌﻠﻲ ؛ ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ ،ﻳﺘﻢ ﺇﻧﺸﺎء ﺍﻟﻤﻌﻠﻮﻣﺎﺕ
ﺍﻟﻤﻄﻠﻮﺑﺔﻟﺒﻨﺎء ﺷﺠﺮﺓ ﻭﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻣﺒﺎﺷﺮﺓ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﻛﻞ ﻣﻦ ﺍﻟﻮﺣﺪﺍﺕ ﺍﻟﻤﻌﺠﻤﻴﺔ ﻭﺃﺷﺠﺎﺭ
ﺍﻟﺘﺤﻠﻴﻞﻓﻲ ﺍﻟﻔﺼﻞ .3ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﻤﻌﺠﻤﻲ ﻭﺗﺤﻠﻴﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ،ﺃﻭ ﺍﻟﺘﺤﻠﻴﻞ ،ﺗﻤﺖ
ﻣﻨﺎﻗﺸﺘﻬﻤﺎﻓﻲ ﺍﻟﻔﺼﻞ .4
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 26
ﺍﻟﺸﻜﻞ1.3
ﻣﺼﺪﺭ
ﺑﺮﻧﺎﻣﺞ ﻋﻤﻠﻴﺔﺍﻟﺘﺠﻤﻴﻊ
ﻣﻌﺠﻤﻲ
ﻣﺤﻠﻞ
ﺍﻟﻮﺣﺪﺍﺕﺍﻟﻤﻌﺠﻤﻴﺔ
ﺑﻨﺎءﺍﻟﺠﻤﻠﺔ
ﻣﺤﻠﻞ
ﺗﺤﻠﻴﻞﺍﻷﺷﺠﺎﺭ
ﻣﺘﻮﺳﻂ
ﺗﺤﺴﻴﻦ ﻣﻮﻟﺪﺍﻷﻛﻮﺍﺩ ﺭﻣﺰ
)ﺧﻴﺎﺭﻱ( ﻭﺍﻟﺪﻻﻻﺕ ﻃﺎﻭﻟﺔ
ﻣﺤﻠﻞ
ﻣﺘﻮﺳﻂ
ﺷﻔﺮﺓ
ﺷﻔﺮﺓ
ﻣﻮﻟﺪﻛﻬﺮﺑﺎء
ﺁﻟﺔ
ﺍﺩﺧﺎﻝﺍﻟﺒﻴﺎﻧﺎﺕ ﻟﻐﺔ
ﺣﺎﺳﻮﺏ
ﻧﺘﺎﺉﺞ
ﻳﻨﺘﺞﻣﻨﺸﺊ ﺍﻟﺸﻔﺮﺓ ﺍﻟﻮﺳﻴﻄﺔ ﺑﺮﻧﺎﻣﺠﺎً ﺑﻠﻐﺔ ﻣﺨﺘﻠﻔﺔ ،ﺑﻤﺴﺘﻮﻯ ﻣﺘﻮﺳﻂ ﺑﻴﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ
ﺍﻟﻤﺼﺪﺭﻭﺍﻟﻤﺨﺮﺝ ﺍﻟﻨﻬﺎﺉﻲ ﻟﻠﻤﺘﺮﺟﻢ :ﺑﺮﻧﺎﻣﺞ ﻟﻐﺔ ﺍﻵﻟﺔ4.ﺗﺒﺪﻭ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﺃﺣﻴﺎﻧﺎً ﻣﺜﻞ ﻟﻐﺎﺕ
ﺍﻟﺘﺠﻤﻴﻊﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ،ﻭﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺗﻜﻮﻥ ﺃﺣﻴﺎﻧﺎً ﻟﻐﺎﺕ ﺗﺠﻤﻴﻊ ﻓﻌﻠﻴﺔ .ﻓﻲ ﺣﺎﻻﺕ ﺃﺧﺮﻯ ،ﻳﻜﻮﻥ
ﺍﻟﺮﻣﺰﺍﻟﻮﺳﻴﻂ ﻋﻠﻰ ﻣﺴﺘﻮﻯ
ﺇﻟﻰﺣﺪ ﻣﺎ ﺃﻋﻠﻰ ﻣﻦ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ .ﻳﻌﺘﺒﺮ ﺍﻟﻤﺤﻠﻞ ﺍﻟﺪﻻﻟﻲ ﺟﺰءﺍً ﻻ ﻳﺘﺠﺰﺃ ﻣﻦ ﻣﻨﺸﺊ ﺍﻟﺸﻔﺮﺓ
ﺍﻟﻮﺳﻴﻄﺔ.ﻳﺘﺤﻘﻖ ﺍﻟﻤﺤﻠﻞ ﺍﻟﺪﻻﻟﻲ ﻣﻦ ﺍﻷﺧﻄﺎء ،ﻣﺜﻞ ﺃﺧﻄﺎء ﺍﻟﻜﺘﺎﺑﺔ ،ﺍﻟﺘﻲ ﻳﺼﻌﺐ ،ﺇﻥ ﻟﻢ
ﻳﻜﻦﻣﻦ ﺍﻟﻤﺴﺘﺤﻴﻞ ،ﺍﻛﺘﺸﺎﻓﻬﺎ ﺃﺛﻨﺎء ﺗﺤﻠﻴﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ.
ﺍﻟﺘﺤﺴﻴﻦ ،ﺍﻟﺬﻱ ﻳﺤﺴﻦ ﺍﻟﺒﺮﺍﻣﺞ )ﻋﺎﺩﺓ ًﻓﻲ ﺇﺻﺪﺍﺭ ﺍﻟﻜﻮﺩ ﺍﻟﻮﺳﻴﻂ( ﻋﻦ ﻃﺮﻳﻖ ﺟﻌﻠﻬﺎ ﺃﺻﻐﺮ
ﺃﻭﺃﺳﺮﻉ ﺃﻭ ﻛﻠﻴﻬﻤﺎ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮﻥ ﺟﺰءﺍً ﺍﺧﺘﻴﺎﺭﻳﺎً ﻣﻦ ﺍﻟﺘﺠﻤﻴﻊ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺑﻌﺾ ﺍﻟﻤﺠﻤﻌﻴﻦ
ﻏﻴﺮﻗﺎﺩﺭﻳﻦ ﻋﻠﻰ ﺍﻟﻘﻴﺎﻡ ﺑﺄﻱ ﺗﺤﺴﻴﻦ ﻛﺒﻴﺮ .ﺳﻴﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻤﺘﺮﺟﻢ ﻓﻲ ﺍﻟﻤﻮﺍﻗﻒ
ﺍﻟﺘﻲﺗﻜﻮﻥ ﻓﻴﻬﺎ ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻤﺘﺮﺟﻢ ﺃﻗﻞ ﺃﻫﻤﻴﺔ ﺑﻜﺜﻴﺮ ﻣﻦ ﺳﺮﻋﺔ ﺍﻟﺘﺮﺟﻤﺔ .ﻣﺜﺎﻝ ﻋﻠﻰ
ﻣﺜﻞﻫﺬﺍ ﺍﻟﻤﻮﻗﻒ ﻫﻮ ﻣﺨﺘﺒﺮ ﺍﻟﺤﻮﺳﺒﺔ ﻟﻠﻤﺒﺮﻣﺠﻴﻦ ﺍﻟﻤﺒﺘﺪﺉﻴﻦ .ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﻤﻮﺍﻗﻒ ﺍﻟﺘﺠﺎﺭﻳﺔ
ﻭﺍﻟﺼﻨﺎﻋﻴﺔ ،ﺗﻜﻮﻥ ﺳﺮﻋﺔ ﺍﻟﺘﻨﻔﻴﺬ ﺃﻛﺜﺮ ﺃﻫﻤﻴﺔ ﻣﻦ ﺳﺮﻋﺔ ﺍﻟﺘﺠﻤﻴﻊ ،ﻟﺬﺍ ﻓﺈﻥ ﺍﻟﺘﺤﺴﻴﻦ ﺃﻣﺮ
ﻣﺮﻏﻮﺏﻓﻴﻪ ﺑﺸﻜﻞ ﺭﻭﺗﻴﻨﻲ .ﻧﻈﺮﺍً ﻟﺼﻌﻮﺑﺔ ﺇﺟﺮﺍء ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﺘﺤﺴﻴﻦ ﻋﻠﻰ ﻟﻐﺔ ﺍﻵﻟﺔ ،ﻳﺘﻢ
ﺇﺟﺮﺍءﻣﻌﻈﻢ ﺍﻟﺘﺤﺴﻴﻦ ﻋﻠﻰ ﺍﻟﻜﻮﺩ ﺍﻟﻮﺳﻴﻂ.
ﻳﻘﻮﻡﻣﻨﺸﺊ ﺍﻟﻜﻮﺩ ﺑﺘﺮﺟﻤﺔ ﺇﺻﺪﺍﺭ ﺍﻟﻜﻮﺩ ﺍﻟﻮﺳﻴﻂ ﺍﻟﻤﺤﺴﻦ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺇﻟﻰ ﺑﺮﻧﺎﻣﺞ ﻟﻐﺔ ﺁﻟﺔ
ﻣﻜﺎﻓﺊ.
ﻳﻌﻤﻞﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ ﻛﻘﺎﻋﺪﺓ ﺑﻴﺎﻧﺎﺕ ﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﺠﻤﻴﻊ .ﺍﻟﻤﺤﺘﻮﻳﺎﺕ ﺍﻷﺳﺎﺳﻴﺔ ﻟﺠﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ
ﻫﻲﺍﻟﻨﻮﻉ ﻭﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﺴﻤﺔ ﻟﻜﻞ ﺍﺳﻢ ﻣﻌﺮﻑ ﻣﻦ ﻗﺒﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻳﺘﻢ ﻭﺿﻊ ﻫﺬﻩ
ﺍﻟﻤﻌﻠﻮﻣﺎﺕﻓﻲ ﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ ﺑﻮﺍﺳﻄﺔ ﻣﺤﻠﻠﻲ ﺍﻟﻤﻌﺠﻢ ﻭﺍﻟﻨﺤﻮ ﻭﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﺑﻮﺍﺳﻄﺔ ﻣﺤﻠﻞ
ﺍﻟﺪﻻﻻﺕﻭﻣﻮﻟﺪ ﺍﻟﺸﻔﺮﺓ.
ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻟﺘﻲ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﺑﻮﺍﺳﻄﺔ ﻣﺘﺮﺟﻢ ﻳﻤﻜﻦ
ﺗﻨﻔﻴﺬﻫﺎﻣﺒﺎﺷﺮﺓ ﻋﻠﻰ ﺍﻷﺟﻬﺰﺓ ،ﺇﻻ ﺃﻧﻪ ﻳﺠﺐ ﺩﺍﺉﻤﺎً ﺗﺸﻐﻴﻠﻬﺎ ﻣﻊ ﺑﻌﺾ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ
ﺍﻷﺧﺮﻯ.ﺗﺘﻄﻠﺐ ﻣﻌﻈﻢ ﺑﺮﺍﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺃﻳﻀﺎً ﺑﺮﺍﻣﺞ ﻣﻦ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ .ﻣﻦ ﺑﻴﻦ ﺃﻛﺜﺮ ﻫﺬﻩ
ﺍﻟﺒﺮﺍﻣﺞﺷﻴﻮﻋﺎً ﺑﺮﺍﻣﺞ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ .ﻳﻨﺸﺊ ﺍﻟﻤﺘﺮﺟﻢ ﺍﺳﺘﺪﻋﺎءﺍﺕ ﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ ﺍﻟﻤﻄﻠﻮﺑﺔ
ﻋﻨﺪﻣﺎﻳﺤﺘﺎﺟﻬﺎ ﺑﺮﻧﺎﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ .ﻗﺒﻞ ﺃﻥ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺑﺮﺍﻣﺞ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻟﺘﻲ ﻳﻨﺘﺠﻬﺎ ﺍﻟﻤﺘﺮﺟﻢ ،
ﻳﺠﺐﺇﻳﺠﺎﺩ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻄﻠﻮﺑﺔ ﻣﻦ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﺭﺑﻄﻬﺎ ﺑﺒﺮﻧﺎﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ .ﺗﻘﻮﻡ ﻋﻤﻠﻴﺔ
ﺍﻟﺮﺑﻂﺑﺮﺑﻂ ﺑﺮﻧﺎﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺒﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ ﻋﻦ ﻃﺮﻳﻖ ﻭﺿﻊ ﻋﻨﺎﻭﻳﻦ ﻧﻘﺎﻁ ﺩﺧﻮﻝ ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ
ﻓﻲﺍﻟﻤﻜﺎﻟﻤﺎﺕ ﺇﻟﻴﻬﺎ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ .ﻳﻄُﻠﻖ ﺃﺣﻴﺎﻧﺎً ﻋﻠﻰ ﺭﻣﺰ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﺍﻟﻨﻈﺎﻡ ﻣﻌﺎً ﺍﺳﻢ
ﻣﻠﻒﻭﺣﺪﺓ ﺍﻟﺘﺤﻤﻴﻞ ،ﺃﻭﺻﻮﺭﺓ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ .ﺗﺴﻤﻰ ﻋﻤﻠﻴﺔ ﺗﺠﻤﻴﻊ ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ ﻭﺭﺑﻄﻬﺎ
ﺑﺒﺮﺍﻣﺞﺍﻟﻤﺴﺘﺨﺪﻡﺍﻟﺮﺑﻂ ﻭﺍﻟﺘﺤﻤﻴﻞ ،ﺃﻭ ﻓﻲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﻓﻘﻂﺭﺑﻂ .ﻳﺘﻢ ﺇﻧﺠﺎﺯﻩ ﺑﻮﺍﺳﻄﺔ
ﺑﺮﻧﺎﻣﺞﺃﻧﻈﻤﺔ ﻳﺴﻤﻰ ﺃﺭﺍﺑﻂ.
ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﺑﺮﺍﻣﺞ ﺍﻷﻧﻈﻤﺔ ،ﻳﺠﺐ ﻏﺎﻟﺒﺎً ﺭﺑﻂ ﺑﺮﺍﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺒﺮﺍﻣﺞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﻲ
ﺗﻢﺗﺠﻤﻴﻌﻬﺎ ﻣﺴﺒﻘﺎً ﻭﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺍﻟﻤﻜﺘﺒﺎﺕ .ﻟﺬﻟﻚ ﻻ ﻳﺮﺑﻂ ﺍﻟﺮﺍﺑﻂ ﺑﺮﻧﺎﻣﺠﺎً ﻣﻌﻴﻨﺎً ﺑﺒﺮﺍﻣﺞ
ﺍﻟﻨﻈﺎﻡﻓﺤﺴﺐ ،ﺑﻞ ﻳﻤﻜﻨﻪ ﺃﻳﻀﺎً ﺭﺑﻄﻪ ﺑﺒﺮﺍﻣﺞ ﻣﺴﺘﺨﺪﻡ ﺃﺧﺮﻯ.
ﻋﺎﺩﺓ ًﻣﺎ ﺗﺤﺪﺩ ﺳﺮﻋﺔ ﺍﻻﺗﺼﺎﻝ ﺑﻴﻦ ﺫﺍﻛﺮﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻭﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺨﺎﺹ ﺑﻪ ﺳﺮﻋﺔ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ،
ﻷﻧﻪﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻤﻜﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺑﺸﻜﻞ ﺃﺳﺮﻉ ﻣﻤﺎ ﻳﻤﻜﻦ ﻧﻘﻠﻬﺎ ﺇﻟﻰ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻠﺘﻨﻔﻴﺬ .ﻫﺬﺍ
ﺍﻻﺗﺼﺎﻝﻳﺴﻤﻰﻋﻨﻖ ﺍﻟﺰﺟﺎﺟﺔ ﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ؛ ﻫﺬﺍ ﻫﻮ ﺍﻟﻌﺎﻣﻞ ﺍﻟﻤﺤﺪﺩ ﺍﻷﺳﺎﺳﻲ ﻓﻲ ﺳﺮﻋﺔ
ﺃﺟﻬﺰﺓﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﻌﻤﺎﺭﻳﺔ ﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ .ﻛﺎﻥ ﻋﻨﻖ ﺯﺟﺎﺟﺔ ﻓﻮﻥ ﻧﻴﻮﻣﺎﻥ ﺃﺣﺪ ﺍﻟﺪﻭﺍﻓﻊ ﺍﻷﺳﺎﺳﻴﺔ
ﻟﻠﺒﺤﺚﻭﺍﻟﺘﻄﻮﻳﺮ ﻓﻲ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﻮﺍﺯﻳﺔ.
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 28
1.7.2ﺗﻔﺴﻴﺮ ﻧﻘﻲ
ﻳﻘﻊﺍﻟﺘﻔﺴﻴﺮ ﺍﻟﺨﺎﻟﺺ ﻓﻲ ﺍﻟﻄﺮﻑ ﺍﻵﺧﺮ )ﻣﻦ ﺍﻟﺘﺠﻤﻴﻊ( ﻟﻄﺮﻕ ﺍﻟﺘﻨﻔﻴﺬ .ﻣﻊ ﻫﺬﺍ ﺍﻟﻨﻬﺞ ،ﻳﺘﻢ
ﺗﻔﺴﻴﺮﺍﻟﺒﺮﺍﻣﺞ ﺑﻮﺍﺳﻄﺔ ﺑﺮﻧﺎﻣﺞ ﺁﺧﺮ ﻳﺴﻤﻰ ﻣﺘﺮﺟﻢ ،ﺑﺪﻭﻥ ﺗﺮﺟﻤﺔ ﻋﻠﻰ ﺍﻹﻃﻼﻕ .ﻳﻌﻤﻞ ﺑﺮﻧﺎﻣﺞ
ﺍﻟﻤﺘﺮﺟﻢﺍﻟﻔﻮﺭﻱ ﻛﻤﺤﺎﻛﺎﺓ ﺑﺮﻣﺠﻴﺔ ﻵﻟﺔ ﺗﺘﻌﺎﻣﻞ ﺩﻭﺭﺓ ﺍﻟﺠﻠﺐ ﻭﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ ﻣﻊ ﻋﺒﺎﺭﺍﺕ
ﺑﺮﻧﺎﻣﺞﺍﻟﻠﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺑﺪﻻ ًﻣﻦ ﺗﻌﻠﻴﻤﺎﺕ ﺍﻵﻟﺔ .ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻣﺤﺎﻛﺎﺓ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻫﺬﻩ
ﺗﻮﻓﺮﺁﻟﺔ ﺍﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﻐﺔ.
ﻋﻴﺐﺁﺧﺮ ﻟﻠﺘﻔﺴﻴﺮ ﺍﻟﺨﺎﻟﺺ ﻫﻮ ﺃﻧﻪ ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺘﻄﻠﺐ ﻣﺴﺎﺣﺔ ﺃﻛﺒﺮ .ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺍﻟﺒﺮﻧﺎﻣﺞ
ﺍﻟﻤﺼﺪﺭ ،ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ ﻣﻮﺟﻮﺩﺍً ﺃﺛﻨﺎء ﺍﻟﺘﻔﺴﻴﺮ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻗﺪ ﻳﺘﻢ ﺗﺨﺰﻳﻦ
ﺍﻟﺒﺮﻧﺎﻣﺞﺍﻟﻤﺼﺪﺭ ﻓﻲ ﻧﻤﻮﺫﺝ ﻣﺼﻤﻢ ﻟﺴﻬﻮﻟﺔ ﺍﻟﻮﺻﻮﻝ ﻭﺍﻟﺘﻌﺪﻳﻞ ﺑﺪﻻ ًﻣﻦ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﺬﻱ ﻳﻮﻓﺮ
ﺍﻟﺤﺪﺍﻷﺩﻧﻰ ﻣﻦ ﺍﻟﺤﺠﻢ.
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺒﻜﺮﺓ ﺍﻟﺒﺴﻴﻄﺔ ﻓﻲ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ) APLﻭ SNOBOLﻭ
(LISPﺗﻢ ﺗﻔﺴﻴﺮﻫﺎ ﺑﺤﺘﺔ ،ﺑﺤﻠﻮﻝ ﺍﻟﺜﻤﺎﻧﻴﻨﻴﺎﺕ ،ﻧﺎﺩﺭﺍً ﻣﺎ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﻨﻬﺞ ﻓﻲ ﺍﻟﻠﻐﺎﺕ
ﻋﺎﻟﻴﺔﺍﻟﻤﺴﺘﻮﻯ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﻲ ﺍﻟﺴﻨﻮﺍﺕ ﺍﻷﺧﻴﺮﺓ ،ﺣﻘﻘﺖ ﺍﻟﺘﺮﺟﻤﺔ ﺍﻟﻔﻮﺭﻳﺔ ﻋﻮﺩﺓ ﻣﻬﻤﺔ ﻣﻊ
ﺑﻌﺾﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻟﻠﻮﻳﺐ ،ﻣﺜﻞ JavaScriptﻭ ، PHPﻭﺍﻟﺘﻲ ﺗﺴُﺘﺨﺪﻡ ﺍﻵﻥ ﻋﻠﻰ
ﻧﻄﺎﻕﻭﺍﺳﻊ .ﺗﻈﻬﺮ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻔﺴﻴﺮ ﺍﻟﻨﻘﻲ ﻓﻲ ﺍﻟﺸﻜﻞ .1.4
ﺍﻟﺸﻜﻞ1.4
ﻣﺼﺪﺭ
ﺑﺮﻧﺎﻣﺞ ﺗﻔﺴﻴﺮﻧﻘﻲ
ﺍﺩﺧﺎﻝﺍﻟﺒﻴﺎﻧﺎﺕ
ﻣﺘﺮﺟﻢ
ﻧﺘﺎﺉﺞ
29 1.7ﻃﺮﻕ ﺍﻟﺘﻨﻔﻴﺬ
ﺍﻟﺸﻜﻞ1.5
ﻣﺼﺪﺭ
ﺑﺮﻧﺎﻣﺞ ﺗﻨﻔﻴﺬﻫﺠﻴﻦ
ﻧﻈﺎﻡ
ﻣﻌﺠﻤﻲ
ﻣﺤﻠﻞ
ﺍﻟﻮﺣﺪﺍﺕﺍﻟﻤﻌﺠﻤﻴﺔ
ﺑﻨﺎءﺍﻟﺠﻤﻠﺔ
ﻣﺤﻠﻞ
ﺗﺤﻠﻴﻞﺍﻷﺷﺠﺎﺭ
ﻣﺘﻮﺳﻂ
ﻣﻮﻟﺪﺍﻷﻛﻮﺍﺩ
ﻣﺘﻮﺳﻂ
ﺷﻔﺮﺓ
ﺍﺩﺧﺎﻝﺍﻟﺒﻴﺎﻧﺎﺕ
ﻣﺘﺮﺟﻢ
ﻧﺘﺎﺉﺞ
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 30
ﻳﺘﻢﺗﻨﻔﻴﺬ Perlﺑﻨﻈﺎﻡ ﻫﺠﻴﻦ .ﻳﺘﻢ ﺗﺠﻤﻴﻊ ﺑﺮﺍﻣﺞ Perlﺟﺰﺉﻴﺎً ﻻﻛﺘﺸﺎﻑ ﺍﻷﺧﻄﺎء ﻗﺒﻞ
ﺍﻟﺘﻔﺴﻴﺮﻭﻟﺘﺒﺴﻴﻂ ﺍﻟﻤﺘﺮﺟﻢ ﺍﻟﻔﻮﺭﻱ.
ﻛﺎﻧﺖﺟﻤﻴﻊ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻷﻭﻟﻴﺔ ﻟﺠﺎﻓﺎ ﻣﺨﺘﻠﻄﺔ .ﺷﻜﻠﻪ ﺍﻟﻮﺳﻴﻂ ﻳﺴﻤﻰﻛﻮﺩ ﺍﻟﺒﺎﻳﺖ،
ﻳﻮﻓﺮﺇﻣﻜﺎﻧﻴﺔ ﺍﻟﻨﻘﻞ ﺇﻟﻰ ﺃﻱ ﺟﻬﺎﺯ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺘﺮﺟﻢ ﺷﻔﺮﺓ ﺑﺎﻳﺖ ﻭﻧﻈﺎﻡ ﻭﻗﺖ ﺗﺸﻐﻴﻞ ﻣﺮﺗﺒﻂ
ﺑﻪ.ﻣﻌﺎً ،ﺗﺴﻤﻰ ﻫﺬﻩ ﺍﻷﺟﻬﺰﺓ .Java Virtual Machineﺗﻮﺟﺪ ﺍﻵﻥ ﺃﻧﻈﻤﺔ ﺗﺘﺮﺟﻢ ﻛﻮﺩ byte
Javaﺇﻟﻰ ﻛﻮﺩ ﺁﻟﺔ ﻟﺘﻨﻔﻴﺬ ﺃﺳﺮﻉ.
ﻳﻘﻮﻡﻧﻈﺎﻡ ﺍﻟﺘﻨﻔﻴﺬ ( Just-in-Time )JITﺑﺘﺮﺟﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﻣﺒﺪﺉﻴﺎً ﺇﻟﻰ ﻟﻐﺔ ﻭﺳﻴﻄﺔ .ﺛﻢ ،
ﺃﺛﻨﺎءﺍﻟﺘﻨﻔﻴﺬ ،ﻳﻘﻮﻡ ﺑﺘﺠﻤﻴﻊ ﺃﺳﺎﻟﻴﺐ ﺍﻟﻠﻐﺔ ﺍﻟﻮﺳﻴﻄﺔ ﻓﻲ ﺭﻣﺰ ﺍﻵﻟﺔ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﺳﺘﺪﻋﺎﺅﻫﺎ .ﻳﺘﻢ
ﺍﻻﺣﺘﻔﺎﻅﺑﺈﺻﺪﺍﺭ ﻛﻮﺩ ﺍﻟﺠﻬﺎﺯ ﻟﻠﻤﻜﺎﻟﻤﺎﺕ ﺍﻟﻼﺣﻘﺔ .ﺗﺴﺘﺨﺪﻡ ﺃﻧﻈﻤﺔ JITﺍﻵﻥ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ
ﻟﺒﺮﺍﻣﺞ .Javaﺃﻳﻀﺎً ،ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺟﻤﻴﻊ ﻟﻐﺎﺕ NET.ﺑﺎﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ .JIT
ﻓﻲﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ،ﻗﺪ ﻳﻮﻓﺮ ﺍﻟﻤﻨﻔﺬ ﻛﻼ ًﻣﻦ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﻤﺘﺮﺟﻤﺔ ﻭﺍﻟﻤﺘﺮﺟﻤﺔ ﻟﻠﻐﺔ.
ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻻﺕ ،ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺘﺮﺟﻢ ﻟﺘﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﻭﺗﺼﺤﻴﺤﻬﺎ .ﺑﻌﺪ ﺫﻟﻚ ،ﺑﻌﺪ ﺍﻟﻮﺻﻮﻝ
ﺇﻟﻰﺣﺎﻟﺔ ﺧﺎﻟﻴﺔ ﻣﻦ ﺍﻷﺧﻄﺎء )ﻧﺴﺒﻴﺎً( ،ﻳﺘﻢ ﺗﺠﻤﻴﻊ ﺍﻟﺒﺮﺍﻣﺞ ﻟﺰﻳﺎﺩﺓ ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬﻫﺎ.
1.7.4ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻤﺴﺒﻘﺔ
ﺃﺍﻟﻤﻌﺎﻟﺞﻫﻮ ﺑﺮﻧﺎﻣﺞ ﻳﻌﺎﻟﺞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻣﺒﺎﺷﺮﺓ ﻗﺒﻞ ﺗﺠﻤﻴﻊ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻳﺘﻢ ﺗﻀﻤﻴﻦ ﺗﻌﻠﻴﻤﺎﺕ
ﺍﻟﻤﻌﺎﻟﺞﺍﻟﻤﺴﺒﻖ ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ .ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﻤﺴﺒﻖ ﻫﻮ ﻓﻲ ﺍﻷﺳﺎﺱ ﻣﻮﺳﻊ ﻣﺎﻛﺮﻭ .ﺗﺴُﺘﺨﺪﻡ
ﺇﺭﺷﺎﺩﺍﺕﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﻤﺴﺒﻖ ﺑﺸﻜﻞ ﺷﺎﺉﻊ ﻟﺘﺤﺪﻳﺪ ﺃﻥ ﺍﻟﻜﻮﺩ ﻣﻦ ﻣﻠﻒ ﺁﺧﺮ ﺳﻴﺘﻢ ﺗﻀﻤﻴﻨﻪ .ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﺗﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ C
ﻻﺣﻆﺃﻥ ﻫﺬﻩ ﻭﺍﺣﺪﺓ ﻣﻦ ﺗﻠﻚ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﺗﺴﺒﺐ ﻓﻴﻬﺎ ﺍﻵﺛﺎﺭ ﺍﻟﺠﺎﻧﺒﻴﺔ ﻟﻠﺘﻌﺒﻴﺮ
ﻣﺸﻜﻠﺔ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺇﺫﺍ ﻛﺎﻥ ﺃﻱ ﻣﻦ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﻤﻌﻄﺎﺓ ﻟـﺍﻷﻋﻠﻰﺍﻟﻤﺎﻛﺮﻭ ﻟﻬﺎ ﺁﺛﺎﺭ ﺟﺎﻧﺒﻴﺔ
-ﻣﺜﻞz ++ -ﻳﻤﻜﻦ ﺃﻥ ﻳﺴﺒﺐ ﻣﺸﻜﻠﺔ .ﻧﻈﺮﺍً ﻷﻧﻪ ﻳﺘﻢ ﺗﻘﻴﻴﻢ ﺃﺣﺪ ﻣﻌﺎﻣﻠﻲ ﺍﻟﺘﻌﺒﻴﺮ ﻣﺮﺗﻴﻦ ،ﻓﻘﺪ
ﻳﻨﺘﺞﻋﻦ ﺫﻟﻚﺽﻳﺘﻢ ﺯﻳﺎﺩﺗﻬﺎ ﻣﺮﺗﻴﻦ ﺑﻮﺍﺳﻄﺔ ﺍﻟﻜﻮﺩ ﺍﻟﻨﺎﺗﺞ ﻋﻦ ﺍﻟﺘﻮﺳﻊ ﺍﻟﻜﻠﻲ.
31 ﻣﻠﺨﺺ
1.8ﺑﻴﺉﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺑﻴﺉﺔﺍﻟﺒﺮﻣﺠﺔ ﻫﻲ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ .ﻗﺪ ﺗﺘﻜﻮﻥ ﻫﺬﻩ
ﺍﻟﻤﺠﻤﻮﻋﺔﻓﻘﻂ ﻣﻦ ﻧﻈﺎﻡ ﻣﻠﻔﺎﺕ ﻭﻣﺤﺮﺭ ﻧﺼﻮﺹ ﻭﺭﺍﺑﻂ ﻭﻣﺘﺮﺟﻢ .ﺃﻭ ﻗﺪ ﻳﺘﻀﻤﻦ ﻣﺠﻤﻮﻋﺔ
ﻛﺒﻴﺮﺓﻣﻦ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻤﺘﻜﺎﻣﻠﺔ ،ﻳﺘﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻛﻞ ﻣﻨﻬﺎ ﻣﻦ ﺧﻼﻝ ﻭﺍﺟﻬﺔ ﻣﺴﺘﺨﺪﻡ ﻣﻮﺣﺪﺓ.
ﻓﻲﺍﻟﺤﺎﻟﺔ ﺍﻷﺧﻴﺮﺓ ،ﻳﺘﻢ ﺗﺤﺴﻴﻦ ﺗﻄﻮﻳﺮ ﻭﺻﻴﺎﻧﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﺸﻜﻞ ﻛﺒﻴﺮ .ﻟﺬﻟﻚ ،ﻓﺈﻥ ﺧﺼﺎﺉﺺ
ﻟﻐﺔﺍﻟﺒﺮﻣﺠﺔ ﻟﻴﺴﺖ ﻫﻲ ﺍﻟﻤﻘﻴﺎﺱ ﺍﻟﻮﺣﻴﺪ ﻟﻘﺪﺭﺓ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﻟﻠﻨﻈﺎﻡ .ﻧﺤﻦ ﺍﻵﻥ ﻧﺼﻒ
ﺑﺈﻳﺠﺎﺯﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺑﻴﺉﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ.
Java.ﻫﻮ ﻧﻈﺎﻡ ﻣﻌﻘﺪ ﻭﻗﻮﻱ ﻹﻧﺸﺎء ﺑﺮﺍﻣﺞ . JBuilderﺣﻴﺚ ﻳﺘﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻷﺭﺑﻌﺔ ﻣﻦ
ﺧﻼﻝﻭﺍﺟﻬﺔ ﺭﺳﻮﻣﻴﺔ Java ،ﻫﻲ ﺑﻴﺉﺔ ﺑﺮﻣﺠﺔ ﺗﻮﻓﺮ ﻣﺘﺮﺟﻤﺎً ﻣﺘﻜﺎﻣﻼً ﻭﻣﺤﺮﺭﺍً ﻭﻣﺼﺤﺢ ﺃﺧﻄﺎء
ﻭﻧﻈﺎﻡﻣﻠﻔﺎﺕ ﻟﺘﻄﻮﻳﺮ Borland JBuilder
ﻳﻌﺪ Microsoft Visual Studio .NETﺧﻄﻮﺓ ﺣﺪﻳﺜﺔ ﻧﺴﺒﻴﺎً ﻓﻲ ﺗﻄﻮﺭ ﺑﻴﺉﺎﺕ ﺗﻄﻮﻳﺮ
ﺍﻟﺒﺮﺍﻣﺞ.ﺇﻧﻬﺎ ﻣﺠﻤﻮﻋﺔ ﻛﺒﻴﺮﺓ ﻭﻣﺘﻘﻨﺔ ﻣﻦ ﺃﺩﻭﺍﺕ ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ،ﻭﻛﻠﻬﺎ ﺗﺴﺘﺨﺪﻡ ﻣﻦ ﺧﻼﻝ
ﻭﺍﺟﻬﺔﻧﺎﻓﺬﺓ .ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﻨﻈﺎﻡ ﻟﺘﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺑﺄﻱ ﻟﻐﺔ ﻣﻦ ﻟﻐﺎﺕ NET.ﺍﻟﺨﻤﺲC :
#ﻭ Visual BASIC .NETﻭ ) JScriptﺇﺻﺪﺍﺭ Microsoftﻣﻦ (JavaScriptﻭ ) # Fﻟﻐﺔ
ﻭﻇﻴﻔﻴﺔ( ﻭ .C ++ / CLI
.ﺃﻛﺜﺮﻣﻦ ﻣﺠﺮﺩ ﺑﻴﺉﺎﺕ ﺗﻄﻮﻳﺮ -ﻭﻫﻤﺎ ﺃﻳﻀﺎً ﺇﻃﺎﺭﺍﺕ ﻋﻤﻞ ،ﻣﻤﺎ ﻳﻌﻨﻲ ﺃﻧﻬﻤﺎ ﻳﻮﻓﺮﺍﻥ
ﺑﺎﻟﻔﻌﻞﺃﺟﺰﺍء ﻣﺸﺘﺮﻛﺔ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻟﻠﺘﻄﺒﻴﻖ NetBeansﻭ Visual Studioﻳﻌﺪ
ﻛﻞﻣﻦ PHP.ﻭ Rubyﻭ JavaScriptﻭﻟﻜﻨﻬﺎ ﺗﺪﻋﻢ ﺃﻳﻀﺎً Javaﻋﺒﺎﺭﺓ ﻋﻦ ﺑﻴﺉﺔ ﺗﻄﻮﻳﺮ ﺗﺴُﺘﺨﺪﻡ
ﺑﺸﻜﻞﺃﺳﺎﺳﻲ ﻟﺘﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎﺕ NetBeans
ﻣﻠﺨﺺ
ﺗﻌﺘﺒﺮﺩﺭﺍﺳﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺫﺍﺕ ﻗﻴﻤﺔ ﻟﺒﻌﺾ ﺍﻷﺳﺒﺎﺏ ﺍﻟﻤﻬﻤﺔ :ﻓﻬﻲ ﺗﺰﻳﺪ ﻣﻦ ﻗﺪﺭﺗﻨﺎ ﻋﻠﻰ
ﺍﺳﺘﺨﺪﺍﻡﺗﺮﺍﻛﻴﺐ ﻣﺨﺘﻠﻔﺔ ﻓﻲ ﺑﺮﺍﻣﺞ ﺍﻟﻜﺘﺎﺑﺔ ،ﻭﺗﻤﻜﻨﻨﺎ ﻣﻦ ﺍﺧﺘﻴﺎﺭ ﺍﻟﻠﻐﺎﺕ ﻟﻠﻤﺸﺎﺭﻳﻊ ﺑﺸﻜﻞ ﺃﻛﺜﺮ
ﺫﻛﺎء ً،ﻭﺗﺠﻌﻞ ﺗﻌﻠﻢ ﻟﻐﺎﺕ ﺟﺪﻳﺪﺓ ﺃﺳﻬﻞ.
ﻣﻦﺑﻴﻦ ﺃﻫﻢ ﻣﻌﺎﻳﻴﺮ ﺗﻘﻴﻴﻢ ﺍﻟﻠﻐﺎﺕ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻭﺍﻟﻜﺘﺎﺑﺔ ﻭﺍﻟﻤﻮﺛﻮﻗﻴﺔ ﻭﺍﻟﺘﻜﻠﻔﺔ ﺍﻹﺟﻤﺎﻟﻴﺔ.
ﺳﺘﻜﻮﻥﻫﺬﻩ ﻫﻲ ﺍﻷﺳﺎﺱ ﺍﻟﺬﻱ ﻧﻘﻮﻡ ﻋﻠﻰ ﺃﺳﺎﺳﻪ ﺑﻔﺤﺺ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﻠﻐﻮﻳﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ
ﺗﻤﺖﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﺍﻟﺠﺰء ﺍﻟﻤﺘﺒﻘﻲ ﻣﻦ ﺍﻟﻜﺘﺎﺏ ﻭﺍﻟﺤﻜﻢ ﻋﻠﻴﻬﺎ.
ﺭﺍﺟﻊﺍﻷﺳﺉﻠﺔ
.1ﻟﻤﺎﺫﺍ ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﻟﻠﻤﺒﺮﻣﺞ ﺃﻥ ﻳﻜﻮﻥ ﻟﺪﻳﻪ ﺑﻌﺾ ﺍﻟﺨﻠﻔﻴﺔ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ
ﺃﻧﻪﻗﺪ ﻻ ﻳﻘﻮﻡ ﺃﺑﺪﺍً ﺑﺘﺼﻤﻴﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ؟
.2ﻛﻴﻒ ﻳﻤﻜﻦ ﺃﻥ ﺗﻔﻴﺪ ﻣﻌﺮﻓﺔ ﺧﺼﺎﺉﺺ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻣﺠﺘﻤﻊ ﺍﻟﺤﻮﺳﺒﺔ ﺑﺄﻛﻤﻠﻪ؟
.3ﻣﺎ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺳﻴﻄﺮﺕ ﻋﻠﻰ ﺍﻟﺤﻮﺳﺒﺔ ﺍﻟﻌﻠﻤﻴﺔ ﻋﻠﻰ ﻣﺪﺍﺭ ﺍﻟﺨﻤﺴﻴﻦ ﻋﺎﻣﺎً
ﺍﻟﻤﺎﺿﻴﺔ؟
.4ﻣﺎ ﻫﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺳﻴﻄﺮﺕ ﻋﻠﻰ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ ﻋﻠﻰ ﻣﺪﺍﺭ ﺍﻟﺨﻤﺴﻴﻦ ﻋﺎﻣﺎً
ﺍﻟﻤﺎﺿﻴﺔ؟
.5ﻣﺎ ﻫﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺳﻴﻄﺮﺕ ﻋﻠﻰ ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ ﻋﻠﻰ ﻣﺪﺍﺭ ﺍﻟﺨﻤﺴﻴﻦ ﻋﺎﻣﺎً
ﺍﻟﻤﺎﺿﻴﺔ؟
.6ﻣﺎ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﻤﻜﺘﻮﺑﺔ ﺑﻤﻌﻈﻢ ﻳﻮﻧﻜﺲ؟
.7ﻣﺎ ﻫﻲ ﻋﻴﻮﺏ ﻭﺟﻮﺩ ﺍﻟﻜﺜﻴﺮ ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ ﻓﻲ ﺍﻟﻠﻐﺔ؟
.8ﻛﻴﻒ ﻳﻤﻜﻦ ﻟﻠﻤﺸﻐﻞ ﺍﻟﺬﻱ ﻳﺤﺪﺩﻩ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺃﻥ ﻳﺆﺩﻱ ﺍﻟﺘﺤﻤﻴﻞ ﺍﻟﺰﺍﺉﺪ ﺇﻟﻰ ﺍﻹﺿﺮﺍﺭ ﺑﻘﺮﺍءﺓ
ﺍﻟﺒﺮﻧﺎﻣﺞ؟
.9ﻣﺎ ﻫﻮ ﺃﺣﺪ ﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﺍﻻﻓﺘﻘﺎﺭ ﺇﻟﻰ ﺍﻟﺘﻌﺎﻣﺪ ﻓﻲ ﺗﺼﻤﻴﻢ C؟
.10ﻣﺎ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻟﺘﻌﺎﻣﺪ ﻛﻤﻌﻴﺎﺭ ﺗﺼﻤﻴﻢ ﺃﺳﺎﺳﻲ؟
.11ﻣﺎ ﺑﻴﺎﻥ ﺍﻟﻀﺒﻂ ﺍﻟﺒﺪﺍﺉﻲ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﺒﻨﺎء ﺑﻴﺎﻧﺎﺕ ﺗﺤﻜﻢ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً ﺑﺎﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ
ﺗﻔﺘﻘﺮﺇﻟﻴﻬﺎ؟
.12ﻣﺎ ﻫﻲ ﺑﻨﻴﺔ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺗﻮﻓﺮ ﺗﺠﺮﻳﺪﺍً ﻟﻠﻌﻤﻠﻴﺔ؟
.19ﻣﺎ ﻫﻲ ﺃﻗﻮﻯ ﺍﻟﺘﺄﺛﻴﺮﺍﺕ ﻋﻠﻰ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻋﻠﻰ ﻣﺪﺍﺭ ﺍﻟﺨﻤﺴﻴﻦ ﻋﺎﻣﺎً
ﺍﻟﻤﺎﺿﻴﺔ؟
.20ﻣﺎ ﺍﺳﻢ ﻓﺉﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺗﻤﻠﻲ ﺑﻨﻴﺘﻬﺎ ﻣﻦ ﻗﺒﻞ ﻫﻨﺪﺳﺔ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻓﻮﻥ
ﻧﻴﻮﻣﺎﻥ؟
.21ﻣﺎ ﻫﻮ ﺍﻟﻨﻘﺼﺎﻥ ﻓﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻠﺬﺍﻥ ﺗﻢ ﺍﻛﺘﺸﺎﻓﻬﻤﺎ ﻧﺘﻴﺠﺔ ﺍﻟﺒﺤﺚ ﻓﻲ ﺗﻄﻮﻳﺮ
ﺍﻟﺒﺮﻣﺠﻴﺎﺕﻓﻲ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ؟
.22ﻣﺎ ﻫﻲ ﺍﻟﺴﻤﺎﺕ ﺍﻷﺳﺎﺳﻴﺔ ﺍﻟﺜﻼﺛﺔ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ؟
.23ﻣﺎ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻛﺎﻧﺖ ﺃﻭﻝ ﻣﻦ ﺩﻋﻢ ﺍﻟﺴﻤﺎﺕ ﺍﻷﺳﺎﺳﻴﺔ ﺍﻟﺜﻼﺛﺔ ﻟﻠﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ؟
.24ﻣﺎ ﻫﻮ ﻣﺜﺎﻝ ﻟﻤﻌﺎﻳﻴﺮ ﺗﺼﻤﻴﻢ ﻟﻐﺘﻴﻦ ﺗﺘﻌﺎﺭﺽ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻣﻊ ﺑﻌﻀﻬﻤﺎ ﺍﻟﺒﻌﺾ؟
.26ﻣﺎ ﺍﻟﺬﻱ ﻳﻨﺘﺞ ﻋﻨﻪ ﺗﻨﻔﻴﺬ ﺃﺳﺮﻉ ﻟﻠﺒﺮﻧﺎﻣﺞ ،ﻣﺘﺮﺟﻢ ﺃﻡ ﻣﺘﺮﺟﻢ ﻣﺤﺾ؟
ﺗﻢﺿﺒﻂ ﺍﻟﻤﺸﻜﻠﺔ
.1ﻫﻞ ﺗﻌﺘﻘﺪ ﺃﻥ ﻗﺪﺭﺗﻨﺎ ﻋﻠﻰ ﺍﻟﺘﻔﻜﻴﺮ ﺍﻟﻤﺠﺮﺩ ﺗﺘﺄﺛﺮ ﺑﻤﻬﺎﺭﺍﺗﻨﺎ ﺍﻟﻠﻐﻮﻳﺔ؟ ﺩﻋﻢ ﺭﺃﻳﻚ.
.2ﻣﺎ ﻫﻲ ﺑﻌﺾ ﻣﻴﺰﺍﺕ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﺤﺪﺩﺓ ﺍﻟﺘﻲ ﺗﻌﺮﻑ ﺃﺳﺒﺎﺑﻬﺎ ﺍﻟﻐﺎﻣﻀﺔ ﺑﺎﻟﻨﺴﺒﺔ
ﻟﻚ؟
.3ﻣﺎ ﺍﻟﺤﺠﺞ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻚ ﺗﻘﺪﻳﻤﻬﺎ ﻟﻔﻜﺮﺓ ﻟﻐﺔ ﻭﺍﺣﺪﺓ ﻟﺠﻤﻴﻊ ﻣﺠﺎﻻﺕ ﺍﻟﺒﺮﻣﺠﺔ؟
.4ﻣﺎ ﻫﻲ ﺍﻟﺤﺠﺞ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻚ ﺍﻟﻘﻴﺎﻡ ﺑﻬﺎ ﺿﺪ ﻓﻜﺮﺓ ﻟﻐﺔ ﻭﺍﺣﺪﺓ ﻟﺠﻤﻴﻊ ﻣﺠﺎﻻﺕ ﺍﻟﺒﺮﻣﺠﺔ؟
.5ﺍﺳﻢ ﻭﺷﺮﺡ ﻣﻌﻴﺎﺭﺍً ﺁﺧﺮ ﻳﻤﻜﻦ ﻣﻦ ﺧﻼﻟﻪ ﺍﻟﺤﻜﻢ ﻋﻠﻰ ﺍﻟﻠﻐﺎﺕ )ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺗﻠﻚ ﺍﻟﺘﻲ
ﺗﻤﺖﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ(.
ﺍﻟﻔﺼﻞ 1ﻣﻘﺪﻣﺎﺕ 34
.6ﻣﺎ ﻋﺒﺎﺭﺓ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﺎﺉﻌﺔ ،ﺑﺮﺃﻳﻚ ،ﺍﻷﻛﺜﺮ ﺿﺮﺭﺍً ﻟﻘﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ؟
.7ﺗﺴﺘﺨﺪﻡ Javaﻗﻮﺳﺎً ﺃﻳﻤﻨﺎً ﻟﺘﻤﻴﻴﺰ ﻧﻬﺎﻳﺔ ﻛﺎﻓﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﺮﻛﺒﺔ .ﻣﺎ ﻫﻲ ﺍﻟﺤﺠﺞ
ﺍﻟﻤﺆﻳﺪﺓﻭﺍﻟﻤﻌﺎﺭﺿﺔ ﻟﻬﺬﺍ ﺍﻟﺘﺼﻤﻴﻢ؟
.8ﺗﻤﻴﺰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺑﻴﻦ ﺍﻷﺣﺮﻑ ﺍﻟﻜﺒﻴﺮﺓ ﻭﺍﻟﺼﻐﻴﺮﺓ ﻓﻲ ﺍﻷﺳﻤﺎء ﺍﻟﻤﻌﺮﻓﺔ ﻣﻦ ﻗﺒﻞ
ﺍﻟﻤﺴﺘﺨﺪﻡ.ﻣﺎ ﻫﻲ ﺇﻳﺠﺎﺑﻴﺎﺕ ﻭﺳﻠﺒﻴﺎﺕ ﻗﺮﺍﺭ ﺍﻟﺘﺼﻤﻴﻢ ﻫﺬﺍ؟
.9ﺷﺮﺡ ﺍﻟﺠﻮﺍﻧﺐ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻟﺘﻜﻠﻔﺔ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ.
.10ﻣﺎ ﻫﻲ ﺍﻟﺤﺠﺞ ﻟﻜﺘﺎﺑﺔ ﺑﺮﺍﻣﺞ ﻓﻌﺎﻟﺔ ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻷﺟﻬﺰﺓ ﻏﻴﺮ ﻣﻜﻠﻔﺔ ﻧﺴﺒﻴﺎً؟
.11ﺻﻒِ ﺑﻌﺾ ﺍﻟﻤﻘﺎﻳﻀﺎﺕ ﻓﻲ ﺍﻟﺘﺼﻤﻴﻢ ﺑﻴﻦ ﺍﻟﻜﻔﺎءﺓ ﻭﺍﻷﻣﺎﻥ ﻓﻲ ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ
ﺗﻌﺮﻓﻬﺎ.
.12ﻓﻲ ﺭﺃﻳﻚ ،ﻣﺎ ﻫﻲ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﺘﻲ ﻗﺪ ﺗﺘﻀﻤﻨﻬﺎ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﺜﺎﻟﻴﺔ؟
.13ﻫﻞ ﺗﻢ ﺗﻨﻔﻴﺬ ﺃﻭﻝ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺗﻌﻠﻤﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺘﺮﺟﻢ ﻓﻮﺭﻱ ﺃﻭ ﻧﻈﺎﻡ
ﺗﻨﻔﻴﺬﻫﺠﻴﻦ ﺃﻭ ﻣﺘﺮﺟﻢ؟ )ﻗﺪ ﺗﻀﻄﺮ ﺇﻟﻰ ﺍﻟﺒﺤﺚ ﻋﻦ ﻫﺬﺍ(.
.15ﻛﻴﻒ ﺗﺆﺛﺮ ﺟﻤﻞ ﺍﻟﺘﺼﺮﻳﺢ ﻋﻦ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺒﺴﻴﻄﺔ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﻗﺮﺍءﺓ ﺍﻟﻠﻐﺔ ،ﻣﻊ ﺍﻷﺧﺬ ﻓﻲ
ﺍﻻﻋﺘﺒﺎﺭﺃﻥ ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﻻ ﺗﺘﻄﻠﺒﻬﺎ؟
.16ﺍﻛﺘﺐ ﺗﻘﻴﻴﻤﺎً ﻟﺒﻌﺾ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﺗﻌﺮﻓﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﻌﺎﻳﻴﺮ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ ﻫﺬﺍ
ﺍﻟﻔﺼﻞ.
.17ﺑﻌﺾ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ -ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺑﺎﺳﻜﺎﻝ -ﺍﺳﺘﺨﺪﻣﺖ ﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻤﻨﻘﻮﻃﺔ
ﻟﻔﺼﻞﺍﻟﺘﻌﻠﻴﻤﺎﺕ ،ﺑﻴﻨﻤﺎ ﻳﺴﺘﺨﺪﻣﻬﺎ ﺟﺎﻓﺎ ﻹﻧﻬﺎء ﺍﻟﺘﻌﻠﻴﻤﺎﺕ .ﺃﻱ ﻣﻦ ﻫﺬﻩ ،ﺑﺮﺃﻳﻚ ،ﻫﻮ
ﺍﻷﻛﺜﺮﻃﺒﻴﻌﻴﺔ ﻭﺍﻷﻗﻞ ﺍﺣﺘﻤﺎﻻً ﺃﻥ ﻳﺆﺩﻱ ﺇﻟﻰ ﺃﺧﻄﺎء ﻧﺤﻮﻳﺔ؟ ﺍﺩﻋﻢ ﺇﺟﺎﺑﺘﻚ.
Plankalkül Zuse2.1
2.2ﺍﻷﻛﻮﺍﺩ ﺍﻟﻜﺎﺫﺑﺔ
2.3ﺁﻱ ﺑﻲ ﺇﻡ 704ﻭﻓﻮﺭﺗﺮﺍﻥ
2.4ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔLISP :
2.5ﺍﻟﺨﻄﻮﺓ ﺍﻷﻭﻟﻰ ﻧﺤﻮ ﺍﻟﺘﻄﻮﺭALGOL 60 :
2.6ﺣﻮﺳﺒﺔ ﺳﺠﻼﺕ ﺍﻷﻋﻤﺎﻝCOBOL :
2.7ﺑﺪﺍﻳﺎﺕ ﺍﻟﻤﺸﺎﺭﻛﺔ ﺑﺎﻟﻮﻗﺖBASIC :
2.8ﻛﻞ ﺷﻲء ﻟﻠﺠﻤﻴﻊPL / I :
2.9ﻟﻐﺘﺎﻥ ﺩﻳﻨﺎﻣﻴﻜﻴﺘﺎﻥ ﻣﺒﻜﺮﺗﺎﻥ APL :ﻭ SNOBOL
2.10ﺑﺪﺍﻳﺎﺕ ﺍﺳﺘﺨﺮﺍﺝ ﺍﻟﺒﻴﺎﻧﺎﺕSIMULA 67 :
2.11ﺍﻟﺘﺼﻤﻴﻢ ﺍﻟﻤﺘﻌﺎﻣﺪALGOL 68 :
2.12ﺑﻌﺾ ﺍﻷﺣﻔﺎﺩ ﺍﻷﻭﺍﺉﻞ ﻣﻦ ALGOLs
2.13ﺍﻟﺒﺮﻣﺠﺔ ﻋﻠﻰ ﺃﺳﺎﺱ ﺍﻟﻤﻨﻄﻖ :ﺑﺮﻭﻟﻮﺝ
2.14ﺃﻛﺒﺮ ﺟﻬﺪ ﺗﺼﻤﻴﻢ ﻓﻲ ﺍﻟﺘﺎﺭﻳﺦAda :
2.15ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔSmalltalk :
2.16ﺍﻟﺠﻤﻊ ﺑﻴﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺤﺘﻤﻴﺔ ﻭﺍﻟﻤﻮﺟﻬﺔ ﻧﺤﻮ ﺍﻟﻜﺎﺉﻦ++ C :
2.17ﻟﻐﺔ ﺣﺘﻤﻴﺔ ﻣﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ :ﺟﺎﻓﺎ
2.18ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
2.19ﻟﻐﺔ NET.ﺍﻟﺮﺉﻴﺴﻴﺔ# C :
2.20ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ /ﺍﻟﺘﺮﻣﻴﺰ ﺍﻟﻬﺠﻴﻨﺔ
35
ﺗﻲ
ﺗﻄﻮﺭﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﻔﺼﻞ2 36
ﻳﺼﻒﻓﺼﻠﻪ ﺗﻄﻮﻳﺮ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻳﺴﺘﻜﺸﻒ ﺍﻟﺒﻴﺉﺔ ﺍﻟﺘﻲ ﺗﻢ ﺗﺼﻤﻴﻢ ﻛﻞ
ﻣﻨﻬﺎﻭﻳﺮﻛﺰ ﻋﻠﻰ ﻣﺴﺎﻫﻤﺎﺕ ﺍﻟﻠﻐﺔ ﻭﺍﻟﺪﻭﺍﻓﻊ ﻟﺘﻄﻮﻳﺮﻫﺎ .ﻟﻢ ﻳﺘﻢ ﺗﻀﻤﻴﻦ ﺃﻭﺻﺎﻑ ﺍﻟﻠﻐﺔ
ﺍﻟﻌﺎﻣﺔ ؛ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ ،ﻧﻨﺎﻗﺶ ﻓﻘﻂ ﺑﻌﺾ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺠﺪﻳﺪﺓ ﺍﻟﺘﻲ ﺗﻘﺪﻣﻬﺎ ﻛﻞ ﻟﻐﺔ .ﻣﻦ
ﺍﻷﻣﻮﺭﺫﺍﺕ ﺍﻷﻫﻤﻴﺔ ﺍﻟﺨﺎﺻﺔ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺘﻲ ﺃﺛﺮﺕ ﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻋﻠﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻼﺣﻘﺔ ﺃﻭ ﻓﻲ ﻣﺠﺎﻝ ﻋﻠﻮﻡ
ﺍﻟﻜﻤﺒﻴﻮﺗﺮ.
ﻻﻳﺘﻀﻤﻦ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻣﻨﺎﻗﺸﺔ ﻣﺘﻌﻤﻘﺔ ﻷﻱ ﺳﻤﺔ ﺃﻭ ﻣﻔﻬﻮﻡ ﻟﻐﻮﻱ ؛ ﻣﺎ ﺗﺒﻘﻰ ﻣﻦ ﻓﺼﻮﻝ
ﻻﺣﻘﺔ.ﺳﺘﻜﻮﻥ ﺍﻟﺸﺮﻭﺣﺎﺕ ﺍﻟﻤﻮﺟﺰﺓ ﻭﻏﻴﺮ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻠﻤﻴﺰﺍﺕ ﻛﺎﻓﻴﺔ ﻟﺮﺣﻠﺘﻨﺎ ﻣﻦ ﺧﻼﻝ ﺗﻄﻮﻳﺮ ﻫﺬﻩ
ﺍﻟﻠﻐﺎﺕ.
ﻳﻨﺎﻗﺶﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻣﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﻭﻣﻔﺎﻫﻴﻢ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻟﻦ ﺗﻜﻮﻥ ﻣﺄﻟﻮﻓﺔ ﻟﻜﺜﻴﺮ
ﻣﻦﺍﻟﻘﺮﺍء .ﺗﺘﻢ ﻣﻨﺎﻗﺸﺔ ﻫﺬﻩ ﺍﻟﻤﻮﺿﻮﻋﺎﺕ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻘﻂ ﻓﻲ ﻓﺼﻮﻝ ﻻﺣﻘﺔ .ﺃﻭﻟﺉﻚ ﺍﻟﺬﻳﻦ ﻳﺠﺪﻭﻥ
ﻫﺬﺍﺍﻷﻣﺮ ﻣﺰﻋﺠﺎً ﻗﺪ ﻳﻔﻀﻠﻮﻥ ﺗﺄﺧﻴﺮ ﻗﺮﺍءﺓ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺣﺘﻰ ﻳﺘﻢ ﺩﺭﺍﺳﺔ ﺑﻘﻴﺔ ﺍﻟﻜﺘﺎﺏ.
ﻛﺎﻥﺍﺧﺘﻴﺎﺭ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺳﻴﺘﻢ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻫﻨﺎ ﺃﻣﺮﺍً ﺷﺨﺼﻴﺎً ،ﻭﺳﻮﻑ ﻳﻼﺣﻆ ﺑﻌﺾ ﺍﻟﻘﺮﺍء
ﻟﻸﺳﻒﻋﺪﻡ ﻭﺟﻮﺩ ﻭﺍﺣﺪﺓ ﺃﻭ ﺃﻛﺜﺮ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﻔﻀﻠﺔ ﻟﺪﻳﻬﻢ .ﻭﻣﻊ ﺫﻟﻚ ،ﻟﻠﺤﻔﺎﻅ ﻋﻠﻰ ﻫﺬﻩ
ﺍﻟﺘﻐﻄﻴﺔﺍﻟﺘﺎﺭﻳﺨﻴﺔ ﺑﺤﺠﻢ ﻣﻌﻘﻮﻝ ،ﻛﺎﻥ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺍﺳﺘﺒﻌﺎﺩ ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﻳﻘﺪﺭﻫﺎ ﺍﻟﺒﻌﺾ
ﺑﺸﻜﻞﻛﺒﻴﺮ .ﺍﺳﺘﻨﺪﺕ ﺍﻻﺧﺘﻴﺎﺭﺍﺕ ﺇﻟﻰ ﺗﻘﺪﻳﺮﻧﺎ ﻷﻫﻤﻴﺔ ﻛﻞ ﻟﻐﺔ ﻓﻲ ﺗﻄﻮﻳﺮ ﺍﻟﻠﻐﺔ ﻭﻋﺎﻟﻢ ﺍﻟﺤﻮﺳﺒﺔ ﻛﻜﻞ.
ﻧﻘﻮﻡﺃﻳﻀﺎً ﺑﺘﻀﻤﻴﻦ ﻣﻨﺎﻗﺸﺎﺕ ﻣﻮﺟﺰﺓ ﻟﺒﻌﺾ ﺍﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﺍﻟﺘﻲ ﺗﻤﺖ ﺍﻹﺷﺎﺭﺓ ﺇﻟﻴﻬﺎ ﻻﺣﻘﺎً ﻓﻲ
ﺍﻟﻜﺘﺎﺏ.
ﻳﺘﻢﺗﻨﻈﻴﻢ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻋﻠﻰ ﺍﻟﻨﺤﻮ ﺍﻟﺘﺎﻟﻲ :ﺗﺘﻢ ﻣﻨﺎﻗﺸﺔ ﺍﻟﻨﺴﺦ ﺍﻷﻭﻟﻴﺔ ﻟﻠﻐﺎﺕ ﺑﺸﻜﻞ ﻋﺎﻡ
ﺑﺘﺮﺗﻴﺐﺯﻣﻨﻲ .ﻭﻣﻊ ﺫﻟﻚ ،ﺗﻈﻬﺮ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﻼﺣﻘﺔ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﻣﻊ ﻧﺴﺨﺘﻬﺎ ﺍﻷﻭﻟﻴﺔ ،ﻭﻟﻴﺲ ﻓﻲ
ﺍﻷﻗﺴﺎﻡﺍﻟﻼﺣﻘﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ Fortran 2003ﻓﻲ ﺍﻟﻘﺴﻢ ﻣﻊ (I )1956
.Fortranﺃﻳﻀﺎً ،ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ،ﺗﻈﻬﺮ ﺍﻟﻠﻐﺎﺕ ﺫﺍﺕ ﺍﻷﻫﻤﻴﺔ ﺍﻟﺜﺎﻧﻮﻳﺔ ﻭﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﻠﻐﺔ ﻟﻬﺎ
ﻗﺴﻢﺧﺎﺹ ﺑﻬﺎ ﻓﻲ ﻫﺬﺍ ﺍﻟﻘﺴﻢ.
ﻳﺘﻀﻤﻦﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻗﻮﺍﺉﻢ ﺑـ 14ﻧﻤﻮﺫﺟﺎً ﻛﺎﻣﻼ ًﻟﻠﺒﺮﺍﻣﺞ ،ﻛﻞ ﻣﻨﻬﺎ ﺑﻠﻐﺔ ﻣﺨﺘﻠﻔﺔ .ﻟﻢ ﻳﺘﻢ
ﻭﺻﻒﻫﺬﻩ ﺍﻟﺒﺮﺍﻣﺞ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ؛ ﺇﻧﻬﺎ ﺗﻬﺪﻑ ﺑﺒﺴﺎﻃﺔ ﺇﻟﻰ ﺗﻮﺿﻴﺢ ﻣﻈﻬﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺑﻬﺬﻩ ﺍﻟﻠﻐﺎﺕ.
ﻳﺠﺐﺃﻥ ﻳﻜﻮﻥ ﺍﻟﻘﺮﺍء ﺍﻟﻤﻄﻠﻌﻮﻥ ﻋﻠﻰ ﺃﻱ ﻣﻦ ﻟﻐﺎﺕ ﺍﻷﻣﺮ ﺍﻟﺸﺎﺉﻌﺔ ﻗﺎﺩﺭﻳﻦ ﻋﻠﻰ ﻗﺮﺍءﺓ ﻭﻓﻬﻢ ﻣﻌﻈﻢ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕﺍﻟﺒﺮﻣﺠﻴﺔ ﻓﻲ ﻫﺬﻩ ﺍﻟﺒﺮﺍﻣﺞ ،ﺑﺎﺳﺘﺜﻨﺎء ﺗﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ LISPﻭ COBOLﻭ Smalltalk
.
)ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﻭﻇﻴﻔﺔ ﻣﺨﻄﻂ ﻣﺸﺎﺑﻬﺔ ﻟﻤﺜﺎﻝ LISPﻓﻲ ﺍﻟﻔﺼﻞ (.15ﻳﺘﻢ ﺣﻞ ﺍﻟﻤﺸﻜﻠﺔ ﻧﻔﺴﻬﺎ
ﺑﻮﺍﺳﻄﺔﺑﺮﺍﻣﺞ Fortranﻭ ALGOL 60ﻭ PL / Iﻭ BASICﻭ Pascalﻭ Cﻭ Perlﻭ Adaﻭ Javaﻭ
JavaScriptﻭ .# Cﻻﺣﻆ ﺃﻥ ﻣﻌﻈﻢ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﻌﺎﺻﺮﺓ ﻓﻲ ﻫﺬﻩ ﺍﻟﻘﺎﺉﻤﺔ ﺗﺪﻋﻢ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ
ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ،ﻭﻟﻜﻦ ﺑﺴﺒﺐ ﺑﺴﺎﻃﺔ ﻣﺸﻜﻠﺔ ﺍﻟﻤﺜﺎﻝ ،ﻟﻢ ﻧﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ ﻧﻤﺎﺫﺝ ﺍﻟﺒﺮﺍﻣﺞ .ﺃﻳﻀﺎً ،ﻓﻲ
ﺑﺮﻧﺎﻣﺞ ، Fortran 95ﺗﺠﻨﺒﻨﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺘﻲ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺃﻥ ﺗﺘﺠﻨﺐ ﺍﺳﺘﺨﺪﺍﻡ
ﺍﻟﺤﻠﻘﺎﺕﺗﻤﺎﻣﺎً ،ﺟﺰﺉﻴﺎً ﻟﻠﺤﻔﺎﻅ ﻋﻠﻰ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺴﻴﻄﺎً ﻭﻗﺎﺑﻞ ﻟﻠﻘﺮﺍءﺓ ﻭﺟﺰﺉﻴﺎً ﻟﺘﻮﺿﻴﺢ ﺑﻨﻴﺔ ﺍﻟﺤﻠﻘﺔ
ﺍﻷﺳﺎﺳﻴﺔﻟﻠﻐﺔ.
ﺍﻟﺸﻜﻞ 2.1ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺨﻄﻂ ﻟﻌﻠﻢ ﺍﻷﻧﺴﺎﺏ ﻟﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ
ﻫﺬﺍﺍﻟﻔﺼﻞ.
37 ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ
ﺍﻟﺸﻜﻞ2.1
Plankalkül Zuse2.1
ﺗﻌﺘﺒﺮﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻷﻭﻟﻰ ﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻏﻴﺮ ﻣﻌﺘﺎﺩﺓ ﻣﻦ ﻋﺪﺓ ﺟﻮﺍﻧﺐ.
ﻟﺴﺒﺐﻭﺍﺣﺪ ،ﻟﻢ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺃﺑﺪﺍً .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺗﻄﻮﻳﺮﻫﺎ ﻓﻲ ﻋﺎﻡ ، 1945
ﻟﻢﻳﺘﻢ ﻧﺸﺮ ﻭﺻﻔﻬﺎ ﺣﺘﻰ ﻋﺎﻡ .1972ﻧﻈﺮﺍً ﻷﻥ ﻗﻠﺔ ﻣﻦ ﺍﻟﻨﺎﺱ ﻛﺎﻧﻮﺍ ﻋﻠﻰ ﺩﺭﺍﻳﺔ ﺑﺎﻟﻠﻐﺔ ،ﻓﺈﻥ
ﺑﻌﺾﻗﺪﺭﺍﺗﻬﺎ ﻟﻢ ﺗﻈﻬﺮ ﻓﻲ ﺍﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﺇﻻ ﺑﻌﺪ 15ﻋﺎﻣﺎً ﻣﻦ ﺗﻄﻮﺭﻫﺎ.
2.1.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﺑﻴﻦﻋﺎﻣﻲ 1936ﻭ ، 1945ﻗﺎﻡ ﺍﻟﻌﺎﻟﻢ ﺍﻷﻟﻤﺎﻧﻲ ﻛﻮﻧﺮﺍﺩ ﺗﺴﻮﺯﻩ )ﺍﻟﻤﻌﺮﻭﻑ ﺑﺎﺳﻢ "ﺗﺴﻮﺯﻭﻩ"( ﺑﺒﻨﺎء
ﺳﻠﺴﻠﺔﻣﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﻌﻘﺪﺓ ﻭﺍﻟﻤﻌﻘﺪﺓ ﻣﻦ ﺍﻟﻤﺮﺣﻼﺕ ﺍﻟﻜﻬﺮﻭﻣﻴﻜﺎﻧﻴﻜﻴﺔ .ﺑﺤﻠﻮﻝ
ﺃﻭﺍﺉﻞﻋﺎﻡ ، 1945ﺩﻣﺮ ﻗﺼﻒ ﺍﻟﺤﻠﻔﺎء ﺟﻤﻴﻊ ﻣﻮﺩﻳﻼﺗﻪ ﺍﻷﺧﻴﺮﺓ ،ﺑﺎﺳﺘﺜﻨﺎء ﻃﺮﺍﺯ ﻭﺍﺣﺪ ، Z4 ،
ﻟﺬﻟﻚﺍﻧﺘﻘﻞ ﺇﻟﻰ ﻗﺮﻳﺔ ﺑﺎﻓﺎﺭﻳﺔ ﻧﺎﺉﻴﺔ ، Hinterstein ،ﻭﺫﻫﺐ ﺃﻋﻀﺎء ﻣﺠﻤﻮﻋﺘﻪ ﺍﻟﺒﺤﺜﻴﺔ ﻓﻲ
ﻃﺮﻳﻘﻬﻢﺍﻟﻤﻨﻔﺼﻞ.
ﻣﻦﺧﻼﻝ ﺍﻟﻌﻤﻞ ﺑﻤﻔﺮﺩﻩ ،ﺷﺮﻉ Zuseﻓﻲ ﻣﺤﺎﻭﻟﺔ ﻟﺘﻄﻮﻳﺮ ﻟﻐﺔ ﻟﻠﺘﻌﺒﻴﺮ ﻋﻦ ﺍﻟﺤﺴﺎﺑﺎﺕ ﻟـ
، Z4ﻭﻫﻮ ﻣﺸﺮﻭﻉ ﻛﺎﻥ ﻗﺪ ﺑﺪﺃﻩ ﻓﻲ ﻋﺎﻡ 1943ﻛﺎﻗﺘﺮﺍﺡ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺩﺭﺟﺔ ﺍﻟﺪﻛﺘﻮﺭﺍﻩ .ﺃﻃﺮﻭﺣﺔ.
ﺃﻃﻠﻖﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﺍﺳﻢ ، Plankalkülﻣﻤﺎ ﻳﻌﻨﻲﺑﺮﻧﺎﻣﺞ ﺣﺴﺎﺏ ﺍﻟﺘﻔﺎﺿﻞ ﻭﺍﻟﺘﻜﺎﻣﻞ.ﻓﻲ
ﻣﺨﻄﻮﻃﺔﻃﻮﻳﻠﺔ ﻣﺆﺭﺧﺔ ﻋﺎﻡ 1945ﻭﻟﻜﻦ ﻟﻢ ﺗﻨﺸﺮ ﺣﺘﻰ ﻋﺎﻡ ، (Zuse ، 1972) 1972ﺣﺪﺩ
Zuse Plankalkülﻭﻛﺘﺐ ﺧﻮﺍﺭﺯﻣﻴﺎﺕ ﺑﺎﻟﻠﻐﺔ ﻟﺤﻞ ﻣﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ ﺍﻟﻤﺸﺎﻛﻞ.
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻠﻐﺔ ﻻ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻛﻠﻤﺔ gooﺻﺮﻳﺤﺔ ،ﺇﻻ ﺃﻧﻬﺎ ﺗﻀﻤﻨﺖ ﺑﻴﺎﻧﺎً ﺗﻜﺮﺍﺭﻳﺎً
ﻣﺸﺎﺑﻬﺎًﻟـ Adaﻝ .ﻛﻤﺎ ﻛﺎﻥ ﻟﺪﻳﻪ ﺍﻷﻣﺮﺯﻋﻨﻔﺔﻣﻊ ﻧﺺ ﻣﺮﺗﻔﻊ ﻳﺤﺪﺩ ﺧﺮﻭﺟﺎً ﻣﻦ ﻋﺪﺩ ﻣﻌﻴﻦ ﻣﻦ
ﺗﺪﺍﺧﻞﺣﻠﻘﺎﺕ ﺍﻟﺘﻜﺮﺍﺭ ﺃﻭ ﺇﻟﻰ ﺑﺪﺍﻳﺔ ﺩﻭﺭﺓ ﺗﻜﺮﺍﺭ ﺟﺪﻳﺪﺓ .ﺗﻀﻤﻦ Plankalkülﺑﻴﺎﻥ ﺍﺧﺘﻴﺎﺭ ،ﻟﻜﻨﻪ
ﻟﻢﻳﺴﻤﺢ ﺑـﺁﺧﺮﺑﻨﺪ.
ﺍﺣﺘﻮﺕﻣﺨﻄﻮﻃﺔ Zuseﻋﻠﻰ ﺑﺮﺍﻣﺞ ﺫﺍﺕ ﺗﻌﻘﻴﺪ ﺃﻛﺒﺮ ﺑﻜﺜﻴﺮ ﻣﻦ ﺃﻱ ﺑﺮﺍﻣﺞ ﺗﻤﺖ ﻛﺘﺎﺑﺘﻬﺎ
ﻗﺒﻞﻋﺎﻡ .1945ﻭﺗﻀﻤﻨﺖ ﺑﺮﺍﻣﺞ ﻟﻔﺮﺯ ﻣﺼﻔﻮﻓﺎﺕ ﻣﻦ ﺍﻷﺭﻗﺎﻡ ؛ ﺍﺧﺘﺒﺎﺭ ﺍﺗﺼﺎﻝ ﺭﺳﻢ ﺑﻴﺎﻧﻲ
ﻣﻌﻴﻦ ؛ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺎﺕ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﻭﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺍﻟﺠﺬﺭ ﺍﻟﺘﺮﺑﻴﻌﻲ ؛
ﻭﺇﺟﺮﺍءﺗﺤﻠﻴﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻋﻠﻰ ﺍﻟﺼﻴﻎ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻗﻮﺍﺱ ﻭﻋﻮﺍﻣﻞ ﻓﻲ ﺳﺘﺔ
ﻣﺴﺘﻮﻳﺎﺕﻣﺨﺘﻠﻔﺔ ﻣﻦ ﺍﻷﺳﺒﻘﻴﺔ .ﻭﻟﻌﻞ ﺃﻛﺜﺮ ﻣﺎ ﻳﻤﻴﺰﻩ ﻫﻮ ﺧﻮﺍﺭﺯﻣﻴﺎﺗﻪ ﺍﻟﺘﻲ ﺗﻀﻢ 49ﺻﻔﺤﺔ
ﻟﻠﻌﺐﺍﻟﺸﻄﺮﻧﺞ ،ﻭﻫﻲ ﻟﻌﺒﺔ ﻟﻢ ﻳﻜﻦ ﺧﺒﻴﺮﺍً ﻓﻴﻬﺎ.
ﻣﺜﺎﻝﺑﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ﺍﻟﺘﺎﻟﻲ ،ﻭﺍﻟﺬﻱ ﻳﻘﻮﻡ ﺑﺘﻌﻴﻴﻦ ﻗﻴﻤﺔ ﺍﻟﺘﻌﺒﻴﺮﺃ ]1+ [4ﻝﺃ ]، [5ﻳﻮﺿﺢ
ﻫﺬﺍﺍﻟﺘﺮﻣﻴﺰ .ﺍﻟﺼﻒ ﺍﻟﻤﺴﻤﻰﺍﻟﺨﺎﻣﺲﻫﻮ ﻟﻠﻤﺨﻄﻮﻃﺎﺕ ،ﻭﺍﻟﺼﻒ ﺍﻟﻤﺴﻤﻰﺱﻫﻮ ﻷﻧﻮﺍﻉ
ﺍﻟﺒﻴﺎﻧﺎﺕ.ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ1.n،
ﻳﻌﻨﻲﻋﺪﺩﺍً ﺻﺤﻴﺤﺎً ﻣﻦﻥﺃﺟﺰﺍء:
| ﺃ <= 1 +ﺃ
5 ﺍﻟﺨﺎﻣﺲ| 4
ﻻﻳﺴﻌﻨﺎ ﺇﻻ ﺍﻟﺘﻜﻬﻦ ﺑﺎﻻﺗﺠﺎﻩ ﺍﻟﺬﻱ ﻛﺎﻥ ﻳﻤﻜﻦ ﺃﻥ ﻳﺘﺨﺬﻩ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺇﺫﺍ ﻛﺎﻥ ﻋﻤﻞ
Zuseﻣﻌﺮﻭﻓﺎً ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻓﻲ ﻋﺎﻡ 1945ﺃﻭ ﺣﺘﻰ ﻋﺎﻡ .1950ﻭﻣﻦ ﺍﻟﻤﺜﻴﺮ ﻟﻼﻫﺘﻤﺎﻡ ﺃﻳﻀ ًﺎ
ﺍﻟﺘﻔﻜﻴﺮﻓﻲ ﻛﻴﻒ ﻛﺎﻥ ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻋﻤﻠﻪ ﻣﺨﺘﻠﻔﺎً ﻟﻮ ﺃﻧﻪ ﻗﺎﻡ ﺑﺬﻟﻚ ﻓﻲ ﺑﻴﺉﺔ ﺳﻠﻤﻴﺔ ﻣﺤﺎﻃﺔ ﺑـ
ﻋﻠﻤﺎءﺁﺧﺮﻳﻦ ،ﻭﻟﻴﺲ ﻓﻲ ﺃﻟﻤﺎﻧﻴﺎ ﻋﺎﻡ 1945ﻓﻲ ﻋﺰﻟﺔ ﺍﻓﺘﺮﺍﺿﻴﺔ.
2.2ﺍﻷﻛﻮﺍﺩ ﺍﻟﻜﺎﺫﺑﺔ
ﺃﻭﻻ ،ﻻﺣﻆ ﺃﻥ ﺍﻟﻜﻠﻤﺔﻛﻮﺩ ﻣﺰﻳﻒﺗﺴﺘﺨﺪﻡ ﻫﻨﺎ ﺑﻤﻌﻨﻰ ﻣﺨﺘﻠﻒ ﻋﻦ ﻣﻌﻨﺎﻫﺎ ﺍﻟﻤﻌﺎﺻﺮ .ﻧﺤﻦ ﻧﻄﻠﻖ
ﻋﻠﻰﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﻫﺬﺍ ﺍﻟﻘﺴﻢ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻜﺎﺫﺑﺔ ﻷﻥ ﻫﺬﺍ ﻫﻮ ﻣﺎ ﺗﻢ ﺗﺴﻤﻴﺘﻪ
ﻓﻲﻭﻗﺖ ﺗﻄﻮﻳﺮﻫﺎ ﻭﺍﺳﺘﺨﺪﺍﻣﻬﺎ )ﺃﻭﺍﺧﺮ ﺍﻷﺭﺑﻌﻴﻨﻴﺎﺕ ﻭﺃﻭﺍﺉﻞ ﺍﻟﺨﻤﺴﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ(.
ﻭﻣﻊﺫﻟﻚ ،ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻬﺎ ﻟﻴﺴﺖ ﺃﻛﻮﺍﺩ ﺯﺍﺉﻔﺔ ﺑﺎﻟﻤﻌﻨﻰ ﺍﻟﻤﻌﺎﺻﺮ.
ﻣﻌﺮﺽﻟﻠﺨﻄﺄ .ﻣﻦ ﺑﻴﻦ ﻣﺸﺎﻛﻠﻬﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺮﻣﻮﺯ ﺍﻟﺮﻗﻤﻴﺔ ﻟﺘﺤﺪﻳﺪ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ .ﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ ،ﻗﺪ ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﺗﻌﻠﻴﻤﺎﺕ ﺇﺿﺎﻓﺔ ﺑﻮﺍﺳﻄﺔ ﺍﻟﻜﻮﺩ 14ﺑﺪﻻ ًﻣﻦ ﺍﺳﻢ ﻧﺼﻲ ﺿﻤﻨﻲ ،ﺣﺘﻰ
ﻟﻮﻛﺎﻥ ﺣﺮﻓﺎً ﻭﺍﺣﺪﺍً ﻓﻘﻂ .ﻫﺬﺍ ﻳﺠﻌﻞ ﺍﻟﺒﺮﺍﻣﺞ ﺻﻌﺒﺔ ﺍﻟﻘﺮﺍءﺓ .ﺍﻟﻤﺸﻜﻠﺔ ﺍﻷﻛﺜﺮ ﺧﻄﻮﺭﺓ ﻫﻲ
ﺍﻟﻤﻌﺎﻟﺠﺔﺍﻟﻤﻄﻠﻘﺔ ،ﻣﻤﺎ ﻳﺠﻌﻞ ﺗﻌﺪﻳﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻣﻤﻼ ًﻭﻋﺮﺿﺔ ﻟﻠﺨﻄﺄ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،
ﺍﻓﺘﺮﺽﺃﻥ ﻟﺪﻳﻨﺎ ﺑﺮﻧﺎﻣﺞ ﻟﻐﺔ ﺁﻟﺔ ﻣﺨﺰﻥ ﻓﻲ ﺍﻟﺬﺍﻛﺮﺓ .ﺗﺸﻴﺮ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻲ ﻣﺜﻞ ﻫﺬﺍ
ﺍﻟﺒﺮﻧﺎﻣﺞﺇﻟﻰ ﻣﻮﺍﻗﻊ ﺃﺧﺮﻯ ﺩﺍﺧﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ،ﻋﺎﺩﺓ ًﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺃﻭ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻫﺪﺍﻑ
ﺗﻌﻠﻴﻤﺎﺕﺍﻟﻔﺮﻉ .ﻳﺆﺩﻱ ﺇﺩﺧﺎﻝ ﺗﻌﻠﻴﻤﺎﺕ ﻓﻲ ﺃﻱ ﻣﻮﺿﻊ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺨﻼﻑ ﺍﻟﻨﻬﺎﻳﺔ ﺇﻟﻰ ﺇﺑﻄﺎﻝ
ﺻﺤﺔﺟﻤﻴﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﺗﺸﻴﺮ ﺇﻟﻰ ﺍﻟﻌﻨﺎﻭﻳﻦ ﺍﻟﺘﻲ ﺗﺘﺠﺎﻭﺯ ﻧﻘﻄﺔ ﺍﻹﺩﺭﺍﺝ ،ﻷﻧﻪ ﻳﺠﺐ ﺯﻳﺎﺩﺓ
ﻫﺬﻩﺍﻟﻌﻨﺎﻭﻳﻦ ﻹﻓﺴﺎﺡ ﺍﻟﻤﺠﺎﻝ ﻟﻠﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺠﺪﻳﺪﺓ .ﻹﺟﺮﺍء ﺍﻹﺿﺎﻓﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ،ﻳﺠﺐ
ﺍﻟﻌﺜﻮﺭﻋﻠﻰ ﺟﻤﻴﻊ ﺍﻹﺭﺷﺎﺩﺍﺕ ﺍﻟﺘﻲ ﺗﺸﻴﺮ ﺇﻟﻰ ﺍﻟﻌﻨﺎﻭﻳﻦ ﺍﻟﺘﻲ ﺗﻠﻲ ﺍﻹﺿﺎﻓﺔ ﻭﺗﻌﺪﻳﻠﻬﺎ .ﺗﺤﺪﺙ
ﻣﺸﻜﻠﺔﻣﻤﺎﺛﻠﺔ ﻣﻊ ﺣﺬﻑ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺘﻀﻤﻦ ﻟﻐﺎﺕ ﺍﻵﻟﺔ
ﺗﻌﻠﻴﻤﺎﺕ"ﺑﺪﻭﻥ ﻋﻤﻠﻴﺔ" ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﺗﺤﻞ ﻣﺤﻞ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﺤﺬﻭﻓﺔ ،ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺠﻨﺐ
ﺍﻟﻤﺸﻜﻠﺔ.
2.2.1ﺍﻟﺮﻣﺰ ﺍﻟﻤﺨﺘﺼﺮ
ﺗﻢﺗﻄﻮﻳﺮ ﺃﻭﻝ ﻫﺬﻩ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺠﺪﻳﺪﺓ ،ﺍﻟﻤﺴﻤﺎﺓ ، Short Codeﺑﻮﺍﺳﻄﺔ John Mauchlyﻓﻲ
ﻋﺎﻡ 1949ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ، BINACﻭﺍﻟﺘﻲ ﻛﺎﻧﺖ ﻭﺍﺣﺪﺓ ﻣﻦ ﺃﻭﻟﻰ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔﺍﻟﻨﺎﺟﺤﺔ ﻟﻠﺒﺮﺍﻣﺞ ﺍﻟﻤﺨﺰﻧﺔ .ﺗﻢ ﻧﻘﻞ ﺍﻟﺮﻣﺰ ﺍﻟﻘﺼﻴﺮ ﻻﺣﻘﺎً ﺇﻟﻰ ﻛﻤﺒﻴﻮﺗﺮ ) UNIVAC Iﺃﻭﻝ
ﻛﻤﺒﻴﻮﺗﺮﺇﻟﻜﺘﺮﻭﻧﻲ ﺗﺠﺎﺭﻱ ﻳﺒُﺎﻉ ﻓﻲ ﺍﻟﻮﻻﻳﺎﺕ ﺍﻟﻤﺘﺤﺪﺓ( ،ﻭﻛﺎﻥ ﻟﻌﺪﺓ ﺳﻨﻮﺍﺕ ﺃﺣﺪ ﺍﻟﻮﺳﺎﺉﻞ
ﺍﻷﺳﺎﺳﻴﺔﻟﺒﺮﻣﺠﺔ ﺗﻠﻚ ﺍﻷﺟﻬﺰﺓ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻻ ﻳﻌُﺮﻑ ﺳﻮﻯ ﺍﻟﻘﻠﻴﻞ ﻋﻦ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺨﺘﺼﺮ
ﺍﻷﺻﻠﻲﻷﻧﻪ ﻟﻢ ﻳﺘﻢ ﻧﺸﺮ ﻭﺻﻔﻪ ﺍﻟﻜﺎﻣﻞ ﻣﻄﻠﻘﺎً ،ﻓﻘﺪ ﻧﺠﺎ ﺩﻟﻴﻞ ﺑﺮﻣﺠﺔ ﻹﺻﺪﺍﺭ (-Rand ، 1952
.UNIVAC I )Remingtonﻣﻦ ﺍﻵﻣﻦ ﺃﻥ ﻧﻔﺘﺮﺽ ﺃﻥ ﺍﻟﻨﺴﺨﺘﻴﻦ ﻛﺎﻧﺘﺎ ﻣﺘﺸﺎﺑﻬﺘﻴﻦ ﻟﻠﻐﺎﻳﺔ.
ﻛﺎﻧﺖﻛﻠﻤﺎﺕ ﺫﺍﻛﺮﺓ UNIVAC Iﺗﺤﺘﻮﻱ ﻋﻠﻰ 72ﺑﺘﺎً ،ﻣﺠﻤﻌﺔ ﻓﻲ 12ﺑﺎﻳﺖ ﺳﺘﺔ ﺑﺖ.
ﻳﺘﻜﻮﻥﺍﻟﻜﻮﺩ ﺍﻟﻘﺼﻴﺮ ﻣﻦ ﺇﺻﺪﺍﺭﺍﺕ ﻣﺸﻔﺮﺓ ﻣﻦ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺮﻳﺎﺿﻴﺔ ﺍﻟﺘﻲ ﻳﺠﺐ ﺗﻘﻴﻴﻤﻬﺎ.
ﻛﺎﻧﺖﺍﻟﺮﻣﻮﺯ ﻋﺒﺎﺭﺓ ﻋﻦ ﻗﻴﻢ ﺛﻨﺎﺉﻴﺔ ﺍﻟﺒﺎﻳﺖ ،ﻭﻳﻤﻜﻦ ﺗﺮﻣﻴﺰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﻌﺎﺩﻻﺕ ﻓﻲ ﻛﻠﻤﺔ
ﻭﺍﺣﺪﺓ.ﺗﻢ ﺗﻀﻤﻴﻦ ﺭﻣﻮﺯ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺗﻤﺖﺗﺴﻤﻴﺔ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺑﺮﻣﻮﺯ ﺯﻭﺝ ﺍﻟﺒﺎﻳﺖ ،ﻭﻛﺬﻟﻚ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﺘﻲ ﺳﻴﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻛﺜﻮﺍﺑﺖ.
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝX0،ﻭY0ﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻣﺘﻐﻴﺮﺍﺕ .ﺍﻟﺒﻴﺎﻥ
ﻟﻢﺗﺘﻢ ﺗﺮﺟﻤﺔ ﺍﻟﻜﻮﺩ ﺍﻟﻘﺼﻴﺮ ﺇﻟﻰ ﺭﻣﺰ ﺍﻟﺠﻬﺎﺯ ؛ ﺑﺪﻻ ﻣﻦ ﺫﻟﻚ ،ﺗﻢ ﺗﻨﻔﻴﺬﻩ ﻣﻊ ﻣﺘﺮﺟﻢ ﻧﻘﻲ.
ﻓﻲﺫﻟﻚ ﺍﻟﻮﻗﺖ ،ﺗﻢ ﺍﺳﺘﺪﻋﺎء ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻠﻘﺎﺉﻴﺔ.ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻪ ﻳﺒﺴﻂ ﻋﻤﻠﻴﺔ
ﺍﻟﺒﺮﻣﺠﺔ ،ﻭﻟﻜﻦ ﻋﻠﻰ ﺣﺴﺎﺏ ﻭﻗﺖ ﺍﻟﺘﻨﻔﻴﺬ .ﻛﺎﻥ ﺗﻔﺴﻴﺮ ﺍﻟﻜﻮﺩ ﺍﻟﻘﺼﻴﺮ ﺃﺑﻄﺄ ﺑﺤﻮﺍﻟﻲ 50ﻣﺮﺓ ﻣﻦ
ﻛﻮﺩﺍﻵﻟﺔ.
2.2.2ﺍﻟﺘﺮﻣﻴﺰ ﺍﻟﺴﺮﻳﻊ
ﻓﻲﺃﻣﺎﻛﻦ ﺃﺧﺮﻯ ،ﺗﻢ ﺗﻄﻮﻳﺮ ﺍﻷﻧﻈﻤﺔ ﺍﻟﺘﻔﺴﻴﺮﻳﺔ ﺍﻟﺘﻲ ﻭﺳﻌﺖ ﻟﻐﺎﺕ ﺍﻵﻟﺔ ﻟﺘﺸﻤﻞ ﻋﻤﻠﻴﺎﺕ
ﺍﻟﻔﺎﺻﻠﺔﺍﻟﻌﺎﺉﻤﺔ .ﻳﻌﺪ ﻧﻈﺎﻡ Speedcodingﺍﻟﺬﻱ ﻃﻮﺭﻩ John Backusﻟـ IBM 701ﻣﺜﺎﻻ ً
ﻋﻠﻰﻣﺜﻞ ﻫﺬﺍ ﺍﻟﻨﻈﺎﻡ ) .(Backus ، 1954ﻗﺎﻡ ﻣﺘﺮﺟﻢ ﺍﻟﺘﺮﻣﻴﺰ ﺍﻟﺴﺮﻳﻊ ﺑﺘﺤﻮﻳﻞ 701ﺇﻟﻰ ﺁﻟﺔ
ﺣﺎﺳﺒﺔﺍﻓﺘﺮﺍﺿﻴﺔ ﺫﺍﺕ ﺛﻼﺛﺔ ﻋﻨﺎﻭﻳﻦ ﻟﻠﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ .ﺗﻀﻤﻦ ﺍﻟﻨﻈﺎﻡ ﺗﻌﻠﻴﻤﺎﺕ ﺯﺍﺉﻔﺔ
ﻟﻠﻌﻤﻠﻴﺎﺕﺍﻟﺤﺴﺎﺑﻴﺔ ﺍﻷﺭﺑﻊ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ ،ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﻋﻤﻠﻴﺎﺕ ﻣﺜﻞ ﺍﻟﺠﺬﺭ
ﺍﻟﺘﺮﺑﻴﻌﻲﻭﺍﻟﺠﻴﺐ ﻭﺍﻟﻈﻞ ﺍﻟﻘﻮﺳﻲ ﻭﺍﻷﺱ ﻭﺍﻟﻠﻮﻏﺎﺭﻳﺘﻢ .ﻛﺎﻧﺖ ﺍﻟﻔﺮﻭﻉ ﺍﻟﺸﺮﻃﻴﺔ ﻭﻏﻴﺮ ﺍﻟﻤﺸﺮﻭﻃﺔ
ﻭﺗﺤﻮﻳﻼﺕﺍﻹﺩﺧﺎﻝ /ﺍﻹﺧﺮﺍﺝ ﺟﺰءﺍً ﻣﻦ ﺍﻟﻌﻤﺎﺭﺓ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ .ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﻓﻜﺮﺓ ﻋﻦ ﻗﻴﻮﺩ ﻫﺬﻩ
ﺍﻷﻧﻈﻤﺔ ،ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺃﻥ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﻘﺎﺑﻠﺔ ﻟﻼﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺘﺒﻘﻴﺔ ﺑﻌﺪ ﺗﺤﻤﻴﻞ ﺍﻟﻤﺘﺮﺟﻢ ﻛﺎﻧﺖ
700ﻛﻠﻤﺔ ﻓﻘﻂ ﻭﺃﻥ ﺗﻌﻠﻴﻤﺎﺕ ﺍﻹﺿﺎﻓﺔ ﺍﺳﺘﻐﺮﻗﺖ 4.2ﻣﻠﻠﻲ ﺛﺎﻧﻴﺔ ﻟﻠﺘﻨﻔﻴﺬ .ﻣﻦ ﻧﺎﺣﻴﺔ ﺃﺧﺮﻯ ،
ﺗﻀﻤﻨﺖ Speedcodingﻣﺮﻓﻘﺎً ﺟﺪﻳﺪﺍً ﻳﺘﻤﺜﻞ ﻓﻲ ﺯﻳﺎﺩﺓ ﺳﺠﻼﺕ ﺍﻟﻌﻨﺎﻭﻳﻦ ﺗﻠﻘﺎﺉﻴﺎً .ﻟﻢ ﺗﻈﻬﺮ
ﻫﺬﻩﺍﻟﻤﻴﺰﺓ ﻓﻲ ﺍﻷﺟﻬﺰﺓ ﺣﺘﻰ ﺣﻮﺍﺳﻴﺐ UNIVAC 1107ﻟﻌﺎﻡ .1962ﻭﺑﺴﺒﺐ ﻫﺬﻩ ﺍﻟﻤﻴﺰﺍﺕ ،
ﻳﻤﻜﻦﺇﺟﺮﺍء ﻣﻀﺎﻋﻔﺔ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ 12ﻣﻦ ﺗﻌﻠﻴﻤﺎﺕ .Speedcodingﺍﺩﻋﻰ ﺑﺎﻛﻮﺱ ﺃﻥ
ﺍﻟﻤﺸﺎﻛﻞﺍﻟﺘﻲ ﻗﺪ ﺗﺴﺘﻐﺮﻕ ﺃﺳﺒﻮﻋﻴﻦ ﻟﺒﺮﻣﺠﺘﻬﺎ ﻓﻲ ﻛﻮﺩ ﺍﻵﻟﺔ ﻳﻤﻜﻦ ﺑﺮﻣﺠﺘﻬﺎ ﻓﻲ ﺑﻀﻊ ﺳﺎﻋﺎﺕ
ﺑﺎﺳﺘﺨﺪﺍﻡﺍﻟﺘﺮﻣﻴﺰ ﺍﻟﺴﺮﻳﻊ.
ﻳﺠﺐﺃﻥ ﻧﺬﻛﺮ ﺃﻳﻀﺎً ﺃﻥ ﻟﻐﺎﺕ ﺍﻟﺘﺠﻤﻴﻊ ،ﻭﺍﻟﺘﻲ ﺗﺨﺘﻠﻒ ﺗﻤﺎﻣﺎً ﻋﻦ ﺍﻷﻛﻮﺍﺩ ﺍﻟﻜﺎﺫﺑﺔ ﺍﻟﺘﻲ
ﺗﻤﺖﻣﻨﺎﻗﺸﺘﻬﺎ ،ﺗﻄﻮﺭﺕ ﺧﻼﻝ ﺃﻭﺍﺉﻞ ﺍﻟﺨﻤﺴﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ .ﻭﻣﻊ ﺫﻟﻚ ،ﻛﺎﻥ ﻟﻬﺎ
ﺗﺄﺛﻴﺮﺿﺉﻴﻞ ﻋﻠﻰ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ.
2.3ﺁﻱ ﺑﻲ ﺇﻡ 704ﻭﻓﻮﺭﺗﺮﺍﻥ
ﻣﻦﺍﻟﻤﺆﻛﺪ ﺃﻥ ﺃﺣﺪ ﺃﻋﻈﻢ ﺍﻟﺘﻄﻮﺭﺍﺕ ﺍﻟﻔﺮﺩﻳﺔ ﻓﻲ ﺍﻟﺤﻮﺳﺒﺔ ﺟﺎء ﻣﻊ ﺇﺩﺧﺎﻝ IBM 704ﻓﻲ ﻋﺎﻡ
، 1954ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﻷﻥ ﻗﺪﺭﺍﺗﻪ ﺩﻓﻌﺖ ﺇﻟﻰ ﺗﻄﻮﻳﺮ .Fortranﻳﻤﻜﻦ ﻟﻠﻤﺮء ﺃﻥ ﻳﺠﺎﺩﻝ ﺑﺄﻧﻪ ﺇﺫﺍ
ﻟﻢﺗﻜﻦ ﺷﺮﻛﺔ IBMﻣﻊ 704ﻭ ، Fortranﻟﻜﺎﻧﺖ ﺑﻌﺪ ﺫﻟﻚ ﻗﺮﻳﺒﺎً ﻣﻨﻈﻤﺔ ﺃﺧﺮﻯ ﻟﺪﻳﻬﺎ ﻛﻤﺒﻴﻮﺗﺮ
ﻣﺸﺎﺑﻪﻭﻟﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺫﺍﺕ ﺻﻠﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﻛﺎﻧﺖ ﺷﺮﻛﺔ IBMﻫﻲ ﺍﻷﻭﻟﻰ ﻣﻦ ﺣﻴﺚ
ﺍﻟﺒﺼﻴﺮﺓﻭﺍﻟﻤﻮﺍﺭﺩ ﺍﻟﻼﺯﻣﺔ ﻟﻠﻘﻴﺎﻡ ﺑﻬﺬﻩ ﺍﻟﺘﻄﻮﺭﺍﺕ.
2.3.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﻛﺎﻥﺃﺣﺪ ﺍﻷﺳﺒﺎﺏ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﺘﻲ ﺃﺩﺕ ﺇﻟﻰ ﺍﻟﺘﺴﺎﻣﺢ ﻣﻊ ﺑﻂء ﺍﻷﻧﻈﻤﺔ ﺍﻟﺘﻔﺴﻴﺮﻳﺔ ﻣﻦ ﺃﻭﺍﺧﺮ
ﺍﻷﺭﺑﻌﻴﻨﻴﺎﺕﺇﻟﻰ ﻣﻨﺘﺼﻒ ﺍﻟﺨﻤﺴﻴﻨﻴﺎﺕ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﻤﺎﺿﻲ ﻫﻮ ﺍﻻﻓﺘﻘﺎﺭ ﺇﻟﻰ ﺃﺟﻬﺰﺓ ﺍﻟﻔﺎﺻﻠﺔ
ﺍﻟﻌﺎﺉﻤﺔﻓﻲ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﺘﺎﺣﺔ .ﻛﺎﻥ ﻻ ﺑﺪ ﻣﻦ ﻣﺤﺎﻛﺎﺓ ﺟﻤﻴﻊ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ
ﻓﻲﺑﺮﻧﺎﻣﺞ ،ﻭﻫﻲ ﻋﻤﻠﻴﺔ ﺗﺴﺘﻐﺮﻕ ﻭﻗﺘﺎً ﻃﻮﻳﻼ ً.ﻧﻈﺮﺍً ﻷﻥ ﺍﻟﻜﺜﻴﺮ ﻣﻦ ﻭﻗﺖ ﺍﻟﻤﻌﺎﻟﺞ ﻗﺪ ﺗﻢ ﺇﻧﻔﺎﻗﻪ
ﻓﻲﻣﻌﺎﻟﺠﺔ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﺍﻟﻌﺎﺉﻤﺔ ،ﻓﺈﻥ ﺍﻟﻨﻔﻘﺎﺕ ﺍﻟﻌﺎﻣﺔ ﻟﻠﺘﻔﺴﻴﺮ ﻭﻣﺤﺎﻛﺎﺓ ﺍﻟﻔﻬﺮﺳﺔ ﻛﺎﻧﺖ ﻏﻴﺮ
ﻣﻬﻤﺔﻧﺴﺒﻴﺎً .ﻃﺎﻟﻤﺎ ﺃﻥ ﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ ﻳﺠﺐ ﺃﻥ ﺗﺘﻢ ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ،ﻓﺈﻥ ﺍﻟﺘﺮﺟﻤﺔ
ﺍﻟﻔﻮﺭﻳﺔﺗﻌﺘﺒﺮ ﻧﻔﻘﺔ ﻣﻘﺒﻮﻟﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ ﻟﻢ
ﻳﺴﺘﺨﺪﻣﻮﺍﺃﺑﺪﺍً ﺃﻧﻈﻤﺔ ﺗﻔﺴﻴﺮﻳﺔ ،ﻣﻔﻀﻠﻴﻦ ﻛﻔﺎءﺓ ﻟﻐﺔ ﺍﻵﻟﺔ )ﺃﻭ ﺍﻟﺘﺠﻤﻴﻊ( ﺍﻟﻤﺸﻔﺮﺓ ﻳﺪﻭﻳﺎً .ﺃﻋﻠﻦ
ﺍﻹﻋﻼﻥﻋﻦ ﻧﻈﺎﻡ ، IBM 704ﻣﻊ ﺗﻌﻠﻴﻤﺎﺕ ﺍﻟﻔﻬﺮﺳﺔ ﻭﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ ﻓﻲ ﺍﻷﺟﻬﺰﺓ ،ﺑﻨﻬﺎﻳﺔ
ﻋﺼﺮﺍﻟﺘﻔﺴﻴﺮ ،ﻋﻠﻰ ﺍﻷﻗﻞ ﻟﻠﺤﺴﺎﺑﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ .ﺃﺩﻯ ﺗﻀﻤﻴﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ ﺇﻟﻰ ﺇﺯﺍﻟﺔ
ﻣﻜﺎﻥﺍﻻﺧﺘﺒﺎء ﻟﺘﻜﻠﻔﺔ ﺍﻟﺘﺮﺟﻤﺔ.
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ Fortranﻳﻨُﺴﺐ ﺇﻟﻴﻬﺎ ﻏﺎﻟﺒﺎً ﻛﻮﻧﻬﺎ ﺃﻭﻝ ﻟﻐﺔ ﻣﺠُﻤﻌَّﺔ ﺭﻓﻴﻌﺔ ﺍﻟﻤﺴﺘﻮﻯ ،
ﺇﻻﺃﻥ ﺍﻟﺴﺆﺍﻝ ﺣﻮﻝ ﻣﻦ ﻳﺴﺘﺤﻖ ﺍﻟﺘﻘﺪﻳﺮ ﻟﺘﻨﻔﻴﺬ ﺃﻭﻝ ﻟﻐﺔ ﻣﻦ ﻫﺬﺍ ﺍﻟﻘﺒﻴﻞ ﻣﻔﺘﻮﺡ ﺇﻟﻰ ﺣﺪ ﻣﺎ.
ﺃﻋﻄﻰ ( Knuth and Pardo )1977ﺍﻟﻔﻀﻞ ﺇﻟﻰ .Alick Eﻃﻮﺭ ﺟﻠﻴﻨﻲ ﺍﻟﻤﺘﺮﺟﻢ ﻓﻲ
، Fort Halsteadﻣﺆﺳﺴﺔ ﺃﺑﺤﺎﺙ ﺍﻟﺘﺴﻠﺢ ﺍﻟﻤﻠﻜﻴﺔ ،ﻓﻲ ﺇﻧﺠﻠﺘﺮﺍ .ﺗﻢ ﺗﺸﻐﻴﻞ ﺍﻟﻤﺘﺮﺟﻢ ﺑﺤﻠﻮﻝ
ﺳﺒﺘﻤﺒﺮ .1952ﻭﻣﻊ ﺫﻟﻚ ،ﻭﻓﻘﺎً ﻟﺠﻮﻥ ﺑﺎﻛﻮﺱ ) ، Wexelblat ، 1981ﺹ ، (26
43 2.3ﺁﻱ ﺑﻲ ﺇﻡ 704ﻭﻓﻮﺭﺗﺮﺍﻥ
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﻫﺬﻩ ﺍﻷﻋﻤﺎﻝ ﺍﻟﺴﺎﺑﻘﺔ ،ﻛﺎﻧﺖ ﻟﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﻫﻲ ﺃﻭﻝ ﻟﻐﺔ ﻣﺠﻤﻌﺔ ﺭﻓﻴﻌﺔ
ﺍﻟﻤﺴﺘﻮﻯﻣﻘﺒﻮﻟﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ .ﺗﺆﺭﺥ ﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻫﺬﺍ ﺍﻟﺘﻄﻮﺭ ﺍﻟﻤﻬﻢ.
2.3.2ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﺣﺘﻰﻗﺒﻞ ﺍﻹﻋﻼﻥ ﻋﻦ ﻧﻈﺎﻡ 704ﻓﻲ ﻣﺎﻳﻮ ، 1954ﺑﺪﺃﺕ ﺧﻄﻂ ﻓﻮﺭﺗﺮﺍﻥ .ﺑﺤﻠﻮﻝ ﻧﻮﻓﻤﺒﺮ
، 1954ﺃﻧﺘﺞ ﺟﻮﻥ ﺑﺎﻛﻮﺱ ﻭﻣﺠﻤﻮﻋﺘﻪ ﻓﻲ ﺷﺮﻛﺔ ﺁﻱ ﺑﻲ ﺇﻡ ﺗﻘﺮﻳﺮﺍً ﺑﻌﻨﻮﺍﻥ "ﻧﻈﺎﻡ ﻧﻘﻞ ﺍﻟﺼﻴﻐﺔ
ﺍﻟﺮﻳﺎﺿﻴﺔﻟﺼﻴﻐﺔ ﺁﻱ ﺑﻲ ﺇﻡ) "FORTRAN :ﺁﻱ ﺑﻲ ﺇﻡ .(1954 ،ﻭﺻﻒ ﻫﺬﺍ ﺍﻟﻤﺴﺘﻨﺪ ﺍﻹﺻﺪﺍﺭ
ﺍﻷﻭﻝﻣﻦ ، Fortranﻭﺍﻟﺬﻱ ﻧﺸﻴﺮ ﺇﻟﻴﻪ ﺑﺎﺳﻢ ، Fortran 0ﻗﺒﻞ ﺗﻨﻔﻴﺬﻩ .ﻛﻤﺎ ﻧﺼﺖ ﺑﺠﺮﺃﺓ ﻋﻠﻰ
ﺃﻥﻓﻮﺭﺗﺮﺍﻥ ﺳﺘﻮﻓﺮ ﻛﻔﺎءﺓ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﺸﻔﺮﺓ ﻳﺪﻭﻳﺎً ﻭﺳﻬﻮﻟﺔ ﺑﺮﻣﺠﺔ ﺃﻧﻈﻤﺔ ﺍﻟﺸﻔﺮﺓ ﺍﻟﻜﺎﺫﺑﺔ
ﺍﻟﺘﻔﺴﻴﺮﻳﺔ.ﻭﻓﻲ ﻣﻮﺟﺔ ﺃﺧﺮﻯ ﻣﻦ ﺍﻟﺘﻔﺎﺅﻝ ،ﺫﻛﺮﺕ ﺍﻟﻮﺛﻴﻘﺔ ﺃﻥ ﻓﻮﺭﺗﺮﺍﻥ ﺳﺘﻘﻀﻲ ﻋﻠﻰ ﺃﺧﻄﺎء
ﺍﻟﺘﺮﻣﻴﺰﻭﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺤﻴﺢ .ﺑﻨﺎء ًﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻔﺮﺿﻴﺔ ،ﺗﻀﻤﻦ ﻣﺘﺮﺟﻢ ﻓﻮﺭﺗﺮﺍﻥ ﺍﻷﻭﻝ ﺍﻟﻘﻠﻴﻞ ﻣﻦ
ﺍﻟﺘﺤﻘﻖﻣﻦ ﺍﻷﺧﻄﺎء ﺍﻟﻨﺤﻮﻳﺔ.
ﻛﺎﻧﺖﺍﻟﺒﻴﺉﺔ ﺍﻟﺘﻲ ﺗﻢ ﻓﻴﻬﺎ ﺗﻄﻮﻳﺮ ﻓﻮﺭﺗﺮﺍﻥ ﻋﻠﻰ ﺍﻟﻨﺤﻮ ﺍﻟﺘﺎﻟﻲ (1) :ﻛﺎﻧﺖ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺫﺍﺕﺫﺍﻛﺮﺓ ﺻﻐﻴﺮﺓ ﻭﻛﺎﻧﺖ ﺑﻄﻴﺉﺔ ﻭﻏﻴﺮ ﻣﻮﺛﻮﻗﺔ ﻧﺴﺒﻴﺎً ؛ ) (2ﻛﺎﻥ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻷﺳﺎﺳﻲ ﻷﺟﻬﺰﺓ
ﺍﻟﻜﻤﺒﻴﻮﺗﺮﻓﻲ ﺍﻟﺤﺴﺎﺑﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ (3) .ﻟﻢ ﺗﻜﻦ ﻫﻨﺎﻙ ﻃﺮﻕ ﻓﻌﺎﻟﺔ ﻭﻓﻌﺎﻟﺔ ﻟﺒﺮﻣﺠﺔ ﺃﺟﻬﺰﺓ
ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ؛ﻭ ) (4ﻧﻈﺮﺍً ﻻﺭﺗﻔﺎﻉ ﺗﻜﻠﻔﺔ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻣﻘﺎﺭﻧﺔ ًﺑﺘﻜﻠﻔﺔ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ،ﻛﺎﻧﺖ ﺳﺮﻋﺔ
ﻛﻮﺩﺍﻟﻜﺎﺉﻦ ﺍﻟﺬﻱ ﺗﻢ ﺇﻧﺸﺎﺅﻩ ﺍﻟﻬﺪﻑ ﺍﻷﺳﺎﺳﻲ ﻟﻤﺠﻤﻌﻲ ﻓﻮﺭﺗﺮﺍﻥ ﺍﻷﻭﺍﺉﻞ .ﺗﺘﺒﻊ ﺧﺼﺎﺉﺺ
ﺍﻹﺻﺪﺍﺭﺍﺕﺍﻟﻘﺪﻳﻤﺔ ﻣﻦ Fortranﻣﺒﺎﺷﺮﺓ ﻣﻦ ﻫﺬﻩ ﺍﻟﺒﻴﺉﺔ.
ﻟﻢﺗﻜﻦ ﻫﻨﺎﻙ ﻋﺒﺎﺭﺍﺕ ﻟﻜﺘﺎﺑﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﻠﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﺍﻷﻭﻟﻰ .ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺑﺪﺃﺕ
ﺃﺳﻤﺎﺅﻫﺎﺑـI ، J ، K ، L ، M ،ﻭﻥﻛﺎﻧﺖ ﻧﻮﻋﺎً ﺻﺤﻴﺤﺎً ﺿﻤﻨﻴﺎً ،ﻭﻛﺎﻧﺖ ﺟﻤﻴﻊ ﺍﻷﻧﻮﺍﻉ ﺍﻷﺧﺮﻯ ﻋﺒﺎﺭﺓ
ﻋﻦﻓﺎﺻﻠﺔ ﻋﺎﺉﻤﺔ ﺿﻤﻨﻴﺎً .ﺍﺳﺘﻨﺪ ﺍﺧﺘﻴﺎﺭ ﺍﻟﺤﺮﻭﻑ ﻟﻬﺬﻩ ﺍﻻﺗﻔﺎﻗﻴﺔ ﺇﻟﻰ ﺣﻘﻴﻘﺔ ﺃﻧﻪ ﻓﻲ ﺫﻟﻚ
ﺍﻟﻮﻗﺖﺍﺳﺘﺨﺪﻡ ﺍﻟﻌﻠﻤﺎء ﻭﺍﻟﻤﻬﻨﺪﺳﻮﻥ ﺍﻷﺣﺮﻑ ﻛﻨﺼﻮﺹ ﻣﺘﻐﻴﺮﺓ ،ﻋﺎﺩﺓًﺍﻱ ﺟﺎﻱ،ﻭﻙ.ﻓﻲ ﻟﻔﺘﺔ
ﻣﻦﺍﻟﻜﺮﻡ ،ﺃﻟﻘﻰ ﻣﺼﻤﻤﻮ ﻓﻮﺭﺗﺮﺍﻥ ﺍﻷﺣﺮﻑ ﺍﻟﺜﻼﺛﺔ ﺍﻹﺿﺎﻓﻴﺔ.
ﻛﺎﻥﺍﻹﺩﻋﺎء ﺍﻷﻛﺜﺮ ﺟﺮﺃﺓ ﺍﻟﺬﻱ ﻗﺪﻣﺘﻪ ﻣﺠﻤﻮﻋﺔ ﺗﻄﻮﻳﺮ ﻓﻮﺭﺗﺮﺍﻥ ﺃﺛﻨﺎء ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﻫﻮ ﺃﻥ
ﻛﻮﺩﺍﻵﻟﺔ ﺍﻟﺬﻱ ﻳﻨﺘﺠﻪ ﺍﻟﻤﺘﺮﺟﻢ ﺳﻴﻜﻮﻥ ﻧﺼﻒ ﻛﻔﺎءﺓ ﻣﺎ ﻳﻤﻜﻦ ﺇﻧﺘﺎﺟﻪ ﻳﺪﻭﻳﺎً1.ﺃﺛﺎﺭ ﻫﺬﺍ ،ﺃﻛﺜﺮ ﻣﻦ
ﺃﻱﺷﻲء ﺁﺧﺮ ،ﺷﻜﻮﻛﺎً ﻓﻲ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻤﺤﺘﻤﻠﻴﻦ ﻭﻣﻨﻊ ﻗﺪﺭﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺍﻻﻫﺘﻤﺎﻡ ﺑـ Fortran
ﻗﺒﻞﺇﺻﺪﺍﺭﻩ ﺍﻟﻔﻌﻠﻲ .ﻣﻊ ﺫﻟﻚ ،ﻓﺎﺟﺄ ﺍﻟﺠﻤﻴﻊ ﺗﻘﺮﻳﺒﺎً ،ﻣﻊ ﺫﻟﻚ ،ﻛﺎﺩﺕ ﻣﺠﻤﻮﻋﺔ ﺗﻄﻮﻳﺮ
Fortranﺃﻥ ﺗﺤﻘﻖ ﻫﺪﻓﻬﺎ ﻓﻲ ﺍﻟﻜﻔﺎءﺓ .ﺗﻢ ﺇﻧﻔﺎﻕ ﺍﻟﺠﺰء ﺍﻷﻛﺒﺮ ﻣﻦ 18ﻋﺎﻣﺎً ﻣﻦ ﺍﻟﺠﻬﺪ ﺍﻟﻤﺒﺬﻭﻝ
ﻟﺒﻨﺎءﺃﻭﻝ ﻣﺘﺮﺟﻢ ﻋﻠﻰ ﺍﻟﺘﺤﺴﻴﻦ ،ﻭﻛﺎﻧﺖ ﺍﻟﻨﺘﺎﺉﺞ ﻓﻌﺎﻟﺔ ﺑﺸﻜﻞ ﻣﻠﺤﻮﻅ.
2.3.4ﻓﻮﺭﺗﺮﺍﻥ II
ﺗﻢﺗﻮﺯﻳﻊ ﻣﺘﺮﺟﻢ ﻓﻮﺭﺗﺮﺍﻥ 2ﻓﻲ ﺭﺑﻴﻊ ﻋﺎﻡ .1958ﻭﺃﺻﻠﺢ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻷﺧﻄﺎء ﻓﻲ ﻧﻈﺎﻡ ﺍﻟﺘﺠﻤﻴﻊ
ﻓﻮﺭﺗﺮﺍﻥ 1ﻭﺃﺿﺎﻑ ﺑﻌﺾ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﻤﻬﻤﺔ ﻟﻠﻐﺔ ،ﻭﺃﻫﻤﻬﺎ ﺍﻟﺘﺠﻤﻴﻊ ﺍﻟﻤﺴﺘﻘﻞ ﻟﻠﺮﻭﺗﻴﻨﺎﺕ
ﺍﻟﻔﺮﻋﻴﺔ.ﺑﺪﻭﻥ ﺗﺠﻤﻴﻊ ﻣﺴﺘﻘﻞ ،ﺃﻱ ﺗﻐﻴﻴﺮ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻳﺘﻄﻠﺐ ﺇﻋﺎﺩﺓ ﺗﺠﻤﻴﻊ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﻛﻤﻠﻪ.
ﺃﺩﻯﺍﻓﺘﻘﺎﺭ Fortran Iﺇﻟﻰ ﻗﺪﺭﺓ ﺍﻟﺘﺮﺟﻤﺔ ﺍﻟﻤﺴﺘﻘﻠﺔ ،ﺇﻟﻰ ﺟﺎﻧﺐ ﺿﻌﻒ ﻣﻮﺛﻮﻗﻴﺔ ، 704ﺇﻟﻰ
ﻭﺿﻊﻗﻴﻮﺩ ﻋﻤﻠﻴﺔ ﻋﻠﻰ ﻃﻮﻝ ﺍﻟﺒﺮﺍﻣﺞ ﺇﻟﻰ ﺣﻮﺍﻟﻲ 300ﺇﻟﻰ 400ﺳﻄﺮ )، Wexelblat ، 1981
ﺹ .(68ﻛﺎﻥ ﻟﻠﺒﺮﺍﻣﺞ ﺍﻷﻃﻮﻝ ﻓﺮﺻﺔ ﺿﻌﻴﻔﺔ ﻓﻲ ﺃﻥ ﻳﺘﻢ ﺗﺠﻤﻴﻌﻬﺎ ﺑﺎﻟﻜﺎﻣﻞ ﻗﺒﻞ ﺣﺪﻭﺙ ﻋﻄﻞ
ﻓﻲﺍﻟﺠﻬﺎﺯ .ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺗﻀﻤﻴﻦ ﺇﺻﺪﺍﺭﺍﺕ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻟﻤﺘﺮﺟﻤﺔ ﻣﺴﺒﻘﺎً ﻟﻠﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﺗﻘﺼﺮ
ﻋﻤﻠﻴﺔﺍﻟﺘﺠﻤﻴﻊ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﻭﺟﻌﻠﻬﺎ ﻋﻤﻠﻴﺔ ﻟﺘﻄﻮﻳﺮ ﺑﺮﺍﻣﺞ ﺃﻛﺒﺮ ﺑﻜﺜﻴﺮ.
.1ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺍﻋﺘﻘﺪ ﻓﺮﻳﻖ Fortranﺃﻥ ﺍﻟﺸﻔﺮﺓ ﺍﻟﺘﻲ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﺑﻮﺍﺳﻄﺔ ﺑﺮﻧﺎﻣﺞ ﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ ﺍﻟﺨﺎﺹ ﺑﻬﻢ ﻻ ﻳﻤﻜﻦ ﺃﻥ
ﺗﻜﻮﻥﺃﻗﻞ ﻣﻦ ﻧﺼﻒ ﺳﺮﻋﺔ ﺭﻣﺰ ﺍﻵﻟﺔ ﺍﻟﻤﻜﺘﻮﺑﺔ ﺑﺨﻂ ﺍﻟﻴﺪ ،ﺃﻭ ﻟﻦ ﻳﺘﻢ ﺍﻋﺘﻤﺎﺩ ﺍﻟﻠﻐﺔ ﻣﻦ ﻗﺒﻞ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ.
45 2.3ﺁﻱ ﺑﻲ ﺇﻡ 704ﻭﻓﻮﺭﺗﺮﺍﻥ
ﺗﻢﺍﺳﺘﺒﺪﺍﻝ Fortran IVﺑـ ، Fortran 77ﻭﺍﻟﺬﻱ ﺃﺻﺒﺢ ﺍﻟﻤﻌﻴﺎﺭ ﺍﻟﺠﺪﻳﺪ ﻓﻲ ﻋﺎﻡ ) 1978
ANSI، 1978ﺃ( .ﺍﺣﺘﻔﻆ Fortran 77ﺑﻤﻌﻈﻢ ﻣﻴﺰﺍﺕ Fortran IVﻭﺃﺿﻒ ﻣﻌﺎﻟﺠﺔ ﺳﻠﺴﻠﺔ
ﺍﻷﺣﺮﻑ ،ﻭﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺍﻟﺤﻠﻘﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ،ﻭ
ﻟﻮﻣﻊ ﺧﻴﺎﺭﺁﺧﺮﺑﻨﺪ.
ﻛﺎﻥ ( Fortran 90 )ANSI ، 1992ﻣﺨﺘﻠﻔﺎً ﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻋﻦ .Fortran 77ﻭﻛﺎﻧﺖ ﺃﻫﻢ
ﺍﻹﺿﺎﻓﺎﺕﻫﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﻭﺍﻟﺴﺠﻼﺕ ﻭﺍﻟﻤﺆﺷﺮﺍﺕ ﻭﺑﻴﺎﻥ ﺍﻻﺧﺘﻴﺎﺭ ﺍﻟﻤﺘﻌﺪﺩ
ﻭﺍﻟﻮﺣﺪﺍﺕﺍﻟﻨﻤﻄﻴﺔ .ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺫﻟﻚ ،ﻳﻤﻜﻦ ﺍﺳﺘﺪﻋﺎء ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ Fortran 90ﺑﺸﻜﻞ
ﻣﺘﻜﺮﺭ.
ﻛﺎﻥﺍﻟﻤﻔﻬﻮﻡ ﺍﻟﺠﺪﻳﺪ ﺍﻟﺬﻱ ﺗﻢ ﺗﻀﻤﻴﻨﻪ ﻓﻲ ﺗﻌﺮﻳﻒ Fortran 90ﻫﻮ ﺇﺯﺍﻟﺔ ﺑﻌﺾ ﻣﻴﺰﺍﺕ
ﺍﻟﻠﻐﺔﻣﻦ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺴﺎﺑﻘﺔ .ﺑﻴﻨﻤﺎ ﺗﻀﻤﻨﺖ Fortran 90ﺟﻤﻴﻊ ﻣﻴﺰﺍﺕ ، Fortran 77
ﺗﻀﻤﻦﺗﻌﺮﻳﻒ ﺍﻟﻠﻐﺔ ﻗﺎﺉﻤﺔ ﻣﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺘﻲ ﺗﻤﺖ ﺍﻟﺘﻮﺻﻴﺔ ﺑﺈﺯﺍﻟﺘﻬﺎ ﻓﻲ ﺍﻹﺻﺪﺍﺭ ﺍﻟﺘﺎﻟﻲ ﻣﻦ
ﺍﻟﻠﻐﺔ.
ﺗﻀﻤﻨﺖ Fortran 90ﺗﻐﻴﻴﺮﻳﻦ ﻧﺤﻮﻳﻴﻦ ﺑﺴﻴﻄﻴﻦ ﻏﻴﺮﺍ ﻣﻈﻬﺮ ﻛﻼ ﺍﻟﺒﺮﻧﺎﻣﺠﻴﻦ ﻭﺍﻷﺩﺑﻴﺎﺕ
ﺍﻟﺘﻲﺗﺼﻒ ﺍﻟﻠﻐﺔ .ﺃﻭﻻ ً ،ﺗﻢ ﺇﺳﻘﺎﻁ ﺍﻟﺘﻨﺴﻴﻖ ﺍﻟﺜﺎﺑﺖ ﺍﻟﻤﻄﻠﻮﺏ ﻟﻠﺸﻔﺮﺓ ،ﻭﺍﻟﺬﻱ ﻳﺘﻄﻠﺐ
ﺍﺳﺘﺨﺪﺍﻡﻣﻮﺍﺿﻊ ﺷﺨﺼﻴﺔ ﻣﺤﺪﺩﺓ ﻷﺟﺰﺍء ﻣﻌﻴﻨﺔ ﻣﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻤﻜﻦ ﺃﻥ
ﺗﻈﻬﺮﺗﺴﻤﻴﺎﺕ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻓﻲ ﺍﻟﻤﻮﺍﺿﻊ ﺍﻟﺨﻤﺴﺔ ﺍﻷﻭﻟﻰ ﻓﻘﻂ ﻭﻻ ﻳﻤﻜﻦ ﺃﻥ ﺗﺒﺪﺃ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻗﺒﻞ
ﺍﻟﻤﻮﺿﻊﺍﻟﺴﺎﺑﻊ .ﺗﻢ ﺗﺼﻤﻴﻢ ﻫﺬﺍ ﺍﻟﺘﻨﺴﻴﻖ ﺍﻟﺼﺎﺭﻡ ﻟﻠﺸﻔﺮﺓ ﺣﻮﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﻄﺎﻗﺎﺕ ﺍﻟﻤﺜﻘﺒﺔ.
ﺍﻟﺘﻐﻴﻴﺮﺍﻟﺜﺎﻧﻲ ﻫﻮ ﺃﻥ ﺍﻟﺘﻬﺠﺉﺔ ﺍﻟﺮﺳﻤﻴﺔ ﻟـ FORTRANﺃﺻﺒﺤﺖ .Fortranﻛﺎﻥ ﻫﺬﺍ ﺍﻟﺘﻐﻴﻴﺮ
ﻣﺼﺤﻮﺑﺎًﺑﺘﻐﻴﻴﺮ ﻓﻲ ﺍﺻﻄﻼﺡ ﺍﺳﺘﺨﺪﺍﻡ ﺟﻤﻴﻊ ﺍﻷﺣﺮﻑ ﺍﻟﻜﺒﻴﺮﺓ ﻟﻠﻜﻠﻤﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻭﺍﻟﻤﻌﺮﻓﺎﺕ
ﻓﻲﺑﺮﺍﻣﺞ .Fortranﻛﺎﻧﺖ ﺍﻻﺗﻔﺎﻗﻴﺔ ﺍﻟﺠﺪﻳﺪﺓ ﻫﻲ ﺃﻥ ﺍﻟﺤﺮﻑ ﺍﻷﻭﻝ ﻓﻘﻂ ﻣﻦ ﺍﻟﻜﻠﻤﺎﺕ
ﺍﻟﺮﺉﻴﺴﻴﺔﻭﺍﻟﻤﻌﺮﻓﺎﺕ ﺳﻴﻜﻮﻥ ﻛﺒﻴﺮﺍً.
ﺍﺳﺘﻤﺮﻓﻮﺭﺗﺮﺍﻥ (INCITS / ISO / IEC ، 1997) 95ﻓﻲ ﺗﻄﻮﺭ ﺍﻟﻠﻐﺔ ،ﻭﻟﻜﻦ ﺗﻢ ﺇﺟﺮﺍء
ﺗﻐﻴﻴﺮﺍﺕﻗﻠﻴﻠﺔ ﻓﻘﻂ .ﻣﻦ ﺑﻴﻦ ﺃﻣﻮﺭ ﺃﺧﺮﻯ ،ﺑﻨﺎء ﺍﻟﺘﻜﺮﺍﺭ ﺍﻟﺠﺪﻳﺪ ،ﻓﻮﺭﺍﻝ ،ﺗﻤﺖ ﺇﺿﺎﻓﺔ ﻟﺘﺴﻬﻴﻞ
ﻣﻬﻤﺔﻣﻮﺍﺯﺍﺓ ﺑﺮﺍﻣﺞ ﻓﻮﺭﺗﺮﺍﻥ.
C.ﺃﺿﺎﻑ ﺩﻋﻤﺎً ﻟﻠﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ،ﻭﺃﻧﻮﺍﻉ ﻣﺸﺘﻘﺔ ﺫﺍﺕ ﻣﻌﻠﻤﺎﺕ ،ﻭﻣﺆﺷﺮﺍﺕ
ﺍﻹﺟﺮﺍءﺍﺕ ،ﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﺒﻴﻨﻲ ﻣﻊ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ 2003 )Metcalf et al. ، 2004( ،
Fortran
ﺃﺿﺎﻑﺍﻹﺻﺪﺍﺭ ﺍﻷﺧﻴﺮ ﻣﻦ (Fortran ، Fortran 2008 )ISO / IEC 1539-1 ، 2010
ﺩﻋﻤﺎًﻟﻠﻜﺘﻞ ﻟﺘﺤﺪﻳﺪ ﺍﻟﻨﻄﺎﻗﺎﺕ ﺍﻟﻤﺤﻠﻴﺔ ،ﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﻤﺸﺘﺮﻛﺔ ،ﺍﻟﺘﻲ ﺗﻮﻓﺮ ﻧﻤﻮﺫﺝ ﺗﻨﻔﻴﺬ
ﻣﺘﻮﺍﺯﻱ ،ﻭﻫﻞ ﻣﺘﻄﺎﺑﻘﺔﺑﻨﺎء ،ﻟﺘﺤﺪﻳﺪ ﺍﻟﺤﻠﻘﺎﺕ ﺩﻭﻥ ﺍﻻﻋﺘﻤﺎﺩ ﺍﻟﻤﺘﺒﺎﺩﻝ.
2.3.6ﺍﻟﺘﻘﻴﻴﻢ
ﻓﻜﺮﻓﺮﻳﻖ ﺍﻟﺘﺼﻤﻴﻢ ﺍﻷﺻﻠﻲ ﻟـ Fortranﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﻓﻘﻂ ﻛﻤﻘﺪﻣﺔ ﺿﺮﻭﺭﻳﺔ ﻟﻠﻤﻬﻤﺔ
ﺍﻟﺤﺎﺳﻤﺔﺍﻟﻤﺘﻤﺜﻠﺔ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻤﺘﺮﺟﻢ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻟﻢ ﻳﺨﻄﺮ ﺑﺒﺎﻟﻬﻢ ﺃﺑﺪﺍً ﺃﻧﻪ ﻟﻦ ﻳﺘﻢ
ﺍﺳﺘﺨﺪﺍﻡ Fortranﻋﻠﻰ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 46
ﻣﻦﺻﻨﻊ ﺷﺮﻛﺔ .IBMﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻟﻘﺪ ﺃﺟُﺒﺮﻭﺍ ﻋﻠﻰ ﺍﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺑﻨﺎء ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ ﻟـ
Fortranﻷﺟﻬﺰﺓ IBMﺍﻷﺧﺮﻯ ﻓﻘﻂ ﻷﻧﻪ ﺗﻢ ﺍﻹﻋﻼﻥ ﻋﻦ ﺧﻠﻴﻔﺔ ، 709 ، 704ﻗﺒﻞ ﺇﺻﺪﺍﺭ
ﻣﺘﺮﺟﻢ .Fortran 704ﺇﻥ ﺍﻟﺘﺄﺛﻴﺮ ﺍﻟﺬﻱ ﺃﺣﺪﺛﺘﻪ ﻟﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ،
ﺇﻟﻰﺟﺎﻧﺐ ﺣﻘﻴﻘﺔ ﺃﻥ ﺟﻤﻴﻊ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻼﺣﻘﺔ ﻣﺪﻳﻨﺔ ﺑﻔﻮﺭﺗﺮﺍﻥ ،ﻣﺜﻴﺮ ﻟﻺﻋﺠﺎﺏ ﺣﻘﺎً ﻓﻲ
ﺿﻮءﺍﻷﻫﺪﺍﻑ ﺍﻟﻤﺘﻮﺍﺿﻌﺔ ﻟﻤﺼﻤﻤﻴﻬﺎ.
ﺍﻟﻤﺠﻤﻮﻉ= 0
ﻗﺮﺍءﺓ* List_Len ،
ﺇﺫﺍﻛﺎﻥ )) (AND. )List_Len >100(. (List_Len< 0ﺛﻢ! ﻗﺮﺍءﺓ ﺑﻴﺎﻧﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻓﻲ
ﻣﺼﻔﻮﻓﺔﻭﺣﺴﺎﺏ ﻣﺠﻤﻮﻋﻬﺎ
ﻋﻤﻞﺍﻟﻌﺪﺍﺩ = List_Len ، 1
ﻗﺮﺍءﺓ* ) Int_List ،ﻋﺪﺍﺩ( = Sum + Int_List
) Sumﻋﺪﺍﺩ(
47 2.4ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔLISP :
ﻧﻬﺎﻳﺔﺗﻔﻌﻞ
!ﺍﺣﺴﺐ ﺍﻟﻤﺘﻮﺳﻂ
ﺍﻟﻤﺘﻮﺳﻂ= Sum / List_Len
!ﻗﻢ ﺑﺤﺴﺎﺏ ﺍﻟﻘﻴﻢ ﺍﻷﻛﺒﺮ ﻣﻦ ﺍﻟﻤﺘﻮﺳﻂ
ﻋﻤﻞﺍﻟﻌﺪﺍﺩ = List_Len ، 1
ﺇﺫﺍ)) Int_Listﻋﺪﺍﺩ(< ﻣﺘﻮﺳﻂ( ﺛﻢ
ﺍﻟﻨﺘﻴﺠﺔ= ﺍﻟﻨﺘﻴﺠﺔ 1 +ﻧﻬﺎﻳﺔ ﺇﺫﺍ
ﻧﻬﺎﻳﺔﺗﻔﻌﻞ
!ﺍﻃﺒﻊ ﺍﻟﻨﺘﻴﺠﺔ
ﻃﺒﺎﻋﺔ* " ،ﻋﺪﺩ ﺍﻟﻘﻴﻢ< ﺍﻟﻤﺘﻮﺳﻂ ﻫﻮ ، ":ﺍﻟﻨﺘﻴﺠﺔ ﺍﻷﺧﺮﻯ
ﻃﺒﺎﻋﺔ* " ،ﺧﻄﺄ -ﻗﻴﻤﺔ ﻃﻮﻝ ﺍﻟﻘﺎﺉﻤﺔ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻴﺔ" End If
ﺗﻢﺗﻀﻤﻴﻦ ﺗﻌﻠﻴﻤﺎﺕ ﻣﻌﺎﻟﺠﺔ ﺍﻟﻘﺎﺉﻤﺔ .ﻫﻨﺎﻙ ﻋﺎﻣﻞ ﺁﺧﺮ ﻣﻨﻊ ﻟﻐﺎﺕ IPLﻣﻦ ﺍﻻﻧﺘﺸﺎﺭ ﻭﻫﻮ
ﺗﻄﺒﻴﻘﻬﺎﻋﻠﻰ ﺁﻟﺔ Johnniacﺍﻟﻐﺎﻣﻀﺔ.
ﻫﻨﺎﻙﻣﻄﻠﺐ ﺁﺧﺮ ﻧﺸﺄ ﻣﻦ ﺗﺤﻘﻴﻖ ﺍﻟﺘﻤﺎﻳﺰ ﺍﻟﺮﻣﺰﻱ ﻭﻫﻮ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﺍﻟﻘﻮﺍﺉﻢ ﺍﻟﻤﺮﺗﺒﻄﺔ
ﺍﻟﻤﻮﺯﻋﺔﺩﻳﻨﺎﻣﻴﻜﻴﺎً ﻭﻧﻮﻉ ﻣﻦ ﺍﻟﺘﺨﺼﻴﺺ ﺍﻟﻀﻤﻨﻲ ﻟﻠﻘﻮﺍﺉﻢ ﺍﻟﻤﺘﺮﻭﻛﺔ .ﻟﻦ ﻳﺴﻤﺢ ﻣﻜﺎﺭﺛﻲ
ﺑﺒﺴﺎﻃﺔﻟﺨﻮﺍﺭﺯﻣﻴﺔ ﺍﻟﺘﻤﺎﻳﺰ ﺍﻷﻧﻴﻘﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻪ ﺃﻥ ﺗﺘﺸﺎﺑﻚ ﻣﻊ ﻋﺒﺎﺭﺍﺕ ﺇﻟﻐﺎء ﺍﻟﺘﺨﺼﻴﺺ
ﺍﻟﺼﺮﻳﺤﺔ.
.3ﻗﺎﻡ Advice Takerﺑﺘﻤﺜﻴﻞ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺑﺠﻤﻞ ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ ﺭﺳﻤﻴﺔ ﻭﺍﺳﺘﺨﺪﻡ ﻋﻤﻠﻴﺔ ﺍﺳﺘﻨﺘﺎﺝ ﻣﻨﻄﻘﻲ ﻟﺘﻘﺮﻳﺮ ﻣﺎ
ﻳﺠﺐﺍﻟﻘﻴﺎﻡ ﺑﻪ.
49 2.4ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔLISP :
2.4.3.1ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ
ﻳﺤﺘﻮﻱ Pure LISPﻋﻠﻰ ﻧﻮﻋﻴﻦ ﻓﻘﻂ ﻣﻦ ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ :ﺍﻟﺬﺭﺍﺕ ﻭﺍﻟﻘﻮﺍﺉﻢ .ﺍﻟﺬﺭﺍﺕ ﻫﻲ ﺇﻣﺎ
ﺭﻣﻮﺯﻟﻬﺎ ﺷﻜﻞ ﻣﻌﺮﻓّﺎﺕ ﺃﻭ ﺣﺮﻓﻴﺔ ﺭﻗﻤﻴﺔ .ﻳﻌﺘﺒﺮ ﻣﻔﻬﻮﻡ ﺗﺨﺰﻳﻦ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺮﻣﺰﻳﺔ ﻓﻲ ﻗﻮﺍﺉﻢ
ﻣﺮﺗﺒﻄﺔﺃﻣﺮﺍً ﻃﺒﻴﻌﻴﺎً ﻭﻗﺪ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻓﻲ .IPL-IIﺗﺴﻤﺢ ﻫﺬﻩ ﺍﻟﻬﻴﺎﻛﻞ ﺑﻌﻤﻠﻴﺎﺕ ﺍﻹﺩﺭﺍﺝ
ﻭﺍﻟﺤﺬﻑﻓﻲ ﺃﻱ ﻭﻗﺖ ،ﻭﻫﻲ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺘﻲ ﻛﺎﻥ ﻳﻌُﺘﻘﺪ ﺑﻌﺪ ﺫﻟﻚ ﺃﻧﻬﺎ ﺟﺰء ﺿﺮﻭﺭﻱ ﻣﻦ
ﻣﻌﺎﻟﺠﺔﺍﻟﻘﺎﺉﻤﺔ .ﻭﻗﺪ ﺗﻘﺮﺭ ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ،ﻣﻊ ﺫﻟﻚ ،ﺃﻥ ﺑﺮﺍﻣﺞ LISPﻧﺎﺩﺭﺍً ﻣﺎ ﺗﺘﻄﻠﺐ ﻫﺬﻩ
ﺍﻟﻌﻤﻠﻴﺎﺕ.
ﻳﺘﻢﺗﺤﺪﻳﺪ ﺍﻟﻘﻮﺍﺉﻢ ﻋﻦ ﻃﺮﻳﻖ ﺗﺤﺪﻳﺪ ﻋﻨﺎﺻﺮﻫﺎ ﺑﺄﻗﻮﺍﺱ .ﺍﻟﻘﻮﺍﺉﻢ ﺍﻟﺒﺴﻴﻄﺔ ،ﺍﻟﺘﻲ ﺗﻘﺘﺼﺮ
ﻓﻴﻬﺎﺍﻟﻌﻨﺎﺻﺮ ﻋﻠﻰ ﺍﻟﺬﺭﺍﺕ ،ﻟﻬﺎ ﺍﻟﺸﻜﻞ
)ﺍ ﺏ ﺕ ﺙ(
ﻳﺘﻢﺃﻳﻀﺎً ﺗﺤﺪﻳﺪ ﻫﻴﺎﻛﻞ ﺍﻟﻘﺎﺉﻤﺔ ﺍﻟﻤﺘﺪﺍﺧﻠﺔ ﺑﻮﺍﺳﻄﺔ ﺍﻷﻗﻮﺍﺱ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻟﻘﺎﺉﻤﺔ
ﺍﻟﺸﻜﻞ2.2
ﺍﻟﺘﻤﺜﻴﻞﺍﻟﺪﺍﺧﻠﻲ ﻟﻘﺎﺉﻤﺘﻴﻦ
ﻣﻦLISP
ﺩ ﺝ ﺏ ﺃ
ﺩ ﺃ
ﺟﻲ F
)ﺍ ﺏ ﺕ ﺙ(
ﻋﻨﺪﺗﻔﺴﻴﺮﻫﺎ ﻋﻠﻰ ﺃﻧﻬﺎ ﺑﻴﺎﻧﺎﺕ ،ﻓﻬﻲ ﻗﺎﺉﻤﺔ ﻣﻦ ﺃﺭﺑﻌﺔ ﻋﻨﺎﺻﺮ .ﻋﻨﺪﻣﺎ ﻳﻨﻈﺮ ﺇﻟﻴﻪ ﻋﻠﻰ ﺃﻧﻪ ﺭﻣﺰ ،
ﻓﻬﻮﺗﻄﺒﻴﻖ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻟﻤﺴﻤﺎﺓﺃﻟﻠﻤﻌﻠﻤﺎﺕ ﺍﻟﺜﻼﺛﺔﺏ ،ﺝ ،ﻭﺩ.
2.4.4ﺍﻟﺘﻘﻴﻴﻢ
ﺳﻴﻄﺮ LISPﺗﻤﺎﻣﺎً ﻋﻠﻰ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ ﻟﻤﺪﺓ ﺭﺑﻊ ﻗﺮﻥ .ﺗﻢ ﺍﻟﻘﻀﺎء ﻋﻠﻰ ﺍﻟﻜﺜﻴﺮ ﻣﻦ
ﺃﺳﺒﺎﺏﺳﻤﻌﺔ LISPﻟﻜﻮﻧﻬﺎ ﻏﻴﺮ ﻓﻌﺎﻟﺔ ﻟﻠﻐﺎﻳﺔ .ﻳﺘﻢ ﺗﺠﻤﻴﻊ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻤﻌﺎﺻﺮﺓ ،
ﻭﻳﻜﻮﻥﺍﻟﻜﻮﺩ ﺍﻟﻨﺎﺗﺞ ﺃﺳﺮﻉ ﺑﻜﺜﻴﺮ ﻣﻦ ﺗﺸﻐﻴﻞ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺼﺪﺭﻱ ﻋﻠﻰ ﻣﺘﺮﺟﻢ .ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﻧﺠﺎﺣﻬﺎ
ﻓﻲﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ ،ﻛﺎﻧﺖ LISPﺭﺍﺉﺪﺓ ﻓﻲ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ،ﻭﺍﻟﺘﻲ ﺃﺛﺒﺘﺖ ﺃﻧﻬﺎ ﻣﺠﺎﻝ
ﻧﺸﻂﻟﻠﺒﺤﺚ ﻓﻲ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻛﻤﺎ ﻫﻮ ﻣﺬﻛﻮﺭ ﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻷﻭﻝ ،ﻳﻌﺘﻘﺪ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺑﺎﺣﺜﻲ
ﻟﻐﺔﺍﻟﺒﺮﻣﺠﺔ ﺃﻥ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ﻫﻲ ﻧﻬﺞ ﺃﻓﻀﻞ ﺑﻜﺜﻴﺮ ﻟﺘﻄﻮﻳﺮ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﻣﻦ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻹﺟﺮﺍﺉﻴﺔﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻀﺮﻭﺭﻳﺔ.
51 2.4ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔLISP :
)COND
(ﻻ ﺷﻲء (lis1( )EQ lis1 lis2(( ))ATOM lis2
))ATOM
))ﻗﻮﺍﺉﻢ ﻣﺘﺴﺎﻭﻳﺔ )((CAR lis2) (CAR lis1
)ﻗﻮﺍﺉﻢ ﻣﺘﺴﺎﻭﻳﺔ )(((CDR lis2) (CDR lis1
)ﻻ ﺷﻲء(
(
(
2.4.5.1ﻣﺨﻄﻂ
ﻇﻬﺮﺕﻟﻐﺔ ﺍﻟﻤﺨﻄﻂ ﻣﻦ ﻣﻌﻬﺪ ﻣﺎﺳﺎﺗﺸﻮﺳﺘﺲ ﻟﻠﺘﻜﻨﻮﻟﻮﺟﻴﺎ ﻓﻲ ﻣﻨﺘﺼﻒ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ )
.(Dybvig، 2003ﻳﺘﻤﻴﺰ ﺑﺼﻐﺮ ﺣﺠﻤﻪ ،ﻭﺍﺳﺘﺨﺪﺍﻣﻪ ﺍﻟﺤﺼﺮﻱ ﻟﺘﺤﺪﻳﺪ ﺍﻟﻨﻄﺎﻕ ﺍﻟﺜﺎﺑﺖ )ﺗﻤﺖ
ﻣﻨﺎﻗﺸﺘﻪﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻟﺨﺎﻣﺲ( ،ﻭﻣﻌﺎﻟﺠﺘﻪ ﻟﻠﻮﻇﺎﺉﻒ ﻛﻜﻴﺎﻧﺎﺕ ﻣﻦ ﺍﻟﺪﺭﺟﺔ ﺍﻷﻭﻟﻰ .ﻛﻜﻴﺎﻧﺎﺕ
ﻣﻦﺍﻟﺪﺭﺟﺔ ﺍﻷﻭﻟﻰ ،ﻳﻤﻜﻦ ﺗﻌﻴﻴﻦ ﻭﻇﺎﺉﻒ ﺍﻟﻤﺨﻄﻂ ﻟﻠﻤﺘﻐﻴﺮﺍﺕ ،ﻭﺗﻤﺮﻳﺮﻫﺎ ﻛﻤﻌﻠﻤﺎﺕ ،
ﻭﺇﻋﺎﺩﺗﻬﺎﻛﻘﻴﻢ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻇﺎﺉﻒ .ﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﺃﻳﻀﺎً ﻋﻨﺎﺻﺮ ﺍﻟﻘﻮﺍﺉﻢ .ﻟﻢ ﺗﻮﻓﺮ
ﺍﻹﺻﺪﺍﺭﺍﺕﺍﻟﻤﺒﻜﺮﺓ ﻣﻦ LISPﻛﻞ ﻫﺬﻩ ﺍﻟﻘﺪﺭﺍﺕ ،ﻭﻟﻢ ﺗﺴﺘﺨﺪﻡ ﺗﺤﺪﻳﺪ ﺍﻟﻨﻄﺎﻕ ﺍﻟﺜﺎﺑﺖ.
ﺑﺎﻋﺘﺒﺎﺭﻫﺎﻟﻐﺔ ﺻﻐﻴﺮﺓ ﺫﺍﺕ ﺑﻨﺎء ﺟﻤﻠﺔ ﻭﺩﻻﻻﺕ ﺑﺴﻴﻄﺔ ،ﻓﺈﻥ ﺍﻟﻤﺨﻄﻂ ﻣﻨﺎﺳﺐ ﺗﻤﺎﻣﺎً
ﻟﻠﺘﻄﺒﻴﻘﺎﺕﺍﻟﺘﻌﻠﻴﻤﻴﺔ ،ﻣﺜﻞ ﺍﻟﺪﻭﺭﺍﺕ ﺍﻟﺘﺪﺭﻳﺒﻴﺔ ﻓﻲ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ﻭﺍﻟﻤﻘﺪﻣﺎﺕ ﺍﻟﻌﺎﻣﺔ
ﻟﻠﺒﺮﻣﺠﺔ.ﺗﻢ ﻭﺻﻒ ﺍﻟﻤﺨﻄﻂ ﺑﺸﻲء ﻣﻦ ﺍﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺍﻟﻔﺼﻞ .15
ﺍﻟﻤﺸﺘﺮﻙ2.4.5.2 LISP
ﺧﻼﻝﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ﻭﺃﻭﺍﺉﻞ ﺍﻟﺜﻤﺎﻧﻴﻨﻴﺎﺕ ،ﺗﻢ ﺗﻄﻮﻳﺮ ﻭﺍﺳﺘﺨﺪﺍﻡ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﻟﻬﺠﺎﺕ LISP
ﺍﻟﻤﺨﺘﻠﻔﺔ.ﺃﺩﻯ ﺫﻟﻚ ﺇﻟﻰ ﻣﺸﻜﻠﺔ ﻣﺄﻟﻮﻓﺔ ﺗﺘﻤﺜﻞ ﻓﻲ ﻋﺪﻡ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻨﻘﻞ ﺑﻴﻦ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻜﺘﻮﺑﺔ
ﺑﺎﻟﻠﻬﺠﺎﺕﺍﻟﻤﺨﺘﻠﻔﺔ .ﺗﻢ ﺇﻧﺸﺎء LISPﺍﻟﻤﺸﺘﺮﻙ ) (Graham ، 1996ﻓﻲ ﻣﺤﺎﻭﻟﺔ ﻟﺘﺼﺤﻴﺢ ﻫﺬﺍ
ﺍﻟﻮﺿﻊ.ﺗﻢ ﺗﺼﻤﻴﻢ LISPﺍﻟﻤﺸﺘﺮﻙ ﻣﻦ ﺧﻼﻝ ﺍﻟﺠﻤﻊ ﺑﻴﻦ ﻣﻴﺰﺍﺕ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻟﻬﺠﺎﺕ LISP
ﺍﻟﺘﻲﺗﻢ ﺗﻄﻮﻳﺮﻫﺎ ﻓﻲ ﺃﻭﺍﺉﻞ ﺍﻟﺜﻤﺎﻧﻴﻨﻴﺎﺕ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ، Schemeﻓﻲ ﻟﻐﺔ ﻭﺍﺣﺪﺓ .ﻛﻮﻧﻬﺎ
ﻣﺰﻳﺠﺎًﻣﻦ ﻫﺬﺍ ﺍﻟﻘﺒﻴﻞ ،ﻓﺈﻥ LISPﺍﻟﺸﺎﺉﻌﺔ ﻫﻲ ﻟﻐﺔ ﻛﺒﻴﺮﺓ ﻭﻣﻌﻘﺪﺓ ﻧﺴﺒﻴﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ
ﺃﺳﺎﺳﻬﺎﻫﻮ LISPﺍﻟﺨﺎﻟﺺ ،ﻟﺬﺍ ﻓﺈﻥ ﺗﺮﻛﻴﺒﻬﺎ ﻭﻭﻇﺎﺉﻔﻬﺎ ﺍﻟﺒﺪﺍﺉﻴﺔ ﻭﻃﺒﻴﻌﺘﻬﺎ ﺍﻷﺳﺎﺳﻴﺔ ﺗﺄﺗﻲ
ﻣﻦﺗﻠﻚ ﺍﻟﻠﻐﺔ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 52
ﻣﻦﺧﻼﻝ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﻟﻤﺮﻭﻧﺔ ﺍﻟﺘﻲ ﻳﻮﻓﺮﻫﺎ ﺍﻟﻨﻄﺎﻕ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻲ ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺑﺴﺎﻃﺔ
ﺍﻟﻨﻄﺎﻕﺍﻟﺜﺎﺑﺖ ،ﻳﺴﻤﺢ LISPﺍﻟﻤﺸﺘﺮﻙ ﺑﻜﻠﻴﻬﻤﺎ .ﺍﻟﻨﻄﺎﻕ ﺍﻻﻓﺘﺮﺍﺿﻲ ﻟﻠﻤﺘﻐﻴﺮﺍﺕ ﻫﻮ ﺛﺎﺑﺖ ،
ﻭﻟﻜﻦﻋﻦ ﻃﺮﻳﻖ ﺍﻟﺘﺼﺮﻳﺢ ﻋﻦ ﺍﻟﻤﺘﻐﻴﺮ ﻟﻴﻜﻮﻥﺧﺎﺹ ،ﻳﺼﺒﺢ ﻫﺬﺍ ﺍﻟﻤﺘﻐﻴﺮ ﻣﺤﺪﺩ ﺍﻟﻨﻄﺎﻕ
ﺩﻳﻨﺎﻣﻴﻜﻴﺎً.
ﻳﺤﺘﻮﻱ LISPﺍﻟﺸﺎﺉﻊ ﻋﻠﻰ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﺍﻟﻬﻴﺎﻛﻞ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ
ﺍﻟﺴﺠﻼﺕﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻭﺍﻷﺭﻗﺎﻡ ﺍﻟﻤﺮﻛﺒﺔ ﻭﺳﻼﺳﻞ ﺍﻷﺣﺮﻑ .ﻛﻤﺎ ﺃﻥ ﻟﺪﻳﻬﺎ ﺷﻜﻞ ﻣﻦ ﺍﻟﺤﺰﻡ
ﻟﺘﻘﺴﻴﻢﻣﺠﻤﻮﻋﺎﺕ ﺍﻟﻮﻇﺎﺉﻒ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﺗﻮﻓﺮ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺍﻟﻮﺻﻮﻝ.
.ﻛﻼ ًﻣﻦ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ﻭﺍﻟﺒﺮﻣﺠﺔ ﺍﻹﺟﺮﺍﺉﻴﺔ .ﻛﻤﺎ ﺃﻧﻪ ﻳﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ ﺑﺸﻜﻞ
ﻛﺎﻣﻞ F #ﻳﺪﻋﻢ .NET.ﺃﻳﻀﺎً ﺃﻧﻪ ﻳﻤﻜﻨﻬﺎ ﺍﻟﺘﻌﺎﻣﻞ ﺑﺴﻼﺳﺔ ﻣﻊ ﺃﻱ ﻟﻐﺔ ﺃﺧﺮﻯ ﻣﻦ ﻟﻐﺎﺕ NET
ﺑﺎﻟﻜﺎﻣﻞ.ﻛﻮﻧﻪ .ﺗﻌﻨﻲ ﻟﻐﺔ .NETﻣﻊ ﻭﺻﻮﻝ ﻣﺒﺎﺷﺮ ﺇﻟﻰ ﻣﻜﺘﺒﺔ .NETﻫﻲ ﻟﻐﺔ (et al.، 2010
OCaml. F # )Symeﻫﻲ ﻟﻐﺔ ﻣﻜﺘﻮﺑﺔ ﺟﺪﻳﺪﺓ ﻧﺴﺒﻴﺎً ﺗﻌﺘﻤﺪ ﻣﺒﺎﺷﺮﺓ ﻋﻠﻰ ، F #ﺃﺧﻴﺮﺍً Haskell.
ﻭ MLﺗﻨﺤﺪﺭ ﻣﻦ ، OCaml )Smith ، 2006( ،ﻭﻟﻬﺠﺘﻬﺎ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ (
Caml )Cousineau et al. ، 1998
2.5.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﻛﺎﻥ ALGOL 60ﻧﺘﻴﺠﺔ ﺍﻟﺠﻬﻮﺩ ﺍﻟﻤﺒﺬﻭﻟﺔ ﻟﺘﺼﻤﻴﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻋﺎﻟﻤﻴﺔ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ.
ﺑﺤﻠﻮﻝﺃﻭﺍﺧﺮ ﻋﺎﻡ ، 1954ﻛﺎﻥ ﻧﻈﺎﻡ Laningﻭ Zierlerﺍﻟﺠﺒﺮﻱ ﻗﻴﺪ ﺍﻟﺘﺸﻐﻴﻞ ﻷﻛﺜﺮ ﻣﻦ ﻋﺎﻡ ،
ﻭﺗﻢﻧﺸﺮ ﺃﻭﻝ ﺗﻘﺮﻳﺮ ﻋﻦ .Fortranﺃﺻﺒﺤﺖ ﻟﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﺣﻘﻴﻘﺔ ﻭﺍﻗﻌﺔ ﻓﻲ ﻋﺎﻡ ، 1957ﻭﺗﻢ
ﺗﻄﻮﻳﺮﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻷﺧﺮﻯ .ﻛﺎﻥ ﺃﺑﺮﺯﻫﺎ ﻫﻮ ، ITﺍﻟﺬﻱ ﺻﻤﻤﻪ Perlis
Alanﻓﻲ ، Carnegie Techﻭﻟﻐﺘﻴﻦ ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ UNIVAC ، MATH-MATICﻭ
.UNICODEﺃﺩﻯ ﺍﻧﺘﺸﺎﺭ ﺍﻟﻠﻐﺎﺕ ﺇﻟﻰ ﺻﻌﻮﺑﺔ ﻣﺸﺎﺭﻛﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﻴﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ .ﻋﻼﻭﺓ ﻋﻠﻰ
ﺫﻟﻚ ،ﻧﺸﺄﺕ ﺟﻤﻴﻊ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺠﺪﻳﺪﺓ ﺣﻮﻝ ﻣﻌﻤﺎﺭﻳﺎﺕ ﻓﺮﺩﻳﺔ ،ﺑﻌﻀﻬﺎ ﻷﺟﻬﺰﺓ ﻛﻤﺒﻴﻮﺗﺮ
UNIVACﻭﺑﻌﻀﻬﺎ ﻷﺟﻬﺰﺓ .IBM 700-seriesﺭﺩﺍً ﻋﻠﻰ ﺍﺯﺩﻫﺎﺭ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﻌﺘﻤﺪﺓ ﻋﻠﻰ ﺍﻵﻟﺔ ،
ﻓﺈﻥﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﺠﻤﻮﻋﺎﺕ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻓﻲ ﺍﻟﻮﻻﻳﺎﺕ ﺍﻟﻤﺘﺤﺪﺓ ،ﺑﻤﺎ ﻓﻲ
ﺫﻟﻚ) SHAREﻣﺠﻤﻮﻋﺔ ﻣﺴﺘﺨﺪﻣﻲ IBMﺍﻟﻌﻠﻤﻴﻴﻦ( ﻭ Scientific Exchange) USE
، UNIVACﻣﺠﻤﻮﻋﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻌﻠﻤﻴﺔ UNIVACﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ( ،ﻗﺪﻣﺖ ﻋﺮﻳﻀﺔ
ﺇﻟﻰﺟﻤﻌﻴﺔ ﺁﻻﺕ ﺍﻟﺤﻮﺳﺒﺔ ) (ACMﻓﻲ 10ﻣﺎﻳﻮ ، 1957ﻟﺘﺸﻜﻴﻞ ﻟﺠﻨﺔ ﻟﻠﺪﺭﺍﺳﺔ ﻭﺍﻟﺘﻮﺻﻴﺔ
ﺑﺎﺗﺨﺎﺫﺇﺟﺮﺍءﺍﺕ ﻹﻧﺸﺎء ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻋﻠﻤﻴﺔ ﻣﺴﺘﻘﻠﺔ ﻋﻦ ﺍﻵﻟﺔ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻟﻐﺔ Fortran
ﻗﺪﺗﻜﻮﻥ ﻣﺮﺷﺤﺎً ،ﺇﻻ ﺃﻧﻬﺎ ﻻ ﻳﻤﻜﻦ ﺃﻥ ﺗﺼﺒﺢ ﻟﻐﺔ ﻋﺎﻟﻤﻴﺔ ،ﻷﻧﻬﺎ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ ﻛﺎﻧﺖ ﻣﻤﻠﻮﻛﺔ
ﻟﺸﺮﻛﺔ IBMﻭﺣﺪﻫﺎ.
• ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﺗﺮﻛﻴﺐ ﺍﻟﻠﻐﺔ ﺃﻗﺮﺏ ﻣﺎ ﻳﻜﻮﻥ ﺇﻟﻰ ﺍﻟﺘﺪﻭﻳﻦ ﺍﻟﺮﻳﺎﺿﻲ ﺍﻟﻘﻴﺎﺳﻲ ،ﻭﻳﺠﺐ ﺃﻥ
ﺗﻜﻮﻥﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻜﺘﻮﺑﺔ ﻓﻴﻪ ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮﺍءﺓ ﻣﻊ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﻟﺸﺮﺡ ﺍﻹﺿﺎﻓﻲ.
ﺃﺷﺎﺭﺍﻟﻬﺪﻑ ﺍﻷﻭﻝ ﺇﻟﻰ ﺃﻥ ﺍﻟﻠﻐﺔ ﺍﻟﺠﺪﻳﺪﺓ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻘﺮﺭ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﻲ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻌﻠﻤﻴﺔ ،
ﻭﺍﻟﺘﻲﻛﺎﻧﺖ ﻣﺠﺎﻝ ﺗﻄﺒﻴﻖ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻷﺳﺎﺳﻲ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ .ﻛﺎﻥ ﺍﻟﺜﺎﻧﻲ ﺷﻴﺉﺎً ﺟﺪﻳﺪﺍً ﺗﻤﺎﻣﺎً
ﻓﻲﻣﺠﺎﻝ ﺍﻟﺤﻮﺳﺒﺔ .ﺍﻟﻬﺪﻑ ﺍﻷﺧﻴﺮ ﻫﻮ ﺿﺮﻭﺭﺓ ﻭﺍﺿﺤﺔ ﻷﻱ ﻟﻐﺔ ﺑﺮﻣﺠﺔ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 54
ﻧﺠﺢﺍﺟﺘﻤﺎﻉ ﺯﻳﻮﺭﺥ ﻓﻲ ﺇﻧﺘﺎﺝ ﻟﻐﺔ ﺗﻠﺒﻲ ﺍﻷﻫﺪﺍﻑ ﺍﻟﻤﻌﻠﻨﺔ ،ﻟﻜﻦ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ ﺗﻄﻠﺒﺖ
ﺗﻨﺎﺯﻻﺕﻻ ﺣﺼﺮ ﻟﻬﺎ ،ﺑﻴﻦ ﺍﻷﻓﺮﺍﺩ ﻭﺑﻴﻦ ﺟﺎﻧﺒﻲ ﺍﻟﻤﺤﻴﻂ ﺍﻷﻃﻠﺴﻲ .ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ،ﻟﻢ ﺗﻜﻦ
ﺍﻟﺤﻠﻮﻝﺍﻟﻮﺳﻂ ﺗﺪﻭﺭ ﺣﻮﻝ ﻗﻀﺎﻳﺎ ﻛﺒﻴﺮﺓ ﺑﻘﺪﺭ ﻣﺎ ﻛﺎﻧﺖ ﺗﺘﻌﻠﻖ ﺑﻤﺠﺎﻻﺕ ﺍﻟﻨﻔﻮﺫ .ﺇﻥ ﻣﺴﺄﻟﺔ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻔﺎﺻﻠﺔ )ﺍﻟﻄﺮﻳﻘﺔ ﺍﻷﻭﺭﻭﺑﻴﺔ( ﺃﻭ ﺍﻟﻨﻘﻄﺔ )ﺍﻟﻄﺮﻳﻘﺔ ﺍﻷﻣﺮﻳﻜﻴﺔ( ﻟﻠﻔﺎﺻﻠﺔ ﺍﻟﻌﺸﺮﻳﺔ ﻫﻲ ﺃﺣﺪ
ﺍﻷﻣﺜﻠﺔ.
ﻣﻦﻧﻮﺍﺡ ﻛﺜﻴﺮﺓ ،ﻛﺎﻥ ALGOL 58ﺳﻠﻴﻼً ﻟـ ، Fortranﻭﻫﻮ ﺃﻣﺮ ﻃﺒﻴﻌﻲ ﺗﻤﺎﻣﺎً .ﻗﺎﻣﺖ
ﺑﺘﻌﻤﻴﻢﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻴﺰﺍﺕ Fortranﻭﺇﺿﺎﻓﺔ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﻭﺍﻟﻤﻔﺎﻫﻴﻢ ﺍﻟﺠﺪﻳﺪﺓ .ﺑﻌﺾ
ﺍﻟﺘﻌﻤﻴﻤﺎﺕﻛﺎﻥ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﻬﺪﻑ ﻋﺪﻡ ﺭﺑﻂ ﺍﻟﻠﻐﺔ ﺑﺄﻱ ﺁﻟﺔ ﻣﻌﻴﻨﺔ ،ﻭﺍﻟﺒﻌﺾ ﺍﻵﺧﺮ ﻛﺎﻥ ﻣﺤﺎﻭﻻﺕ
ﻟﺠﻌﻞﺍﻟﻠﻐﺔ ﺃﻛﺜﺮ ﻣﺮﻭﻧﺔ ﻭﻗﻮﺓ .ﻇﻬﺮ ﻣﺰﻳﺞ ﻧﺎﺩﺭ ﻣﻦ ﺍﻟﺒﺴﺎﻃﺔ ﻭﺍﻷﻧﺎﻗﺔ ﻣﻦ ﻫﺬﺍ ﺍﻟﺠﻬﺪ.
ﻗﺎﻡ ALGOL 58ﺑﺈﺿﻔﺎء ﺍﻟﻄﺎﺑﻊ ﺍﻟﺮﺳﻤﻲ ﻋﻠﻰ ﻣﻔﻬﻮﻡ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ
ﺍﻟﻤﺘﻐﻴﺮﺍﺕﺍﻟﺘﻲ ﻟﻢ ﺗﻜﻦ ﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ ﺗﺘﻄﻠﺐ ﺗﺼﺮﻳﺤﺎً ﺻﺮﻳﺤﺎً .ﺃﺿﺎﻑ ﻓﻜﺮﺓ ﺍﻟﻌﺒﺎﺭﺍﺕ
ﺍﻟﻤﺮﻛﺒﺔ ،ﻭﺍﻟﺘﻲ ﺃﺩﺭﺟﺘﻬﺎ ﻣﻌﻈﻢ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻼﺣﻘﺔ .ﻓﻴﻤﺎ ﻳﻠﻲ ﺑﻌﺾ ﻣﻴﺰﺍﺕ Fortranﺍﻟﺘﻲ ﺗﻢ
ﺗﻌﻤﻴﻤﻬﺎ:ﺗﻢ ﺍﻟﺴﻤﺎﺡ ﻟﻠﻤﻌﺮﻓﺎﺕ ﺑﺄﻱ ﻃﻮﻝ ،ﻋﻠﻰ ﻋﻜﺲ ﺗﻘﻴﻴﺪ Fortran Iﺑﺴﺘﺔ ﺃﺣﺮﻑ ﺃﻭ
ﺃﻗﻞ ؛ﺗﻢ ﺍﻟﺴﻤﺎﺡ ﺑﺄﻱ ﻋﺪﺩ ﻣﻦ ﺃﺑﻌﺎﺩ ﺍﻟﺼﻔﻴﻒ ،ﻋﻠﻰ ﻋﻜﺲ ﻗﻴﻮﺩ Fortran Iﻋﻠﻰ ﻣﺎ ﻻ ﻳﺰﻳﺪ
ﻋﻦﺛﻼﺛﺔ ؛ ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ ﺗﺤﺪﻳﺪ ﺍﻟﺤﺪ ﺍﻷﺩﻧﻰ ﻟﻠﻤﺼﻔﻮﻓﺎﺕ ،ﺑﻴﻨﻤﺎ ﻓﻲ Fortranﻛﺎﻥ ﺍﻟﺤﺪ
ﺍﻷﺩﻧﻰ 1؛ ﺗﻢ ﺍﻟﺴﻤﺎﺡ ﺑﻌﺒﺎﺭﺍﺕ ﺍﻻﺧﺘﻴﺎﺭ ﺍﻟﻤﺘﺪﺍﺧﻠﺔ ،ﻭﻟﻢ ﻳﻜﻦ ﻫﺬﺍ ﻫﻮ ﺍﻟﺤﺎﻝ ﻓﻲ .Fortran I
ﺍﺳﺘﺤﻮﺫ ALGOL 58ﻋﻠﻰ ﻋﺎﻣﻞ ﺍﻟﺘﺨﺼﻴﺺ ﺑﻄﺮﻳﻘﺔ ﻏﻴﺮ ﻋﺎﺩﻳﺔ ﺇﻟﻰ ﺣﺪ ﻣﺎ .ﺍﺳﺘﺨﺪﻡ
Zuseﺍﻟﻨﻤﻮﺫﺝ
ﺍﻟﺘﻌﺒﻴﺮ=< ﻣﺘﻐﻴﺮ
ﻟﺒﻴﺎﻥﺍﻟﺘﻨﺎﺯﻝ ﻓﻲ .Plankalkülﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﻋﺪﻡ ﻧﺸﺮ Plankalkülﺑﻌﺪ ،ﺇﻻ ﺃﻥ ﺑﻌﺾ
ﺍﻷﻋﻀﺎءﺍﻷﻭﺭﻭﺑﻴﻴﻦ ﻓﻲ ﻟﺠﻨﺔ ALGOL 58ﻛﺎﻧﻮﺍ ﻋﻠﻰ ﺩﺭﺍﻳﺔ ﺑﺎﻟﻠﻐﺔ .ﺍﻧﺨﺮﻃﺖ ﺍﻟﻠﺠﻨﺔ ﻓﻲ ﻧﻤﻮﺫﺝ
ﺗﻌﻴﻴﻦ Plankalkülﻭﻟﻜﻦ ﺑﺴﺒﺐ ﺍﻟﺤﺠﺞ ﺣﻮﻝ ﻗﻴﻮﺩ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ 4،ﺗﻢ ﺗﻐﻴﻴﺮ ﺭﻣﺰ ﺃﻛﺒﺮ ﻣﻦ
ﺇﻟﻰﻧﻘﻄﺘﻴﻦ .ﺑﻌﺪ ﺫﻟﻚ ،ﻭﺑﺈﺻﺮﺍﺭ ﻣﻦ ﺍﻷﻣﺮﻳﻜﻴﻴﻦ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ،ﺗﻢ ﺗﺤﻮﻳﻞ ﺍﻟﺒﻴﺎﻥ ﺑﺎﻟﻜﺎﻣﻞ ﺇﻟﻰ
ﻧﻤﻮﺫﺝﻓﻮﺭﺗﺮﺍﻥ
ﺍﻟﻤﺘﻐﻴﺮ =:ﺍﻟﺘﻌﺒﻴﺮ
ﻓﻀﻞﺍﻷﻭﺭﻭﺑﻴﻮﻥ ﺍﻟﺸﻜﻞ ﺍﻟﻤﻌﺎﻛﺲ ،ﻟﻜﻦ ﻫﺬﺍ ﺳﻴﻜﻮﻥ ﻋﻜﺲ ﻓﻮﺭﺗﺮﺍﻥ.
ﻟﻢﻳﻜﻦ ﺑﺎﻗﻲ ﻣﺠﺘﻤﻊ ﺍﻟﺤﻮﺳﺒﺔ ﻓﻲ ﺍﻟﻮﻻﻳﺎﺕ ﺍﻟﻤﺘﺤﺪﺓ ﻟﻄﻴﻔﺎً ﺟﺪﺍً ﻣﻊ ﺍﻟﻠﻐﺔ ﺍﻟﺠﺪﻳﺪﺓ .ﻓﻲ
ﺍﻟﺒﺪﺍﻳﺔ ،ﺑﺪﺍ ﺃﻥ ﻛﻞ ﻣﻦ IBMﻭﻣﺠﻤﻮﻋﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻌﻠﻤﻴﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﺘﺎﺑﻌﺔ ﻟﻬﺎ SHARE ،
،ﺗﺘﺒﻨﻰ .ALGOL 58ﺑﺪﺃﺕ IBMﻓﻲ ﺍﻟﺘﻨﻔﻴﺬ ﺑﻌﺪ ﻭﻗﺖ ﻗﺼﻴﺮ ﻣﻦ ﻧﺸﺮ ﺍﻟﺘﻘﺮﻳﺮ ،ﻭﺷﻜﻠﺖ
SHAREﻟﺠﻨﺔ ﻓﺮﻋﻴﺔ ، SHARE IAL ،ﻟﺪﺭﺍﺳﺔ ﺍﻟﻠﻐﺔ .ﺃﻭﺻﺖ ﺍﻟﻠﺠﻨﺔ ﺍﻟﻔﺮﻋﻴﺔ ﻓﻴﻤﺎ ﺑﻌﺪ ﺑﺄﻥ
ﺗﻘﻮﻡ ACMﺑﺘﻮﺣﻴﺪ ALGOL 58ﻭﺃﻥ ﺗﻘﻮﻡ ﺷﺮﻛﺔ IBMﺑﺘﻄﺒﻴﻘﻪ ﻋﻠﻰ ﺟﻤﻴﻊ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﻣﻦﺍﻟﺴﻠﺴﻠﺔ .700ﻟﻜﻦ ﺍﻟﺤﻤﺎﺱ ﻟﻢ ﻳﺪﻡ ﻃﻮﻳﻼ .ﺑﺤﻠﻮﻝ ﺭﺑﻴﻊ ﻋﺎﻡ ، 1959ﻛﺎﻥ ﻟﺪﻯ ﻛﻞ ﻣﻦ
IBMﻭ ، SHAREﻣﻦ ﺧﻼﻝ ﺗﺠﺮﺑﺘﻬﻢ ﻓﻲ ، Fortranﻣﺎ ﻳﻜﻔﻲ ﻣﻦ ﺍﻷﻟﻢ ﻭﺍﻟﻨﻔﻘﺎﺕ ﻟﺒﺪء ﻟﻐﺔ
ﺟﺪﻳﺪﺓ ،ﺳﻮﺍء ﻣﻦ ﺣﻴﺚ ﺗﻄﻮﻳﺮ ﻭﺍﺳﺘﺨﺪﺍﻡ ﻣﺘﺮﺟﻤﻲ ﺍﻟﺠﻴﻞ ﺍﻷﻭﻝ ﻭﻣﻦ ﺣﻴﺚ ﺗﺪﺭﻳﺐ
ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﻋﻠﻰ ﺫﻟﻚ .ﺍﻟﻠﻐﺔ ﺍﻟﺠﺪﻳﺪﺓ ﻭﺇﻗﻨﺎﻋﻬﻢ ﺑﺎﺳﺘﺨﺪﺍﻣﻬﺎ .ﺑﺤﻠﻮﻝ ﻣﻨﺘﺼﻒ ﻋﺎﻡ ، 1959ﺍﻝ
ﻟﻐﺔﻋﻠﻤﻴﺔ ﻵﻻﺕ ﺳﻠﺴﻠﺔ ، IBM 700ﻭﺑﺎﻟﺘﺎﻟﻲ ﺍﻟﺘﺨﻠﻲ ﻋﻦ .ALGOL 58
ﻋﻀﻮﻓﻲ ﻣﺠﻤﻮﻋﺔ ﺯﻳﻮﺭﺥ .ﻛﺎﻥ ﻧﻮﺭ ﻫﻮ ﻣﻦ ﺃﻧﺸﺄ ﻭﻧﺸﺮ ﻣﻠﻒ ﻧﺸﺮﺓ .ALGOLﻗﻀﻰ ﻭﻗﺘﺎً ﻃﻮﻳﻼ ً
ﻓﻲﺩﺭﺍﺳﺔ ﻭﺭﻗﺔ ﺑﺎﻛﻮﺱ ﺍﻟﺘﻲ ﻗﺪﻣﺖ BNFﻭﻗﺮﺭ ﺍﺳﺘﺨﺪﺍﻡ BNFﻟﻮﺻﻒ ﻧﺘﺎﺉﺞ ﺍﺟﺘﻤﺎﻉ 1960
ﺭﺳﻤﻴﺎً.ﺑﻌﺪ ﺇﺟﺮﺍء ﺑﻌﺾ ﺍﻟﺘﻐﻴﻴﺮﺍﺕ ﺍﻟﻄﻔﻴﻔﺔ ﻧﺴﺒﻴﺎً ﻋﻠﻰ ، BNFﻛﺘﺐ ﻭﺻﻔﺎً ﻟﻠﻐﺔ ﺍﻟﻤﻘﺘﺮﺣﺔ
ﺍﻟﺠﺪﻳﺪﺓﻓﻲ BNFﻭﻭﺯﻋﻪ ﻋﻠﻰ ﺃﻋﻀﺎء ﻣﺠﻤﻮﻋﺔ 1960ﻓﻲ ﺑﺪﺍﻳﺔ ﺍﻻﺟﺘﻤﺎﻉ.
• ﺗﻢ ﺗﻘﺪﻳﻢ ﻣﻔﻬﻮﻡ ﻫﻴﻜﻞ ﺍﻟﻜﺘﻠﺔ .ﺳﻤﺢ ﺫﻟﻚ ﻟﻠﻤﺒﺮﻣﺞ ﺑﺘﻮﻃﻴﻦ ﺃﺟﺰﺍء ﻣﻦ ﺍﻟﺒﺮﺍﻣﺞ ﻋﻦ ﻃﺮﻳﻖ
ﺇﺩﺧﺎﻝﺑﻴﺉﺎﺕ ﺃﻭ ﻧﻄﺎﻗﺎﺕ ﺑﻴﺎﻧﺎﺕ ﺟﺪﻳﺪﺓ.
• ﺳﻤُﺢ ﺑﻮﺳﻴﻠﺘﻴﻦ ﻣﺨﺘﻠﻔﺘﻴﻦ ﻟﺘﻤﺮﻳﺮ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺇﻟﻰ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ :ﺍﻟﺘﻤﺮﻳﺮ ﺣﺴﺐ ﺍﻟﻘﻴﻤﺔ
ﻭﺍﻟﻤﺮﻭﺭﺑﺎﻻﺳﻢ.
• ﺗﻢ ﺍﻟﺴﻤﺎﺡ ﻟﻺﺟﺮﺍءﺍﺕ ﺃﻥ ﺗﻜﻮﻥ ﻋﻮﺩﻳﺔ .ﻟﻢ ﻳﻜﻦ ﻭﺻﻒ ALGOL 58ﻭﺍﺿﺤﺎً ﺑﺸﺄﻥ ﻫﺬﻩ
ﺍﻟﻤﺴﺄﻟﺔ.ﻻﺣﻆ ﺃﻧﻪ ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻫﺬﺍ ﺍﻟﺘﻜﺮﺍﺭ ﻛﺎﻥ ﺟﺪﻳﺪﺍً ﻟﻠﻐﺎﺕ ﺍﻷﻣﺮ ،ﻓﻘﺪ ﻗﺪﻡ LISP
ﺑﺎﻟﻔﻌﻞﻭﻇﺎﺉﻒ ﺗﻜﺮﺍﺭﻳﺔ ﻓﻲ ﻋﺎﻡ .1959
ﻧﺸُﺮﺗﻘﺮﻳﺮ ALGOL 60ﻓﻲ ﻣﺎﻳﻮ .(Naur ، 1960) 1960ﻻ ﻳﺰﺍﻝ ﻫﻨﺎﻙ ﻋﺪﺩ ﻣﻦ
ﺍﻟﻐﻤﻮﺽﻓﻲ ﻭﺻﻒ ﺍﻟﻠﻐﺔ ،ﻭﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻘﺮﺭ ﻋﻘﺪ ﺍﺟﺘﻤﺎﻉ ﺛﺎﻟﺚ ﻓﻲ ﺃﺑﺮﻳﻞ 1962ﻓﻲ ﺭﻭﻣﺎ
ﻟﻤﻌﺎﻟﺠﺔﺍﻟﻤﺸﺎﻛﻞ .ﻓﻲ ﻫﺬﺍ ﺍﻻﺟﺘﻤﺎﻉ ﺗﻌﺎﻣﻠﺖ ﺍﻟﻤﺠﻤﻮﻋﺔ ﻣﻊ ﺍﻟﻤﺸﺎﻛﻞ ﻓﻘﻂ .ﻟﻢ ﻳﺴُﻤﺢ
ﺑﺈﺿﺎﻓﺎﺕﺇﻟﻰ ﺍﻟﻠﻐﺔ .ﺗﻢ ﻧﺸﺮ ﻧﺘﺎﺉﺞ ﻫﺬﺍ ﺍﻻﺟﺘﻤﺎﻉ ﺗﺤﺖ ﻋﻨﻮﺍﻥ "ﺗﻘﺮﻳﺮ ﻣﻨﻘﺢ ﻋﻦ ﺍﻟﻠﻐﺔ
ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺔ) "ALGOL 60ﺑﺎﻛﻮﺱ ﻭﺁﺧﺮﻭﻥ .(1963 ،
2.5.7ﺍﻟﺘﻘﻴﻴﻢ
ﻣﻦﺑﻌﺾ ﺍﻟﻨﻮﺍﺣﻲ ،ﺣﻘﻖ ALGOL 60ﻧﺠﺎﺣﺎً ﻛﺒﻴﺮﺍً ؛ ﻣﻦ ﻧﻮﺍﺡ ٍﺃﺧﺮﻯ ،ﻛﺎﻥ ﻓﺸﻼ ًﺫﺭﻳﻌﺎً .ﻧﺠﺢ
ﻓﻲﺃﻥ ﻳﺼﺒﺢ ،ﻋﻠﻰ ﺍﻟﻔﻮﺭ ﺗﻘﺮﻳﺒﺎً ،ﺍﻟﻮﺳﻴﻠﺔ ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﻮﺣﻴﺪﺓ ﺍﻟﻤﻘﺒﻮﻟﺔ ﻟﺘﻮﺻﻴﻞ ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺎﺕ
ﻓﻲﺃﺩﺑﻴﺎﺕ ﺍﻟﺤﻮﺳﺒﺔ ،ﻭﻇﻞ ﻛﺬﻟﻚ ﻷﻛﺜﺮ ﻣﻦ 20ﻋﺎﻣﺎً .ﻛﻞ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺿﺮﻭﺭﻳﺔ ﺗﻢ ﺗﺼﻤﻴﻤﻬﺎ
ﻣﻨﺬﻋﺎﻡ 1960ﺗﺪﻳﻦ ﺑﺸﻲء ﻟـ .ALGOL 60ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻣﻌﻈﻤﻬﺎ ﻣﺒﺎﺷﺮ
57 2.5ﺍﻟﺨﻄﻮﺓ ﺍﻷﻭﻟﻰ ﻧﺤﻮ ﺍﻟﺘﻄﻮﺭALGOL 60 :
ﺃﻭﺃﺣﻔﺎﺩ ﻏﻴﺮ ﻣﺒﺎﺷﺮ ؛ ﺗﺘﻀﻤﻦ ﺍﻷﻣﺜﻠﺔ PL / Iﻭ SIMULA 67ﻭ ALGOL 68ﻭ Cﻭ Pascalﻭ
Adaﻭ ++ Cﻭ Javaﻭ .# C
ﺗﻀﻤﻨﺖﺟﻬﻮﺩ ﺗﺼﻤﻴﻢ ALGOL 58 / ALGOL 60ﻗﺎﺉﻤﺔ ﻃﻮﻳﻠﺔ ﻣﻦ ﺍﻷﻭﺍﺉﻞ .ﻛﺎﻧﺖ
ﻫﺬﻩﻫﻲ ﺍﻟﻤﺮﺓ ﺍﻷﻭﻟﻰ ﺍﻟﺘﻲ ﺣﺎﻭﻟﺖ ﻓﻴﻬﺎ ﻣﺠﻤﻮﻋﺔ ﺩﻭﻟﻴﺔ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ .ﻛﺎﻧﺖ ﺃﻭﻝ ﻟﻐﺔ
ﺻﻤُﻤﺖﻟﺘﻜﻮﻥ ﻣﺴﺘﻘﻠﺔ ﻋﻦ ﺍﻵﻟﺔ .ﻛﺎﻧﺖ ﺃﻳﻀﺎً ﺍﻟﻠﻐﺔ ﺍﻷﻭﻟﻰ ﺍﻟﺘﻲ ﺗﻢ ﻭﺻﻒ ﺗﺮﻛﻴﺒﻬﺎ ﺭﺳﻤﻴﺎً .ﺑﺪﺃ
ﻫﺬﺍﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻨﺎﺟﺢ ﻟﺸﻜﻠﻴﺔ BNFﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺠﺎﻻﺕ ﺍﻟﻤﻬﻤﺔ ﻟﻌﻠﻮﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ :ﺍﻟﻠﻐﺎﺕ
ﺍﻟﺮﺳﻤﻴﺔ ،ﻭﻧﻈﺮﻳﺔ ﺍﻟﺘﺤﻠﻴﻞ ،ﻭﺗﺼﻤﻴﻢ ﺍﻟﻤﺘﺮﺟﻢ ﺍﻟﻤﺴﺘﻨﺪ ﺇﻟﻰ .BNFﺃﺧﻴﺮﺍً ،ﺃﺛﺮ ﻫﻴﻜﻞ 60
ALGOLﻋﻠﻰ ﺑﻨﻴﺔ ﺍﻟﻤﺎﻛﻴﻨﺔ .ﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻷﻛﺜﺮ ﻭﺿﻮﺣﺎ ﻋﻠﻰ ﺫﻟﻚ ،ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻣﺘﺪﺍﺩ ﺍﻟﻠﻐﺔ
ﻛﻠﻐﺔﺃﻧﻈﻤﺔ ﻟﺴﻠﺴﻠﺔ ﻣﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻭﺍﺳﻌﺔ ﺍﻟﻨﻄﺎﻕ ،ﺁﻻﺕ Burroughs B5000ﻭ
B6000ﻭ ، B7000ﻭﺍﻟﺘﻲ ﺗﻢ ﺗﺼﻤﻴﻤﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻜﺪﺱ ﺃﺟﻬﺰﺓ ﻟﺘﻨﻔﻴﺬ ﺍﻟﻜﺘﻠﺔ ﺑﻜﻔﺎءﺓ ﺍﻟﺒﻨﻴﺔ
ﻭﺍﻟﺒﺮﺍﻣﺞﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﻌﻮﺩﻳﺔ ﻟﻠﻐﺔ.
ﻋﻠﻰﺍﻟﺠﺎﻧﺐ ﺍﻵﺧﺮ ﻣﻦ ﺍﻟﻌﻤﻠﺔ ،ﻟﻢ ﻳﺤﻘﻖ ALGOL 60ﺍﺳﺘﺨﺪﺍﻣﺎً ﻭﺍﺳﻊ ﺍﻟﻨﻄﺎﻕ ﻓﻲ
ﺍﻟﻮﻻﻳﺎﺕﺍﻟﻤﺘﺤﺪﺓ .ﺣﺘﻰ ﻓﻲ ﺃﻭﺭﻭﺑﺎ ،ﺣﻴﺚ ﻛﺎﻧﺖ ﺃﻛﺜﺮ ﺷﻌﺒﻴﺔ ﻣﻦ ﺍﻟﻮﻻﻳﺎﺕ ﺍﻟﻤﺘﺤﺪﺓ ،ﻟﻢ ﺗﺼﺒﺢ
ﺃﺑﺪﺍًﺍﻟﻠﻐﺔ ﺍﻟﻤﻬﻴﻤﻨﺔ .ﻫﻨﺎﻙ ﻋﺪﺩ ﻣﻦ ﺍﻷﺳﺒﺎﺏ ﻟﻌﺪﻡ ﻗﺒﻮﻟﻬﺎ .ﻟﺴﺒﺐ ﻭﺍﺣﺪ ،ﺗﺒﻴﻦ ﺃﻥ ﺑﻌﺾ
ﻣﻴﺰﺍﺕ ALGOL 60ﻣﺮﻧﺔ ﻟﻠﻐﺎﻳﺔ ؛ ﺟﻌﻠﻮﺍ ﺍﻟﻔﻬﻢ ﺻﻌﺒﺎً ﻭﺍﻟﺘﻨﻔﻴﺬ ﻏﻴﺮ ﻓﻌﺎﻝ .ﺃﻓﻀﻞ ﻣﺜﺎﻝ ﻋﻠﻰ
ﺫﻟﻚﻫﻮ ﻃﺮﻳﻘﺔ ﺗﻤﺮﻳﺮ ﺍﻻﺳﻢ ﻟﺘﻤﺮﻳﺮ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺇﻟﻰ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ،ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓﻲ
ﺍﻟﻔﺼﻞ .9ﻭﻳﺘﻀﺢ ﺍﻟﺼﻌﻮﺑﺎﺕ ﺍﻟﺘﻲ ﺗﻮﺍﺟﻪ ﺗﻨﻔﻴﺬ ALGOL 60ﻣﻦ ﺧﻼﻝ ﺑﻴﺎﻥ ﺭﻭﺗﻴﺸﺎﻭﺳﺮ ﻓﻲ
ﻋﺎﻡ 1967ﺃﻥ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ،ﺇﻥ ﻭﺟﺪﺕ ،ﺗﻀﻤﻨﺖ ALGOLﺍﻟﻜﺎﻣﻞ 60ﻟﻐﺔ )
ﺭﻭﺗﻴﺸﻮﺯﺭ ، 1967،ﺹ .(8
ﻛﺎﻥﻋﺪﻡ ﻭﺟﻮﺩ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻤﺪﺧﻼﺕ ﻭﺍﻟﻤﺨﺮﺟﺎﺕ ﻓﻲ ﺍﻟﻠﻐﺔ ﺳﺒﺒﺎً ﺭﺉﻴﺴﻴﺎً ﺁﺧﺮ ﻟﻌﺪﻡ ﻗﺒﻮﻟﻬﺎ.
ﺃﺩﻯﺍﻹﺩﺧﺎﻝ /ﺍﻹﺧﺮﺍﺝ ﺍﻟﻤﻌﺘﻤﺪ ﻋﻠﻰ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺻﻌﻮﺑﺔ ﻧﻘﻞ ﺍﻟﺒﺮﺍﻣﺞ ﺇﻟﻰ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺍﻷﺧﺮﻯ.
ﻭﻣﻦﺍﻟﻤﻔﺎﺭﻗﺎﺕ ،ﺃﻥ ﺃﺣﺪ ﺃﻫﻢ ﺍﻟﻤﺴﺎﻫﻤﺎﺕ ﻓﻲ ﻋﻠﻮﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑـ 60 ، BNF
، ALGOLﻛﺎﻥ ﺃﻳﻀﺎً ﻋﺎﻣﻼ ًﻓﻲ ﻋﺪﻡ ﻗﺒﻮﻟﻪ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ BNFﻳﻌﺘﺒﺮ ﺍﻵﻥ ﻭﺳﻴﻠﺔ ﺑﺴﻴﻄﺔ
ﻭﺃﻧﻴﻘﺔﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ ،ﺇﻻ ﺃﻧﻪ ﻓﻲ ﻋﺎﻡ 1960ﺑﺪﺍ ﻏﺮﻳﺒﺎً ﻭﻣﻌﻘﺪﺍً.
ﺃﺧﻴﺮﺍً ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﻭﺟﻮﺩ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺸﻜﻼﺕ ﺍﻷﺧﺮﻯ ،ﺭﺑﻤﺎ ﻛﺎﻥ ﺗﺮﺳﻴﺦ ﻓﻮﺭﺗﺮﺍﻥ
ﺑﻴﻦﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻭﻧﻘﺺ ﺍﻟﺪﻋﻢ ﻣﻦ ﻗﺒﻞ ﺷﺮﻛﺔ IBMﻣﻦ ﺃﻫﻢ ﺍﻟﻌﻮﺍﻣﻞ ﻓﻲ ﻓﺸﻞ ALGOL 60
ﻓﻲﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺍﺳﻊ ﺍﻟﻨﻄﺎﻕ.
ﻟﻢﻳﻜﻦ ﺟﻬﺪ ALGOL 60ﻣﻜﺘﻤﻼً ﺣﻘﺎً ،ﺑﻤﻌﻨﻰ ﺃﻥ ﺍﻟﻐﻤﻮﺽ ﻭﺍﻟﻐﻤﻮﺽ ﻛﺎﻥ ﺩﺍﺉﻤﺎً ﺟﺰءﺍً
ﻣﻦﻭﺻﻒ ﺍﻟﻠﻐﺔ ).(Knuth ، 1967
ﺍﻟﻨﺘﻴﺠﺔ 0 =:؛
؛ (readint )listlen
ﻟﻮ)(listlen >100() ∧listlen< 0ﺛﻢ
ﻳﺒﺪﺃ
ﺗﻌﻠﻴﻖﻗﺮﺍءﺓ ﺍﻟﻤﺪﺧﻼﺕ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﻭﺣﺴﺎﺏ ﺍﻟﻤﺘﻮﺳﻂ ؛
ﻝﺍﻟﻌﺪﺍﺩ1 = :ﺧﻄﻮﺓ1ﺣﺘﻰlistlenﻳﻔﻌﻞ
ﻳﺒﺪﺃ
[: = sum + intlist ]counter؛ ﺍﻟﻤﺠﻤﻮﻉ
([ readint )intlist ]counterﻧﻬﺎﻳﺔ؛
ﺗﻌﻠﻴﻖﺍﺣﺴﺐ ﺍﻟﻤﺘﻮﺳﻂ
ﺍﻟﻤﺘﻮﺳﻂ sum / listlen =:؛
ﺗﻌﻠﻴﻖﺣﺴﺎﺏ ﻗﻴﻢ ﺍﻹﺩﺧﺎﻝ ﺍﻟﺘﻲ ﻫﻲ< ﻣﺘﻮﺳﻂ ؛
ﻝﺍﻟﻌﺪﺍﺩ1 = :ﺧﻄﻮﺓ1ﺣﺘﻰlistlenﻳﻔﻌﻞ
ﻟﻮﻣﺘﻮﺳﻂ <[ﻋﺪﺍﺩ] intlist
ﺛﻢﺍﻟﻨﺘﻴﺠﺔ = :ﻧﺘﻴﺠﺔ 1 +؛ ﻧﺘﻴﺠﺔ ﺍﻟﻄﺒﺎﻋﺔ
ﺗﻌﻠﻴﻖ
(ﻧﺘﻴﺠﺔ) printint؛(":ﻋﺪﺩ ﺍﻟﻘﻴﻢ< ﺍﻟﻤﺘﻮﺳﻂ ﻫﻮ") printstring
ﻧﻬﺎﻳﺔ
ﺁﺧﺮ
ﺧﻄﺄ -ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ" ؛") printstring
ﻧﻬﺎﻳﺔ
.5ﻓﻲ ﺃﻭﺍﺧﺮ ﺍﻟﺘﺴﻌﻴﻨﻴﺎﺕ ،ﻓﻲ ﺩﺭﺍﺳﺔ ﻣﺮﺗﺒﻄﺔ ﺑﻤﺸﻜﻠﺔ ﻋﺎﻡ ، 2000ﻗﺪﺭ ﺃﻥ ﻫﻨﺎﻙ ﻣﺎ ﻳﻘﺮﺏ ﻣﻦ 800ﻣﻠﻴﻮﻥ ﺧﻂ ﻣﻦ
COBOLﻗﻴﺪ ﺍﻻﺳﺘﺨﺪﺍﻡ ﻓﻲ 22ﻣﻴﻼ ًﻣﺮﺑﻌﺎ ًﻣﻦ ﻣﺎﻧﻬﺎﺗﻦ.
59 2.6ﺣﻮﺳﺒﺔ ﺳﺠﻼﺕ ﺍﻷﻋﻤﺎﻝCOBOL :
2.6.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﺗﺸﺒﻪﺑﺪﺍﻳﺔ COBOLﺇﻟﻰ ﺣﺪ ﻣﺎ ﺗﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ، ALGOL 60ﺑﻤﻌﻨﻰ ﺃﻥ ﺍﻟﻠﻐﺔ ﻗﺪ ﺗﻢ
ﺗﺼﻤﻴﻤﻬﺎﻣﻦ ﻗﺒﻞ ﻟﺠﻨﺔ ﻣﻦ ﺍﻷﺷﺨﺎﺹ ﺍﻟﺬﻳﻦ ﻳﺠﺘﻤﻌﻮﻥ ﻟﻔﺘﺮﺍﺕ ﺯﻣﻨﻴﺔ ﻗﺼﻴﺮﺓ ﻧﺴﺒﻴﺎً .ﻓﻲ
ﺫﻟﻚﺍﻟﻮﻗﺖ ،ﻓﻲ ﻋﺎﻡ ، 1959ﻛﺎﻧﺖ ﺣﺎﻟﺔ ﺣﻮﺳﺒﺔ ﺍﻷﻋﻤﺎﻝ ﻣﺸﺎﺑﻬﺔ ﻟﺤﺎﻟﺔ ﺍﻟﺤﻮﺳﺒﺔ ﺍﻟﻌﻠﻤﻴﺔ
ﻗﺒﻞﻋﺪﺓ ﺳﻨﻮﺍﺕ ،ﻋﻨﺪﻣﺎ ﺗﻢ ﺗﺼﻤﻴﻢ ﻓﻮﺭﺗﺮﺍﻥ .ﺗﻢ ﺗﻨﻔﻴﺬ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺠﻤﻌﺔ ﻟﺘﻄﺒﻴﻘﺎﺕ
ﺍﻷﻋﻤﺎﻝ ، FLOW-MATIC،ﻓﻲ ﻋﺎﻡ ، 1957ﻟﻜﻨﻬﺎ ﺗﻨﺘﻤﻲ ﺇﻟﻰ ﺷﺮﻛﺔ ﻣﺼﻨﻌﺔ ﻭﺍﺣﺪﺓ ،
، UNIVACﻭﺗﻢ ﺗﺼﻤﻴﻤﻬﺎ ﻷﺟﻬﺰﺓ ﻛﻤﺒﻴﻮﺗﺮ ﺗﻠﻚ ﺍﻟﺸﺮﻛﺔ .ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ﺃﺧﺮﻯ ، AIMACO ،
ﻣﻦﻗﺒﻞ ﺍﻟﻘﻮﺍﺕ ﺍﻟﺠﻮﻳﺔ ﺍﻷﻣﺮﻳﻜﻴﺔ ،ﻟﻜﻨﻬﺎ ﻛﺎﻧﺖ ﻣﺠﺮﺩ ﺍﺧﺘﻼﻑ ﺑﺴﻴﻂ ﻓﻲ .FLOW-MATIC
ﺻﻤﻤﺖ IBMﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ COMTRAN )COMmercial TRANslator( ،
،ﻟﻜﻦ ﻟﻢ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﺑﻌﺪ .ﺗﻢ ﺍﻟﺘﺨﻄﻴﻂ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﻣﺸﺎﺭﻳﻊ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﺍﻷﺧﺮﻯ.
2.6.2ﺗﺪﻓﻖ ﻣﺎﺗﻴﻚ
ﺗﺴﺘﺤﻖﺃﺻﻮﻝ FLOW-MATICﻣﻨﺎﻗﺸﺔ ﻣﻮﺟﺰﺓ ﻋﻠﻰ ﺍﻷﻗﻞ ،ﻷﻧﻬﺎ ﻛﺎﻧﺖ ﺍﻟﺴﻠﻒ ﺍﻷﺳﺎﺳﻲ ﻟـ
.COBOLﻓﻲ ﻛﺎﻧﻮﻥ ﺍﻷﻭﻝ )ﺩﻳﺴﻤﺒﺮ( ، 1953ﻛﺘﺒﺖ ﺟﺮﻳﺲ ﻫﻮﺑﺮ ﻣﻦ ﺭﻳﻤﻨﺠﺘﻮﻥ ﺭﺍﻧﺪ ﻳﻮﻧﻴﻔﺎﻙ
ﺍﻗﺘﺮﺍﺣﺎًﻧﺒﻮﻳﺎً ﺑﺎﻟﻔﻌﻞ .ﻭﺍﻗﺘﺮﺡ ﺃﻧﻪ "ﻳﺠﺐ ﻛﺘﺎﺑﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﺮﻳﺎﺿﻴﺔ ﺑﺘﺮﻣﻴﺰ ﺭﻳﺎﺿﻲ ،ﻭﻳﺠﺐ ﻛﺘﺎﺑﺔ
ﺑﺮﺍﻣﺞﻣﻌﺎﻟﺠﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻓﻲ ﻋﺒﺎﺭﺍﺕ ﺑﺎﻟﻠﻐﺔ ﺍﻹﻧﺠﻠﻴﺰﻳﺔ" ) ، Wexelblat ، 1981ﺹ .(16ﻟﺴﻮء
ﺍﻟﺤﻆ ،ﻓﻲ ﻋﺎﻡ ، 1953ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﺴﺘﺤﻴﻞ ﺇﻗﻨﺎﻉ ﻏﻴﺮ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﺑﺄﻧﻪ ﻳﻤﻜﻦ ﺗﺼﻨﻴﻊ ﺟﻬﺎﺯ
ﻛﻤﺒﻴﻮﺗﺮﻟﻔﻬﻢ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻹﻧﺠﻠﻴﺰﻳﺔ .ﻟﻢ ﻳﻜﻦ ﻫﻨﺎﻙ ﺑﻌﺾ ﺍﻷﻣﻞ ﻓﻲ ﺃﻥ ﻳﺘﻢ ﺗﻤﻮﻳﻞ ﺍﻗﺘﺮﺍﺡ ﻣﻤﺎﺛﻞ
ﻣﻦﻗﺒﻞ ﺇﺩﺍﺭﺓ UNIVACﺣﺘﻰ ﻋﺎﻡ ، 1955ﻭﺣﺘﻰ ﺑﻌﺪ ﺫﻟﻚ ﺍﺳﺘﻐﺮﻕ ﺍﻷﻣﺮ ﻧﻈﺎﻣﺎً ﻧﻤﻮﺫﺟﻴﺎً
ﻟﻠﻘﻴﺎﻡﺑﺎﻹﻗﻨﺎﻉ ﺍﻟﻨﻬﺎﺉﻲ .ﺗﻀﻤﻦ ﺟﺰء ﻣﻦ ﻋﻤﻠﻴﺔ ﺍﻟﺒﻴﻊ ﻫﺬﻩ ﺗﺠﻤﻴﻊ ﻭﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ﺻﻐﻴﺮ ،
ﺑﺎﺳﺘﺨﺪﺍﻡﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻹﻧﺠﻠﻴﺰﻳﺔ ﺃﻭﻻ ً ،ﺛﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﻔﺮﻧﺴﻴﺔ ،ﺛﻢ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻷﻟﻤﺎﻧﻴﺔ.
ﻛﺎﻥﺃﺣﺪ ﺍﻻﻫﺘﻤﺎﻣﺎﺕ ﺍﻟﻤﻬﻴﻤﻨﺔ ﻓﻲ ﺍﻻﺟﺘﻤﺎﻉ ﻫﻮ ﺃﻧﻪ ﻳﻨﺒﻐﻲ ﺍﺗﺨﺎﺫ ﺧﻄﻮﺍﺕ ﻹﻧﺸﺎء ﻫﺬﻩ
ﺍﻟﻠﻐﺔﺍﻟﻌﺎﻟﻤﻴﺔ ﺑﺴﺮﻋﺔ ،ﺣﻴﺚ ﺗﻢ ﺑﺎﻟﻔﻌﻞ ﺑﺬﻝ ﺍﻟﻜﺜﻴﺮ ﻣﻦ ﺍﻟﻌﻤﻞ ﻹﻧﺸﺎء ﻟﻐﺎﺕ ﺃﻋﻤﺎﻝ ﺃﺧﺮﻯ.
ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺤﺎﻟﻴﺔ ،ﻛﺎﻥ RCAﻭ Sylvaniaﻳﻌﻤﻼﻥ ﻋﻠﻰ ﻟﻐﺎﺕ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ
ﺍﻟﺨﺎﺻﺔﺑﻬﻤﺎ .ﻛﺎﻥ ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻪ ﻛﻠﻤﺎ ﺍﺳﺘﻐﺮﻕ ﺇﻧﺘﺎﺝ ﻟﻐﺔ ﻋﺎﻟﻤﻴﺔ ﻭﻗﺘﺎً ﺃﻃﻮﻝ ،ﺯﺍﺩﺕ ﺻﻌﻮﺑﺔ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻠﻐﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ .ﻋﻠﻰ ﻫﺬﺍ ﺍﻷﺳﺎﺱ ،ﺗﻘﺮﺭ ﺃﻧﻪ ﻳﺠﺐ ﺇﺟﺮﺍء ﺩﺭﺍﺳﺔ ﺳﺮﻳﻌﺔ
ﻟﻠﻐﺎﺕﺍﻟﻤﻮﺟﻮﺩﺓ .ﻟﻬﺬﻩ ﺍﻟﻤﻬﻤﺔ ،ﺗﻢ ﺗﺸﻜﻴﻞ ﻟﺠﻨﺔ ﺍﻟﻤﺪﻯ ﺍﻟﻘﺼﻴﺮ.
ﻛﺎﻧﺖﻫﻨﺎﻙ ﻗﺮﺍﺭﺍﺕ ﻣﺒﻜﺮﺓ ﻟﻔﺼﻞ ﻋﺒﺎﺭﺍﺕ ﺍﻟﻠﻐﺔ ﺇﻟﻰ ﻓﺉﺘﻴﻦ -ﻭﺻﻒ ﺍﻟﺒﻴﺎﻧﺎﺕ
ﻭﺍﻟﻌﻤﻠﻴﺎﺕﺍﻟﻘﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ -ﻭﺃﻥ ﺗﻜﻮﻥ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻓﻲ ﻫﺎﺗﻴﻦ ﺍﻟﻔﺉﺘﻴﻦ ﻓﻲ ﺃﺟﺰﺍء ﻣﺨﺘﻠﻔﺔ ﻣﻦ
ﺍﻟﺒﺮﺍﻣﺞ.ﻛﺎﻧﺖ ﺇﺣﺪﻯ ﻣﻨﺎﻗﺸﺎﺕ ﻟﺠﻨﺔ ﺍﻟﻤﺪﻯ ﺍﻟﻘﺼﻴﺮ ﺣﻮﻝ ﺇﺩﺭﺍﺝ ﺍﻷﺳﻤﺎء .ﺟﺎﺩﻝ ﺍﻟﻌﺪﻳﺪ ﻣﻦ
ﺃﻋﻀﺎءﺍﻟﻠﺠﻨﺔ ﺑﺄﻥ ﺍﻟﺘﺴﺠﻴﻼﺕ ﻛﺎﻧﺖ ﻣﻌﻘﺪﺓ ﻟﻠﻐﺎﻳﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸﺷﺨﺎﺹ ﻓﻲ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ،
ﻭﺍﻟﺬﻳﻦﻛﺎﻥ ﻳﻌُﺘﻘﺪ ﺃﻧﻬﻢ ﻏﻴﺮ ﻣﺮﺗﺎﺣﻴﻦ ﻟﻠﺘﺪﻭﻳﻦ ﺍﻟﺮﻳﺎﺿﻲ .ﺩﺍﺭﺕ ﺣﺠﺞ ﻣﻤﺎﺛﻠﺔ ﺣﻮﻝ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ
ﻳﻨﺒﻐﻲﺗﻀﻤﻴﻦ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺤﺴﺎﺑﻴﺔ .ﻭﺻﻒ ﺍﻟﺘﻘﺮﻳﺮ ﺍﻟﻨﻬﺎﺉﻲ ﻟﻠﺠﻨﺔ ﺍﻟﻤﺪﻯ ﺍﻟﻘﺼﻴﺮ ،ﺍﻟﺬﻱ
ﺍﻛﺘﻤﻞﻓﻲ ﺩﻳﺴﻤﺒﺮ ، 1959ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺳﻤﻴﺖ ﻓﻴﻤﺎ ﺑﻌﺪ .COBOL 60
ﺗﻢﻭﺻﻒ ﻣﻮﺍﺻﻔﺎﺕ ﻟﻐﺔ ، COBOL 60ﺍﻟﺘﻲ ﻧﺸﺮﻫﺎ ﻣﻜﺘﺐ ﺍﻟﻄﺒﺎﻋﺔ ﺍﻟﺤﻜﻮﻣﻲ ﻓﻲ ﺃﺑﺮﻳﻞ
)1960ﻭﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ ، (1960 ،ﺑﺄﻧﻬﺎ "ﺃﻭﻟﻴﺔ" .ﻧﺸُﺮﺕ ﻧﺴﺦ ﻣﻨﻘﺤﺔ ﻓﻲ ﻋﺎﻣﻲ 1961ﻭ ) 1962
ﻭﺯﺍﺭﺓﺍﻟﺪﻓﺎﻉ .(1962 ، 1961 ،ﺗﻢ ﺗﻮﺣﻴﺪ ﺍﻟﻠﻐﺔ ﻣﻦ ﻗﺒﻞ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻤﻌﻬﺪ ﺍﻟﻘﻮﻣﻲ ﺍﻷﻣﺮﻳﻜﻲ
ﻟﻠﻤﻌﺎﻳﻴﺮ) (ANSIﻓﻲ ﻋﺎﻡ .1968ﺗﻢ ﺗﻮﺣﻴﺪ ﺍﻟﻤﺮﺍﺟﻌﺎﺕ ﺍﻟﺜﻼﺛﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻣﻦ ﻗﺒﻞ ANSIﻓﻲ
1974ﻭ 1985ﻭ .2002ﻭﺗﺴﺘﻤﺮ ﺍﻟﻠﻐﺔ ﻓﻲ ﺍﻟﺘﻄﻮﺭ ﺍﻟﻴﻮﻡ.
2.6.4ﺍﻟﺘﻘﻴﻴﻢ
ﻧﺸﺄﺕﻟﻐﺔ COBOLﻋﺪﺩﺍً ﻣﻦ ﺍﻟﻤﻔﺎﻫﻴﻢ ﺍﻟﺠﺪﻳﺪﺓ ،ﻇﻬﺮ ﺑﻌﻀﻬﺎ ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ﺑﻠﻐﺎﺕ ﺃﺧﺮﻯ .ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﻣﻠﻒﻳﻌُﺮﻑِّﻛﺎﻥ ﻓﻌﻞ COBOL 60ﺃﻭﻝ ﺑﻨﺎء ﻟﻐﺔ ﻋﺎﻟﻲ ﺍﻟﻤﺴﺘﻮﻯ ﻟﻮﺣﺪﺍﺕ
ﺍﻟﻤﺎﻛﺮﻭ.ﻭﺍﻷﻫﻢ ﻣﻦ ﺫﻟﻚ ،ﺃﻥ ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻬﺮﻣﻴﺔ )ﺍﻟﺴﺠﻼﺕ( ،ﺍﻟﺘﻲ ﻇﻬﺮﺕ ﻷﻭﻝ ﻣﺮﺓ ﻓﻲ
، Plankalkülﺗﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻷﻭﻝ ﻣﺮﺓ ﻓﻲ .COBOLﺗﻢ ﺗﻀﻤﻴﻨﻬﺎ ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻀﺮﻭﺭﻳﺔ
ﺍﻟﻤﺼﻤﻤﺔﻣﻨﺬ ﺫﻟﻚ ﺍﻟﺤﻴﻦ .ﻛﺎﻧﺖ COBOLﺃﻳﻀﺎً ﺍﻟﻠﻐﺔ ﺍﻷﻭﻟﻰ ﺍﻟﺘﻲ ﺳﻤﺤﺖ ﻟﻸﺳﻤﺎء ﺑﺄﻥ
ﺗﻜﻮﻥﺫﺍﺕ ﺩﻻﻟﺔ ﺣﻘﻴﻘﻴﺔ ،ﻷﻧﻬﺎ ﺳﻤﺤﺖ ﺑﻜﻞ ﻣﻦ ﺍﻷﺳﻤﺎء ﺍﻟﻄﻮﻳﻠﺔ )ﺣﺘﻰ 30ﺣﺮﻓﺎً( ﻭﺃﺣﺮﻑ
ﺭﺍﺑﻂﺍﻟﻜﻠﻤﺎﺕ )ﺍﻟﻮﺍﺻﻼﺕ(.
ﺑﺸﻜﻞﻋﺎﻡ ،ﻳﻌﺪ ﺗﻘﺴﻴﻢ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻫﻮ ﺍﻟﺠﺰء ﺍﻟﻘﻮﻱ ﻣﻦ ﺗﺼﻤﻴﻢ ، COBOLﻓﻲ ﺣﻴﻦ ﺃﻥ
ﻗﺴﻢﺍﻹﺟﺮﺍءﺍﺕ ﺿﻌﻴﻒ ﻧﺴﺒﻴﺎً .ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﻛﻞ ﻣﺘﻐﻴﺮ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺗﻘﺴﻴﻢ ﺍﻟﺒﻴﺎﻧﺎﺕ ،ﺑﻤﺎ
ﻓﻲﺫﻟﻚ ﻋﺪﺩ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻌﺸﺮﻳﺔ ﻭﻣﻮﻗﻊ ﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺸﺮﻳﺔ ﺍﻟﻀﻤﻨﻴﺔ .ﻳﺘﻢ ﺃﻳﻀﺎً ﻭﺻﻒ ﺳﺠﻼﺕ
ﺍﻟﻤﻠﻔﺎﺕﺑﻬﺬﺍ ﺍﻟﻤﺴﺘﻮﻯ ﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ ،ﻭﻛﺬﻟﻚ ﺍﻷﺳﻄﺮ ﺍﻟﺘﻲ ﺳﻴﺘﻢ ﺇﺧﺮﺍﺟﻬﺎ ﺇﻟﻰ ﺍﻟﻄﺎﺑﻌﺔ ،ﻣﻤﺎ
ﻳﺠﻌﻞ COBOLﻣﺜﺎﻟﻴﺎً ﻟﻄﺒﺎﻋﺔ ﺍﻟﺘﻘﺎﺭﻳﺮ ﺍﻟﻤﺤﺎﺳﺒﻴﺔ .ﻭﻟﻌﻞ ﺃﻫﻢ ﻧﻘﺎﻁ ﺿﻌﻒ ﻗﺴﻢ ﺍﻹﺟﺮﺍءﺍﺕ
ﺍﻷﺻﻠﻴﺔﻫﻮ ﺍﻓﺘﻘﺎﺭﻫﺎ ﺇﻟﻰ ﺍﻟﻮﻇﺎﺉﻒ .ﺇﺻﺪﺍﺭﺍﺕ COBOLﺍﻟﺴﺎﺑﻘﺔ ﻟﻤﻌﻴﺎﺭ 1974ﻟﻢ ﺗﺴﻤﺢ
ﺃﻳﻀﺎًﺑﺎﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﺫﺍﺕ ﺍﻟﻤﻌﻠﻤﺎﺕ.
ﺗﻌﻠﻴﻘﻨﺎﺍﻷﺧﻴﺮ ﻋﻠﻰ :COBOLﻛﺎﻧﺖ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻷﻭﻟﻰ ﺍﻟﺘﻲ ﺗﻢ ﺗﻔﻮﻳﺾ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻣﻦ
ﻗﺒﻞﻭﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ ) .(DoDﺟﺎء ﻫﺬﺍ ﺍﻟﺘﻔﻮﻳﺾ ﺑﻌﺪ ﺗﻄﻮﻳﺮﻩ ﺍﻷﻭﻟﻲ ،ﻷﻥ COBOLﻟﻢ ﻳﺘﻢ
ﺗﺼﻤﻴﻤﻪﺧﺼﻴﺼﺎً ﻟﻮﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﻣﺰﺍﻳﺎﻫﺎ ،ﻣﻦ ﺍﻟﻤﺤﺘﻤﻞ ﺃﻻ ﻳﻜﻮﻥ COBOL
61 2.6ﺣﻮﺳﺒﺔ ﺳﺠﻼﺕ ﺍﻷﻋﻤﺎﻝCOBOL :
ﻧﺠﺎﺑﺪﻭﻥ ﻫﺬﺍ ﺍﻟﺘﻔﻮﻳﺾ .ﺃﺩﻯ ﺍﻷﺩﺍء ﺍﻟﻀﻌﻴﻒ ﻟﻠﻤﺘﺮﺟﻤﻴﻦ ﺍﻷﻭﺍﺉﻞ ﺇﻟﻰ ﺟﻌﻞ ﺍﻟﻠﻐﺔ ﺑﺎﻫﻈﺔ
ﺍﻟﺜﻤﻦﻟﻠﻐﺎﻳﺔ ﻟﻼﺳﺘﺨﺪﺍﻡ .ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ،ﺑﺎﻟﻄﺒﻊ ،ﺃﺻﺒﺢ ﺍﻟﻤﺘﺮﺟﻤﻮﻥ ﺃﻛﺜﺮ ﻛﻔﺎءﺓ ﻭﺃﺻﺒﺤﺖ ﺃﺟﻬﺰﺓ
ﺍﻟﻜﻤﺒﻴﻮﺗﺮﺃﺳﺮﻉ ﻭﺃﺭﺧﺺ ﺑﻜﺜﻴﺮ ﻭﻟﺪﻳﻬﺎ ﺫﺍﻛﺮﺓ ﺃﻛﺒﺮ ﺑﻜﺜﻴﺮ .ﻫﺬﻩ ﺍﻟﻌﻮﺍﻣﻞ ﻣﺠﺘﻤﻌﺔ ﺳﻤﺤﺖ ﻟـ
COBOLﺑﺎﻟﻨﺠﺎﺡ ،ﺩﺍﺧﻞ ﻭﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ ﻭﺧﺎﺭﺟﻬﺎ .ﺃﺩﻯ ﻇﻬﻮﺭﻫﺎ ﺇﻟﻰ ﺍﻟﻤﻴﻜﻨﺔ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ
ﻟﻠﻤﺤﺎﺳﺒﺔ ،ﻭﻫﻲ ﺛﻮﺭﺓ ﻣﻬﻤﺔ ﺑﻜﻞ ﺍﻟﻤﻘﺎﻳﻴﺲ.
ﻓﻴﻤﺎﻳﻠﻲ ﻣﺜﺎﻝ ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ .COBOLﻳﻘﺮﺃ ﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻣﻠﻔﺎً ﺑﺎﺳﻢﻣﻠﻒ BAL-FWDﺍﻟﺬﻱ
ﻳﺤﺘﻮﻱﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﺨﺰﻭﻥ ﺣﻮﻝ ﻣﺠﻤﻮﻋﺔ ﻣﻌﻴﻨﺔ ﻣﻦ ﺍﻟﻌﻨﺎﺻﺮ .ﻣﻦ ﺑﻴﻦ ﺃﺷﻴﺎء ﺃﺧﺮﻯ ،
ﻳﺘﻀﻤﻦﻛﻞ ﺳﺠﻞ ﻋﻨﺼﺮ ﺍﻟﺮﻗﻢ ﺍﻟﻤﻮﺟﻮﺩ ﺣﺎﻟﻴﺎً )ﺑﺎﻝ ﻋﻠﻰ ﺍﻟﻴﺪ(ﻭﻧﻘﻄﺔ ﺇﻋﺎﺩﺓ ﺗﺮﺗﻴﺐ ﺍﻟﻌﻨﺼﺮ
)BAL-REORDER-POINT(.ﻧﻘﻄﺔ ﺇﻋﺎﺩﺓ ﺍﻟﻄﻠﺐ ﻫﻲ ﺍﻟﺤﺪ ﺍﻷﺩﻧﻰ ﻟﻌﺪﺩ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﻤﻮﺟﻮﺩﺓ
ﻭﺍﻟﺘﻲﻳﺠﺐ ﻃﻠﺐ ﺍﻟﻤﺰﻳﺪ ﻋﻨﺪﻫﺎ .ﻳﻨﺘﺞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻗﺎﺉﻤﺔ ﺑﺎﻟﻌﻨﺎﺻﺮ ﺍﻟﺘﻲ ﻳﺠﺐ ﺇﻋﺎﺩﺓ ﺗﺮﺗﻴﺒﻬﺎ
ﻛﻤﻠﻒﻣﺴﻤﻰﺇﻋﺎﺩﺓ ﺗﺮﺗﻴﺐ ﺍﻟﻘﻮﺍﺉﻢ.
ﻗﺴﻢﺍﻟﺒﻴﺉﺔ.
ﻗﺴﻢﺍﻟﺘﻜﻮﻳﻦ.
DEC-VAX. SOURCE-COMPUTER.
DEC-VAX. ﻛﺎﺉﻦ-ﺣﺎﺳﻮﺏ.
ﻗﺴﻢﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ.
ﺍﻟﺘﺤﻜﻢﻓﻲ ﺍﻟﻤﻠﻔﺎﺕ.
ﺗﻌﻴﻴﻦﻟﻠﻘﺎﺭﺉ. ﺣﺪﺩBAL-FWD-FILE
ﺗﻌﻴﻴﻦﺇﻟﻰ ﺍﻟﻄﺎﺑﻌﺔ ﺍﻟﻤﺤﻠﻴﺔ. ﺣﺪﺩﺇﻋﺎﺩﺓ ﺗﺮﺗﻴﺐ ﺍﻟﻘﻮﺍﺉﻢ
ﺗﻘﺴﻴﻢﺍﻟﺒﻴﺎﻧﺎﺕ.
ﻗﺴﻢﺍﻟﻤﻠﻒ.
ﻓﺪ ﻣﻠﻒBAL-FWD
ﺳﺠﻼﺕﺍﻟﻤﻠﺼﻘﺎﺕ ﻫﻲ ﺳﺠﻼﺕ ﻗﻴﺎﺳﻴﺔ ﺗﺤﺘﻮﻱ
ﻋﻠﻰ 80ﺣﺮﻓﺎً.
ﺑﻄﺎﻗﺔ.BAL-FWD 01
ﺍﻟﺼﻮﺭﺓ.(5) 9 02ﺑﻞ ﺍﻟﺒﻨﺪ ﺭﻗﻢ
ﺍﻟﺼﻮﺭﺓﻫﻮ (.X )20 02 BAL-ITEM-DESC
ﺍﻟﺼﻮﺭﺓﻫﻮ (.X )5 02ﺣﺸﻮ
ﺍﻟﺼﻮﺭﺓﻫﻲ .999V99 02 BAL-UNIT-PRICE
ﺍﻟﺼﻮﺭﺓ.(5) 9 02 BAL-REORDER-POINT
ﺍﻟﺼﻮﺭﺓ.(5) 9 02ﺑﺎﻝ ﻓﻲ ﺍﻟﻴﺪ
ﺍﻟﺼﻮﺭﺓ.(5) 9 02ﺑﺎﻝ ﻋﻨﺪ ﺍﻟﻄﻠﺐ
ﺍﻟﺼﻮﺭﺓﻫﻮ (.X )30 02ﺣﺸﻮ
ﺇﻋﺎﺩﺓﺗﺮﺗﻴﺐ ﺍﻟﻘﻮﺍﺉﻢ ﻓﺪ
ﺳﺠﻼﺕﺍﻟﻤﻠﺼﻘﺎﺕ ﻫﻲ ﺳﺠﻼﺕ ﻗﻴﺎﺳﻴﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ
132ﺣﺮﻓﺎً.
ﻗﺴﻢﺍﻹﺟﺮﺍءﺍﺕ.
-000ﻣﻨﺘﺞ -ﻗﻮﺍﺉﻢ.REORDER-LISTING -
ﻓﺘﺢ BAL-FWD-FILEﺍﻟﻤﺪﺧﻼﺕ .ﻓﺘﺢ ﻗﻮﺍﺉﻢ ﺇﻋﺎﺩﺓ
ﺗﺮﺗﻴﺐﺍﻹﺧﺮﺍﺝ .ﻧﻘﻞ " "Nﺇﻟﻰ ﻣﻔﺘﺎﺡ ﺑﻄﺎﻗﺔ -LINE
EOF. PERFORM 100-PRODUCE-REORDER
-100ﻣﻨﺘﺞ.REORDER-LINE -
ﺃﺩﺍء .READ-INVENTORY RECORD-110ﺇﺫﺍ ﻛﺎﻥ -SWITCH
CARD-EOFﻻ ﻳﺴﺎﻭﻱ "["Y
ﺃﺩﺍء 120ﺣﺴﺎﺏ -ﺍﻟﻤﺨﺰﻭﻥ ﺍﻟﻤﺘﻮﻓﺮ
ﺇﺫﺍﻛﺎﻥ ﺍﻟﻤﺨﺰﻭﻥ ﺍﻟﻤﺘﺎﺡ ﺃﻗﻞ ﻣﻦ ﻧﻘﻄﺔ BAL-REORDER-POINT
PERFORM 130-PRINT-REORDER-LINE.
-110ﻗﺮﺍءﺓ-ﺳﺠﻞ ﺍﻟﻤﺨﺰﻭﻥ.
ﻗﺮﺍءﺓﺳﺠﻞ BAL-FWD-FILE
ﻓﻲﺍﻟﻨﻬﺎﻳﺔ
ﺣﺮﻙﺣﺮﻑ " "Yﺇﻟﻰ ﻣﻔﺘﺎﺡ ﺑﻄﺎﻗﺔ .EOF
ﺇﻋﻄﺎءﺍﻟﻤﺨﺰﻭﻥ ﺍﻟﻤﺘﺎﺡ.
130-PRINT-REORDER-LINE.
ﻹﻋﺎﺩﺓﺗﺮﺗﻴﺐ ﺍﻟﺨﻂ. ﻧﻘﻞﺍﻟﻔﻀﺎء
63 2.7ﺑﺪﺍﻳﺎﺕ ﺗﻘﺎﺳﻢ ﺍﻟﻮﻗﺖ :ﺃﺳﺎﺳﻲ
ﺇﻟﻰ.RL-ITEM-NO ﻧﻘﻞBAL-ITEM-NO
ﺇﻟﻰ.RL-ITEM-DESC ﻧﻘﻞBAL-ITEM-DESC
ﺇﻟﻰ.RL-UNIT-PRICE ﻧﻘﻞBAL-UNIT-PRICE
ﺇﻟﻰ.RL-AVAILABLE-STOCK ﻧﻘﻞﺍﻟﻤﺨﺰﻭﻥ ﺍﻟﻤﺘﻮﻓﺮ
ﺍﻧﻘﻞ BAL-REORDER-POINTﺇﻟﻰ .RL-REORDER-POINTﺍﻛﺘﺐ ﺧﻂ
ﺇﻋﺎﺩﺓﺗﺮﺗﻴﺐ.
2.7.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﺗﻢﺗﺼﻤﻴﻢ ) BASICﻛﻮﺩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺮﻣﺰﻳﺔ ﻟﺠﻤﻴﻊ ﺍﻷﻏﺮﺍﺽ ﻟﻠﻤﺒﺘﺪﺉﻴﻦ( ﻓﻲ ﺍﻷﺻﻞ ﻓﻲ ﻛﻠﻴﺔ
ﺩﺍﺭﺗﻤﻮﺙ)ﺍﻵﻥ ﺟﺎﻣﻌﺔ ﺩﺍﺭﺗﻤﻮﺙ( ﻓﻲ ﻧﻴﻮ ﻫﺎﻣﺒﺸﺎﻳﺮ ﻣﻦ ﻗﺒﻞ ﻋﺎﻟﻤﻴﻦ ﺭﻳﺎﺿﻴﻴﻦ ،ﺟﻮﻥ ﻛﻴﻤﻴﻨﻲ
ﻭﺗﻮﻣﺎﺱﻛﻮﺭﺗﺰ ،ﺍﻟﺬﻳﻦ ﻃﻮﺭﻭﺍ ،ﻓﻲ ﺃﻭﺍﺉﻞ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ،ﻣﺘﺮﺟﻤﻴﻦ ﻟﻤﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ
ﻟﻬﺠﺎﺕﻓﻮﺭﺗﺮﺍﻥ ﻭ .ALGOL 60ﻻ ﻳﻮﺍﺟﻪ ﻃﻼﺏ ﺍﻟﻌﻠﻮﻡ ﻋﻤﻮﻣﺎً ﺻﻌﻮﺑﺔ ﻓﻲ ﺗﻌﻠﻢ ﺃﻭ ﺍﺳﺘﺨﺪﺍﻡ
ﺗﻠﻚﺍﻟﻠﻐﺎﺕ ﻓﻲ ﺩﺭﺍﺳﺎﺗﻬﻢ .ﻭﻣﻊ ﺫﻟﻚ ،ﻛﺎﻧﺖ ﺩﺍﺭﺗﻤﻮﺙ ﻓﻲ ﺍﻷﺳﺎﺱ ﻣﺆﺳﺴﺔ ﻟﻠﻔﻨﻮﻥ ﺍﻟﺤﺮﺓ ،
ﺣﻴﺚﺷﻜﻞ ﻃﻼﺏ ﺍﻟﻌﻠﻮﻡ ﻭﺍﻟﻬﻨﺪﺳﺔ ﺣﻮﺍﻟﻲ 25ﺑﺎﻟﻤﺎﺉﺔ ﻓﻘﻂ ﻣﻦ ﻫﻴﺉﺔ ﺍﻟﻄﻼﺏ .ﺗﻘﺮﺭ ﻓﻲ
ﺭﺑﻴﻊﻋﺎﻡ 1963ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﺟﺪﻳﺪﺓ ﺧﺎﺻﺔ ﻟﻄﻼﺏ ﺍﻟﻔﻨﻮﻥ ﺍﻟﺤﺮﺓ .ﺳﺘﺴﺘﺨﺪﻡ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﺍﻟﺠﺪﻳﺪﺓ
ﺍﻟﻤﺤﻄﺎﺕﻛﻄﺮﻳﻘﺔ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﻛﺎﻧﺖ ﺃﻫﺪﺍﻑ ﺍﻟﻨﻈﺎﻡ ﻛﻤﺎ ﻳﻠﻲ:
.6ﺍﺷﺘﻤﻠﺖ ﺑﻌﺾ ﺍﻟﺤﻮﺍﺳﻴﺐ ﺍﻟﺼﻐﻴﺮﺓ ﺍﻟﻤﺒﻜﺮﺓ ﻋﻠﻰ ﻣﺘﺮﺟﻤﻴﻦ ﺃﺳﺎﺳﻴﻴﻦ ﻳﻘﻴﻤﻮﻥ ﻓﻲ 4096ﺑﺎﻳﺖ ﻣﻦ ﺫﺍﻛﺮﺓ ﺍﻟﻘﺮﺍءﺓ
ﻓﻘﻂ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 64
ﻛﺎﻥﺍﻟﻬﺪﻑ ﺍﻷﺧﻴﺮ ﺑﺎﻟﻔﻌﻞ ﻣﻔﻬﻮﻣﺎً ﺛﻮﺭﻳﺎً .ﻛﺎﻥ ﻳﻌﺘﻤﺪ ﺟﺰﺉﻴﺎً ﻋﻠﻰ ﺍﻷﻗﻞ ﻋﻠﻰ ﺍﻻﻋﺘﻘﺎﺩ ﺑﺄﻥ ﺃﺟﻬﺰﺓ
ﺍﻟﻜﻤﺒﻴﻮﺗﺮﺳﺘﺼﺒﺢ ﺃﺭﺧﺺ ﺑﻜﺜﻴﺮ ﻣﻊ ﻣﺮﻭﺭ ﺍﻟﻮﻗﺖ ،ﻭﻫﻮ ﻣﺎ ﻓﻌﻠﻮﻩ ﺑﺎﻟﻄﺒﻊ.
ﺃﺩﻯﺍﻟﺠﻤﻊ ﺑﻴﻦ ﺍﻷﻫﺪﺍﻑ ﺍﻟﺜﺎﻧﻴﺔ ﻭﺍﻟﺜﺎﻟﺜﺔ ﻭﺍﻟﺮﺍﺑﻌﺔ ﺇﻟﻰ ﺍﻟﺠﺎﻧﺐ ﺍﻟﻤﺸﺘﺮﻙ ﺑﺎﻟﻮﻗﺖ ﻣﻦ
.BASICﻓﻘﻂ ﻣﻦ ﺧﻼﻝ ﺍﻟﻮﺻﻮﻝ ﺍﻟﻔﺮﺩﻱ ﻣﻦ ﺧﻼﻝ ﺍﻟﻤﺤﻄﺎﺕ ﻣﻦ ﻗﺒﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ
ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﺍﻟﻤﺘﺰﺍﻣﻨﻴﻦ ﻳﻤﻜﻦ ﺗﺤﻘﻴﻖ ﻫﺬﻩ ﺍﻷﻫﺪﺍﻑ ﻓﻲ ﺃﻭﺍﺉﻞ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ.
ﻓﻲﺻﻴﻒ ﻋﺎﻡ ، 1963ﺑﺪﺃ Kemenyﺍﻟﻌﻤﻞ ﻋﻠﻰ ﺍﻟﻤﺘﺮﺟﻢ ﻟﻠﻨﺴﺨﺔ ﺍﻷﻭﻟﻰ ﻣﻦ ، BASIC
ﺑﺎﺳﺘﺨﺪﺍﻡﺍﻟﻮﺻﻮﻝ ﻋﻦ ﺑﻌﺪ ﺇﻟﻰ ﻛﻤﺒﻴﻮﺗﺮ .GE 225ﺑﺪﺃ ﺗﺼﻤﻴﻢ ﻭﺗﺮﻣﻴﺰ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻟـ BASIC
ﻓﻲﺧﺮﻳﻒ ﻋﺎﻡ .1963ﺍﻟﺴﺎﻋﺔ 4:00
ﺃ.ﻡ.ﻓﻲ 1ﻣﺎﻳﻮ ، 1964ﺗﻤﺖ ﻛﺘﺎﺑﺔ ﻭﺗﺸﻐﻴﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻷﻭﻝ ﺍﻟﺬﻱ ﻳﺴﺘﺨﺪﻡ BASICﺍﻟﻤﺸﺘﺮﻙ
ﺑﺎﻟﻮﻗﺖ.ﻓﻲ ﻳﻮﻧﻴﻮ ،ﺍﺭﺗﻔﻊ ﻋﺪﺩ ﺍﻟﻤﺤﻄﺎﺕ ﻋﻠﻰ ﺍﻟﻨﻈﺎﻡ ﺇﻟﻰ ، 11ﻭﺑﺤﻠﻮﻝ ﺍﻟﺨﺮﻳﻒ ﺍﺭﺗﻔﻊ ﺇﻟﻰ .20
2.7.3ﺍﻟﺘﻘﻴﻴﻢ
ﻛﺎﻥﺃﻫﻢ ﺟﺎﻧﺐ ﻓﻲ BASICﺍﻷﺻﻠﻲ ﻫﻮ ﺃﻧﻬﺎ ﻛﺎﻧﺖ ﺃﻭﻝ ﻟﻐﺔ ﻣﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻳﺘﻢ
ﺍﺳﺘﺨﺪﺍﻣﻬﺎﻣﻦ ﺧﻼﻝ ﻣﺤﻄﺎﺕ ﻣﺘﺼﻠﺔ ﺑﺠﻬﺎﺯ ﻛﻤﺒﻴﻮﺗﺮ ﺑﻌﻴﺪ7.ﻛﺎﻧﺖ ﺍﻟﻤﺤﻄﺎﺕ ﻗﺪ ﺑﺪﺃﺕ ﻟﻠﺘﻮ
ﻓﻲﺃﻥ ﺗﻜﻮﻥ ﻣﺘﺎﺣﺔ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ .ﻗﺒﻞ ﺫﻟﻚ ،ﺗﻢ ﺇﺩﺧﺎﻝ ﻣﻌﻈﻢ ﺍﻟﺒﺮﺍﻣﺞ ﻓﻲ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﺇﻣﺎﻣﻦ ﺧﻼﻝ ﺑﻄﺎﻗﺎﺕ ﻣﺜﻘﺒﺔ ﺃﻭ ﺷﺮﻳﻂ ﻭﺭﻗﻲ.
.7ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ LISPﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ﻣﻦ ﺧﻼﻝ ﺍﻟﻤﺤﻄﺎﺕ ﺍﻟﻄﺮﻓﻴﺔ ،ﻭﻟﻜﻦ ﻟﻢ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻓﻲ ﺃﻭﺍﺉﻞ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ.
65 2.7ﺑﺪﺍﻳﺎﺕ ﺗﻘﺎﺳﻢ ﺍﻟﻮﻗﺖ :ﺃﺳﺎﺳﻲ
ﺃﺟﺰﺍءﻣﻦ ﺃﻛﺒﺮ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﺧﺎﺹ ﺑﻬﺎ ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺼﻐﻴﺮﺓ ، PDP-11 ، RSTSﻓﻲ
ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ.
ﺗﻢﺍﻧﺘﻘﺎﺩ BASICﻟﻀﻌﻒ ﺑﻨﻴﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻜﺘﻮﺑﺔ ﻓﻴﻬﺎ ،ﻣﻦ ﺑﻴﻦ ﺃﻣﻮﺭ ﺃﺧﺮﻯ .ﻭﻓﻘﺎً ﻟﻤﻌﺎﻳﻴﺮ
ﺍﻟﺘﻘﻴﻴﻢﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻷﻭﻝ ،ﻭﺗﺤﺪﻳﺪﺍ ًﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ ﻭﺍﻟﻤﻮﺛﻮﻗﻴﺔ ،ﻓﺈﻥ
ﺍﻟﻠﻐﺔﺗﻌﻤﻞ ﺑﺎﻟﻔﻌﻞ ﺑﺸﻜﻞ ﺳﻲء ﻟﻠﻐﺎﻳﺔ .ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﻘﺪﻳﻤﺔ ﻣﻦ ﺍﻟﻠﻐﺔ ﻟﻢ ﺗﻜﻦ
ﻣﺨﺼﺼﺔﻭﻻ ﻳﻨﺒﻐﻲ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﻠﺒﺮﺍﻣﺞ ﺍﻟﺠﺎﺩﺓ ﻣﻦ ﺃﻱ ﺣﺠﻢ ﻛﺒﻴﺮ .ﺗﻌﺪ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﻼﺣﻘﺔ
ﺃﻛﺜﺮﻣﻼءﻣﺔ ﻟﻤﺜﻞ ﻫﺬﻩ ﺍﻟﻤﻬﺎﻡ.
ﺣﺮﻛﺔﺍﻟﻌﻴﻦ ﺍﻟﺴﺮﻳﻌﺔ
ﺣﺮﻛﺔﺍﻟﻌﻴﻦ ﺍﻟﺴﺮﻳﻌﺔﺍﻃﺒﻊﺍﻟﻨﺘﻴﺠﺔ
ﺍﻃﺒﻊ"ﻋﺪﺩ ﺍﻟﻘﻴﻢ< ﺍﻟﻤﺘﻮﺳﻂ ﻫﻮ":؛
ﻧﺘﻴﺠﺔ
ﺁﺧﺮ
ﺍﻃﺒﻊ"ﺧﻄﺄ -ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ" END IF
ﻧﻬﺎﻳﺔ
ﻣﻘﺎﺑﻠﺔ
66
ﻛﺎﻥ MSDOS.exeﻫﻮ ﺑﺮﻧﺎﻣﺞ shellﻟﻺﺻﺪﺍﺭﺍﺕ " ﻛﻴﻒﺍﻧﺘﻘﻠﺖ ﻣﻦ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ
ﺷﻞﺇﻟﻰ ﺍﻟﺘﻌﺎﻭﻥ ﻣﻊ Microsoft؟
ﺍﻟﻘﻠﻴﻠﺔﺍﻷﻭﻟﻰ ﻣﻦ .Windowsﻟﻘﺪ ﻛﺎﻥ ﺑﺮﻧﺎﻣﺠﺎً ﻓﻈﻴﻌﺎً ،
ﺣﺎﻣﻞﺛﻼﺛﻲ ﺍﻟﻘﻮﺍﺉﻢ
ﻭﺃﻋﺘﻘﺪﺃﻧﻪ ﻳﻤﻜﻦ ﺗﺤﺴﻴﻨﻪ ﺑﺸﻜﻞ ﻛﺒﻴﺮ ،ﻭﻛﻨﺖ ﺍﻟﺸﺨﺺ ﻭﺭﻭﺑﻲﻫﻤﺎ ﻧﻔﺲ ﺍﻟﺸﻲء .ﺑﻌﺪ ﺃﻥ
ﺍﻟﺬﻱﻳﻘﻮﻡ ﺑﺬﻟﻚ .ﻓﻲ ﻭﻗﺖ ﻓﺮﺍﻏﻲ ،ﺑﺪﺃﺕ ﻋﻠﻰ ﺍﻟﻔﻮﺭ ﻓﻲ ﻭﻗﻌﺖﺻﻔﻘﺔ ﻣﻊ ﺑﻴﻞ ﺟﻴﺘﺲ ،
ﻗﻤﺖﺑﺘﻐﻴﻴﺮ ﺍﺳﻢ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻷﻭﻟﻲ ﻣﻦ
ﻛﺘﺎﺑﺔﺑﺮﻧﺎﻣﺞ ﺷﻞ ﺃﻓﻀﻞ ﻣﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺬﻱ ﺟﺎء ﺑﻪ
.Windows " ﺗﺮﺍﻳﺒﻮﺩﺇﻟﻰ ﺭﻭﺑﻲ .ﺛﻢ ﺍﺳﺘﺨﺪﻣﺖ
ﻧﻤﻮﺫﺝﺭﻭﺑﻲ ﻛﻨﻤﺎﺫﺝ ﺃﻭﻟﻴﺔ ﻳﺠﺐ
ﺍﺳﺘﺨﺪﺍﻣﻬﺎ:ﻛﻨﻤﻮﺫﺝ ﻳﻤﻜﻦ ﺍﻟﺘﺨﻠﺺ
ﻣﻨﻪﻟﺒﻨﺎء ﺟﻮﺩﺓ ﺍﻹﺻﺪﺍﺭ
67
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 68
2.8.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﻣﺜﻞ ، Fortranﺗﻢ ﺗﻄﻮﻳﺮ PL / Iﻛﻤﻨﺘﺞ .IBMﺑﺤﻠﻮﻝ ﺃﻭﺍﺉﻞ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ،ﺍﺳﺘﻘﺮ ﻣﺴﺘﺨﺪﻣﻮ
ﺃﺟﻬﺰﺓﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻓﻲ ﺍﻟﺼﻨﺎﻋﺔ ﻓﻲ ﻣﻌﺴﻜﺮﻳﻦ ﻣﻨﻔﺼﻠﻴﻦ ﻭﻣﺨﺘﻠﻔﻴﻦ ﺗﻤﺎﻣﺎً :ﺍﻟﻌﻠﻤﻲ ﻭﺍﻟﺘﺠﺎﺭﻱ.
ﻣﻦﻭﺟﻬﺔ ﻧﻈﺮ ﺷﺮﻛﺔ ﺁﻱ ﺑﻲ ﺇﻡ ،ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺠﻴﻦ ﺍﻟﻌﻠﻤﻴﻴﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺇﻣﺎ 7090ﺃﻭ ﺃﺟﻬﺰﺓ
ﻛﻤﺒﻴﻮﺗﺮﺁﻱ ﺑﻲ ﺇﻡ ﺻﻐﻴﺮﺓ ﺍﻟﺤﺠﻢ .1620ﺍﺳﺘﺨﺪﻣﺖ ﻫﺬﻩ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺑﻴﺎﻧﺎﺕ ﻭﻣﺼﻔﻮﻓﺎﺕ
ﺍﻟﻔﺎﺻﻠﺔﺍﻟﻌﺎﺉﻤﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ .ﻛﺎﻧﺖ ﻟﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻷﺳﺎﺳﻴﺔ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ
ﺍﺳﺘﺨﺪﺍﻡﺑﻌﺾ ﻟﻐﺎﺕ ﺍﻟﺘﺠﻤﻴﻊ ﺃﻳﻀﺎً .ﻛﺎﻥ ﻟﺪﻳﻬﻢ ﻣﺠﻤﻮﻋﺔ ﻣﺴﺘﺨﺪﻣﻴﻦ ﺧﺎﺻﺔ ﺑﻬﻢ ، SHARE ،
ﻭﻟﻢﻳﻜﻦ ﻟﺪﻳﻬﻢ ﺍﺗﺼﺎﻝ ﻳﺬﻛﺮ ﻣﻊ ﺃﻱ ﺷﺨﺺ ﻳﻌﻤﻞ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ.
ﺃﺩﺕﻫﺬﻩ ﺍﻟﺘﺼﻮﺭﺍﺕ ﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﺇﻟﻰ ﻣﻔﻬﻮﻡ ﺗﺼﻤﻴﻢ ﻛﻤﺒﻴﻮﺗﺮ ﻋﺎﻟﻤﻲ ﻭﺍﺣﺪ ﻳﻜﻮﻥ ﻗﺎﺩﺭﺍً
ﻋﻠﻰﺍﻟﻘﻴﺎﻡ ﺑﺤﺴﺎﺏ ﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ ﻭﺍﻟﺤﺴﺎﺏ ﺍﻟﻌﺸﺮﻱ ،ﻭﺑﺎﻟﺘﺎﻟﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ
ﻭﺍﻟﺘﺠﺎﺭﻳﺔ.ﻭﻫﻜﺬﺍ ﻭﻟﺪ ﻣﻔﻬﻮﻡ ﺧﻂ ﺍﻟﺤﻮﺍﺳﻴﺐ .IBM System / 360ﺇﻟﻰ ﺟﺎﻧﺐ ﺫﻟﻚ ﺟﺎءﺕ
ﻓﻜﺮﺓﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻷﻋﻤﺎﻝ ﻭﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻌﻠﻤﻴﺔ .ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ
ﻣﻘﻴﺎﺱﺟﻴﺪ ،ﺗﻢ ﻃﺮﺡ ﻣﻴﺰﺍﺕ ﻟﺪﻋﻢ ﺑﺮﻣﺠﺔ ﺍﻷﻧﻈﻤﺔ ﻭﻣﻌﺎﻟﺠﺔ ﺍﻟﻘﻮﺍﺉﻢ .ﻟﺬﻟﻚ ،ﻛﺎﻧﺖ ﺍﻟﻠﻐﺔ
ﺍﻟﺠﺪﻳﺪﺓﺗﺤﻞ ﻣﺤﻞ Fortranﻭ COBOLﻭ LISPﻭﺗﻄﺒﻴﻘﺎﺕ ﺃﻧﻈﻤﺔ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ.
.8ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ ،ﺗﻄﻠﺒﺖ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺜﺒﻴﺖ ﺍﻟﻜﺒﻴﺮﺓ ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻛﻼ ًﻣﻦ ﺍﻷﺟﻬﺰﺓ ﺑﺪﻭﺍﻡ ﻛﺎﻣﻞ ﻭﻣﻮﻇﻔﻲ ﺻﻴﺎﻧﺔ
ﺑﺮﺍﻣﺞﺍﻟﻨﻈﺎﻡ ﺑﺪﻭﺍﻡ ﻛﺎﻣﻞ.
69 2.8ﻛﻞ ﺷﻲء ﻟﻠﺠﻤﻴﻊPL / I :
2.8.2ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﺑﺪﺃﺕﺟﻬﻮﺩ ﺍﻟﺘﺼﻤﻴﻢ ﻋﻨﺪﻣﺎ ﺷﻜﻠﺖ IBMﻭ SHAREﻟﺠﻨﺔ ﺗﻄﻮﻳﺮ ﺍﻟﻠﻐﺔ ﺍﻟﻤﺘﻘﺪﻣﺔ ﻟﻤﺸﺮﻭﻉ
SHARE Fortranﻓﻲ ﺃﻛﺘﻮﺑﺮ .1963ﺍﺟﺘﻤﻌﺖ ﻫﺬﻩ ﺍﻟﻠﺠﻨﺔ ﺍﻟﺠﺪﻳﺪﺓ ﺑﺴﺮﻋﺔ ﻭﺷﻜﻠﺖ ﻟﺠﻨﺔ
ﻓﺮﻋﻴﺔﺗﺴﻤﻰ ﻟﺠﻨﺔ ، 3 × 3ﺳﻤﻴﺖ ﺑﻬﺬﺍ ﺍﻻﺳﻢ ﻷﻧﻬﺎ ﺗﻀﻢ ﺛﻼﺛﺔ ﺃﻋﻀﺎء ﻣﻦ IBMﻭﺛﻼﺛﺔ
ﺃﻋﻀﺎءﻣﻦ .SHAREﺍﺟﺘﻤﻌﺖ ﻟﺠﻨﺔ 3 × 3ﻟﻤﺪﺓ ﺛﻼﺛﺔ ﺃﻭ ﺃﺭﺑﻌﺔ ﺃﻳﺎﻡ ﻛﻞ ﺃﺳﺒﻮﻋﻴﻦ ﻟﺘﺼﻤﻴﻢ
ﺍﻟﻠﻐﺔ.
• ﺗﻢ ﺍﻟﺴﻤﺎﺡ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ ،ﻭﻟﻜﻦ ﻳﻤﻜﻦ ﺗﻌﻄﻴﻞ ﺍﻟﻘﺪﺭﺓ ،ﻣﻤﺎ
ﻳﺴﻤﺢﺑﺮﺑﻂ ﺃﻛﺜﺮ ﻛﻔﺎءﺓ ﻟﻠﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﻏﻴﺮ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ.
• ﺗﻢ ﺗﻀﻤﻴﻦ ﺍﻟﻤﺆﺷﺮﺍﺕ ﻛﻨﻮﻉ ﺑﻴﺎﻧﺎﺕ.
• ﻳﻤﻜﻦ ﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺍﻟﻤﻘﺎﻃﻊ ﺍﻟﻌﺮﺿﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺎﺕ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻤﻜﻦ ﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ
ﺍﻟﺼﻒﺍﻟﺜﺎﻟﺚ ﻣﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻛﻤﺎ ﻟﻮ ﻛﺎﻥ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌُﺪ ﻭﺍﺣﺪ.
2.8.4ﺍﻟﺘﻘﻴﻴﻢ
ﻳﺠﺐﺃﻥ ﻳﺒﺪﺃ ﺃﻱ ﺗﻘﻴﻴﻢ ﻟـ PL / Iﺑﺎﻟﺘﻌﺮﻑ ﻋﻠﻰ ﻃﻤﻮﺡ ﺟﻬﺪ ﺍﻟﺘﺼﻤﻴﻢ .ﺑﺎﻟﻨﻈﺮ ﺇﻟﻰ ﺍﻟﻤﺎﺿﻲ ،
ﻳﺒﺪﻭﻣﻦ ﺍﻟﺴﺬﺍﺟﺔ ﺍﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺃﻧﻪ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺩﻣﺞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺒﻨﻰ ﺑﻨﺠﺎﺡ .ﻭﻣﻊ ﺫﻟﻚ ،
ﻳﺠﺐﺗﺨﻔﻴﻒ ﻫﺬﺍ ﺍﻟﺤﻜﻢ ﻣﻦ ﺧﻼﻝ ﺍﻻﻋﺘﺮﺍﻑ ﺑﺄﻧﻪ ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﺧﺒﺮﺓ ﻗﻠﻴﻠﺔ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ
ﻓﻲﺫﻟﻚ ﺍﻟﻮﻗﺖ .ﺑﺸﻜﻞ ﻋﺎﻡ ،ﺍﺳﺘﻨﺪ ﺗﺼﻤﻴﻢ PL / Iﺇﻟﻰ ﻓﺮﺿﻴﺔ ﺃﻥ ﺃﻱ ﺑﻨﻴﺔ ﻣﻔﻴﺪﺓ ﻭﻳﻤﻜﻦ
ﺗﻨﻔﻴﺬﻫﺎﻳﺠﺐ ﺗﻀﻤﻴﻨﻬﺎ ،ﻣﻊ ﻋﺪﻡ ﺍﻻﻫﺘﻤﺎﻡ ﺍﻟﻜﺎﻓﻲ ﺑﻜﻴﻔﻴﺔ ﻓﻬﻢ ﺍﻟﻤﺒﺮﻣﺞ ﻟﻬﺬﻩ ﺍﻟﻤﺠﻤﻮﻋﺔ ﻣﻦ
ﺍﻟﺘﺮﻛﻴﺒﺎﺕﻭﺍﻟﻤﻴﺰﺍﺕ ﻭﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﺑﺸﻜﻞ ﻓﻌﺎﻝ .ﻗﺪﻡ ، Edsger Dijkstraﻓﻲ ﻣﺤﺎﺿﺮﺓ ﺟﺎﺉﺰﺓ (
، Turing )Dijkstra، 1972ﺃﺣﺪ ﺃﻗﻮﻯ ﺍﻻﻧﺘﻘﺎﺩﺍﺕ ﻟﺘﻌﻘﻴﺪ :PL / I
ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﻣﺸﻜﻠﺔ ﺍﻟﺘﻌﻘﻴﺪ ﺑﺴﺒﺐ ﺣﺠﻤﻪ ﺍﻟﻜﺒﻴﺮ ،ﻋﺎﻧﻰ PL / Iﻣﻦ ﻋﺪﺩ ﻣﻤﺎ ﻳﻌﺘﺒﺮ
ﺍﻵﻥﻫﻴﺎﻛﻞ ﺳﻴﺉﺔ ﺍﻟﺘﺼﻤﻴﻢ .ﻣﻦ ﺑﻴﻦ ﻫﺬﻩ ﺍﻟﻤﺆﺷﺮﺍﺕ ،ﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ،ﻭﺍﻟﺘﺰﺍﻣﻦ ،
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻨﺎ ﻳﺠﺐ ﺃﻥ ﻧﺸﻴﺮ ﺇﻟﻰ ﺃﻧﻪ ﻓﻲ ﺟﻤﻴﻊ ﺍﻟﺤﺎﻻﺕ ،ﻟﻢ ﺗﻈﻬﺮ ﻫﺬﻩ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﻓﻲ ﺃﻱ
ﻟﻐﺔﺳﺎﺑﻘﺔ.
ﻣﻦﺣﻴﺚ ﺍﻻﺳﺘﺨﺪﺍﻡ ،ﻳﺠﺐ ﺍﻋﺘﺒﺎﺭ PL / Iﻧﺠﺎﺣﺎً ﺟﺰﺉﻴﺎً ﻋﻠﻰ ﺍﻷﻗﻞ .ﻓﻲ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ،
ﺗﻤﺘﻌﺖﺑﺎﺳﺘﺨﺪﺍﻣﺎﺕ ﻛﺒﻴﺮﺓ ﻓﻲ ﻛﻞ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﺠﺎﺭﻳﺔ ﻭﺍﻟﻌﻠﻤﻴﺔ .ﻛﻤﺎ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻋﻠﻰ
ﻧﻄﺎﻕﻭﺍﺳﻊ ﺧﻼﻝ ﺫﻟﻚ ﺍﻟﻮﻗﺖ ﻛﻮﺳﻴﻠﺔ ﺗﻌﻠﻴﻤﻴﺔ ﻓﻲ ﺍﻟﻜﻠﻴﺎﺕ ،ﺑﺸﻜﻞ ﺃﺳﺎﺳﻲ ﻓﻲ ﻋﺪﺓ ﺃﺷﻜﺎﻝ
ﻓﺮﻋﻴﺔ ،ﻣﺜﻞ ) PL / Cﻛﻮﺭﻧﻴﻞ (1977 ،ﻭ ) PL / CSﻛﻮﻧﻮﺍﻱ ﻭﻛﻮﻧﺴﺘﺎﺑﻞ .(1976 ،
ﺍﻟﻨﺘﻴﺠﺔ= ، 0
ﺍﻟﺤﺼﻮﻝﻋﻠﻰ ﻗﺎﺉﻤﺔ ) (LISTLEN؛
ﺇﺫﺍ) (LISTLEN >100) & (LISTLEN< 0ﺛﻢ
71 2.9ﻟﻐﺘﺎﻥ ﺩﻳﻨﺎﻣﻴﻜﻴﺘﺎﻥ ﻣﺒﻜﺮﺗﺎﻥ APL :ﻭ SNOBOL
ﻳﻔﻌﻞ؛
* /ﻗﺮﺍءﺓ ﺑﻴﺎﻧﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﻭﺣﺴﺎﺏ ﺍﻟﻤﺠﻤﻮﻉ * /
ﻫﻞﺍﻟﻌﺪﺍﺩ = 1ﻟﻼﺳﺘﻤﺎﻉ ؛
ﺍﻟﺤﺼﻮﻝﻋﻠﻰ ﻗﺎﺉﻤﺔ )( (INTLIST )COUNTER؛
( SUM = SUM + INTLIST )COUNTER؛ ﻧﻬﺎﻳﺔ؛
ﻧﻬﺎﻳﺔ؛
ﺁﺧﺮ
ﻭﺿﻊﻗﺎﺉﻤﺔ ﺍﻟﺘﺨﻄﻲ )"ﺧﻄﺄ -ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﺍﻟﻄﻮﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ"( ؛ ﻧﻬﺎﻳﺔ PLIEX؛
ﻓﻲﺍﻟﻤﻈﻬﺮ ﻭﺍﻟﻐﺮﺽ ،ﺗﺨﺘﻠﻒ APLﻭ SNOBOLﺗﻤﺎﻣﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻧﻬﻢ ﻳﺘﺸﺎﺭﻛﻮﻥ ﻓﻲ
ﺧﺎﺻﻴﺘﻴﻦﺃﺳﺎﺳﻴﺘﻴﻦ :ﺍﻟﻜﺘﺎﺑﺔ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﻭﺗﺨﺼﻴﺺ ﺍﻟﺘﺨﺰﻳﻦ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻲ .ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻓﻲ
ﻛﻠﺘﺎﺍﻟﻠﻐﺘﻴﻦ ﻏﻴﺮ ﻣﻄﺒﻌﻴﺔ ﻓﻲ ﺍﻷﺳﺎﺱ .ﻳﻜﺘﺴﺐ ﺍﻟﻤﺘﻐﻴﺮ ﻧﻮﻋﺎً ﻋﻨﺪ ﺗﻌﻴﻴﻦ ﻗﻴﻤﺔ ﻟﻪ ،ﻭﻓﻲ ﺫﻟﻚ
ﺍﻟﻮﻗﺖﻳﻔﺘﺮﺽ ﻧﻮﻉ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻌﻴﻨﺔ .ﻳﺘﻢ ﺗﺨﺼﻴﺺ ﺍﻟﺘﺨﺰﻳﻦ ﻟﻠﻤﺘﻐﻴﺮ ﻓﻘﻂ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﻌﻴﻴﻦ
ﻗﻴﻤﺔﻟﻪ ،ﻷﻧﻪ ﻗﺒﻞ ﺫﻟﻚ ﻻ ﺗﻮﺟﺪ ﻃﺮﻳﻘﺔ ﻟﻤﻌﺮﻓﺔ ﻣﻘﺪﺍﺭ ﺍﻟﺘﺨﺰﻳﻦ ﺍﻟﻤﻄﻠﻮﺏ.
.9ﻭﻣﻊ ﺫﻟﻚ ،ﻟﺪﻳﻬﻢ ﺑﻌﺾ ﺍﻟﺘﺄﺛﻴﺮ ﻋﻠﻰ ﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﻏﻴﺮ ﺍﻟﺮﺉﻴﺴﻴﺔ ) Jﻳﻌﺘﻤﺪ ﻋﻠﻰ APL ، ICONﻳﻌﺘﻤﺪ ﻋﻠﻰ
، SNOBOLﻭ AWKﻳﻌﺘﻤﺪ ﺟﺰﺉﻴﺎً ﻋﻠﻰ .(SNOBOL
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 72
ﺗﻢﻭﺻﻒ APLﻷﻭﻝ ﻣﺮﺓ ﻓﻲ ﺍﻟﻜﺘﺎﺏ ﺍﻟﺬﻱ ﺣﺼﻠﺖ ﻣﻨﻪ ﻋﻠﻰ ﺍﺳﻤﻪ ،ﻟﻐﺔ ﺑﺮﻣﺠﺔ)ﺍﻳﻔﺮﺳﻮﻥ ،
.(1962ﻓﻲ ﻣﻨﺘﺼﻒ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ،ﺗﻢ ﺗﻄﻮﻳﺮ ﺃﻭﻝ ﺗﻄﺒﻴﻖ ﻟـ APLﻓﻲ ﺷﺮﻛﺔ .IBM
ﻳﺤﺘﻮﻱ APLﻋﻠﻰ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﻤﺸﻐﻠﻴﻦ ﺍﻷﻗﻮﻳﺎء ﺍﻟﻤﺤﺪﺩﻳﻦ ﺑﻌﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ،ﻣﻤﺎ
ﺧﻠﻖﻣﺸﻜﻠﺔ ﻟﻠﻤﻨﻔﺬﻳﻦ .ﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ،ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ APLﻣﻦ ﺧﻼﻝ ﻣﺤﻄﺎﺕ ﻃﺒﺎﻋﺔ .IBM
ﺗﺤﺘﻮﻱﻫﺬﻩ ﺍﻟﻤﺤﻄﺎﺕ ﻋﻠﻰ ﻛﺮﺍﺕ ﻃﺒﺎﻋﺔ ﺧﺎﺻﺔ ﺗﻮﻓﺮ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ ﺍﻟﻔﺮﺩﻳﺔ ﺍﻟﺘﻲ ﺗﺘﻄﻠﺒﻬﺎ
ﺍﻟﻠﻐﺔ.ﺃﺣﺪ ﺃﺳﺒﺎﺏ ﺍﺣﺘﻮﺍء APLﻋﻠﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺸﻐﻠﻴﻦ ﻫﻮ ﺃﻧﻪ ﻳﻮﻓﺮ ﻋﺪﺩﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﻋﻤﻠﻴﺎﺕ
ﺍﻟﻮﺣﺪﺓﻋﻠﻰ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﺘﻢ ﺗﺒﺪﻳﻞ ﺃﻱ ﻣﺼﻔﻮﻓﺔ ﺑﻌﺎﻣﻞ ﺗﺸﻐﻴﻞ ﻭﺍﺣﺪ.
ﺗﻮﻓﺮﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﻜﺒﻴﺮﺓ ﻣﻦ ﺍﻟﻤﺸﻐﻠﻴﻦ ﺗﻌﺒﻴﺮﺍً ﻋﺎﻟﻴﺎً ﺟﺪﺍً ﻭﻟﻜﻨﻬﺎ ﺗﺠﻌﻞ ﻣﻦ ﺍﻟﺼﻌﺐ ﺃﻳﻀﺎً ﻗﺮﺍءﺓ
ﺑﺮﺍﻣﺞ .APLﻟﺬﻟﻚ ،ﻳﻌﺘﻘﺪ ﺍﻟﻨﺎﺱ ﺃﻥ APLﻛﻠﻐﺔ ﺗﺴﺘﺨﺪﻡ ﺑﺸﻜﻞ ﺃﻓﻀﻞ ﻓﻲ ﺍﻟﺒﺮﻣﺠﺔ "ﺍﻟﻤﻬﻤﻠﺔ"
.ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺇﻣﻜﺎﻧﻴﺔ ﻛﺘﺎﺑﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﺴﺮﻋﺔ ،ﺇﻻ ﺃﻧﻪ ﻳﺠﺐ ﺍﻟﺘﺨﻠﺺ ﻣﻨﻬﺎ ﺑﻌﺪ ﺍﻻﺳﺘﺨﺪﺍﻡ ﻧﻈﺮﺍً
ﻟﺼﻌﻮﺑﺔﺻﻴﺎﻧﺘﻬﺎ.
ﻛﺎﻥ APLﻣﻮﺟﻮﺩﺍً ﻣﻨﺬ ﻣﺎ ﻳﻘﺮﺏ ﻣﻦ 50ﻋﺎﻣﺎً ﻭﻻ ﻳﺰﺍﻝ ﻳﺴﺘﺨﺪﻡ ﺣﺘﻰ ﺍﻟﻴﻮﻡ ،ﻭﺇﻥ ﻟﻢ ﻳﻜﻦ
ﻋﻠﻰﻧﻄﺎﻕ ﻭﺍﺳﻊ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻟﻢ ﻳﺘﻐﻴﺮ ﻛﺜﻴﺮﺍً ﻋﻠﻰ ﻣﺪﺍﺭ ﺣﻴﺎﺗﻪ.
2.10.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﻃﻮﺭﺍﻟﻨﺮﻭﻳﺠﻴﺎﻥ ﻛﺮﻳﺴﺘﻴﻦ ﻧﻴﺠﺎﺭﺩ ﻭﺃﻭﻟﻲ ﻳﻮﻫﺎﻥ ﺩﺍﻝ ﻟﻐﺔ SIMULA Iﺑﻴﻦ ﻋﺎﻣﻲ 1962ﻭ 1964
ﻓﻲﻣﺮﻛﺰ ﺍﻟﺤﻮﺳﺒﺔ ﺍﻟﻨﺮﻭﻳﺠﻲ ) (NCCﻓﻲ ﺃﻭﺳﻠﻮ .ﻛﺎﻧﻮﺍ ﻣﻬﺘﻤﻴﻦ ﻓﻲ ﺍﻟﻤﻘﺎﻡ ﺍﻷﻭﻝ ﺑﺎﺳﺘﺨﺪﺍﻡ
ﺃﺟﻬﺰﺓﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻟﻠﻤﺤﺎﻛﺎﺓ ﻭﻟﻜﻨﻬﻢ ﻋﻤﻠﻮﺍ ﺃﻳﻀﺎً ﻓﻲ ﺃﺑﺤﺎﺙ ﺍﻟﻌﻤﻠﻴﺎﺕ .ﺗﻢ ﺗﺼﻤﻴﻢ SIMULA I
ﺣﺼﺮﻳﺎًﻟﻤﺤﺎﻛﺎﺓ ﺍﻟﻨﻈﺎﻡ ﻭﺗﻢ ﺗﻨﻔﻴﺬﻩ ﻷﻭﻝ ﻣﺮﺓ ﻓﻲ ﺃﻭﺍﺧﺮ ﻋﺎﻡ 1964ﻋﻠﻰ ﻛﻤﺒﻴﻮﺗﺮ 1107
.UNIVAC
73 2.11ﺍﻟﺘﺼﻤﻴﻢ ﺍﻟﻤﺘﻌﺎﻣﺪALGOL 68 :
ﻟﺘﻮﻓﻴﺮﺍﻟﺪﻋﻢ ﻟﻠﻜﻮﺭﻭﺗﻴﻦ ﻓﻲ ، SIMULA 67ﺗﻢ ﺗﻄﻮﻳﺮ ﺑﻨﻴﺔ ﺍﻟﻔﺼﻞ .ﻛﺎﻥ ﻫﺬﺍ ﺗﻄﻮﺭﺍً ﻣﻬﻤﺎً
ﻷﻥﻣﻔﻬﻮﻡ ﺗﺠﺮﻳﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﺪﺃ ﺑﻪ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻳﻮﻓﺮ ﺗﺠﺮﻳﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻷﺳﺎﺱ ﻟﻠﺒﺮﻣﺠﺔ
ﺍﻟﻤﻮﺟﻬﺔﻟﻠﻜﺎﺉﻨﺎﺕ.
2.11.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﻟﻢﻳﻨﺘﻪ ﺗﻄﻮﻳﺮ ﻋﺎﺉﻠﺔ ALGOLﻋﻨﺪﻣﺎ ﻇﻬﺮ ﺍﻟﺘﻘﺮﻳﺮ ﺍﻟﻤﻨﻘﺢ ﻋﻦ ALGOL 60ﻓﻲ ﻋﺎﻡ ، 1962
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﻣﺮﻭﺭ ﺳﺖ ﺳﻨﻮﺍﺕ ﺣﺘﻰ ﺗﻢ ﻧﺸﺮ ﺍﻟﺘﻜﺮﺍﺭ ﺍﻟﺘﺎﻟﻲ ﻟﻠﺘﺼﻤﻴﻢ .ﻛﺎﻧﺖ ﺍﻟﻠﻐﺔ ﺍﻟﻨﺎﺗﺠﺔ ( ،
، ALGOL 68 )van Wijngaarden et al. ، 1969ﻣﺨﺘﻠﻔﺔ ﺗﻤﺎﻣﺎً ﻋﻦ ﺳﺎﺑﻘﺘﻬﺎ.
ﻛﺎﻥﺃﺣﺪ ﺃﻛﺜﺮ ﺍﻻﺑﺘﻜﺎﺭﺍﺕ ﺇﺛﺎﺭﺓ ﻟﻼﻫﺘﻤﺎﻡ ﻓﻲ ALGOL 68ﺃﺣﺪ ﻣﻌﺎﻳﻴﺮ ﺍﻟﺘﺼﻤﻴﻢ ﺍﻷﺳﺎﺳﻴﺔ:
ﺍﻟﺘﻌﺎﻣﺪ.ﺗﺬﻛﺮ ﻣﻨﺎﻗﺸﺘﻨﺎ ﺣﻮﻝ ﺍﻟﺘﻌﺎﻣﺪ ﻓﻲ ﺍﻟﻔﺼﻞ .1ﺃﺩﻯ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻌﺎﻣﺪ ﺇﻟﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ
ﺍﻟﻤﻴﺰﺍﺕﺍﻟﻤﺒﺘﻜﺮﺓ ﻟـ ، ALGOL 68ﺃﺣﺪﻫﺎ ﻣﻮﺻﻮﻑ ﻓﻲ ﺍﻟﻘﺴﻢ ﺍﻟﺘﺎﻟﻲ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 74
ﻛﺎﻥﻧﻬﺞ ALGOL 68ﻓﻲ ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻫﻮ ﺗﻮﻓﻴﺮ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﺍﻷﻧﻮﺍﻉ ﻭﺍﻟﻬﻴﺎﻛﻞ
ﺍﻟﺒﺪﺍﺉﻴﺔﻭﺍﻟﺴﻤﺎﺡ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺑﺪﻣﺞ ﺗﻠﻚ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻷﻭﻟﻴﺔ ﻓﻲ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﻬﻴﺎﻛﻞ ﺍﻟﻤﺨﺘﻠﻔﺔ.
ﺗﻢﻧﻘﻞ ﻫﺬﺍ ﺍﻟﺤﻜﻢ ﻷﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻌﺮﻓﺔ ﻣﻦ ﻗﺒﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺇﻟﻰ ﺣﺪ ﻣﺎ ﺇﻟﻰ ﺟﻤﻴﻊ ﺍﻟﻠﻐﺎﺕ
ﺍﻟﻀﺮﻭﺭﻳﺔﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﻤﺼﻤﻤﺔ ﻣﻨﺬ ﺫﻟﻚ ﺍﻟﺤﻴﻦ .ﺗﻌﺘﺒﺮ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻌﺮﻓﺔ ﻣﻦ ﻗﺒﻞ
ﺍﻟﻤﺴﺘﺨﺪﻡﺫﺍﺕ ﻗﻴﻤﺔ ﻷﻧﻬﺎ ﺗﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺑﺘﺼﻤﻴﻢ ﺗﺠﺮﻳﺪﺍﺕ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﺗﻨﺎﺳﺐ
ﻣﺸﺎﻛﻞﻣﻌﻴﻨﺔ ﺑﺸﻜﻞ ﻭﺛﻴﻖ ﻟﻠﻐﺎﻳﺔ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺟﻤﻴﻊ ﺟﻮﺍﻧﺐ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻓﻲ ﺍﻟﻔﺼﻞ .6
2.11.3ﺍﻟﺘﻘﻴﻴﻢ
ﻳﺘﻀﻤﻦ ALGOL 68ﻋﺪﺩﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺘﻲ ﻟﻢ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻣﺴﺒﻘﺎً .ﻛﺎﻥ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ
ﻟﻠﺘﻌﺎﻣﺪ ،ﺍﻟﺬﻱ ﻗﺪ ﻳﺠﺎﺩﻝ ﺍﻟﺒﻌﺾ ﺃﻧﻪ ﻣﺒﺎﻟﻎ ﻓﻴﻪ ،ﻣﻊ ﺫﻟﻚ ﺛﻮﺭﻳﺎً.
ﻛﺮﺭ ALGOL 68ﺇﺣﺪﻯ ﺧﻄﺎﻳﺎ ، ALGOL 60ﻭﻛﺎﻥ ﻋﺎﻣﻼ ًﻣﻬﻤﺎً ﻓﻲ ﺷﻌﺒﻴﺘﻪ ﺍﻟﻤﺤﺪﻭﺩﺓ .ﺗﻢ
ﻭﺻﻒﺍﻟﻠﻐﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ﻣﻌﺪﻧﻴﺔ ﺃﻧﻴﻘﺔ ﻭﻣﺨﺘﺼﺮﺓ ﻭﻟﻜﻦ ﺃﻳﻀﺎً ﻏﻴﺮ ﻣﻌﺮﻭﻓﺔ .ﻗﺒﻞ ﺃﻥ ﻳﺘﻤﻜﻦ
ﺍﻟﻤﺮءﻣﻦ ﻗﺮﺍءﺓ ﻭﺛﻴﻘﺔ ﻭﺻﻒ ﺍﻟﻠﻐﺔ ) ، (van Wijngaarden et al. ، 1969ﻛﺎﻥ ﻋﻠﻴﻪ ﺃﻥ
ﻳﺘﻌﻠﻢﺍﻟﻠﻐﺔ ﺍﻟﻤﻌﺪﻧﻴﺔ ﺍﻟﺠﺪﻳﺪﺓ ،ﺍﻟﻤﺴﻤﺎﺓ ﻗﻮﺍﻋﺪ ﻗﻮﺍﻋﺪ ﻓﺎﻥ ، Wijngaardenﻭﺍﻟﺘﻲ ﻛﺎﻧﺖ ﺃﻛﺜﺮ
ﺗﻌﻘﻴﺪﺍًﺑﻜﺜﻴﺮ ﻣﻦ .BNFﻟﺠﻌﻞ ﺍﻷﻣﻮﺭ ﺃﺳﻮﺃ ،ﺍﺧﺘﺮﻉ ﺍﻟﻤﺼﻤﻤﻮﻥ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻜﻠﻤﺎﺕ ﻟﺸﺮﺡ
ﺍﻟﻘﻮﺍﻋﺪﻭﺍﻟﻠﻐﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺗﻢ ﺍﺳﺘﺪﻋﺎء ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔﺍﻟﻤﺆﺷﺮﺍﺕﺗﻢ ﺍﺳﺘﺪﻋﺎء
ﺍﺳﺘﺨﺮﺍﺝﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻔﺮﻋﻴﺔﺯﺭﻛﺸﺔ،ﻭﻛﺎﻧﺖ ﻋﻤﻠﻴﺔ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ﺗﺴﻤﻰ ﺃﺍﻹﻛﺮﺍﻩ ﻋﻠﻰ
ﺍﻹﻛﺮﺍﻩ ،ﺍﻟﺬﻱ ﻗﺪ ﻳﻜﻮﻥﻭﺩﻳﻊ ،ﺣﺎﺯﻡ ،ﺃﻭ ﺃﻱ ﺷﻲء ﺁﺧﺮ.
ﺣﻘﻘﺖ PL / Iﻗﺒﻮﻻً ﺃﻛﺒﺮ ﺑﻜﺜﻴﺮ ﻣﻦ ، ALGOL 68ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﺇﻟﻰ ﺟﻬﻮﺩ
IBMﺍﻟﺘﺮﻭﻳﺠﻴﺔ ﻭﻣﺸﺎﻛﻞ ﺍﻟﻔﻬﻢ ﻭﺍﻟﺘﻨﻔﻴﺬ
75 2.12ﺑﻌﺾ ﺍﻟﻤﺘﺤﺪﺭﻳﻦ ﺍﻷﻭﺍﺉﻞ ﻣﻦ ALGOLs
.ﺑﻤﺜﻞﻫﺬﺍ ﺍﻟﻤﺘﺒﺮﻉ ALGOL 68ﻟﺘﻄﺒﻴﻘﻬﺎ ﻋﻠﻰ ﺑﻨﺎء ﻣﺘﺮﺟﻢ .ﻟﻢ ﻳﺘﻤﺘﻊ IBMﻛﺎﻥ ﻟﺪﻳﻪ ﻣﻮﺍﺭﺩ / I
PLﻛﺎﻥ ﺍﻟﺘﻨﻔﻴﺬ ﻣﺸﻜﻠﺔ ﺻﻌﺒﺔ ﻟﻜﻠﻴﻬﻤﺎ ،ﻭﻟﻜﻦ ALGOL 68.
2.12.1.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﻛﺎﻥﻧﻴﻜﻼﻭﺱ ﻭﻳﺮﺙ )ﻳﻄُﻠﻖ ﻋﻠﻰ ﻭﻳﺮﺙ "ﻓﻴﺮﺕ"( ﻋﻀﻮﺍً ﻓﻲ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻌﻤﻞ 2.1ﺍﻟﺘﺎﺑﻌﺔ
ﻟﻼﺗﺤﺎﺩﺍﻟﺪﻭﻟﻲ ﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ) ، (IFIPﻭﺍﻟﺘﻲ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﻟﻤﻮﺍﺻﻠﺔ ﺗﻄﻮﻳﺮ ALGOLﻓﻲ
ﻣﻨﺘﺼﻒﺍﻟﺴﺘﻴﻨﻴﺎﺕ .ﻓﻲ ﺃﻏﺴﻄﺲ ، 1965ﺳﺎﻫﻢ ") Wirth and CARﺗﻮﻧﻲ"( Hoareﻓﻲ
ﻫﺬﺍﺍﻟﺠﻬﺪ ﻣﻦ ﺧﻼﻝ ﺗﻘﺪﻳﻢ ﺍﻗﺘﺮﺍﺡ ﻣﺘﻮﺍﺿﻊ ﺇﻟﻰ ﺣﺪ ﻣﺎ ﻟﻠﻤﺠﻤﻮﻋﺔ ﻹﺿﺎﻓﺎﺕ ﻭﺗﻌﺪﻳﻼﺕ ﻋﻠﻰ
) ALGOL60ﻭﻳﺮﺙ ﻭﻫﻮﺭ .(1966 ،ﺭﻓﻀﺖ ﻏﺎﻟﺒﻴﺔ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻻﻗﺘﺮﺍﺡ ﺑﺎﻋﺘﺒﺎﺭﻩ ﺗﺤﺴﻨﺎً ﺿﺉﻴﻼً
ﻟﻠﻐﺎﻳﺔﻣﻘﺎﺭﻧﺔ ﺑـ .ALGOL 60ﻭﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ ،ﺗﻢ ﺗﻄﻮﻳﺮ ﻣﺮﺍﺟﻌﺔ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً ،ﻭﺍﻟﺘﻲ ﺃﺻﺒﺤﺖ
ﻓﻲﺍﻟﻨﻬﺎﻳﺔ .ALGOL 68ﻟﻢ ﻳﻌﺘﻘﺪ ﻭﻳﺮﺙ ،ﺟﻨﺒﺎً ﺇﻟﻰ ﺟﻨﺐ ﻣﻊ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﺃﻋﻀﺎء ﺍﻟﻤﺠﻤﻮﻋﺔ
ﺍﻵﺧﺮﻳﻦ ،ﺃﻥ ALGOLﻛﺎﻥ ﻳﺠﺐ ﺇﺻﺪﺍﺭ ﺗﻘﺮﻳﺮ ، 68ﺑﻨﺎء ًﻋﻠﻰ ﺗﻌﻘﻴﺪ ﻛﻞ ﻣﻦ ﺍﻟﻠﻐﺔ ﻭﺍﻟﻠﻐﺔ
ﺍﻟﻤﻌﺪﻧﻴﺔﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻟﻮﺻﻔﻪ.
.10ﺳﻤﻲ ﺑﺎﺳﻜﺎﻝ ﻋﻠﻰ ﺍﺳﻢ ﺑﻠﻴﺰ ﺑﺎﺳﻜﺎﻝ ،ﻓﻴﻠﺴﻮﻑ ﻭﻋﺎﻟﻢ ﺭﻳﺎﺿﻴﺎﺕ ﻓﺮﻧﺴﻲ ﻣﻦ ﺍﻟﻘﺮﻥ ﺍﻟﺴﺎﺑﻊ ﻋﺸﺮ ﺍﺧﺘﺮﻉ ﺃﻭﻝ ﺁﻟﺔ
ﺇﺿﺎﻓﺔﻣﻴﻜﺎﻧﻴﻜﻴﺔ ﻋﺎﻡ ) 1642ﻣﻦ ﺑﻴﻦ ﺃﺷﻴﺎء ﺃﺧﺮﻯ(.
ﺗﻄﻮﺭﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﻔﺼﻞ2 76
2.12.1.2ﺍﻟﺘﻘﻴﻴﻢ
ﻛﺎﻥﺍﻟﺘﺄﺛﻴﺮ ﺍﻷﻛﺒﺮ ﻟﺒﺎﺳﻜﺎﻝ ﻋﻠﻰ ﺗﺪﺭﻳﺲ ﺍﻟﺒﺮﻣﺠﺔ .ﻓﻲ ﻋﺎﻡ ، 1970ﺗﻢ ﺗﻘﺪﻳﻢ ﻣﻌﻈﻢ ﻃﻼﺏ ﻋﻠﻮﻡ
ﺍﻟﻜﻤﺒﻴﻮﺗﺮﻭﺍﻟﻬﻨﺪﺳﺔ ﻭﺍﻟﻌﻠﻮﻡ ﺇﻟﻰ ﺍﻟﺒﺮﻣﺠﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ، Fortranﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺑﻌﺾ
ﺍﻟﺠﺎﻣﻌﺎﺕﺍﺳﺘﺨﺪﻣﺖ ، PL / Iﻭﺍﻟﻠﻐﺎﺕ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ، PL / Iﻭ .ALGOL-Wﺑﺤﻠﻮﻝ
ﻣﻨﺘﺼﻒﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ،ﺃﺻﺒﺤﺖ ﺑﺎﺳﻜﺎﻝ ﺍﻟﻠﻐﺔ ﺍﻷﻛﺜﺮ ﺍﺳﺘﺨﺪﺍﻣﺎً ﻟﻬﺬﺍ ﺍﻟﻐﺮﺽ .ﻛﺎﻥ ﻫﺬﺍ ﻃﺒﻴﻌﻴﺎً
ﺗﻤﺎﻣﺎً ،ﻷﻥ Pascalﺻﻤُﻤﺖ ﺧﺼﻴﺼﺎً ﻟﺘﺪﺭﻳﺲ ﺍﻟﺒﺮﻣﺠﺔ .ﺣﺘﻰ ﺃﻭﺍﺧﺮ ﺍﻟﺘﺴﻌﻴﻨﻴﺎﺕ ﻟﻢ ﺗﻌﺪ
ﺑﺎﺳﻜﺎﻝﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻷﻛﺜﺮ ﺍﺳﺘﺨﺪﺍﻣﺎً ﻟﺘﺪﺭﻳﺲ ﺍﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺍﻟﻜﻠﻴﺎﺕ ﻭﺍﻟﺠﺎﻣﻌﺎﺕ.
ﻧﻈﺮﺍًﻟﺘﺼﻤﻴﻢ ﺑﺎﺳﻜﺎﻝ ﻛﻠﻐﺔ ﺗﺪﺭﻳﺲ ،ﻓﺈﻧﻬﺎ ﺗﻔﺘﻘﺮ ﺇﻟﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﻀﺮﻭﺭﻳﺔ
ﻟﻠﻌﺪﻳﺪﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ .ﺃﻓﻀﻞ ﻣﺜﺎﻝ ﻋﻠﻰ ﺫﻟﻚ ﻫﻮ ﺍﺳﺘﺤﺎﻟﺔ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻋﻲ ﻳﺄﺧﺬ
ﻛﻤﻌﺎﻣﻞﺻﻔﻴﻒ ﻣﺘﻐﻴﺮ ﺍﻟﻄﻮﻝ .ﻣﺜﺎﻝ ﺁﺧﺮ ﻫﻮ ﻋﺪﻡ ﻭﺟﻮﺩ ﺃﻱ ﻗﺪﺭﺓ ﺗﺠﻤﻴﻊ ﻣﻨﻔﺼﻠﺔ .ﺃﺩﺕ ﻫﺬﻩ
ﺍﻟﻌﻴﻮﺏﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﺇﻟﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻬﺠﺎﺕ ﻏﻴﺮ ﺍﻟﻘﻴﺎﺳﻴﺔ ،ﻣﺜﻞ .Turbo Pascal
؛intlisttype: intlisttype
ﺍﻟﻌﺪﺍﺩ ،ﺍﻟﻤﺠﻤﻮﻉ ،ﺍﻟﻤﺘﻮﺳﻂ ،ﺍﻟﻨﺘﻴﺠﺔ :ﻋﺪﺩ ﺻﺤﻴﺢ ؛ listlen ،ﻳﺒﺪﺃ
ﺍﻟﻨﺘﻴﺠﺔ 0 =:؛
ﺍﻟﻤﺠﻤﻮﻉ 0 =:؛
؛ (readln )listlen
ﻟﻮ))(listlen< 0ﻭ)((listlen >100ﺛﻢ
ﻳﺒﺪﺃ
}ﺍﻗﺮﺃ ﺍﻹﺩﺧﺎﻝ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﻭﺍﺣﺴﺐ ﺍﻟﻤﺠﻤﻮﻉ{
ﻝﺍﻟﻌﺪﺍﺩ1 = :ﻝlistlenﻳﻔﻌﻞ
ﻳﺒﺪﺃ
[: = sum + intlist ]counter؛ ﺍﻟﻤﺠﻤﻮﻉ ([ﻋﺪﺍﺩ
] readln )intlistﻧﻬﺎﻳﺔ؛
77 2.12ﺑﻌﺾ ﺍﻟﻤﺘﺤﺪﺭﻳﻦ ﺍﻷﻭﺍﺉﻞ ﻣﻦ ALGOLs
}ﺍﺣﺴﺐ ﺍﻟﻤﺘﻮﺳﻂ{
ﺍﻟﻤﺘﻮﺳﻂ sum / listlen =:؛
}ﺣﺴﺎﺏ ﻋﺪﺩ ﻗﻴﻢ ﺍﻹﺩﺧﺎﻝ ﺍﻟﺘﻲ ﺗﻜﻮﻥ< ﻣﺘﻮﺳﻂ{
ﻝﺍﻟﻌﺪﺍﺩ1 = :ﻝlistlenﻳﻔﻌﻞ
ﻟﻮ)(ﻣﺘﻮﺳﻂ <[ﻋﺪﺍﺩ] intlistﺛﻢ
ﺍﻟﻨﺘﻴﺠﺔ =:ﻧﺘﻴﺠﺔ 1 +؛ }ﻃﺒﺎﻋﺔ
ﺍﻟﻨﺘﻴﺠﺔ{
:"،ﻋﺪﺩ ﺍﻟﻘﻴﻢ< ﺍﻟﻤﺘﻮﺳﻂ ﻫﻮ") writeln
ﻧﺘﻴﺠﺔ(
ﻧﻬﺎﻳﺔ}ﻣﻦ ﻋﺒﺎﺭﺓ ﺛﻢ ﺇﺫﺍ )) {... listlen< 0ﺁﺧﺮ
2.12.2.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﺃﺳﻼﻑ Cﺗﺸﻤﻞ CPLﻭ BCPLﻭ Bﻭ .ALGOL 68ﺗﻢ ﺗﻄﻮﻳﺮ CPLﻓﻲ ﺟﺎﻣﻌﺔ ﻛﺎﻣﺒﺮﻳﺪﺝ ﻓﻲ
ﺃﻭﺍﺉﻞﺍﻟﺴﺘﻴﻨﻴﺎﺕ BCPL .ﻫﻲ ﻟﻐﺔ ﺃﻧﻈﻤﺔ ﺑﺴﻴﻄﺔ ،ﺗﻢ ﺗﻄﻮﻳﺮﻫﺎ ﺃﻳﻀﺎً ﻓﻲ ﻛﺎﻣﺒﺮﻳﺪﺝ ،ﻫﺬﻩ
ﺍﻟﻤﺮﺓﺑﻮﺍﺳﻄﺔ Martin Richardsﻓﻲ ﻋﺎﻡ .(Richards ، 1969) 1967
ﺗﻢﺗﻨﻔﻴﺬ ﺃﻭﻝ ﻋﻤﻞ ﻋﻠﻰ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ UNIXﻓﻲ ﺃﻭﺍﺧﺮ ﺍﻟﺴﺘﻴﻨﻴﺎﺕ ﺑﻮﺍﺳﻄﺔ ﻛﻴﻦ
ﻃﻮﻣﺴﻮﻥﻓﻲ ﻣﺨﺘﺒﺮﺍﺕ ﺑﻴﻞ .ﺗﻤﺖ ﻛﺘﺎﺑﺔ ﺍﻟﻨﺴﺨﺔ ﺍﻷﻭﻟﻰ ﺑﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ .ﺃﻭﻝ ﻟﻐﺔ ﻋﺎﻟﻴﺔ
ﺍﻟﻤﺴﺘﻮﻯﺗﻢ ﺗﻨﻔﻴﺬﻫﺎ ﺗﺤﺖ UNIXﻛﺎﻧﺖ ، Bﻭﺍﻟﺘﻲ ﻛﺎﻧﺖ ﻣﺒﻨﻴﺔ ﻋﻠﻰ .BCPLﺗﻢ ﺗﺼﻤﻴﻢ
ﻭﺗﻨﻔﻴﺬ Bﺑﻮﺍﺳﻄﺔ Thompsonﻓﻲ ﻋﺎﻡ .1970
ﻻﺗﻌُﺪ BCPLﻭﻻ Bﻟﻐﺔ ﻣﻜﺘﻮﺑﺔ ،ﻭﻫﻮ ﺃﻣﺮ ﻏﺮﻳﺐ ﺑﻴﻦ ﺍﻟﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ،ﻋﻠﻰ
ﺍﻟﺮﻏﻢﻣﻦ ﺃﻥ ﻛﻼﻫﻤﺎ ﺃﻗﻞ ﻣﺴﺘﻮﻯ ﺑﻜﺜﻴﺮ ﻣﻦ ﻟﻐﺔ ﻣﺜﻞ .Javaﻋﺪﻡ ﺍﻟﻜﺘﺎﺑﺔ ﻳﻌﻨﻲ ﺃﻥ ﺟﻤﻴﻊ
ﺍﻟﺒﻴﺎﻧﺎﺕﺗﻌﺘﺒﺮ ﻛﻠﻤﺎﺕ ﺁﻟﻴﺔ ،ﻭﺍﻟﺘﻲ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺑﺴﺎﻃﺘﻬﺎ ،ﺗﺆﺩﻱ ﺇﻟﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ
ﺍﻟﺘﻌﻘﻴﺪﺍﺕﻭﻋﺪﻡ ﺍﻷﻣﺎﻥ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻫﻨﺎﻙ ﻣﺸﻜﻠﺔ ﺗﺤﺪﻳﺪ ﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ ﺑﺪﻻ ًﻣﻦ
ﺍﻟﺤﺴﺎﺏﺍﻟﺼﺤﻴﺢ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮ .ﻓﻲ ﺃﺣﺪ ﺗﻄﺒﻴﻘﺎﺕ ، BCPLﻛﺎﻧﺖ ﺍﻟﻤﻌﺎﻣﻼﺕ ﺍﻟﻤﺘﻐﻴﺮﺓ ﻟﻌﻤﻠﻴﺔ
ﺍﻟﻔﺎﺻﻠﺔﺍﻟﻌﺎﺉﻤﺔ ﻣﺴﺒﻮﻗﺔ ﺑﻔﺘﺮﺍﺕ .ﺗﻢ ﺍﻋﺘﺒﺎﺭ ﺍﻟﻤﻌﺎﻣﻼﺕ ﺍﻟﻤﺘﻐﻴﺮﺓ ﺍﻟﺘﻲ ﻻ ﺗﺴﺒﻘﻬﺎ ﻓﺘﺮﺍﺕ
ﺃﻋﺪﺍﺩﺍًﺻﺤﻴﺤﺔ .ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﺍﻟﺒﺪﻳﻞ ﻋﻦ ﺫﻟﻚ ﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﺭﻣﻮﺯ ﻣﺨﺘﻠﻔﺔ
ﻟﻤﺸﻐﻠﻲﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ.
ﺃﺩﺕﻫﺬﻩ ﺍﻟﻤﺸﻜﻠﺔ ،ﺇﻟﻰ ﺟﺎﻧﺐ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺸﻜﻼﺕ ﺍﻷﺧﺮﻯ ،ﺇﻟﻰ ﺗﻄﻮﻳﺮ ﻟﻐﺔ ﻣﻜﺘﻮﺑﺔ
ﺟﺪﻳﺪﺓﺑﻨﺎء ًﻋﻠﻰ .Bﻛﺎﻧﺖ ﺗﺴﻤﻰ ﻓﻲ ﺍﻷﺻﻞ NBﻭﻟﻜﻦ ﺳﻤﻴﺖ ﻻﺣﻘﺎً ، Cﻭﻗﺪ ﺻﻤﻤﻬﺎ ﻭﻧﻔﺬﻫﺎ
Dennis Ritchieﻓﻲ ﻣﺨﺘﺒﺮﺍﺕ Bellﻓﻲ ﻋﺎﻡ .(Kernighan and Ritchie ، 1978) 1972
ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ﻣﻦ ﺧﻼﻝ ، BCPLﻭﻓﻲ ﺣﺎﻻﺕ ﺃﺧﺮﻯ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ،ﺗﺄﺛﺮ Cﺑـ ALGOL 68
.ﻳﻈﻬﺮ ﻫﺬﺍ ﻓﻲﻝ
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 78
ﻛﺎﻥ"ﺍﻟﻤﻌﻴﺎﺭ" ﺍﻟﻮﺣﻴﺪ ﻟﻠﻐﺔ Cﻓﻲ ﺃﻭﻝ ﻋﻘﺪ ﻭﻧﺼﻒ ﻫﻮ ﻛﺘﺎﺏ (and Ritchie )1978
11.Kernighanﺧﻼﻝ ﺗﻠﻚ ﺍﻟﻔﺘﺮﺓ ﺍﻟﺰﻣﻨﻴﺔ ،ﺗﻄﻮﺭﺕ ﺍﻟﻠﻐﺔ ﺑﺒﻂء ،ﺣﻴﺚ ﺃﺿﺎﻑ ﺍﻟﻤﻨﻔﺬﻭﻥ
ﺍﻟﻤﺨﺘﻠﻔﻮﻥﻣﻴﺰﺍﺕ ﻣﺨﺘﻠﻔﺔ .ﻓﻲ ﻋﺎﻡ ، 1989ﺃﻧﺘﺠﺖ ANSIﻭﺻﻔﺎً ﺭﺳﻤﻴﺎً ﻟـ (C )ANSI ، 1989
،ﻭﺍﻟﺬﻱ ﺗﻀﻤﻦ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺘﻲ ﺃﺩﺭﺟﻬﺎ ﺍﻟﻤﻨﻔﺬﻭﻥ ﺑﺎﻟﻔﻌﻞ ﻓﻲ ﺍﻟﻠﻐﺔ .ﺗﻢ ﺗﺤﺪﻳﺚ ﻫﺬﺍ
ﺍﻟﻤﻌﻴﺎﺭﻓﻲ ﻋﺎﻡ .(ISO ، 1999) 1999ﻳﺘﻀﻤﻦ ﻫﺬﺍ ﺍﻹﺻﺪﺍﺭ ﺍﻷﺣﺪﺙ ﺑﻌﺾ ﺍﻟﺘﻐﻴﻴﺮﺍﺕ ﺍﻟﻤﻬﻤﺔ
ﻓﻲﺍﻟﻠﻐﺔ .ﻣﻦ ﺑﻴﻨﻬﺎ ﻧﻮﻉ ﺑﻴﺎﻧﺎﺕ ﻣﻌﻘﺪ ﻭﻧﻮﻉ ﺑﻴﺎﻧﺎﺕ ﻣﻨﻄﻘﻴﺔ ﻭﺗﻌﻠﻴﻘﺎﺕ ﻧﻤﻂ .(//) ++ Cﺳﻮﻑ
ﻧﺸﻴﺮﺇﻟﻰ ﺇﺻﺪﺍﺭ ، 1989ﻭﺍﻟﺬﻱ ﻛﺎﻥ ﻳﻄُﻠﻖ ﻋﻠﻴﻪ ﻣﻨﺬ ﻓﺘﺮﺓ ﻃﻮﻳﻠﺔ ، ANSI Cﺑﺎﺳﻢ C89؛
ﺳﻮﻑﻧﺸﻴﺮ ﺇﻟﻰ ﺇﺻﺪﺍﺭ 1999ﺑﺎﺳﻢ .C99
2.12.2.2ﺍﻟﺘﻘﻴﻴﻢ
ﻳﺤﺘﻮﻱ Cﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺗﺤﻜﻢ ﻛﺎﻓﻴﺔ ﻭﻣﺮﺍﻓﻖ ﻫﻴﻜﻠﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻟﻠﺴﻤﺎﺡ ﺑﺎﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﻲ ﺍﻟﻌﺪﻳﺪ
ﻣﻦﻣﺠﺎﻻﺕ ﺍﻟﺘﻄﺒﻴﻖ .ﻛﻤﺎ ﺃﻥ ﻟﺪﻳﻬﺎ ﻣﺠﻤﻮﻋﺔ ﻏﻨﻴﺔ ﻣﻦ ﺍﻟﻤﺸﻐﻠﻴﻦ ﺍﻟﺬﻳﻦ ﻳﻮﻓﺮﻭﻥ ﺩﺭﺟﺔ ﻋﺎﻟﻴﺔ
ﻣﻦﺍﻟﺘﻌﺒﻴﺮﻳﺔ.
ﺃﺣﺪﺃﻫﻢ ﺍﻷﺳﺒﺎﺏ ﺍﻟﺘﻲ ﺗﺠﻌﻞ Cﻣﺤﺒﻮﺑﺎً ﻭﻏﻴﺮ ﻣﺮﻏﻮﺏ ﻓﻴﻪ ﻫﻮ ﺍﻓﺘﻘﺎﺭﻩ ﺇﻟﻰ ﺍﻟﺘﺤﻘﻖ ﺍﻟﻜﺎﻣﻞ
ﻣﻦﺍﻟﻨﻮﻉ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﻗﺒﻞ ، C99ﻳﻤﻜﻦ ﻛﺘﺎﺑﺔ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﺘﻲ ﻟﻢ ﻳﺘﻢ
ﺍﻟﺘﺤﻘﻖﻣﻦ ﻧﻮﻉ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ .ﺃﻭﻟﺉﻚ ﺍﻟﺬﻳﻦ ﻳﺤﺒﻮﻥ Cﻳﻘﺪﺭﻭﻥ ﺍﻟﻤﺮﻭﻧﺔ ؛ ﺃﻭﻟﺉﻚ
ﺍﻟﺬﻳﻦﻻ ﻳﺤﺒﻮﻧﻪ ﻳﺠﺪﻭﻧﻬﺎ ﻏﻴﺮ ﺁﻣﻨﺔ ﻟﻠﻐﺎﻳﺔ .ﻛﺎﻥ ﺃﺣﺪ ﺍﻷﺳﺒﺎﺏ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻟﻠﺰﻳﺎﺩﺓ ﺍﻟﻜﺒﻴﺮﺓ ﻓﻲ
ﺷﻌﺒﻴﺘﻬﺎﻓﻲ ﺍﻟﺜﻤﺎﻧﻴﻨﻴﺎﺕ ﻫﻮ ﺃﻥ ﻣﺘﺮﺟﻤﻬﺎ ﻛﺎﻥ ﺟﺰءﺍً ﻣﻦ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ UNIXﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﻠﻰ
ﻧﻄﺎﻕﻭﺍﺳﻊ .ﻗﺪﻡ ﻫﺬﺍ ﺍﻟﺘﻀﻤﻴﻦ ﻓﻲ UNIXﻣﺘﺮﺟﻤﺎً ﻣﺠﺎﻧﻴﺎً ﻭﺟﻴﺪﺍً ﺟﺪﺍً ﻛﺎﻥ ﻣﺘﺎﺣﺎً ﻟﻠﻤﺒﺮﻣﺠﻴﻦ
ﻋﻠﻰﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻮﺍﻉ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﺨﺘﻠﻔﺔ.
intﻋﺪﺍﺩ ،ﻣﺠﻤﻮﻉ ،ﻣﺘﻮﺳﻂ ،ﻧﺘﻴﺠﺔ ؛ ﺍﻟﻤﺠﻤﻮﻉ = 0؛ intlist ]99[ ، listlen ،
ﺍﻟﻨﺘﻴﺠﺔ= 0؛
؛ (scanf )"٪ d" ، & listlen
ﻟﻮ))} ((listlen< 0( && )listlen >100
* /ﻗﺮﺍءﺓ ﺍﻟﻤﺪﺧﻼﺕ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻭﺣﺴﺎﺏ ﺍﻟﻤﺠﻤﻮﻉ * /
ﻝ)ﻋﺪﺍﺩ = 0؛ ﻋﺪﺍﺩ > listlen؛ ﻋﺪﺍﺩ } (++
؛ [ﻋﺪﺍﺩ] + = intlist؛ ﻣﺠﻤﻮﻉ ([ﻋﺪﺍﺩ] d" ، & intlist
scanf )"٪
{
2.13.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﺧﻼﻝﺃﻭﺍﺉﻞ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ،ﻃﻮﺭ ﺁﻻﻥ ﻛﻮﻟﻤﺮﻭﺭ ﻭﻓﻴﻠﻴﺐ ﺭﻭﺳﻴﻞ ﻓﻲ ﻣﺠﻤﻮﻋﺔ ﺍﻟﺬﻛﺎء
ﺍﻻﺻﻄﻨﺎﻋﻲﺑﺠﺎﻣﻌﺔ ﺇﻳﻜﺲ ﻣﺮﺳﻴﻠﻴﺎ ،ﻣﻊ ﺭﻭﺑﺮﺕ ﻛﻮﺍﻟﺴﻜﻲ ﻣﻦ ﻗﺴﻢ ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ
ﺑﺠﺎﻣﻌﺔﺇﺩﻧﺒﺮﺓ ،ﺍﻟﺘﺼﻤﻴﻢ ﺍﻷﺳﺎﺳﻲ ﻟـ .Prologﺍﻟﻤﻜﻮﻧﺎﺕ ﺍﻷﺳﺎﺳﻴﺔ ﻟﺒﺮﻧﺎﻣﺞ Prologﻫﻲ
ﻃﺮﻳﻘﺔﻟﺘﺤﺪﻳﺪ ﻣﻘﺘﺮﺣﺎﺕ ﺣﺴﺎﺏ ﺍﻟﺘﻔﺎﺿﻞ ﻭﺍﻟﺘﻜﺎﻣﻞ ﺍﻷﺻﻠﻴﺔ ﻭﺗﻨﻔﻴﺬ ﺷﻜﻞ ﻣﻘﻴﺪ ﻣﻦ ﺍﻟﺪﻗﺔ.
ﺗﻢﻭﺻﻒ ﻛﻞ ﻣﻦ ﺣﺴﺎﺏ ﺍﻟﺘﻔﺎﺿﻞ ﻭﺍﻟﺘﻜﺎﻣﻞ ﺍﻷﺻﻠﻲ ﻭﺍﻟﻘﺮﺍﺭ ﻓﻲ ﺍﻟﻔﺼﻞ .16ﺗﻢ ﺗﻄﻮﻳﺮ ﺃﻭﻝ
ﻣﺘﺮﺟﻢ Prologﻓﻲ ﻣﺮﺳﻴﻠﻴﺎ ﻓﻲ ﻋﺎﻡ .1972ﻧﺴﺨﺔ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﻢ ﺗﻄﺒﻴﻘﻬﺎ ﻣﻮﺻﻮﻓﺔ ﻓﻲ
ﺭﻭﺳﻴﻞ) .(1975ﺍﺳﻢ Prologﻣﻦﻃﻠﻴﻌﺔﻗﻮﺍﻋﺪ ﺍﻟﻠﻐﺔﺳﺠﻞﺟﻴﻢ.
ﺍﻷﻡ)ﺟﻮﺍﻥ ،ﺟﻴﻚ(.
ﺍﻷﺏ)ﻓﻴﺮﻥ ،ﺟﻮﺍﻥ(.
ﺍﻷﺏ)ﺑﻮﺏ ،ﺩﺍﺭﺳﻲ(.
ﻫﺬﺍﻳﺴﺄﻝ ﺇﺫﺍﺑﻮﺏﻫﻞﺃﺏﻝﺩﺍﺭﺳﻲ.ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﻘﺪﻳﻢ ﻣﺜﻞ ﻫﺬﺍ ﺍﻻﺳﺘﻌﻼﻡ ﺃﻭ ﺍﻟﻬﺪﻑ ﺇﻟﻰ ﻧﻈﺎﻡ
، Prologﻓﺈﻧﻪ ﻳﺴﺘﺨﺪﻡ ﻋﻤﻠﻴﺔ ﺣﻠﻪ ﻟﻤﺤﺎﻭﻟﺔ ﺗﺤﺪﻳﺪ ﺣﻘﻴﻘﺔ ﺍﻟﺒﻴﺎﻥ .ﺇﺫﺍ ﺍﺳﺘﻨﺘﺞ ﺃﻥ ﺍﻟﻬﺪﻑ
ﺻﺤﻴﺢ ،ﻓﺈﻧﻪ ﻳﻌﺮﺽ "ﺻﺤﻴﺢ" .ﺇﺫﺍ ﻟﻢ ﻳﺘﻤﻜﻦ ﻣﻦ ﺇﺛﺒﺎﺕ ﺫﻟﻚ ،ﻓﺈﻧﻪ ﻳﻌﺮﺽ "ﺧﻄﺄ".
2.13.3ﺍﻟﺘﻘﻴﻴﻢ
ﻓﻲﺍﻟﺜﻤﺎﻧﻴﻨﻴﺎﺕ ،ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﻣﺠﻤﻮﻋﺔ ﺻﻐﻴﺮﺓ ﻧﺴﺒﻴﺎً ﻣﻦ ﻋﻠﻤﺎء ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺬﻳﻦ ﺍﻋﺘﻘﺪﻭﺍ ﺃﻥ
ﺍﻟﺒﺮﻣﺠﺔﺍﻟﻤﻨﻄﻘﻴﺔ ﺗﻮﻓﺮ ﺃﻓﻀﻞ ﺃﻣﻞ ﻟﻠﻬﺮﻭﺏ ﻣﻦ ﺗﻌﻘﻴﺪ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺤﺘﻤﻴﺔ ،ﻭﻛﺬﻟﻚ ﻣﻦ ﺍﻟﻤﺸﻜﻠﺔ
ﺍﻟﻬﺎﺉﻠﺔﺍﻟﻤﺘﻤﺜﻠﺔ ﻓﻲ ﺇﻧﺘﺎﺝ ﻛﻤﻴﺔ ﻛﺒﻴﺮﺓ ﻣﻦ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻮﺛﻮﻗﺔ ﺍﻟﻤﻄﻠﻮﺑﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﺣﺘﻰ ﺍﻵﻥ ،
ﻫﻨﺎﻙﺳﺒﺒﺎﻥ ﺭﺉﻴﺴﻴﺎﻥ ﻟﻌﺪﻡ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ .ﺃﻭﻻ ً ،ﻛﻤﺎ ﻫﻮ
ﺍﻟﺤﺎﻝﻣﻊ ﺑﻌﺾ ﺍﻟﻤﻨﺎﻫﺞ ﻏﻴﺮ ﺍﻹﺟﺮﺍﺉﻴﺔ ﺍﻷﺧﺮﻯ ،ﺃﺛﺒﺘﺖ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻜﺘﻮﺑﺔ ﺑﻠﻐﺎﺕ ﺍﻟﻤﻨﻄﻖ ﺣﺘﻰ
ﺍﻵﻥﺃﻧﻬﺎ ﻏﻴﺮ ﻓﻌﺎﻟﺔ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﺑﺎﻟﻨﺴﺒﺔ ﺇﻟﻰ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﺤﺘﻤﻴﺔ ﺍﻟﻤﻜﺎﻓﺉﺔ .ﺛﺎﻧﻴﺎً ،ﺗﻢ ﺗﺤﺪﻳﺪ ﺃﻧﻪ
ﻧﻬﺞﻓﻌﺎﻝ ﻟﻌﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﻣﺠﺎﻻﺕ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺼﻐﻴﺮﺓ ﻧﺴﺒﻴﺎً :ﺃﻧﻮﺍﻉ ﻣﻌﻴﻨﺔ ﻣﻦ ﺃﻧﻈﻤﺔ ﺇﺩﺍﺭﺓ
ﻗﻮﺍﻋﺪﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﺑﻌﺾ ﻣﺠﺎﻻﺕ ﺍﻟﺬﻛﺎء ﺍﻻﺻﻄﻨﺎﻋﻲ.
2.14.1ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ
ﺗﻢﺗﻄﻮﻳﺮ ﻟﻐﺔ Adaﻟﻮﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ ) ، (DoDﻟﺬﻟﻚ ﻛﺎﻧﺖ ﺣﺎﻟﺔ ﺑﻴﺉﺔ ﺍﻟﺤﻮﺳﺒﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻬﻢ ﻣﻔﻴﺪﺓ
ﻓﻲﺗﺤﺪﻳﺪ ﺷﻜﻠﻬﺎ .ﺑﺤﻠﻮﻝ ﻋﺎﻡ ، 1974ﻛﺎﻥ ﺃﻛﺜﺮ ﻣﻦ ﻧﺼﻒ ﺗﻄﺒﻴﻘﺎﺕ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻓﻲ
ﻭﺯﺍﺭﺓﺍﻟﺪﻓﺎﻉ ﺃﻧﻈﻤﺔ ﻣﺪﻣﺠﺔ .ﺍﻟﻨﻈﺎﻡ ﺍﻟﻤﻀﻤﻦ ﻫﻮ ﺍﻟﻨﻈﺎﻡ ﺍﻟﺬﻱ ﻳﺘﻢ ﻓﻴﻪ ﺗﻀﻤﻴﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ
ﻓﻲﺍﻟﺠﻬﺎﺯ ﺍﻟﺬﻱ ﻳﺘﺤﻜﻢ ﻓﻴﻪ ﺃﻭ ﺍﻟﺬﻱ ﻳﻘﺪﻡ ﺧﺪﻣﺎﺕ ﻟﻪ .ﻛﺎﻧﺖ ﺗﻜﺎﻟﻴﻒ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﺗﺮﺗﻔﻊ
ﺑﺴﺮﻋﺔ ،ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﻓﻲ ﺍﻟﻤﻘﺎﻡ ﺍﻷﻭﻝ ﺇﻟﻰ ﺍﻟﺘﻌﻘﻴﺪ ﺍﻟﻤﺘﺰﺍﻳﺪ ﻟﻸﻧﻈﻤﺔ .ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻛﺜﺮ ﻣﻦ
450ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻣﺨﺘﻠﻔﺔ ﻟﻤﺸﺎﺭﻳﻊ ﻭﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ ،ﻭﻟﻢ ﻳﺘﻢ ﺗﻮﺣﻴﺪ ﺃﻱ ﻣﻨﻬﺎ ﺑﻮﺍﺳﻄﺔ ﻭﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ.
ﻳﻤﻜﻦﻟﻜﻞ ﻣﻘﺎﻭﻝ ﺩﻓﺎﻉ ﺗﺤﺪﻳﺪ ﻟﻐﺔ ﺟﺪﻳﺪﺓ ﻭﻣﺨﺘﻠﻔﺔ ﻟﻜﻞ ﻋﻘﺪ12.ﺑﺴﺒﺐ ﺍﻧﺘﺸﺎﺭ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ،
ﻧﺎﺩﺭﺍًﻣﺎ ﻳﺘﻢ ﺇﻋﺎﺩﺓ ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻟﻢ ﻳﺘﻢ ﺇﻧﺸﺎء ﺃﺩﻭﺍﺕ ﺗﻄﻮﻳﺮ
ﺑﺮﻣﺠﻴﺎﺕ)ﻷﻧﻬﺎ ﻋﺎﺩﺓ ﻣﺎ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺍﻟﻠﻐﺔ( .ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ،ﻭﻟﻜﻦ ﻟﻢ ﻳﻜﻦ ﺃﻱ
ﻣﻨﻬﺎﻣﻨﺎﺳﺒﺎً ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﻧﻈﻤﺔ ﺍﻟﻤﻀﻤﻨﺔ .ﻟﻬﺬﻩ ﺍﻷﺳﺒﺎﺏ ،ﻓﻲ ﻋﺎﻡ ، 1974ﺍﻗﺘﺮﺡ ﻛﻞ ﻣﻦ
ﺍﻟﺠﻴﺶﻭﺍﻟﺒﺤﺮﻳﺔ ﻭﺍﻟﻘﻮﺍﺕ ﺍﻟﺠﻮﻳﺔ ﺑﺸﻜﻞ ﻣﺴﺘﻘﻞ ﺗﻄﻮﻳﺮ ﻟﻐﺔ ﻭﺍﺣﺪﺓ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻮﻯ ﻟﻸﻧﻈﻤﺔ
ﺍﻟﻤﺪﻣﺠﺔ.
2.14.2ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﻣﻊﻣﻼﺣﻈﺔ ﻫﺬﺍ ﺍﻻﻫﺘﻤﺎﻡ ﺍﻟﻮﺍﺳﻊ ،ﻓﻲ ﻳﻨﺎﻳﺮ ، 1975ﺷﻜﻞ ﻣﺎﻟﻜﻮﻟﻢ ﻛﻮﺭﻱ ،ﻣﺪﻳﺮ ﺃﺑﺤﺎﺙ ﺍﻟﺪﻓﺎﻉ
ﻭﺍﻟﻬﻨﺪﺳﺔ ،ﻣﺠﻤﻮﻋﺔ ﺍﻟﻌﻤﻞ ﺍﻟﻠﻐﻮﻳﺔ ﺭﻓﻴﻌﺔ ﺍﻟﻤﺴﺘﻮﻯ ) ، (HOLWGﺑﺮﺉﺎﺳﺔ ﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ
ﺍﻟﻠﻔﺘﻨﺎﻧﺖﻛﻮﻟﻮﻧﻴﻞ ﻭﻳﻠﻴﺎﻡ ﻭﻳﺘﺎﻛﺮ ﻣﻦ ﺳﻼﺡ ﺍﻟﺠﻮ .ﻛﺎﻥ ﻟﺪﻯ HOLWGﻣﻤﺜﻠﻴﻦ ﻣﻦ ﺟﻤﻴﻊ
ﺍﻟﺨﺪﻣﺎﺕﺍﻟﻌﺴﻜﺮﻳﺔ ﻭﺍﻟﻌﻼﻗﺎﺕ ﻣﻊ ﺑﺮﻳﻄﺎﻧﻴﺎ ﺍﻟﻌﻈﻤﻰ ﻭﻓﺮﻧﺴﺎ ﻭﻣﺎ ﻛﺎﻥ ﻳﻌﺮﻑ ﺁﻧﺬﺍﻙ ﺑﺄﻟﻤﺎﻧﻴﺎ
ﺍﻟﻐﺮﺑﻴﺔ.ﻛﺎﻥ ﻣﻴﺜﺎﻗﻬﺎ ﺍﻷﻭﻟﻲ ﻫﻮ ﺍﻟﻘﻴﺎﻡ ﺑﻤﺎ ﻳﻠﻲ:
.12ﺗﻌﺰﻯ ﻫﺬﻩ ﺍﻟﻨﺘﻴﺠﺔ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﺇﻟﻰ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻮﺍﺳﻊ ﺍﻟﻨﻄﺎﻕ ﻟﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻟﻸﻧﻈﻤﺔ ﺍﻟﻤﺪﻣﺠﺔ ،ﺇﻟﻰ ﺟﺎﻧﺐ
ﺣﻘﻴﻘﺔﺃﻥ ﻣﻌﻈﻢ ﺍﻷﻧﻈﻤﺔ ﺍﻟﻤﺪﻣﺠﺔ ﺗﺴﺘﺨﺪﻡ ﻣﻌﺎﻟﺠﺎﺕ ﻣﺘﺨﺼﺼﺔ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 82
ﺑﻌﺪﻋﻤﻠﻴﺔ ﺷﺎﻗﺔ ،ﺗﻢ ﺗﻘﻠﻴﺺ ﺍﻟﻤﻘﺘﺮﺣﺎﺕ ﺍﻟﻌﺪﻳﺪﺓ ﺍﻟﻤﻘﺪﻣﺔ ﻟﻠﻐﺔ ﺇﻟﻰ ﺃﺭﺑﻌﺔ ﻣﺘﺴﺎﺑﻘﻴﻦ
ﻧﻬﺎﺉﻴﻴﻦ ،ﻭﻛﻠﻬﺎ ﺗﺴﺘﻨﺪ ﺇﻟﻰ ﺑﺎﺳﻜﺎﻝ .ﻓﻲ ﻣﺎﻳﻮ ، 1979ﺗﻢ ﺍﺧﺘﻴﺎﺭ ﺍﻗﺘﺮﺍﺡ ﺗﺼﻤﻴﻢ ﻟﻐﺔ / Bull
Cii Honeywellﻣﻦ ﺍﻟﻤﺘﺴﺎﺑﻘﻴﻦ ﺍﻟﻨﻬﺎﺉﻴﻴﻦ ﺍﻷﺭﺑﻌﺔ ﻛﺘﺼﻤﻴﻢ ﺳﻴﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ .ﻛﺎﻥ ﻓﺮﻳﻖ
ﺗﺼﻤﻴﻢ Cii Honeywell / Bullﻓﻲ ﻓﺮﻧﺴﺎ ،ﺍﻟﻤﻨﺎﻓﺲ ﺍﻷﺟﻨﺒﻲ ﺍﻟﻮﺣﻴﺪ ﻣﻦ ﺑﻴﻦ ﺍﻷﺭﺑﻌﺔ
ﺍﻟﻨﻬﺎﺉﻴﻴﻦ ،ﺑﻘﻴﺎﺩﺓ ﺟﺎﻥ ﺇﺷﺒﻴﺎﻩ.
ﻓﻲﺭﺑﻴﻊ ﻋﺎﻡ ، 1979ﺃﻭﺻﻰ ﺟﺎﻙ ﻛﻮﺑﺮ ﻣﻦ ﻗﻴﺎﺩﺓ ﺍﻟﻌﺘﺎﺩ ﺍﻟﺒﺤﺮﻳﺔ ﺑﺎﺳﻢ ﺍﻟﻠﻐﺔ ﺍﻟﺠﺪﻳﺪﺓ ،
، Adaﻭﺍﻟﺘﻲ ﺗﻢ ﺗﺒﻨﻴﻬﺎ ﺑﻌﺪ ﺫﻟﻚ .ﻳﺤﺘﻔﻞ ﺍﻻﺳﻢ ﺑﺬﻛﺮﻯ ﺃﻭﻏﺴﺘﺎ ﺁﺩﺍ ﺑﺎﻳﺮﻭﻥ )، (1851-1815
ﻛﻮﻧﺘﻴﺴﺔﻟﻮﻓﻠﻴﺲ ،ﻋﺎﻟﻢ ﺍﻟﺮﻳﺎﺿﻴﺎﺕ ،ﻭﺍﺑﻨﺔ ﺍﻟﺸﺎﻋﺮ ﺍﻟﻠﻮﺭﺩ ﺑﺎﻳﺮﻭﻥ .ﻳﺘﻢ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻴﻬﺎ ﻋﻤﻮﻣﺎً
ﻋﻠﻰﺃﻧﻬﺎ ﺃﻭﻝ ﻣﺒﺮﻣﺠﺔ ﻓﻲ ﺍﻟﻌﺎﻟﻢ .ﻋﻤﻠﺖ ﻣﻊ ﺗﺸﺎﺭﻟﺰ ﺑﺎﺑﺎﺝ ﻋﻠﻰ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﻴﻜﺎﻧﻴﻜﻴﺔ
ﺍﻟﺨﺎﺻﺔﺑﻪ ،ﻣﺤﺮﻛﺎﺕ ﺍﻻﺧﺘﻼﻑ ﻭﺍﻟﺘﺤﻠﻴﻞ ،ﻭﻛﺘﺎﺑﺔ ﺑﺮﺍﻣﺞ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻌﺪﺩﻳﺔ.
ﺗﻢﺍﻻﻧﺘﻬﺎء ﻣﻦ ﻧﺴﺨﺔ ﻣﻨﻘﺤﺔ ﻣﻦ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﻓﻲ ﻳﻮﻟﻴﻮ 1980ﻭﺗﻢ ﻗﺒﻮﻟﻬﺎ ﻛﻤﻌﻴﺎﺭ 1815
MIL-STDﺍﻟﺪﻟﻴﻞ ﺍﻟﻤﺮﺟﻌﻲ ﻟﻠﻐﺔ .Adaﺗﻢ ﺍﺧﺘﻴﺎﺭ ﺍﻟﺮﻗﻢ 1815ﻷﻧﻪ ﻛﺎﻥ ﻋﺎﻡ ﻣﻴﻼﺩ ﺃﻭﻏﺴﺘﺎ ﺁﺩﺍ
ﺑﺎﻳﺮﻭﻥ.ﻧﺴﺨﺔ ﻣﻨﻘﺤﺔ ﺃﺧﺮﻯ ﻣﻦﺍﻟﺪﻟﻴﻞ ﺍﻟﻤﺮﺟﻌﻲ ﻟﻠﻐﺔ Adaﺗﻢ ﺇﺻﺪﺍﺭﻩ ﻓﻲ ﻳﻮﻟﻴﻮ .1982ﻓﻲ
ﻋﺎﻡ ، 1983ﻗﺎﻡ ﺍﻟﻤﻌﻬﺪ ﺍﻟﻘﻮﻣﻲ ﺍﻷﻣﺮﻳﻜﻲ ﻟﻠﻤﻌﺎﻳﻴﺮ ﺑﺘﻮﺣﻴﺪ ﻣﻌﺎﻳﻴﺮ .Adaﺗﻢ ﻭﺻﻒ ﻫﺬﻩ
ﺍﻟﻨﺴﺨﺔﺍﻟﺮﺳﻤﻴﺔ "ﺍﻟﻨﻬﺎﺉﻴﺔ" ﻓﻲ ( .Goos and Hartmanis )1983ﺛﻢ ﺗﻢ ﺗﺠﻤﻴﺪ ﺗﺼﻤﻴﻢ
ﻟﻐﺔ Adaﻟﻤﺪﺓ ﺧﻤﺲ ﺳﻨﻮﺍﺕ ﻋﻠﻰ ﺍﻷﻗﻞ.
ﺗﻮﻓﺮﻟﻐﺔ Adaﺃﻳﻀﺎً ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﻤﺘﺰﺍﻣﻦ ﻟﻮﺣﺪﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺨﺎﺻﺔ ،ﻭﺍﻟﻤﻬﺎﻡ ﺍﻟﻤﺴﻤﺎﺓ ،
ﺑﺎﺳﺘﺨﺪﺍﻡﺁﻟﻴﺔ ﺍﻻﻟﺘﻘﺎء Rendezvous .ﻫﻮ ﺍﺳﻢ ﻃﺮﻳﻘﺔ ﺍﻻﺗﺼﺎﻝ ﻭﺍﻟﺘﺰﺍﻣﻦ ﺑﻴﻦ ﺍﻟﻤﻬﺎﻡ .ﺗﻤﺖ
ﻣﻨﺎﻗﺸﺔﺍﻟﺘﺰﺍﻣﻦ ﻓﻲ ﺍﻟﻔﺼﻞ .13
2.14.4ﺍﻟﺘﻘﻴﻴﻢ
ﻟﻌﻞﺃﻫﻢ ﺟﻮﺍﻧﺐ ﺗﺼﻤﻴﻢ ﻟﻐﺔ Adaﺍﻟﺘﻲ ﻳﺠﺐ ﻣﺮﺍﻋﺎﺗﻬﺎ ﻫﻲ ﻣﺎ ﻳﻠﻲ:
• ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻣﻌﻈﻢ ﺍﻟﻨﺎﺱ ﻟﻢ ﻳﺘﻮﻗﻌﻮﺍ ﺫﻟﻚ ،ﺇﻻ ﺃﻥ ﺗﻄﻮﻳﺮ ﻣﺘﺮﺟﻢ ﻟﻠﻐﺔ Adaﻛﺎﻥ
ﻣﻬﻤﺔﺻﻌﺒﺔ .ﻓﻘﻂ ﻓﻲ ﻋﺎﻡ ، 1985ﺑﻌﺪ ﻣﺎ ﻳﻘﺮﺏ ﻣﻦ ﺃﺭﺑﻊ ﺳﻨﻮﺍﺕ ﻣﻦ ﺍﻛﺘﻤﺎﻝ ﺗﺼﻤﻴﻢ
ﺍﻟﻠﻐﺔ ،ﺑﺪﺃﺕ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ Adaﺍﻟﺼﺎﻟﺤﺔ ﻟﻼﺳﺘﺨﺪﺍﻡ ﺣﻘﺎً ﻓﻲ ﺍﻟﻈﻬﻮﺭ.
ﻛﺎﻥﺃﺧﻄﺮ ﺍﻧﺘﻘﺎﺩ ﻟـ Adaﻓﻲ ﺳﻨﻮﺍﺗﻬﺎ ﺍﻟﻘﻠﻴﻠﺔ ﺍﻷﻭﻟﻰ ﻫﻮ ﺃﻧﻬﺎ ﻛﺎﻧﺖ ﻛﺒﻴﺮﺓ ﺟﺪﺍً ﻭﻣﻌﻘﺪﺓ
ﻟﻠﻐﺎﻳﺔ.ﻋﻠﻰ ﻭﺟﻪ ﺍﻟﺨﺼﻮﺹ ،ﺫﻛﺮ ( Hoare )1981ﺃﻧﻪ ﻻ ﻳﻨﺒﻐﻲ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻷﻱ ﺗﻄﺒﻴﻖ ﺣﻴﺚ
ﺗﻜﻮﻥﺍﻟﻤﻮﺛﻮﻗﻴﺔ ﺃﻣﺮﺍً ﺑﺎﻟﻎ ﺍﻷﻫﻤﻴﺔ ،ﻭﻫﻮ ﺑﺎﻟﻀﺒﻂ ﻧﻮﻉ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺬﻱ ﺗﻢ ﺗﺼﻤﻴﻤﻪ ﻣﻦ ﺃﺟﻠﻪ .ﻣﻦ
ﻧﺎﺣﻴﺔﺃﺧﺮﻯ ،ﺃﺷﺎﺩ ﺁﺧﺮﻭﻥ ﺑﻬﺎ ﺑﺎﻋﺘﺒﺎﺭﻫﺎ ﻣﺜﺎﻻً ﻟﺘﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﻓﻲ ﻭﻗﺘﻬﺎ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺣﺘﻰ ﻫﻮﺭ
ﺧﻔﻒﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ﻧﻈﺮﺗﻪ ﻟﻠﻐﺔ.
ﺇﺟﺮﺍءAda_Exﻳﻜﻮﻥ
ﻳﻜﺘﺐInt_List_Typeﻫﻲ ﻣﺠﻤﻮﻋﺔ)(99..1ﻝﻋﺪﺩ ﺻﺤﻴﺢ؛
Int_List: Int_List_Type؛
ﺍﻟﻤﺠﻤﻮﻉ ،ﺍﻟﻤﺘﻮﺳﻂ ،ﺍﻟﻨﺘﻴﺠﺔ :ﻋﺪﺩ ﺻﺤﻴﺢ ؛ List_Len ،ﻳﺒﺪﺃ
ﺍﻟﻨﺘﻴﺠﺔ 0 =:؛
ﺍﻟﻤﺠﻤﻮﻉ 0 =:؛
ﺍﻟﺤﺼﻮﻝﻋﻠﻰ )، (List_Len
ﻟﻮ)(List_Len< 0ﻭ)(List_Len >100ﺛﻢ
--ﻗﺮﺍءﺓ ﺑﻴﺎﻧﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﻭﺣﺴﺎﺏ ﺍﻟﻤﺠﻤﻮﻉ ﻝﺍﻟﻌﺪﺍﺩList_Len .. 1 = :ﺣﻠﻘﺔ
ﺧﻂﺟﺪﻳﺪ؛
ﺁﺧﺮ
؛ ("ﺧﻄﺄ -ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ") Put_Lineﺇﻧﻬﺎء ﺇﺫﺍ؛
ﻧﻬﺎﻳﺔ؛ Ada_Ex
ﺗﻢﺗﻤﺪﻳﺪ ﺁﻟﻴﺔ ﺍﺷﺘﻘﺎﻕ ﺍﻟﻨﻮﻉ ﻟـ Ada 83ﻓﻲ Ada 95ﻟﻠﺴﻤﺎﺡ ﺑﺈﺿﺎﻓﺔ ﻣﻜﻮﻧﺎﺕ ﺟﺪﻳﺪﺓ
ﻟﺘﻠﻚﺍﻟﻤﻮﺭﻭﺛﺔ ﻣﻦ ﻓﺉﺔ ﺃﺳﺎﺳﻴﺔ .ﻳﻮﻓﺮ ﻫﺬﺍ ﺍﻟﻤﻴﺮﺍﺙ ،ﻭﻫﻮ ﻣﻜﻮﻥ ﺭﺉﻴﺴﻲ ﻓﻲ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﺸﻴﺉﻴﺔ.ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺮﺑﻂ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻲ ﻻﺳﺘﺪﻋﺎءﺍﺕ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﻟﺘﻌﺮﻳﻔﺎﺕ ﺍﻟﺒﺮﺍﻣﺞ
ﺍﻟﻔﺮﻋﻴﺔﻣﻦ ﺧﻼﻝ ﺇﺭﺳﺎﻝ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ،ﻭﺍﻟﺬﻱ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻴﻤﺔ ﻋﻼﻣﺔ ﺍﻷﻧﻮﺍﻉ ﺍﻟﻤﺸﺘﻘﺔ
ﻣﻦﺧﻼﻝ ﺍﻷﻧﻮﺍﻉ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻟﻔﺉﺔ .ﺗﻮﻓﺮ ﻫﺬﻩ ﺍﻟﻤﻴﺰﺓ ﺗﻌﺪﺩ ﺍﻷﺷﻜﺎﻝ ،
85 2.15ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔSmalltalk :
ﻣﻴﺰﺓﺭﺉﻴﺴﻴﺔ ﺃﺧﺮﻯ ﻟﻠﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﻣﻴﺰﺍﺕ Ada 95ﻫﺬﻩ ﻓﻲ ﺍﻟﻔﺼﻞ .12
ﻟﻢﺗﻮﻓﺮ ﺁﻟﻴﺔ ﺍﻻﻟﺘﻘﺎء ﺍﻟﺨﺎﺻﺔ ﺑـ Ada 83ﺳﻮﻯ ﻭﺳﻴﻠﺔ ﻣﺮﻫﻘﺔ ﻭﻏﻴﺮ ﻓﻌﺎﻟﺔ ﻟﻤﺸﺎﺭﻛﺔ
ﺍﻟﺒﻴﺎﻧﺎﺕﺑﻴﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻤﺘﺰﺍﻣﻨﺔ .ﻛﺎﻥ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺇﺩﺧﺎﻝ ﻣﻬﻤﺔ ﺟﺪﻳﺪﺓ ﻟﻠﺘﺤﻜﻢ ﻓﻲ ﺍﻟﻮﺻﻮﻝ
ﺇﻟﻰﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺸﺘﺮﻛﺔ .ﺗﻮﻓﺮ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﻤﺤﻤﻴﺔ ﻓﻲ Ada 95ﺑﺪﻳﻼ ًﺟﺬﺍﺑﺎً ﻟﺬﻟﻚ .ﻳﺘﻢ ﺗﻐﻠﻴﻒ
ﺍﻟﺒﻴﺎﻧﺎﺕﺍﻟﻤﺸﺘﺮﻛﺔ ﻓﻲ ﺑﻨﻴﺔ ﻧﺤﻮﻳﺔ ﺗﺘﺤﻜﻢ ﻓﻲ ﻛﻞ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻟﺒﻴﺎﻧﺎﺕ ،ﺇﻣﺎ ﻋﻦ ﻃﺮﻳﻖ ﻣﻮﻋﺪ
ﺃﻭﻋﻦ ﻃﺮﻳﻖ ﺍﺳﺘﺪﻋﺎء ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺠﺪﻳﺪﺓ ﻟـ Ada 95ﻟﻠﺘﺰﺍﻣﻦ
ﻭﺍﻟﺒﻴﺎﻧﺎﺕﺍﻟﻤﺸﺘﺮﻛﺔ ﻓﻲ ﺍﻟﻔﺼﻞ .13
ﻳﻌُﺘﻘﺪﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﺃﻥ ﺷﻌﺒﻴﺔ Ada 95ﻋﺎﻧﺖ ﻷﻥ ﻭﺯﺍﺭﺓ ﺍﻟﺪﻓﺎﻉ ﺗﻮﻗﻔﺖ ﻋﻦ ﻃﻠﺐ
ﺍﺳﺘﺨﺪﺍﻣﻬﺎﻓﻲ ﺃﻧﻈﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻌﺴﻜﺮﻳﺔ .ﻛﺎﻧﺖ ﻫﻨﺎﻙ ،ﺑﺎﻟﻄﺒﻊ ،ﻋﻮﺍﻣﻞ ﺃﺧﺮﻯ ﺃﻋﺎﻗﺖ ﻧﻤﻮ
ﺷﻌﺒﻴﺘﻬﺎ.ﻛﺎﻥ ﺍﻷﻫﻢ ﻣﻦ ﺑﻴﻨﻬﺎ ﻫﻮ ﺍﻟﻘﺒﻮﻝ ﺍﻟﻮﺍﺳﻊ ﻟـ ++ Cﻟﻠﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ،ﻭﺍﻟﺬﻱ
ﺣﺪﺙﻗﺒﻞ ﺇﺻﺪﺍﺭ .Ada 95
ﻛﺎﻥﻫﻨﺎﻙ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻹﺿﺎﻓﺎﺕ ﺇﻟﻰ Ada 95ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ .Ada 2005ﻣﻦ ﺑﻴﻨﻬﺎ
ﻭﺍﺟﻬﺎﺕ ،ﻣﺸﺎﺑﻬﺔ ﻟﺘﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ، Javaﻭﺍﻟﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺧﻮﺍﺭﺯﻣﻴﺎﺕ ﺍﻟﺠﺪﻭﻟﺔ ،
ﻭﺍﻟﻮﺍﺟﻬﺎﺕﺍﻟﻤﺘﺰﺍﻣﻨﺔ.
ﺗﺴﺘﺨﺪﻡ Adaﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻓﻲ ﻛﻞ ﻣﻦ ﺇﻟﻜﺘﺮﻭﻧﻴﺎﺕ ﺍﻟﻄﻴﺮﺍﻥ ﺍﻟﺘﺠﺎﺭﻳﺔ ﻭﺍﻟﺪﻓﺎﻋﻴﺔ ،ﻭﻣﺮﺍﻗﺒﺔ
ﺍﻟﺤﺮﻛﺔﺍﻟﺠﻮﻳﺔ ،ﻭﺍﻟﻨﻘﻞ ﺑﺎﻟﺴﻜﻚ ﺍﻟﺤﺪﻳﺪﻳﺔ ،ﻭﻛﺬﻟﻚ ﻓﻲ ﻣﺠﺎﻻﺕ ﺃﺧﺮﻯ.
2.15.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﻧﺸﺄﺕﺍﻟﻤﻔﺎﻫﻴﻢ ﺍﻟﺘﻲ ﺃﺩﺕ ﺇﻟﻰ ﺗﻄﻮﻳﺮ Smalltalkﻓﻲ ﺭﺳﺎﻟﺔ ﺍﻟﺪﻛﺘﻮﺭﺍﻩ .ﺃﻃﺮﻭﺣﺔ ﺃﻻﻥ ﻛﺎﻱ ﻓﻲ
ﺃﻭﺍﺧﺮﺍﻟﺴﺘﻴﻨﻴﺎﺕ ﻓﻲ ﺟﺎﻣﻌﺔ ﻳﻮﺗﺎ )ﻛﺎﻱ .(1969 ،ﻛﺎﻥ ﻟﺪﻯ ﻛﺎﻱ ﺍﻟﺒﺼﻴﺮﺓ ﺍﻟﺮﺍﺉﻌﺔ ﻟﻠﺘﻨﺒﺆ ﺑﺎﻟﺘﻮﺍﻓﺮ
ﺍﻟﻤﺴﺘﻘﺒﻠﻲﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﻤﻜﺘﺒﻴﺔ ﺍﻟﻘﻮﻳﺔ .ﺗﺬﻛﺮ ﺃﻥ ﺃﻧﻈﻤﺔ ﺍﻟﺤﻮﺍﺳﻴﺐ ﺍﻟﺼﻐﻴﺮﺓ ﺍﻷﻭﻟﻰ ﻟﻢ
ﻳﺘﻢﺗﺴﻮﻳﻘﻬﺎ ﺣﺘﻰ ﻣﻨﺘﺼﻒ ﺍﻟﺴﺒﻌﻴﻨﻴﺎﺕ ،ﻭﺃﻧﻬﺎ ﻛﺎﻧﺖ ﻣﺮﺗﺒﻄﺔ ﻓﻘﻂ ﻋﻦ ﺑﻌﺪ ﺑﺎﻷﺟﻬﺰﺓ ﺍﻟﺘﻲ
ﺗﺼﻮﺭﻫﺎﻛﺎﻱ ،ﻭﺍﻟﺘﻲ ﺷﻮﻫﺪﺕ ﺗﻨﻔﺬ ﻣﻠﻴﻮﻥ ﺗﻌﻠﻴﻤﺎﺕ ﺃﻭ ﺃﻛﺜﺮ ﻓﻲ ﺍﻟﺜﺎﻧﻴﺔ ﻭﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﺪﺓ ﻣﻴﻐﺎ
ﺑﺎﻳﺖﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ .ﺃﺻﺒﺤﺖ ﻫﺬﻩ ﺍﻵﻻﺕ ،ﻓﻲ ﺷﻜﻞ ﻣﺤﻄﺎﺕ ﻋﻤﻞ ،ﻣﺘﺎﺣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ
ﻓﻘﻂﻓﻲ ﺃﻭﺍﺉﻞ ﺍﻟﺜﻤﺎﻧﻴﻨﻴﺎﺕ.
ﻭﺟﺪﻛﺎﻱ ﻃﺮﻳﻘﻪ ﺇﻟﻰ ﻣﺮﻛﺰ ﺃﺑﺤﺎﺙ ( Xerox Palo Alto )Xerox PARCﻭﻋﺮﺽ ﺃﻓﻜﺎﺭﻩ
ﻋﻠﻰ .Dynabookﺃﺩﻯ ﺫﻟﻚ ﺇﻟﻰ ﺗﻌﻴﻴﻨﻪ ﻫﻨﺎﻙ ﻭﺍﻟﻮﻻﺩﺓ ﺍﻟﻼﺣﻘﺔ ﻟﻤﺠﻤﻮﻋﺔ ﺃﺑﺤﺎﺙ ﺍﻟﺘﻌﻠﻢ ﻓﻲ
.Xeroxﻛﺎﻧﺖ ﺍﻟﺸﺤﻨﺔ ﺍﻷﻭﻟﻰ ﻟﻠﻤﺠﻤﻮﻋﺔ ﻫﻲ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﻟﺪﻋﻢ ﻧﻤﻮﺫﺝ ﺑﺮﻣﺠﺔ Kayﻭﺗﻨﻔﻴﺬﻩ
ﻋﻠﻰﺃﻓﻀﻞ ﺟﻬﺎﺯ ﻛﻤﺒﻴﻮﺗﺮ ﺷﺨﺼﻲ ﻣﺘﺎﺡ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ .ﻧﺘﺞ ﻋﻦ ﻫﺬﻩ ﺍﻟﺠﻬﻮﺩ ﻧﻈﺎﻡ
" Dynabookﻣﺆﻗﺖ" ﻳﺘﻜﻮﻥ ﻣﻦ ﻣﺤﻄﺔ ﻋﻤﻞ Xerox Altoﻭﺑﺮﻧﺎﻣﺞ .Smalltalk-72ﻣﻌﺎً ،
ﺷﻜﻠﻮﺍﺃﺩﺍﺓ ﺑﺤﺚ ﻟﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻄﻮﻳﺮ .ﻭﻗﺪ ﺗﻢ ﺗﻨﻔﻴﺬ ﻋﺪﺩ ﻣﻦ ﺍﻟﻤﺸﺎﺭﻳﻊ ﺍﻟﺒﺤﺜﻴﺔ ﺑﻬﺬﺍ ﺍﻟﻨﻈﺎﻡ ﻣﻨﻬﺎ
ﻋﺪﺓﺗﺠﺎﺭﺏ ﻟﺘﻌﻠﻴﻢ ﺍﻟﺒﺮﻣﺠﺔ ﻟﻸﻃﻔﺎﻝ .ﺇﻟﻰ ﺟﺎﻧﺐ ﺍﻟﺘﺠﺎﺭﺏ ،ﻇﻬﺮﺕ ﺗﻄﻮﺭﺍﺕ ﺃﺧﺮﻯ ﺃﺩﺕ ﺇﻟﻰ
ﺳﻠﺴﻠﺔﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻧﺘﻬﺖ ﺑـ .Smalltalk-80ﻣﻊ ﻧﻤﻮ ﺍﻟﻠﻐﺔ ﻭﻛﺬﻟﻚ ﻗﻮﺓ ﺍﻷﺟﻬﺰﺓ ﺍﻟﺘﻲ ﺗﻮﺟﺪ
ﻋﻠﻴﻬﺎ.ﺑﺤﻠﻮﻝ ﻋﺎﻡ ، 1980ﻛﺎﻧﺖ ﻛﻞ ﻣﻦ ﺍﻟﻠﻐﺔ ﻭﺃﺟﻬﺰﺓ Xeroxﺗﺘﻄﺎﺑﻖ ﺗﻘﺮﻳﺒﺎً ﻣﻊ ﺍﻟﺮﺅﻳﺔ
ﺍﻟﻤﺒﻜﺮﺓﻟـ .Alan Kay
ﻳﺨﺘﻠﻒﺑﻨﺎء ﺟﻤﻠﺔ Smalltalkﻋﻦ ﻣﻌﻈﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻷﺧﺮﻯ ،ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﻓﻲ ﺟﺰء
ﻛﺒﻴﺮﻣﻨﻪ ﺇﻟﻰ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺮﺳﺎﺉﻞ ،ﺑﺪﻻ ًﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺑﻴﺔ ﻭ
.13ﺑﺎﻟﻄﺒﻊ ،ﻳﻤﻜﻦ ﻻﺳﺘﺪﻋﺎء ﺍﻟﻄﺮﻳﻘﺔ ﺃﻳﻀﺎً ﺗﻤﺮﻳﺮ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻟﺘﺘﻢ ﻣﻌﺎﻟﺠﺘﻬﺎ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ ﺗﻢ ﺍﺳﺘﺪﻋﺎﺅﻫﺎ.
87 2.15ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺸﻴﺉﻴﺔSmalltalk :
ﺍﻟﺘﻌﺒﻴﺮﺍﺕﺍﻟﻤﻨﻄﻘﻴﺔ ﻭﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ .ﺗﻢ ﺗﻮﺿﻴﺢ ﺃﺣﺪ ﺑﻨﻴﺎﺕ ﺍﻟﺘﺤﻜﻢ Smalltalkﻓﻲ
ﺍﻟﻤﺜﺎﻝﻓﻲ ﺍﻟﻘﺴﻢ ﺍﻟﻔﺮﻋﻲ ﺍﻟﺘﺎﻟﻲ.
2.15.3ﺍﻟﺘﻘﻴﻴﻢ
ﻟﻘﺪﻗﺎﻡ Smalltalkﺑﻌﻤﻞ ﻛﺒﻴﺮ ﻟﺘﻌﺰﻳﺰ ﺟﺎﻧﺒﻴﻦ ﻣﻨﻔﺼﻠﻴﻦ ﻣﻦ ﺍﻟﺤﻮﺳﺒﺔ :ﻭﺍﺟﻬﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ
ﺍﻟﺮﺳﻮﻣﻴﺔﻭﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ .ﻧﺸﺄﺕ ﺃﻧﻈﻤﺔ ﺍﻟﻨﻮﺍﻓﺬ ﺍﻟﺘﻲ ﺃﺻﺒﺤﺖ ﺍﻵﻥ ﺍﻟﻄﺮﻳﻘﺔ
ﺍﻟﺴﺎﺉﺪﺓﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻷﻧﻈﻤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﻣﻦ .Smalltalkﺍﻟﻴﻮﻡ ،ﺃﻫﻢ ﻣﻨﻬﺠﻴﺎﺕ ﺗﺼﻤﻴﻢ
ﺍﻟﺒﺮﻣﺠﻴﺎﺕﻭﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻣﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺃﺻﻞ ﺑﻌﺾ ﺃﻓﻜﺎﺭ ﺍﻟﻠﻐﺎﺕ
ﺍﻟﺸﻴﺉﻴﺔﺟﺎء ﻣﻦ ، SIMULA 67ﺇﻻ ﺃﻧﻬﺎ ﻭﺻﻠﺖ ﺇﻟﻰ ﻣﺮﺣﻠﺔ ﺍﻟﻨﻀﺞ ﻓﻲ .Smalltalkﻣﻦ
ﺍﻟﻮﺍﺿﺢﺃﻥ ﺗﺄﺛﻴﺮ Smalltalkﻋﻠﻰ ﻋﺎﻟﻢ ﺍﻟﺤﻮﺳﺒﺔ ﻭﺍﺳﻊ ﺍﻟﻨﻄﺎﻕ ﻭﺳﻴﺴﺘﻤﺮ ﻃﻮﻳﻼً.
ﻣﻀﻠﻊ ﺍﺳﻢﺍﻟﻔﺼﻞ
ﻫﺪﻑ ﺍﻟﻄﺒﻘﺔﺍﻟﻌﻠﻴﺎ
ﻗﻠﻤﻨﺎ ﺃﺳﻤﺎءﻣﺘﻐﻴﺮﺍﺕ ﺍﻟﻤﺜﻴﻞ ﻧﻮﻣﺴﻴﺪﻳﺲ
ﻃﻮﻝﺍﻟﺠﺎﻧﺐ
"ﻃﺮﻕ ﺍﻟﻔﺼﻞ"
"ﺇﻧﺸﺎء ﻣﺜﻴﻞ"
ﺟﺪﻳﺪ
^ﺳﻮﺑﺮ ﺟﺪﻳﺪgetPen
"ﻃﺮﻕ ﺍﻟﻤﺜﻴﻞ"
"ﺍﺭﺳﻢ ﻣﻀﻠﻌﺎً"
ﻳﺮﺳﻢ
ﻋﺪﺩﻣﺮﺍﺕ ﺗﻜﺮﺍﺭourPen go: sideLength] :؛
ﺑﺪﻭﺭﻩ[numSides // 360:
ﻟﻴﻦsideLength >-
2.16.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﺗﻢﺍﺗﺨﺎﺫ ﺍﻟﺨﻄﻮﺓ ﺍﻷﻭﻟﻰ ﻣﻦ Cﻧﺤﻮ ++ Cﺑﻮﺍﺳﻄﺔ Bjarne Stroustrupﻓﻲ Laboratories
Bellﻓﻲ ﻋﺎﻡ .1980ﺗﻀﻤﻨﺖ ﺍﻟﺘﻌﺪﻳﻼﺕ ﺍﻷﻭﻟﻴﺔ ﻋﻠﻰ Cﺇﺿﺎﻓﺔ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻧﻮﻉ ﻣﻌﻠﻤﺔ
ﺍﻟﻮﻇﻴﻔﺔﻭﺍﻟﺘﺤﻮﻳﻞ ،ﻭﺍﻷﻫﻢ ﻣﻦ ﺫﻟﻚ ،ﺍﻟﻔﺉﺎﺕ ،ﺍﻟﺘﻲ ﺗﺮﺗﺒﻂ ﺑﺘﻠﻚ ﺍﻟﺨﺎﺻﺔ ﺑـ SIMULA 67ﻭ
. Smalltalkﺗﻢ ﺃﻳﻀﺎً ﺗﻀﻤﻴﻦ ﺍﻟﻔﺉﺎﺕ ﺍﻟﻤﺸﺘﻘﺔ ،ﻭﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺍﻟﻮﺻﻮﻝ ﺍﻟﻌﺎﻡ /ﺍﻟﺨﺎﺹ
ﻟﻠﻤﻜﻮﻧﺎﺕﺍﻟﻤﻮﺭﻭﺛﺔ ،ﻭﻃﺮﻕ ﺍﻟﻤﻨُﺸﺊ ﻭﺍﻟﺘﺪﻣﻴﺮ ،ﻭﻓﺉﺎﺕ ﺍﻷﺻﺪﻗﺎء .ﺧﻼﻝ ﻋﺎﻡ ، 1981ﺗﻤﺖ
ﺇﺿﺎﻓﺔﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﻤﻀﻤﻨﺔ ﻭﺍﻟﻤﻌﻠﻤﺎﺕ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻭﺍﻟﺤﻤﻞ ﺍﻟﺰﺍﺉﺪ ﻟﻤﺸﻐﻞ ﺍﻟﺘﺨﺼﻴﺺ.
ﻛﺎﻧﺖﺍﻟﻠﻐﺔ ﺍﻟﻨﺎﺗﺠﺔ ﺗﺴﻤﻰ Cﻣﻊ Classesﻭﺗﻢ ﻭﺻﻔﻬﺎ ﻓﻲ (.Stroustrup )1983
ﻣﻦﺍﻟﻤﻔﻴﺪ ﺍﻟﻨﻈﺮ ﻓﻲ ﺑﻌﺾ ﺃﻫﺪﺍﻑ Cﻣﻊ ﺍﻟﻔﺉﺎﺕ .ﻛﺎﻥ ﺍﻟﻬﺪﻑ ﺍﻷﺳﺎﺳﻲ ﻫﻮ ﺗﻮﻓﻴﺮ ﻟﻐﺔ
ﻳﻤﻜﻦﺗﻨﻈﻴﻢ ﺍﻟﺒﺮﺍﻣﺞ ﺑﻬﺎ ﻛﻤﺎ ﻳﻤﻜﻦ ﺗﻨﻈﻴﻤﻬﺎ ﻓﻲ - SIMULA 67ﺃﻱ ﻣﻊ ﺍﻟﻔﺼﻮﻝ ﻭﺍﻟﻤﻴﺮﺍﺙ.
ﺍﻟﻬﺪﻑﺍﻟﺜﺎﻧﻲ ﺍﻟﻤﻬﻢ ﻫﻮ ﺃﻧﻪ ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﻋﻘﻮﺑﺔ ﺍﻷﺩﺍء ﺑﺎﻟﻨﺴﺒﺔ ﻟـ .Cﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﻟﻢ ﻳﺘﻢ ﺍﻋﺘﺒﺎﺭ ﻓﺤﺺ ﻧﻄﺎﻕ ﻓﻬﺮﺱ ﺍﻟﺼﻔﻴﻒ ﺣﺘﻰ ﺑﺴﺒﺐ ﻭﺟﻮﺩ ﻋﻴﺐ ﻛﺒﻴﺮ ﻓﻲ
ﺍﻷﺩﺍء ،ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ، Cﻗﺪ ﻳﻨﺘﺞ ﻋﻨﻪ .ﻛﺎﻥ ﺍﻟﻬﺪﻑ ﺍﻟﺜﺎﻟﺚ ﻟـ C with Classesﻫﻮ ﺃﻧﻪ ﻳﻤﻜﻦ
ﺍﺳﺘﺨﺪﺍﻣﻪﻟﻜﻞ ﺗﻄﺒﻴﻖ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ Cﻓﻴﻪ ،ﻟﺬﻟﻚ ﻟﻦ ﺗﺘﻢ ﺇﺯﺍﻟﺔ ﺃﻱ ﻣﻦ ﻣﻴﺰﺍﺕ Cﺗﻘﺮﻳﺒﺎً ،
ﻭﻻﺣﺘﻰ ﺗﻠﻚ ﺍﻟﺘﻲ ﺗﻌﺘﺒﺮ ﻏﻴﺮ ﺁﻣﻨﺔ.
ﺑﺤﻠﻮﻝﻋﺎﻡ ، 1984ﺗﻢ ﺗﻮﺳﻴﻊ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﻣﻦ ﺧﻼﻝ ﺗﻀﻤﻴﻦ ﺍﻷﺳﺎﻟﻴﺐ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ،ﻭﺍﻟﺘﻲ
ﺗﻮﻓﺮﺭﺑﻄﺎً ﺩﻳﻨﺎﻣﻴﻜﻴﺎً ﻻﺳﺘﺪﻋﺎءﺍﺕ ﺍﻟﻄﺮﻳﻘﺔ ﻟﺘﻌﺮﻳﻔﺎﺕ ﻃﺮﻳﻘﺔ ﻣﺤﺪﺩﺓ ،ﻭﺍﺳﻢ ﺍﻟﻄﺮﻳﻘﺔ ﻭﺍﻟﺤﻤﻞ
ﺍﻟﺰﺍﺉﺪﻟﻠﻤﺸﻐﻞ ،ﻭﺃﻧﻮﺍﻉ ﺍﻟﻤﺮﺍﺟﻊ .ﻫﺬﺍ ﺍﻹﺻﺪﺍﺭ ﻣﻦ ﺍﻟﻠﻐﺔ ﻛﺎﻥ ﻳﺴﻤﻰ .++ Cﺗﻢ ﻭﺻﻔﻪ ﻓﻲ
(.Stroustrup )1984
ﻓﻲﻋﺎﻡ ، 1985ﻇﻬﺮ ﺃﻭﻝ ﺗﻄﺒﻴﻖ ﻣﺘﺎﺡ :ﻧﻈﺎﻡ ﻳﺴﻤﻰ ، Cfrontﻭﺍﻟﺬﻱ ﺗﺮﺟﻢ ﺑﺮﺍﻣﺞ ++ C
ﺇﻟﻰﺑﺮﺍﻣﺞ .Cﺗﻢ ﺗﺴﻤﻴﺔ ﻫﺬﺍ ﺍﻹﺻﺪﺍﺭ ﻣﻦ Cfrontﻭﺇﺻﺪﺍﺭ ++ Cﺍﻟﺬﻱ ﺗﻢ ﺗﻨﻔﻴﺬﻩ ﺑﺎﻹﺻﺪﺍﺭ
.1.0ﺗﻢ ﻭﺻﻔﻪ ﻓﻲ (.Stroustrup )1986
ﺑﻴﻦﻋﺎﻣﻲ 1985ﻭ ، 1989ﺍﺳﺘﻤﺮ ﺗﻄﻮﺭ ، ++ Cﺍﺳﺘﻨﺎﺩﺍً ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ﻋﻠﻰ ﺭﺩﻭﺩ ﻓﻌﻞ
ﺍﻟﻤﺴﺘﺨﺪﻡﻋﻠﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻮﺯﻉ ﺍﻷﻭﻝ .ﺗﻢ ﺗﺴﻤﻴﺔ ﻫﺬﺍ ﺍﻹﺻﺪﺍﺭ ﺍﻟﺘﺎﻟﻲ ﺍﻹﺻﺪﺍﺭ .2.0ﺗﻢ ﺇﺻﺪﺍﺭ
ﺗﻄﺒﻴﻖ Cfrontﺍﻟﺨﺎﺹ ﺑﻪ ﻓﻲ ﻳﻮﻧﻴﻮ .1989ﻛﺎﻧﺖ ﺃﻫﻢ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﻤﻀﺎﻓﺔ ﺇﻟﻰ + Release 2.0
C +ﻫﻲ ﺩﻋﻢ ﺍﻟﻮﺭﺍﺛﺔ ﺍﻟﻤﺘﻌﺪﺩﺓ )ﺍﻟﻔﺉﺎﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻛﺜﺮ ﻣﻦ ﻓﺉﺔ ﺭﺉﻴﺴﻴﺔ ﻭﺍﺣﺪﺓ(
ﻭﺍﻟﻔﺉﺎﺕﺍﻟﻤﺠﺮﺩﺓ ،ﺇﻟﻰ ﺟﺎﻧﺐ ﺑﻌﺾ ﺍﻟﺘﺤﺴﻴﻨﺎﺕ ﺍﻷﺧﺮﻯ .ﺗﻢ ﻭﺻﻒ ﻓﺉﺎﺕ ﺍﻟﻤﻠﺨﺼﺎﺕ ﻓﻲ
ﺍﻟﻔﺼﻞ.12
ﺗﻢﺗﻄﻮﻳﺮ ﺍﻹﺻﺪﺍﺭ 3.0ﻣﻦ ++ Cﺑﻴﻦ ﻋﺎﻣﻲ 1989ﻭ .1990ﻭﻗﺪ ﺃﺿﺎﻑ ﺍﻟﻘﻮﺍﻟﺐ ﺍﻟﺘﻲ
ﺗﻮﻓﺮﺃﻧﻮﺍﻋﺎً ﺫﺍﺕ ﻣﻌﻠﻤﺎﺕ ﻭﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ .ﺍﻟﻨﺴﺨﺔ ﺍﻟﺤﺎﻟﻴﺔ ﻣﻦ ، ++ Cﻭﺍﻟﺘﻲ ﺗﻢ
ﺗﻮﺣﻴﺪﻫﺎﻓﻲ ﻋﺎﻡ ، 1998ﻣﻮﺻﻮﻓﺔ ﻓﻲ (.ISO )1998
89 2.16ﺍﻟﺠﻤﻊ ﺑﻴﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺤﺘﻤﻴﺔ ﻭﺍﻟﻤﻮﺟﻬﺔ ﻧﺤﻮ ﺍﻟﻜﺎﺉﻦ++ C :
ﻳﻤﻜﻦﻗﻮﻟﺒﺔ ﻛﻞ ﻣﻦ ﺍﻟﻄﺮﻕ ﻭﺍﻟﻔﺉﺎﺕ ،ﻣﻤﺎ ﻳﻌﻨﻲ ﺃﻧﻪ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻣﻌﻠﻤﺎﺗﻬﺎ .ﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ ،ﻳﻤﻜﻦ ﻛﺘﺎﺑﺔ ﻃﺮﻳﻘﺔ ﻛﻄﺮﻳﻘﺔ ﻣﻘﻮﻟﺒﺔ ﻟﻠﺴﻤﺎﺡ ﻟﻬﺎ ﺑﺎﻟﺤﺼﻮﻝ ﻋﻠﻰ ﺇﺻﺪﺍﺭﺍﺕ ﻟﻤﺠﻤﻮﻋﺔ
ﻣﺘﻨﻮﻋﺔﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﻤﻌﻠﻤﺎﺕ .ﺗﺘﻤﺘﻊ ﺍﻟﻔﺼﻮﻝ ﺑﻨﻔﺲ ﺍﻟﻤﺮﻭﻧﺔ.
ﻳﺪﻋﻢ ++ Cﺍﻟﻮﺭﺍﺛﺔ ﺍﻟﻤﺘﻌﺪﺩﺓ .ﻳﺘﻀﻤﻦ ﺃﻳﻀﺎً ﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ﺍﻟﺘﻲ ﺗﺨﺘﻠﻒ ﺍﺧﺘﻼﻓﺎً
ﻛﺒﻴﺮﺍًﻋﻦ ﻣﻌﺎﻟﺠﺔ .Adaﻳﺘﻤﺜﻞ ﺃﺣﺪ ﺍﻻﺧﺘﻼﻓﺎﺕ ﻓﻲ ﺃﻧﻪ ﻻ ﻳﻤﻜﻦ ﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ﺍﻟﺘﻲ
ﻳﻤﻜﻦﺍﻛﺘﺸﺎﻓﻬﺎ ﺑﺸﺪﺓ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺑﻨﻴﺎﺕ ﻣﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺜﻨﺎءﺍﺕ ﻟﻜﻞ ﻣﻦ Adaﻭ ++ Cﻓﻲ
ﺍﻟﻔﺼﻞ.14
2.16.3ﺍﻟﺘﻘﻴﻴﻢ
ﺳﺮﻋﺎﻥﻣﺎ ﺃﺻﺒﺤﺖ ﻟﻐﺔ ++ Cﻟﻐﺔ ﻣﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻭﻻ ﺗﺰﺍﻝ ﻛﺬﻟﻚ .ﺃﺣﺪ ﺍﻟﻌﻮﺍﻣﻞ
ﻓﻲﺷﻌﺒﻴﺘﻬﺎ ﻫﻮ ﺗﻮﺍﻓﺮ ﻣﺘﺮﺟﻤﻴﻦ ﺟﻴﺪﻳﻦ ﻭﻏﻴﺮ ﻣﻜﻠﻔﻴﻦ .ﻋﺎﻣﻞ ﺁﺧﺮ ﻫﻮ ﺃﻧﻪ ﻣﺘﻮﺍﻓﻖ ﺗﻤﺎﻣﺎً ﺗﻘﺮﻳﺒﺎً
ﻣﻊ) Cﻣﻤﺎ ﻳﻌﻨﻲ ﺃﻥ ﺑﺮﺍﻣﺞ Cﻳﻤﻜﻦ ،ﻣﻊ ﺗﻐﻴﻴﺮﺍﺕ ﻗﻠﻴﻠﺔ ،ﺗﺠﻤﻴﻌﻬﺎ ﻛﺒﺮﺍﻣﺞ ، (++ Cﻭﻓﻲ
ﻣﻌﻈﻢﺍﻟﺘﻄﺒﻴﻘﺎﺕ ،ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺭﺑﻂ ﻛﻮﺩ ++ Cﺑﺮﻣﺰ - Cﻭﺑﺎﻟﺘﺎﻟﻲ ﺳﻬﻞ ﻧﺴﺒﻴﺎً ﺑﺎﻟﻨﺴﺒﺔ ﻟـ
ﺍﻟﻌﺪﻳﺪﻣﻦ ﻣﺒﺮﻣﺠﻲ Cﻟﺘﻌﻠﻢ .++ Cﺃﺧﻴﺮﺍً ،ﻓﻲ ﺍﻟﻮﻗﺖ ﺍﻟﺬﻱ ﻇﻬﺮﺕ ﻓﻴﻪ ++ Cﻷﻭﻝ ﻣﺮﺓ ،
ﻋﻨﺪﻣﺎﺑﺪﺃﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ﺗﺤﻈﻰ ﺑﺎﻫﺘﻤﺎﻡ ﻭﺍﺳﻊ ﺍﻟﻨﻄﺎﻕ ،ﻛﺎﻧﺖ ++ Cﻫﻲ
ﺍﻟﻠﻐﺔﺍﻟﻮﺣﻴﺪﺓ ﺍﻟﻤﺘﺎﺣﺔ ﺍﻟﺘﻲ ﻛﺎﻧﺖ ﻣﻨﺎﺳﺒﺔ ﻟﻤﺸﺎﺭﻳﻊ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﺍﻟﺘﺠﺎﺭﻳﺔ ﺍﻟﻜﺒﻴﺮﺓ.
ﻋﻠﻰﺍﻟﺠﺎﻧﺐ ﺍﻟﺴﻠﺒﻲ ،ﻧﻈﺮﺍً ﻷﻥ ++ Cﻫﻲ ﻟﻐﺔ ﻛﺒﻴﺮﺓ ﻭﻣﻌﻘﺪﺓ ﺟﺪﺍً ،ﻓﻤﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻬﺎ
ﺗﻌﺎﻧﻲﻣﻦ ﻋﻴﻮﺏ ﻣﻤﺎﺛﻠﺔ ﻟﺘﻠﻚ ﺍﻟﺨﺎﺻﺔ ﺑـ .PL / Iﻟﻘﺪ ﻭﺭﺛﺖ ﻣﻌﻈﻢ ﺣﺎﻻﺕ ﻋﺪﻡ ﺍﻷﻣﺎﻥ ﻓﻲ ﻟﻐﺔ
، Cﻣﻤﺎ ﻳﺠﻌﻠﻬﺎ ﺃﻗﻞ ﺃﻣﺎﻧﺎً ﻣﻦ ﻟﻐﺎﺕ ﻣﺜﻞ Adaﻭ .Java
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 90
ﺑﻌﺪﺃﻥ ﺗﺮﻙ ﺳﺘﻴﻒ ﺟﻮﺑﺰ ﺷﺮﻛﺔ Appleﻭﺃﺳﺲ ﺷﺮﻛﺔ ، NeXTﻗﺎﻡ ﺑﺘﺮﺧﻴﺺ -C
Objectiveﻭﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻧﻈﺎﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .NeXTﺃﺻﺪﺭﺕ NeXTﺃﻳﻀ ًﺎ
ﻣﺘﺮﺟﻤﻬﺎ ، Objective-Cﺟﻨﺒﺎً ﺇﻟﻰ ﺟﻨﺐ ﻣﻊ ﺑﻴﺉﺔ ﺗﻄﻮﻳﺮ NeXTstepﻭﻣﻜﺘﺒﺔ ﻣﻦ ﺍﻟﻤﺮﺍﻓﻖ.
ﺑﻌﺪﻓﺸﻞ ﻣﺸﺮﻭﻉ ، NeXTﺍﺷﺘﺮﺕ Apple NeXTﻭﺍﺳﺘﺨﺪﻣﺖ Objective-Cﻟﻜﺘﺎﺑﺔ -C
MAC OS X. Objectiveﻫﻲ ﻟﻐﺔ ﺟﻤﻴﻊ ﺑﺮﺍﻣﺞ ، iPhoneﻭﻫﻮ ﻣﺎ ﻳﻔﺴﺮ ﺍﻻﺭﺗﻔﺎﻉ ﺍﻟﺴﺮﻳﻊ ﻓﻲ
ﺷﻌﺒﻴﺘﻬﺎﺑﻌﺪ ﻇﻬﻮﺭ .iPhone
ﺗﻢﺗﺼﻤﻴﻢ Goﺑﻮﺍﺳﻄﺔ Rob Pikeﻭ Ken Thompsonﻭ Robert Griesemerﻓﻲ .Googleﻃﻮﻣﺴﻮﻥ ﻫﻮ
ﻣﺼﻤﻢﺳﻠﻒ ، C ، Bﻭﻛﺬﻟﻚ ﺍﻟﻤﺼﻤﻢ ﻣﻊ Dennis Ritchieﻣﻦ .UNIXﻛﺎﻥ ﻫﻮ ﻭﺑﺎﻳﻚ ﻳﻌﻤﻼﻥ ﺳﺎﺑﻘﺎً ﻓﻲ ﻣﺨﺘﺒﺮﺍﺕ
ﺑﻴﻞ.ﺑﺪﺃ ﺍﻟﺘﺼﻤﻴﻢ ﺍﻷﻭﻟﻲ ﻓﻲ ﻋﺎﻡ 2007ﻭﺗﻢ ﺇﺻﺪﺍﺭ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻷﻭﻝ ﻓﻲ ﺃﻭﺍﺧﺮ ﻋﺎﻡ .2009ﻛﺎﻥ ﺃﺣﺪ ﺍﻟﺪﻭﺍﻓﻊ ﺍﻷﻭﻟﻴﺔ ﻟـ Go
ﻫﻮﺑﻂء ﺗﺠﻤﻴﻊ ﺑﺮﺍﻣﺞ ++ Cﺍﻟﻜﺒﻴﺮﺓ ﻓﻲ .Googleﻭﺍﺣﺪﺓ ﻣﻦ ﺧﺼﺎﺉﺺ ﺍﻟﻤﺘﺮﺟﻢ ﺍﻷﻭﻟﻲ ﻟـ Goﻫﻲ ﺃﻧﻪ ﺳﺮﻳﻊ ﻟﻠﻐﺎﻳﺔ.
ﺗﺴﺘﻌﻴﺮﻟﻐﺔ Goﺑﻌﻀﺎً ﻣﻦ ﺗﺮﻛﻴﺒﻬﺎ ﻭﺗﺮﻛﻴﺒﺎﺗﻬﺎ ﻣﻦ .Cﺗﺘﻀﻤﻦ ﺑﻌﺾ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺠﺪﻳﺪﺓ ﻟـ Goﻣﺎ ﻳﻠﻲ (1) :ﻳﺘﻢ ﻋﻜﺲ
ﺑﻴﺎﻧﺎﺕﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﺸﻜﻞ ﻧﺤﻮﻱ ﻣﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ C؛ ) (2ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺗﺴﺒﻖ ﺍﺳﻢ ﺍﻟﻨﻮﻉ ؛ ) (3ﻳﻤﻜﻦ ﺇﻋﻄﺎء
ﺍﻟﺘﺼﺮﻳﺤﺎﺕﺍﻟﻤﺘﻐﻴﺮﺓ ﻧﻮﻋﺎً ﺑﺎﻻﺳﺘﺪﻻﻝ ﺇﺫﺍ ﺗﻢ ﺇﻋﻄﺎء ﺍﻟﻤﺘﻐﻴﺮ ﻗﻴﻤﺔ ﺃﻭﻟﻴﺔ ؛ ﻭ ) (4ﻳﻤﻜﻦ ﺃﻥ ﺗﺮﺟﻊ ﺍﻟﺪﺍﻻﺕ ﻗﻴﻤﺎً ﻣﺘﻌﺪﺩﺓ .ﻻ
ﺗﺪﻋﻢ Goﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ،ﺣﻴﺚ ﻻ ﻳﻮﺟﺪ ﻟﻬﺎ ﺷﻜﻞ ﻣﻦ ﺃﺷﻜﺎﻝ ﺍﻟﻮﺭﺍﺛﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ
ﺍﻷﺳﺎﻟﻴﺐﻷﻱ ﻧﻮﻉ .ﻛﻤﺎ ﺃﻧﻪ ﻻ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻷﺩﻭﻳﺔ ﺍﻟﺠﻨﻴﺴﺔ .ﺗﺘﺸﺎﺑﻪ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻟﺨﺎﺻﺔ ﺑـ Goﻣﻊ ﺗﻠﻚ ﺍﻟﺨﺎﺻﺔ
ﺑﺎﻟﻠﻐﺎﺕﺍﻷﺧﺮﻯ ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ﻟﻐﺔ ، Cﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻤﺤﻮﻝ ﻻ ﻳﺘﻀﻤﻦ ﺍﻟﺴﻘﻮﻁ ﺍﻟﻀﻤﻨﻲ ﺇﻟﻰ ﺍﻟﻤﻘﻄﻊ ﺍﻟﺘﺎﻟﻲ.
ﻳﺘﻀﻤﻦ Goﻋﺒﺎﺭﺓ ، gotoﻭﺍﻟﻤﺆﺷﺮﺍﺕ ،ﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺘﺮﺍﺑﻄﻴﺔ ،ﻭﺍﻟﻮﺍﺟﻬﺎﺕ )ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺍﺧﺘﻼﻓﻬﺎ ﻋﻦ ﺗﻠﻚ
ﺍﻟﻤﻮﺟﻮﺩﺓﻓﻲ Javaﻭ ، (# Cﻭﺩﻋﻢ ﺍﻟﺘﺰﺍﻣﻦ ﺑﺎﺳﺘﺨﺪﺍﻡ .goroutinesﻛﻤﺎ ﺃﻧﻪ ﻻ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻷﺩﻭﻳﺔ ﺍﻟﺠﻨﻴﺴﺔ .ﺗﺘﺸﺎﺑﻪ
ﻋﺒﺎﺭﺍﺕﺍﻟﺘﺤﻜﻢ ﺍﻟﺨﺎﺻﺔ ﺑـ Goﻣﻊ ﺗﻠﻚ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ﻟﻐﺔ ، Cﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻤﺤﻮﻝ ﻻ
ﻳﺘﻀﻤﻦﺍﻟﺴﻘﻮﻁ ﺍﻟﻀﻤﻨﻲ ﺇﻟﻰ ﺍﻟﻤﻘﻄﻊ ﺍﻟﺘﺎﻟﻲ .ﻳﺘﻀﻤﻦ Goﻋﺒﺎﺭﺓ ، gotoﻭﺍﻟﻤﺆﺷﺮﺍﺕ ،ﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺘﺮﺍﺑﻄﻴﺔ ،
ﻭﺍﻟﻮﺍﺟﻬﺎﺕ)ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺍﺧﺘﻼﻓﻬﺎ ﻋﻦ ﺗﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ Javaﻭ ، (# Cﻭﺩﻋﻢ ﺍﻟﺘﺰﺍﻣﻦ ﺑﺎﺳﺘﺨﺪﺍﻡ .goroutinesﻛﻤﺎ
ﺃﻧﻪﻻ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻷﺩﻭﻳﺔ ﺍﻟﺠﻨﻴﺴﺔ .ﺗﺘﺸﺎﺑﻪ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻟﺨﺎﺻﺔ ﺑـ Goﻣﻊ ﺗﻠﻚ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻠﻐﺎﺕ ﺍﻷﺧﺮﻯ ﺍﻟﻤﺴﺘﻨﺪﺓ
ﺇﻟﻰﻟﻐﺔ ، Cﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻤﺤﻮﻝ ﻻ ﻳﺘﻀﻤﻦ ﺍﻟﺴﻘﻮﻁ ﺍﻟﻀﻤﻨﻲ ﺇﻟﻰ ﺍﻟﻤﻘﻄﻊ ﺍﻟﺘﺎﻟﻲ .ﻳﺘﻀﻤﻦ Goﻋﺒﺎﺭﺓ ، goto
ﻭﺍﻟﻤﺆﺷﺮﺍﺕ ،ﻭﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺘﺮﺍﺑﻄﻴﺔ ،ﻭﺍﻟﻮﺍﺟﻬﺎﺕ )ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺍﺧﺘﻼﻓﻬﺎ ﻋﻦ ﺗﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ Javaﻭ ، (# C
ﻭﺩﻋﻢﺍﻟﺘﺰﺍﻣﻦ ﺑﺎﺳﺘﺨﺪﺍﻡ .goroutines
2.17.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﺗﻢﺗﺼﻤﻴﻢ ، Javaﻣﺜﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻟﺘﻄﺒﻴﻖ ﻳﺒﺪﻭ ﺃﻧﻪ ﻻ ﺗﻮﺟﺪ ﻟﻪ ﻟﻐﺔ ﺣﺎﻟﻴﺔ
ﻣﺮﺿﻴﺔ.ﻓﻲ ﻋﺎﻡ ، 1990ﻗﺮﺭﺕ ﺷﺮﻛﺔ Sun Microsystemsﺃﻥ ﻫﻨﺎﻙ ﺣﺎﺟﺔ ﺇﻟﻰ ﻟﻐﺔ ﺑﺮﻣﺠﺔ
ﻟﻸﺟﻬﺰﺓﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﺍﻻﺳﺘﻬﻼﻛﻴﺔ ﺍﻟﻤﻀﻤﻨﺔ ،ﻣﺜﻞ ﺍﻟﻤﺤﻤﺼﺎﺕ ﻭﺃﻓﺮﺍﻥ ﺍﻟﻤﻴﻜﺮﻭﻭﻳﻒ ﻭﺃﻧﻈﻤﺔ
ﺍﻟﺘﻠﻔﺰﻳﻮﻥﺍﻟﺘﻔﺎﻋﻠﻴﺔ .ﻛﺎﻧﺖ ﺍﻟﻤﻮﺛﻮﻗﻴﺔ ﺃﺣﺪ ﺍﻷﻫﺪﺍﻑ ﺍﻷﺳﺎﺳﻴﺔ ﻟﻤﺜﻞ ﻫﺬﻩ ﺍﻟﻠﻐﺔ .ﻗﺪ ﻻ ﻳﺒﺪﻭ ﺃﻥ
ﺍﻟﻤﻮﺛﻮﻗﻴﺔﺳﺘﻜﻮﻥ ﻋﺎﻣﻼ ًﻣﻬﻤﺎً ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻥ ﺍﻟﻤﻴﻜﺮﻭﻭﻳﻒ .ﺇﺫﺍ ﻛﺎﻥ ﻟﺪﻯ ﺍﻟﻔﺮﻥ ﺑﺮﻧﺎﻣﺞ
ﻣﻌﻄﻞ ،ﻓﻤﻦ ﺍﻟﻤﺤﺘﻤﻞ ﺃﻻ ﻳﺸﻜﻞ ﺧﻄﺮﺍً ﻛﺒﻴﺮﺍً ﻋﻠﻰ ﺃﻱ ﺷﺨﺺ ،ﻭﻋﻠﻰ ﺍﻷﺭﺟﺢ ﻟﻦ ﻳﺆﺩﻱ ﺇﻟﻰ
ﺗﺴﻮﻳﺎﺕﻗﺎﻧﻮﻧﻴﺔ ﻛﺒﻴﺮﺓ .ﻭﻣﻊ ﺫﻟﻚ ،ﺇﺫﺍ ﺗﺒﻴﻦ ﺃﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻧﻤﻮﺫﺝ ﻣﻌﻴﻦ ﺧﺎﻃﺊ ﺑﻌﺪ ﺗﺼﻨﻴﻊ
ﻣﻠﻴﻮﻥﻭﺣﺪﺓ ﻭﺑﻴﻌﻬﺎ ،ﻓﺈﻥ ﺍﺳﺘﺮﺟﺎﻋﻬﺎ ﺳﻴﺘﺮﺗﺐ ﻋﻠﻴﻪ ﺗﻜﻠﻔﺔ ﻛﺒﻴﺮﺓ .ﻟﺬﻟﻚ ،ﺍﻟﻤﻮﺛﻮﻗﻴﺔﻳﻜﻮﻥﺳﻤﺔ
ﻣﻬﻤﺔﻟﻠﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺍﻟﻤﻨﺘﺠﺎﺕ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﺍﻻﺳﺘﻬﻼﻛﻴﺔ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 92
ﺑﻌﺪﺍﻟﻨﻈﺮ ﻓﻲ Cﻭ ، ++ Cﺗﻘﺮﺭ ﻋﺪﻡ ﺇﺭﺿﺎء ﺃﻱ ﻣﻨﻬﻤﺎ ﻟﺘﻄﻮﻳﺮ ﺑﺮﺍﻣﺞ ﺍﻷﺟﻬﺰﺓ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ
ﺍﻻﺳﺘﻬﻼﻛﻴﺔ.ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻟﻐﺔ Cﻛﺎﻧﺖ ﺻﻐﻴﺮﺓ ﻧﺴﺒﻴﺎً ،ﺇﻻ ﺃﻧﻬﺎ ﻟﻢ ﺗﻘﺪﻡ ﺩﻋﻤﺎً ﻟﻠﺒﺮﻣﺠﺔ
ﺍﻟﺸﻴﺉﻴﺔ ،ﻭﺍﻟﺘﻲ ﺍﻋﺘﺒﺮﻭﻫﺎ ﺿﺮﻭﺭﺓ .ﺩﻋﻢ ++ Cﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ،ﻭﻟﻜﻦ ﺗﻢ ﺍﻟﺤﻜﻢ
ﻋﻠﻴﻬﺎﺑﺄﻧﻬﺎ ﻛﺒﻴﺮﺓ ﺟﺪﺍً ﻭﻣﻌﻘﺪﺓ ،ﺟﺰﺉﻴﺎً ﻷﻧﻬﺎ ﺗﺪﻋﻢ ﺃﻳﻀﺎً ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻧﺤﻮ ﺍﻹﺟﺮﺍءﺍﺕ .ﻛﻤﺎ
ﻛﺎﻥﻣﻦ ﺍﻟﻤﻌﺘﻘﺪ ﺃﻥ ﻻ Cﻭﻻ ++ Cﺗﻮﻓﺮ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻟﻼﺯﻡ ﻣﻦ ﺍﻟﻤﻮﺛﻮﻗﻴﺔ .ﻟﺬﻟﻚ ،ﺗﻢ ﺗﺼﻤﻴﻢ ﻟﻐﺔ
ﺟﺪﻳﺪﺓ ،ﺳﻤﻴﺖ ﻓﻴﻤﺎ ﺑﻌﺪ .Javaﺍﺳﺘﺮﺷﺪ ﺗﺼﻤﻴﻤﻪ ﺑﺎﻟﻬﺪﻑ ﺍﻷﺳﺎﺳﻲ ﺍﻟﻤﺘﻤﺜﻞ ﻓﻲ ﺗﻮﻓﻴﺮ ﻗﺪﺭ
ﺃﻛﺒﺮﻣﻦ ﺍﻟﺒﺴﺎﻃﺔ ﻭﺍﻟﻤﻮﺛﻮﻗﻴﺔ ﻣﻤﺎ ﻛﺎﻥ ﻳﻌُﺘﻘﺪ ﺃﻥ ++ Cﺗﻮﻓﺮﻩ.
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﺪﺍﻓﻊ ﺍﻷﻭﻟﻲ ﻟﺠﺎﻓﺎ ﻛﺎﻥ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺎﺕ ﺍﻻﺳﺘﻬﻼﻛﻴﺔ ،ﺇﻻ ﺃﻧﻪ ﻟﻢ ﻳﺘﻢ
ﺗﺴﻮﻳﻖﺃﻱ ﻣﻦ ﺍﻟﻤﻨﺘﺠﺎﺕ ﺍﻟﺘﻲ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻣﻌﻬﺎ ﻓﻲ ﺳﻨﻮﺍﺗﻬﺎ ﺍﻷﻭﻟﻰ .ﺑﺪءﺍً ﻣﻦ ﻋﺎﻡ ، 1993
ﻋﻨﺪﻣﺎﺃﺻﺒﺤﺖ ﺷﺒﻜﺔ ﺍﻟﻮﻳﺐ ﺍﻟﻌﺎﻟﻤﻴﺔ ﻣﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ،ﻭﺑﺴﺒﺐ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ
ﺍﻟﺮﺳﻮﻣﻴﺔﺍﻟﺠﺪﻳﺪﺓ ﺇﻟﻰ ﺣﺪ ﻛﺒﻴﺮ ،ﺗﻢ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ Javaﻛﺄﺩﺍﺓ ﻣﻔﻴﺪﺓ ﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻳﺐ .ﻋﻠﻰ ﻭﺟﻪ
ﺍﻟﺨﺼﻮﺹ ،ﺃﺻﺒﺤﺖ ﺗﻄﺒﻴﻘﺎﺕ Javaﺍﻟﺼﻐﻴﺮﺓ ،ﻭﻫﻲ ﺑﺮﺍﻣﺞ Javaﺻﻐﻴﺮﺓ ﻧﺴﺒﻴﺎً ﻳﺘﻢ ﺗﻔﺴﻴﺮﻫﺎ
ﻓﻲﻣﺘﺼﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ ﻭﻳﻤﻜﻦ ﺇﺩﺭﺍﺝ ﻣﺨﺮﺟﺎﺗﻬﺎ ﻓﻲ ﻣﺴﺘﻨﺪﺍﺕ ﺍﻟﻮﻳﺐ ﺍﻟﻤﻌﺮﻭﺿﺔ ،ﺷﺎﺉﻌﺔ
ﺟﺪﺍًﻓﻲ ﻣﻨﺘﺼﻒ ﺇﻟﻰ ﺃﻭﺍﺧﺮ ﺍﻟﺘﺴﻌﻴﻨﻴﺎﺕ .ﻓﻲ ﺍﻟﺴﻨﻮﺍﺕ ﺍﻟﻘﻠﻴﻠﺔ ﺍﻷﻭﻟﻰ ﻟﺸﻌﺒﻴﺔ ، Javaﻛﺎﻥ
ﺍﻟﻮﻳﺐﻫﻮ ﺃﻛﺜﺮ ﺗﻄﺒﻴﻘﺎﺗﻬﺎ ﺷﻴﻮﻋﺎً.
ﺗﺮﺃﺱﻓﺮﻳﻖ ﺗﺼﻤﻴﻢ Javaﺟﻴﻤﺲ ﺟﻮﺳﻠﻴﻨﺞ ،ﺍﻟﺬﻱ ﺻﻤﻢ ﺳﺎﺑﻘﺎً ﻣﺤﺮﺭ UNIX emacs
ﻭﻧﻈﺎﻡﺍﻟﻨﻮﺍﻓﺬ .NeWS
ﻫﻨﺎﻙﺍﺧﺘﻼﻑ ﻣﻬﻢ ﺁﺧﺮ ﺑﻴﻦ ++ Cﻭ Javaﻭﻫﻮ ﺃﻥ ++ Cﺗﺪﻋﻢ ﺍﻟﻮﺭﺍﺛﺔ ﺍﻟﻤﺘﻌﺪﺩﺓ ﻣﺒﺎﺷﺮﺓ
ﻓﻲﺗﻌﺮﻳﻔﺎﺕ ﻓﺉﺘﻬﺎ .ﺗﺪﻋﻢ Javaﻟﻐﺔ ﻭﺍﺣﺪﺓ ﻓﻘﻂ
93 2.17ﻟﻐﺔ ﺣﺘﻤﻴﺔ ﻣﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ :ﺟﺎﻓﺎ
ﺗﻮﺭﻳﺚﺍﻟﻔﺉﺎﺕ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻳﻤﻜﻦ ﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﺑﻌﺾ ﻓﻮﺍﺉﺪ ﺍﻟﻮﺭﺍﺛﺔ ﺍﻟﻤﺘﻌﺪﺩﺓ
ﺑﺎﺳﺘﺨﺪﺍﻡﺑﻨﻴﺔ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ.
ﻣﻦﺑﻴﻦ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ++ Cﺍﻟﺘﻲ ﻟﻢ ﻳﺘﻢ ﻧﺴﺨﻬﺎ ﺇﻟﻰ Javaﻫﻲ ﺍﻟﺒﻨﻰ ﻭﺍﻟﻨﻘﺎﺑﺎﺕ.
ﺑﺨﻼﻑ Cﻭ ، ++ Cﺗﺘﻀﻤﻦ Javaﻋﻤﻠﻴﺎﺕ ﺍﻹﻛﺮﺍﻩ ﻋﻠﻰ ﻧﻮﻉ ﺍﻟﻤﻬﻤﺔ )ﺗﺤﻮﻳﻼﺕ ﺍﻟﻨﻮﻉ
ﺍﻟﻀﻤﻨﻲ( ﻓﻘﻂ ﺇﺫﺍ ﻛﺎﻧﺖ ﺗﺘﺴﻊ )ﻣﻦ ﻧﻮﻉ "ﺃﺻﻐﺮ" ﺇﻟﻰ ﻧﻮﻉ "ﺃﻛﺒﺮ"( .ﻟﺬﺍintﻝﻳﻄﻔﻮﻳﺘﻢ ﺍﻹﻛﺮﺍﻩ ﻋﺒﺮ
ﻋﺎﻣﻞﺍﻟﺘﻌﻴﻴﻦ ،ﻭﻟﻜﻦﻳﻄﻔﻮ
ﻝintﺍﻹﻛﺮﺍﻩ ﻟﻴﺲ ﻛﺬﻟﻚ.
2.17.3ﺍﻟﺘﻘﻴﻴﻢ
ﻗﺎﻡﻣﺼﻤﻤﻮ Javaﺑﻌﻤﻞ ﺟﻴﺪ ﻓﻲ ﺗﻘﻠﻴﺺ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﺰﺍﺉﺪﺓ ﻭ /ﺃﻭ ﻏﻴﺮ ﺍﻵﻣﻨﺔ ﻟـ .++ Cﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﻛﺎﻥ ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﺍﻟﺘﺨﻠﺺ ﻣﻦ ﻧﺼﻒ ﺍﻹﻛﺮﺍﻫﺎﺕ ﻋﻠﻰ ﺍﻟﺘﻌﻴﻴﻦ ﺍﻟﺘﻲ ﺗﺘﻢ ﻓﻲ
++ Cﻛﺎﻥ ﺧﻄﻮﺓ ﻧﺤﻮ ﻣﻮﺛﻮﻗﻴﺔ ﺃﻋﻠﻰ .ﻛﻤﺎ ﺃﻥ ﻓﺤﺺ ﻧﻄﺎﻕ ﺍﻟﻔﻬﺮﺱ ﻟﻮﺻﻮﻝ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻳﺠﻌﻞ
ﺍﻟﻠﻐﺔﺃﻛﺜﺮ ﺃﻣﺎﻧﺎً .ﺗﻌﻤﻞ ﺇﺿﺎﻓﺔ ﺍﻟﺘﺰﺍﻣﻦ ﻋﻠﻰ ﺗﺤﺴﻴﻦ ﻧﻄﺎﻕ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ
ﺑﺎﻟﻠﻐﺔ ،ﻛﻤﺎ ﺗﻔﻌﻞ ﻣﻜﺘﺒﺎﺕ ﺍﻟﻔﺉﺎﺕ ﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺮﺳﻮﻣﻴﺔ ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻗﺎﻋﺪﺓ
ﺍﻟﺒﻴﺎﻧﺎﺕﻭﺍﻟﺸﺒﻜﺎﺕ.
ﻏﺎﻟﺒﺎًﻣﺎ ﺗﻌُﺰﻯ ﻗﺎﺑﻠﻴﺔ ﺗﻨﻘﻞ ، Javaﻋﻠﻰ ﺍﻷﻗﻞ ﻓﻲ ﺍﻟﺸﻜﻞ ﺍﻟﻤﺘﻮﺳﻂ ،ﺇﻟﻰ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ،
ﻟﻜﻨﻬﺎﻟﻴﺴﺖ ﻛﺬﻟﻚ .ﻳﻤﻜﻦ ﺗﺮﺟﻤﺔ ﺃﻱ ﻟﻐﺔ ﺇﻟﻰ ﺻﻴﻐﺔ ﻭﺳﻴﻄﺔ ﻭ "ﺗﺸﻐﻴﻞ" ﻋﻠﻰ ﺃﻱ ﻧﻈﺎﻡ
ﺃﺳﺎﺳﻲﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺁﻟﺔ ﺍﻓﺘﺮﺍﺿﻴﺔ ﻟﻬﺬﺍ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﻮﺳﻴﻂ .ﺳﻌﺮ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻨﻘﻞ ﻫﻮ
ﺗﻜﻠﻔﺔﺍﻟﺘﻔﺴﻴﺮ ،ﻭﺍﻟﺬﻱ ﻛﺎﻥ ﺗﻘﻠﻴﺪﻳﺎً ﻳﺘﻌﻠﻖ ﺑﺘﺮﺗﻴﺐ ﻣﻦ ﺣﻴﺚ ﺍﻟﺤﺠﻢ ﺃﻛﺜﺮ ﻣﻦ ﺗﻨﻔﻴﺬ ﻛﻮﺩ ﺍﻵﻟﺔ.
ﺍﻹﺻﺪﺍﺭﺍﻷﻭﻟﻲ ﻣﻦ ﻣﺘﺮﺟﻢ ، Javaﺍﻟﻤﺴﻤﻰ ( ، Java Virtual Machine )JVMﻛﺎﻥ ﻓﻲ ﺍﻟﻮﺍﻗﻊ
ﺃﺑﻄﺄ 10ﻣﺮﺍﺕ ﻋﻠﻰ ﺍﻷﻗﻞ ﻣﻦ ﺑﺮﺍﻣﺞ Cﺍﻟﻤﺘﺮﺟﻤﺔ ﺍﻟﻤﻜﺎﻓﺉﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﻳﺘﻢ ﺍﻵﻥ ﺗﺮﺟﻤﺔ
ﺍﻟﻌﺪﻳﺪﻣﻦ ﺑﺮﺍﻣﺞ Javaﺇﻟﻰ ﻛﻮﺩ ﺍﻟﺠﻬﺎﺯ ﻗﺒﻞ ﺗﻨﻔﻴﺬﻫﺎ ،ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺘﺮﺟﻤﻲ (Just-in-Time )JIT
.ﻫﺬﺍ ﻳﺠﻌﻞ ﻛﻔﺎءﺓ ﺑﺮﺍﻣﺞ Javaﻣﻨﺎﻓﺴﺔ ﻟﺒﺮﺍﻣﺞ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺘﺮﺟﻤﺔ ﺗﻘﻠﻴﺪﻳﺎً ﻣﺜﻞ .++ C
ﺯﺍﺩﺍﺳﺘﺨﺪﺍﻡ Javaﺑﺸﻜﻞ ﺃﺳﺮﻉ ﻣﻦ ﺃﻱ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺃﺧﺮﻯ .ﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ،ﻛﺎﻥ ﻫﺬﺍ ﺑﺴﺒﺐ
ﻗﻴﻤﺘﻬﺎﻓﻲ ﺑﺮﻣﺠﺔ ﻣﺴﺘﻨﺪﺍﺕ ﺍﻟﻮﻳﺐ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ .ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﺃﺣﺪ ﺃﺳﺒﺎﺏ ﺻﻌﻮﺩ Java
ﺍﻟﺴﺮﻳﻊﺇﻟﻰ ﺍﻟﺼﺪﺍﺭﺓ ﻫﻮ ﺑﺒﺴﺎﻃﺔ ﺃﻥ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻳﺤﺒﻮﻥ ﺗﺼﻤﻴﻤﻬﺎ .ﻳﻌﺘﻘﺪ ﺑﻌﺾ ﺍﻟﻤﻄﻮﺭﻳﻦ ﺃﻥ
++ Cﻛﺎﻧﺖ ﺑﺒﺴﺎﻃﺔ ﺃﻳﻀﺎً
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 94
ﻛﺒﻴﺮﺓﻭﻣﻌﻘﺪﺓ ﻟﺘﻜﻮﻥ ﻋﻤﻠﻴﺔ ﻭﺁﻣﻨﺔ .ﻗﺪﻣﺖ ﻟﻬﻢ Javaﺑﺪﻳﻼ ًﻳﺘﻤﺘﻊ ﺑﺎﻟﻜﺜﻴﺮ ﻣﻦ ﻗﻮﺓ ، ++ Cﻭﻟﻜﻦ
ﺑﻠﻐﺔﺃﺑﺴﻂ ﻭﺃﻛﺜﺮ ﺃﻣﺎﻧﺎً .ﺳﺒﺐ ﺁﺧﺮ ﻫﻮ ﺃﻥ ﻧﻈﺎﻡ ﺍﻟﻤﺘﺮﺟﻢ /ﺍﻟﻤﺘﺮﺟﻢ ﺍﻟﻔﻮﺭﻱ ﻟﺠﺎﻓﺎ ﻣﺠﺎﻧﻲ ﻭﻳﻤﻜﻦ
ﺍﻟﺤﺼﻮﻝﻋﻠﻴﻪ ﺑﺴﻬﻮﻟﺔ ﻋﻠﻰ ﺍﻟﻮﻳﺐ .ﺗﺴﺘﺨﺪﻡ Javaﺍﻵﻥ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻓﻲ ﻣﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ
ﻣﻦﻣﺠﺎﻻﺕ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ.
ﻇﻬﺮﺃﺣﺪﺙ ﺇﺻﺪﺍﺭ ﻣﻦ ، Java ، Java 7ﻓﻲ ﻋﺎﻡ .2011ﻣﻨﺬ ﺑﺪﺍﻳﺘﻪ ،ﺗﻤﺖ ﺇﺿﺎﻓﺔ ﺍﻟﻌﺪﻳﺪ
ﻣﻦﺍﻟﻤﻴﺰﺍﺕ ﺇﻟﻰ ﺍﻟﻠﻐﺔ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﻓﺉﺔ ﺍﻟﺘﻌﺪﺍﺩ ،ﻭﺍﻟﻌﻮﺍﻣﻞ ﺍﻟﻌﺎﻣﺔ ،ﻭﺑﻨﺎء ﺍﻟﺘﻜﺮﺍﺭ ﺍﻟﺠﺪﻳﺪ.
) System.out.println
{ // ** end of then clause of if ))listlen< 0( ...ﻋﺪﺩ ﺍﻟﻘﻴﻢ<
ﺍﻟﻤﺘﻮﺳﻂﻫﻮ + ":ﻧﺘﻴﺠﺔ( ؛ "\ nﺁﺧﺮ) System.out.println
2.18ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺗﻄﻮﺭﺕﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﻠﻰ ﻣﺪﺍﺭ ﺍﻟﺨﻤﺴﺔ ﻭﻋﺸﺮﻳﻦ ﻋﺎﻣﺎً ﺍﻟﻤﺎﺿﻴﺔ .ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔﺍﻟﻨﺼﻴﺔ ﺍﻟﻤﺒﻜﺮﺓ ﻣﻦ ﺧﻼﻝ ﻭﺿﻊ ﻗﺎﺉﻤﺔ ﺑﺎﻷﻭﺍﻣﺮ ،ﺗﺴﻤﻰ ﺃﺍﻟﻨﺼﻲ ،ﻓﻲ ﻣﻠﻒ ﻟﻴﺘﻢ
ﺗﻔﺴﻴﺮﻩ.ﺍﺳﻢ ﺃﻭﻝ ﻫﺬﻩ ﺍﻟﻠﻐﺎﺕﺵ )ﻛﻤﺠﻤﻮﻋﺔ ﺻﻐﻴﺮﺓ ﻣﻦ ﺍﻷﻭﺍﻣﺮ ﺍﻟﺘﻲ ﺗﻢ ﺗﻔﺴﻴﺮﻫﺎ ﻋﻠﻰ ﺃﻧﻬﺎ
ﺍﺳﺘﺪﻋﺎءﺍﺕﻟﻠﺒﺮﺍﻣﺞ ﺍﻟﻔﺮﻋﻴﺔ ﻟﻠﻨﻈﺎﻡ ﺍﻟﺘﻲ ﺗﺆﺩﻱ ﻭﻇﺎﺉﻒ ﺍﻷﺩﺍﺓ ﺍﻟﻤﺴﺎﻋﺪﺓ ،ﻣﺜﻞ ﺇﺩﺍﺭﺓ ﺍﻟﻤﻠﻔﺎﺕ
ﻭﺗﺼﻔﻴﺔﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺒﺴﻴﻄﺔ .ﺗﻢ ﺇﺿﺎﻓﺔ ﻣﺘﻐﻴﺮﺍﺕ ﺇﻟﻰ ﺫﻟﻚ ،ﻭﺑﻴﺎﻧﺎﺕ ﺗﺪﻓﻖ ﺍﻟﺘﺤﻜﻢ ،
ﻭﺍﻟﻮﻇﺎﺉﻒ ،ﻭﻣﺨﺘﻠﻒ ﺍﻟﻘﺪﺭﺍﺕ ﺍﻷﺧﺮﻯ ،ﻭﺍﻟﻨﺘﻴﺠﺔ ﻫﻲ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻛﺎﻣﻠﺔ .ﻭﺍﺣﺪ ﻣﻦ ﺃﻗﻮﻯ ﻫﺬﻩ
ﻭﺃﻛﺜﺮﻫﺎﺷﻬﺮﺓ ﻫﻮ .ksh )for shell( ،ﺍﻟﺬﻱ ﻃﻮﺭﻩ ﺩﻳﻔﻴﺪ ﻛﻮﺭﻥ ﻓﻲ ﻣﺨﺘﺒﺮﺍﺕ ﺑﻴﻞ ، 1995( ،
Bolsky and Korn
ﺗﺤﺘﻮﻱﻟﻐﺔ Perlﻋﻠﻰ ﻋﺪﺩ ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻟﻤﺜﻴﺮﺓ ﻟﻼﻫﺘﻤﺎﻡ ،ﻭﺍﻟﺘﻲ ﺗﻢ ﺫﻛﺮ ﺍﻟﻘﻠﻴﻞ ﻣﻨﻬﺎ
ﻓﻘﻂﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻭﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻻﺣﻘﺎً ﻓﻲ ﺍﻟﻜﺘﺎﺏ.
ﺍﻟﻤﺘﻐﻴﺮﺍﺕﻓﻲ Perlﻣﻜﺘﻮﺑﺔ ﺑﺸﻜﻞ ﺛﺎﺑﺖ ﻭﻣﻌﻠﻨﺔ ﺿﻤﻨﻴﺎً .ﻫﻨﺎﻙ ﺛﻼﺙ ﻣﺴﺎﺣﺎﺕ ﺃﺳﻤﺎء
ﻣﻤﻴﺰﺓﻟﻠﻤﺘﻐﻴﺮﺍﺕ ،ﻳﺸُﺎﺭ ﺇﻟﻴﻬﺎ ﺑﺎﻟﺤﺮﻑ ﺍﻷﻭﻝ ﻣﻦ ﺃﺳﻤﺎء ﺍﻟﻤﺘﻐﻴﺮﺍﺕ .ﺗﺒﺪﺃ ﺟﻤﻴﻊ ﺃﺳﻤﺎء
ﺍﻟﻤﺘﻐﻴﺮﺍﺕﺍﻟﻌﺪﺩﻳﺔ ﺑﻌﻼﻣﺎﺕ ﺍﻟﺪﻭﻻﺭ ) ، ($ﻭﺗﺒﺪﺃ ﺟﻤﻴﻊ ﺃﺳﻤﺎء ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺑﻌﻼﻣﺎﺕ )@( ،
ﻭﺗﺒﺪﺃﺟﻤﻴﻊ ﺃﺳﻤﺎء ﺍﻟﺘﺠﺰﺉﺔ )ﻳﺘﻢ ﻭﺻﻒ ﺍﻟﺘﺠﺰﺉﺔ ﺃﺩﻧﺎﻩ( ﺑﻌﻼﻣﺎﺕ ﺍﻟﻨﺴﺒﺔ ﺍﻟﻤﺉﻮﻳﺔ ) .(٪ﻳﺠﻌﻞ
ﻫﺬﺍﺍﻻﺻﻄﻼﺡ ﺃﺳﻤﺎء ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ ﺃﻛﺜﺮ ﻗﺎﺑﻠﻴﺔ ﻟﻠﻘﺮﺍءﺓ ﻣﻦ ﺃﻱ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺃﺧﺮﻯ.
ﻟﻐﺔ Perlﻟﻐﺔ ﻗﻮﻳﺔ ﻭﻟﻜﻨﻬﺎ ﺧﻄﻴﺮﺓ ﺇﻟﻰ ﺣﺪ ﻣﺎ .ﻳﺨﺰﻥ ﺍﻟﻨﻮﻉ ﺍﻟﻘﻴﺎﺳﻲ ﺍﻟﺨﺎﺹ ﺑﻪ ﻛﻼ ًﻣﻦ
ﺍﻟﺴﻼﺳﻞﻭﺍﻷﺭﻗﺎﻡ ،ﻭﺍﻟﺘﻲ ﻳﺘﻢ ﺗﺨﺰﻳﻨﻬﺎ ﻋﺎﺩﺓ ًﻓﻲ ﺷﻜﻞ ﻧﻘﻄﺔ ﻋﺎﺉﻤﺔ ﻣﺰﺩﻭﺟﺔ ﺍﻟﺪﻗﺔ .ﺍﻋﺘﻤﺎﺩ ًﺍ
ﻋﻠﻰﺍﻟﺴﻴﺎﻕ ،ﻗﺪ ﻳﺘﻢ ﺇﺟﺒﺎﺭ ﺍﻷﺭﻗﺎﻡ ﻋﻠﻰ ﺍﻟﺴﻼﺳﻞ ﻭﺍﻟﻌﻜﺲ ﺻﺤﻴﺢ .ﺇﺫﺍ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺳﻠﺴﻠﺔ
ﻓﻲﺳﻴﺎﻕ ﺭﻗﻤﻲ ﻭﻻ ﻳﻤﻜﻦ ﺗﺤﻮﻳﻞ ﺍﻟﺴﻠﺴﻠﺔ ﺇﻟﻰ ﺭﻗﻢ ،ﻓﺴﻴﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺼﻔﺮ ﻭﻻ ﻳﺘﻢ ﺗﻮﻓﻴﺮ
ﺭﺳﺎﻟﺔﺗﺤﺬﻳﺮ ﺃﻭ ﺧﻄﺄ ﻟﻠﻤﺴﺘﺨﺪﻡ .ﻳﻤﻜﻦ ﺃﻥ ﻳﺆﺩﻱ ﻫﺬﺍ ﺍﻟﺘﺄﺛﻴﺮ ﺇﻟﻰ ﺃﺧﻄﺎء ﻟﻢ ﻳﺘﻢ ﺍﻛﺘﺸﺎﻓﻬﺎ
ﺑﻮﺍﺳﻄﺔﺍﻟﻤﺘﺮﺟﻢ ﺃﻭ ﻧﻈﺎﻡ ﻭﻗﺖ ﺍﻟﺘﺸﻐﻴﻞ .ﻻ ﻳﻤﻜﻦ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻓﻬﺮﺳﺔ ﺍﻟﻤﺼﻔﻮﻓﺔ ،ﻷﻧﻪ ﻻ
ﻳﻮﺟﺪﻧﻄﺎﻕ ﻣﻨﺨﻔﺾ ﻣﻌﻴﻦ ﻷﻱ ﺻﻔﻴﻒ .ﺗﻌﻮﺩ ﺍﻹﺷﺎﺭﺍﺕ ﺇﻟﻰ ﺍﻟﻌﻨﺎﺻﺮ ﻏﻴﺮ ﺍﻟﻤﻮﺟﻮﺩﺓﺃﻭﻧﺪﻳﻒ،
ﻭﺍﻟﺬﻱﻳﺘﻢ ﺗﻔﺴﻴﺮﻩ ﻋﻠﻰ ﺃﻧﻪ ﺻﻔﺮ ﻓﻲ ﺳﻴﺎﻕ ﺭﻗﻤﻲ .ﻟﺬﻟﻚ ،ﻻ ﻳﻮﺟﺪ ﺃﻳﻀﺎً ﺍﻛﺘﺸﺎﻑ ﺧﻄﺄ ﻓﻲ
ﺍﻟﻮﺻﻮﻝﺇﻟﻰ ﻋﻨﺼﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ.
ﺁﺧﺮ}
ﻣﻄﺒﻌﺔ"ﺧﻄﺄ -ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ \ " n؛
{
// example.js
ﺍﻹﺩﺧﺎﻝ:ﻋﺪﺩ ﺻﺤﻴﺢ ، listLen ،ﺣﻴﺚ listLenﺃﻗﻞ //
ﻣﻦ ، 100ﺗﻠﻴﻬﺎ :listLen-numeric value Outputﻋﺪﺩ ﻗﻴﻢ ﺍﻹﺩﺧﺎﻝ //
ﺍﻷﻛﺒﺮ //
ﻣﻦﻣﺘﻮﺳﻂ ﺟﻤﻴﻊ ﻗﻴﻢ ﺍﻹﺩﺧﺎﻝ //
) ﻣﻮﺟﻪ = listLen
"ﺍﻟﺮﺟﺎء ﻛﺘﺎﺑﺔ ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ" ("" ،؛ ﻟﻮ))} ((0( && )listLen >100
<listLen
//ﺍﺣﺴﺐ ﺍﻟﻤﺘﻮﺳﻂ
ﺍﻟﻤﺘﻮﺳﻂ= sum / listLen؛
//ﻋﺮﺽ ﺍﻟﻨﺘﺎﺉﺞ
:"،ﻋﺪﺩ ﺍﻟﻘﻴﻢ< ﺍﻟﻤﺘﻮﺳﻂ ﻫﻮ") document.write
ﺍﻟﻨﺘﻴﺠﺔ ("</ br>"،؛
{ﺁﺧﺮ
) document.write
"ﺧﻄﺄ -ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ > ("</ br؛
ﺍﻟﻤﻌﺎﻟﺞﺍﻟﻤﺴﺒﻖ ،ﻭﺍﻟﺬﻱ ﺃﺩﻯ ﻻﺣﻘﺎً ﺇﻟﻰ ﻏﻤﻮﺽ ﺍﻻﺳﻢ ﺍﻷﺻﻠﻲ .ﺗﻢ ﺗﻄﻮﻳﺮ PHPﺍﻵﻥ ﻭﺗﻮﺯﻳﻌﻪ
ﻭﺩﻋﻤﻪﻛﻤﻨﺘﺞ ﻣﻔﺘﻮﺡ ﺍﻟﻤﺼﺪﺭ .ﺗﻮﺟﺪ ﻣﻌﺎﻟﺠﺎﺕ PHPﻓﻲ ﻣﻌﻈﻢ ﺧﻮﺍﺩﻡ ﺍﻟﻮﻳﺐ.
.ﺃﺑﺪﺍً PHPﻟﺬﻟﻚ ،ﻻ ﻳﺮﻯ ﻣﺴﺘﻌﺮﺽ ﺍﻟﻮﻳﺐ ﻛﻮﺩ HTML.ﻓﻲ ﻣﺴﺘﻨﺪ PHPﻛﻤﺨﺮﺝ ،
ﻭﺍﻟﺬﻱﻳﺤﻞ ﻣﺤﻞ ﻛﻮﺩ HTMLﻛﻮﺩ PHPﺍﻟﺬﻱ ﺗﻢ ﺗﻀﻤﻴﻨﻪ ﻓﻴﻪ .ﻋﺎﺩﺓ ًﻣﺎ ﻳﻨﺘﺞ ﻋﻦ ﻛﻮﺩ HTML
ﻋﻠﻰﺧﺎﺩﻡ ﺍﻟﻮﻳﺐ ﻋﻨﺪﻣﺎ ﻳﻄﻠﺐ ﺍﻟﻤﺴﺘﻌﺮﺽ ﻣﺴﺘﻨﺪ PHPﻭﻣﺼﻤﻤﺔ ﺧﺼﻴﺼﺎً ﻟﺘﻄﺒﻴﻘﺎﺕ
ﺍﻟﻮﻳﺐ.ﻳﺘﻢ ﺗﻔﺴﻴﺮ ﻛﻮﺩ HTMLﻫﻲ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻧﺼﻴﺔ ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﺨﺎﺩﻡ ﻣﻀﻤﻨﺔ ﻓﻲ PHP
ﻳﺘﻴﺢ PHPﻭﺻﻮﻻ ًﺑﺴﻴﻄﺎً ﺇﻟﻰ ﺑﻴﺎﻧﺎﺕ ﻧﻤﻮﺫﺝ ، HTMLﻟﺬﺍ ﻓﺈﻥ ﻣﻌﺎﻟﺠﺔ ﺍﻟﻨﻤﺎﺫﺝ ﺳﻬﻠﺔ
ﺑﺎﺳﺘﺨﺪﺍﻡ .PHPﻳﻮﻓﺮ PHPﺍﻟﺪﻋﻢ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻈﻤﺔ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ .ﻫﺬﺍ
ﻳﺠﻌﻠﻬﺎﻟﻐﺔ ﻣﻔﻴﺪﺓ ﻟﺒﻨﺎء ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﺘﻲ ﺗﺤﺘﺎﺝ ﺇﻟﻰ ﻭﺻﻮﻝ ﺍﻟﻮﻳﺐ ﺇﻟﻰ ﻗﻮﺍﻋﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ.
ﻻﻳﻌﺘﻤﺪ ﺑﻨﺎء ﺟﻤﻠﺔ ﺑﺎﻳﺜﻮﻥ ﻣﺒﺎﺷﺮﺓ ﻋﻠﻰ ﺃﻱ ﻟﻐﺔ ﺷﺎﺉﻌﺔ ﺍﻻﺳﺘﺨﺪﺍﻡ .ﻳﺘﻢ ﻓﺤﺼﻪ ﻣﻦ
ﺍﻟﻨﻮﻉ ،ﻭﻟﻜﻦ ﻳﺘﻢ ﻛﺘﺎﺑﺘﻪ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً .ﺑﺪﻻ ًﻣﻦ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ،ﺗﺘﻀﻤﻦ Pythonﺛﻼﺛﺔ ﺃﻧﻮﺍﻉ ﻣﻦ
ﻫﻴﺎﻛﻞﺍﻟﺒﻴﺎﻧﺎﺕ :ﺍﻟﻘﻮﺍﺉﻢ ؛ ﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻐﻴﻴﺮ ،ﻭﺍﻟﺘﻲ ﺗﺴﻤﻰﻣﺠﻤﻮﻋﺎﺕ؛ ﻭﺍﻟﺘﺠﺰﺉﺔ ،ﻭﺍﻟﺘﻲ
ﻳﺘﻢﺍﺳﺘﺪﻋﺎﺅﻫﺎﻗﻮﺍﻣﻴﺲ .ﻫﻨﺎﻙ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻃﺮﻕ ﺍﻟﻘﺎﺉﻤﺔ ،ﻣﺜﻞﺇﻟﺤﺎﻕ ،ﺇﺩﺭﺍﺝ ،ﺇﺯﺍﻟﺔ ،ﻭﻧﻮﻉ،
ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺃﺳﺎﻟﻴﺐ ﺍﻟﻘﻮﺍﻣﻴﺲ ،ﻣﺜﻞﻣﻔﺎﺗﻴﺢ ،ﻗﻴﻢ ،ﻧﺴﺦ ،ﻭhas_key.ﺗﺪﻋﻢ
Pythonﺃﻳﻀﺎً ﻗﻮﺍﺉﻢ ﺍﻟﻔﻬﻢ ،ﺍﻟﺘﻲ ﻧﺸﺄﺕ ﻣﻊ ﻟﻐﺔ .Haskellﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺍﺳﺘﻴﻌﺎﺏ
ﺍﻟﻘﺎﺉﻤﺔﻓﻲ ﺍﻟﻘﺴﻢ .15.8
.ﻭﻟﺪﻳﻬﺎﻣﻌﺎﻟﺠﺔ ﺍﺳﺘﺜﻨﺎﺉﻴﺔ .ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺟﻤﻊ ﺍﻟﻘﻤﺎﻣﺔ ﻻﺳﺘﻌﺎﺩﺓ ﺍﻟﻜﺎﺉﻨﺎﺕ ﻋﻨﺪﻣﺎ ﻟﻢ
ﺗﻌﺪﻫﻨﺎﻙ ﺣﺎﺟﺔ ﺇﻟﻴﻬﺎ Perl ،ﻫﻲ ﻟﻐﺔ ﻛﺎﺉﻨﻴﺔ ﺍﻟﺘﻮﺟﻪ ،ﻭﺗﺘﻀﻤﻦ ﺇﻣﻜﺎﻧﻴﺎﺕ ﻣﻄﺎﺑﻘﺔ ﺍﻷﻧﻤﺎﻁ
ﻓﻲPython
ﻳﺘﻢﺗﻮﻓﻴﺮ ﺍﻟﺪﻋﻢ ﻟﺒﺮﻣﺠﺔ ، CGIﻭﻣﻌﺎﻟﺠﺔ ﺍﻟﻨﻤﺎﺫﺝ ﻋﻠﻰ ﻭﺟﻪ ﺍﻟﺨﺼﻮﺹ ،ﺑﻮﺍﺳﻄﺔCGI
ﻭﺣﺪﺓ.ﺗﺘﻮﻓﺮ ﺃﻳﻀﺎً ﺍﻟﻮﺣﺪﺍﺕ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﻭﺍﻟﺸﺒﻜﺎﺕ ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ
ﻗﺎﻋﺪﺓﺍﻟﺒﻴﺎﻧﺎﺕ.
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 100
ﺗﺘﻀﻤﻦ Pythonﺩﻋﻤﺎً ﻟﻠﺘﺰﺍﻣﻦ ﻣﻊ ﻣﺆﺷﺮﺍﺕ ﺍﻟﺘﺮﺍﺑﻂ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ ،ﻓﻀﻼ ًﻋﻦ ﺩﻋﻢ ﺑﺮﻣﺠﺔ
ﺍﻟﺸﺒﻜﺔﺑﻤﻘﺎﺑﺴﻬﺎ .ﻛﻤﺎ ﺃﻥ ﻟﺪﻳﻬﺎ ﺩﻋﻤﺎً ﺃﻛﺒﺮ ﻟﻠﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ ﺃﻛﺜﺮ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻏﻴﺮ
ﺍﻟﻮﻇﻴﻔﻴﺔﺍﻷﺧﺮﻯ.
ﺇﺣﺪﻯﺍﻟﻤﻴﺰﺍﺕ ﺍﻷﻛﺜﺮ ﺇﺛﺎﺭﺓ ﻟﻼﻫﺘﻤﺎﻡ ﻓﻲ Pythonﻫﻲ ﺃﻧﻪ ﻳﻤﻜﻦ ﺗﻮﺳﻴﻌﻬﺎ ﺑﺴﻬﻮﻟﺔ
ﺑﻮﺍﺳﻄﺔﺃﻱ ﻣﺴﺘﺨﺪﻡ .ﻳﻤﻜﻦ ﻛﺘﺎﺑﺔ ﺍﻟﻮﺣﺪﺍﺕ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻻﻣﺘﺪﺍﺩﺍﺕ ﺑﺄﻱ ﻟﻐﺔ ﻣﺘﺮﺟﻤﺔ .ﻳﻤﻜﻦ
ﺃﻥﺗﻀﻴﻒ ﺍﻹﺿﺎﻓﺎﺕ ﻭﻇﺎﺉﻒ ﻭﻣﺘﻐﻴﺮﺍﺕ ﻭﺃﻧﻮﺍﻉ ﻛﺎﺉﻨﺎﺕ .ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻫﺬﻩ ﺍﻻﻣﺘﺪﺍﺩﺍﺕ
ﻛﺈﺿﺎﻓﺎﺕﻟﻤﺘﺮﺟﻢ ﺑﺎﻳﺜﻮﻥ.
ﺍﻟﻤﻴﺰﺓﺍﻷﺳﺎﺳﻴﺔ ﺍﻟﻤﻤﻴﺰﺓ ﻟﺮﻭﺑﻲ ﻫﻲ ﺃﻧﻬﺎ ﻟﻐﺔ ﻣﻮﺟﻬﺔ ﺑﺤﺘﺔ ،ﺗﻤﺎﻣﺎً ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ
.Smalltalkﻛﻞ ﻗﻴﻤﺔ ﺑﻴﺎﻧﺎﺕ ﻫﻲ ﻛﺎﺉﻦ ﻭﻛﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺗﺘﻢ ﻋﺒﺮ ﺍﺳﺘﺪﻋﺎءﺍﺕ ﺍﻟﻄﺮﻳﻘﺔ.
ﺍﻟﻌﻮﺍﻣﻞﻓﻲ Rubyﻫﻲ ﺁﻟﻴﺎﺕ ﻧﺤﻮﻳﺔ ﻓﻘﻂ ﻟﺘﺤﺪﻳﺪ ﺍﺳﺘﺪﻋﺎءﺍﺕ ﺍﻟﻄﺮﻳﻘﺔ ﻟﻠﻌﻤﻠﻴﺎﺕ ﺍﻟﻤﻘﺎﺑﻠﺔ.
ﻷﻧﻬﺎﻃﺮﻕ ،ﻳﻤﻜﻦ ﺇﻋﺎﺩﺓ ﺗﻌﺮﻳﻔﻬﺎ .ﻳﻤﻜﻦ ﺗﺼﻨﻴﻒ ﺟﻤﻴﻊ ﺍﻟﻔﺉﺎﺕ ،ﺍﻟﻤﺤﺪﺩﺓ ﻣﺴﺒﻘﺎً ﺃﻭ ﺍﻟﻤﺤﺪﺩﺓ
ﻣﻦﻗﺒﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ،ﻋﻠﻰ ﺃﻧﻬﺎ ﻓﺮﻋﻴﺔ.