Inafasiriwa moja kwa moja kutoka kwa Wikipedia ya Kiingereza na Tafsiri ya Google

Kipindi cha programu

Mifumo ya programu ni namna ya kutafsiri lugha za programu kulingana na sifa zao. Lugha zinaweza kuhesabiwa kwenye vielelezo vingi.

Vielelezo vingine vinahusika hasa na matokeo kwa mfano wa utekelezaji wa lugha, kama kuruhusu madhara , au kama mlolongo wa shughuli unatafanuliwa na mfano wa utekelezaji. Vipengele vingine vinashughulika hasa na njia ambayo kanuni hiyo imeandaliwa, kama vile kuunganisha kanuni katika vitengo pamoja na hali iliyobadilishwa na kanuni. Lakini wengine wanahusika hasa na mtindo wa syntax na sarufi.

Miradi ya kawaida ya programu ni pamoja na:

  • muhimu ambayo inaruhusu madhara,
  • kazi ambayo huzuia athari za madhara,
  • declarative ambayo haina hali ya utaratibu ambao shughuli zinatekeleza,
  • kitu ambacho kikundi kinashikilia pamoja na serikali kanuni hiyo inabadilisha,
  • taratibu ambazo makundi huandika katika kazi,
  • mantiki ambayo ina mtindo maalum wa kutekeleza mfano pamoja na mtindo fulani wa syntax na sarufi, na
  • programu ya mfano ambayo ina mtindo fulani wa syntax na sarufi. [1] [2] [3]

Kwa mfano, lugha ambazo zinaanguka katika dhana muhimu zina sifa kuu mbili: zinaelezea utaratibu ambao operesheni hutokea, pamoja na ujenzi ambao hudhibiti kwa uwazi utaratibu huo, na huruhusu madhara, ambayo hali inaweza kubadilishwa kwa wakati mmoja kwa wakati, ndani ya kitengo kimoja cha kanuni, kisha baadaye kusoma kwa wakati tofauti ndani ya kitengo tofauti cha kanuni. Mawasiliano kati ya vitengo vya msimbo sio wazi. Wakati huo huo, katika programu inayolengwa na kitu , msimbo umeandaliwa kwenye vitu ambavyo vina hali iliyobadilishwa tu na msimbo ambao ni sehemu ya kitu. Lugha nyingi zinazoelekezwa na kitu pia ni lugha muhimu. Kwa upande mwingine, lugha ambazo zinalingana na dhana ya kutangaza hazielezei utaratibu wa kutekeleza shughuli. Badala yake, hutoa shughuli kadhaa zinazopatikana katika mfumo, pamoja na hali ambayo kila mmoja huruhusiwa kutekeleza. Utekelezaji wa mtindo wa utekelezaji wa lugha unafuatilia kazi ambayo ni bure kutekeleza na huchagua utaratibu peke yake. Zaidi kwa kulinganisha lugha nyingi za programu za utayarishaji .

Yaliyomo

Maelezo ya jumla

Maelezo ya maonyesho mbalimbali ya programu kulingana na Peter Van Roy [4] : 5

Kama vile uhandisi wa programu (kama mchakato) unafafanuliwa na mbinu tofauti, hivyo lugha za programu (kama mifano ya hesabu) hufafanuliwa na paradigms tofauti. Lugha zingine zimeundwa ili kuunga mkono dhana moja ( Smalltalk inasaidia programu iliyoelekezwa na kitu, Haskell inasaidia programu za kazi), wakati lugha zingine za programu zinaunga mkono dhana nyingi (kama vile Object Pascal , C ++ , Java , C # , Scala , Visual Basic , Common Lisp , Scheme , Perl , PHP , Python , Ruby , Oz , na F # ). Kwa mfano, programu zilizoandikwa kwenye C ++, Kitu cha Pascal au PHP kinaweza kuwa kiutaratibu , kimsingi kilichoelekezwa , au inaweza kuwa na mambo ya mawili au nyingine. Wasanidi programu na waandaaji wanaamua jinsi ya kutumia vipengele vya dhana.

Katika programu inayolengwa na vitu, mipango inachukuliwa kama seti ya vitu vya kuingiliana. Katika mipangilio ya kazi , mipango inachukuliwa kama mlolongo wa tathmini za kazi za kitabiri. Wakati wa programu za kompyuta au mifumo iliyo na wasindikaji wengi, katika mipangilio ya mchakato , mipango inachukuliwa kama seti ya michakato ya muda mfupi kutekeleza miundo ya data iliyoshirikishwa.

Mifumo ya programu nyingi ni kama inajulikana kwa mbinu ambazo zinakataza kama vile zinavyowezesha . Kwa mfano, programu za utendaji safi hazipungui matumizi ya madhara ya upande , wakati programu iliyopangwa inaruhusu matumizi ya taarifa ya goto . Kwa sababu hii, dhana mpya ni mara nyingi huchukuliwa kama mafundisho au kwa ukali zaidi kwa wale wanaozoea mitindo ya awali. [5] Hata hivyo, kuepuka mbinu fulani kunaweza iwe rahisi kuelewa tabia ya mpango, na kuthibitisha nadharia kuhusu usahihi wa programu.

Mifumo ya programu inaweza pia kulinganishwa na mifano ya programu ambayo inaruhusu kushawishi mfano wa utekelezaji kwa kutumia tu API. Mifano za programu zinaweza pia kuhesabiwa kwenye vielelezo, kulingana na vipengele vya mfano wa utekelezaji.

Kwa kompyuta sambamba , kutumia mfano wa programu badala ya lugha ni ya kawaida. Sababu ni kwamba maelezo ya vifaa vya sambamba huvuja ndani ya vipengee vilivyotumika kuandaa vifaa. Hii inasababisha mtengenezaji awe na ramani ya mwelekeo katika algorithm kwenye mifumo katika mfano wa utekelezaji (ambao umeingizwa kutokana na kuvuja kwa vifaa ndani ya uondoaji). Kwa hiyo, hakuna ramani moja ya programu ya programu inayofanana vizuri na matatizo yote ya kuhesabu. Kwa hiyo ni rahisi zaidi kutumia lugha ya msingi ya mfululizo na kuingiza simu za API kwa mifano ya utekelezaji sawa, kupitia mfano wa programu. Mifano sawa ya programu za programu zinaweza kutambulishwa kwa mujibu wa vipengee vinavyoonyesha vifaa, kama vile kumbukumbu ya pamoja, kusambaza kumbukumbu na ujumbe unaotumia, mawazo ya mahali inayoonekana kwenye msimbo, na kadhalika. Hizi zinaweza kuchukuliwa kuwa ladha ya dhana ya programu inayohusu lugha tu na sambamba za programu.

Historia

Mbinu tofauti za programu zimeandaliwa kwa muda mrefu, kutambuliwa kama vile wakati au retrospectively. Njia ya awali ilifahamika kutambuliwa kama programu hiyo iliyojengwa, inayotetewa tangu katikati ya miaka ya 1960. Dhana ya "dhana ya programu" kama vile tarehe angalau hadi 1978, katika hotuba ya Tuzo ya Turing ya Robert W. Floyd , yenye jina la Paradigms of Programming , ambalo linaashiria wazo la dhana kama lilivyotumiwa na Thomas Kuhn katika muundo wake wa kisayansi Mapinduzi (1962). [6]

Msimbo wa mashine

Mfumo wa chini wa programu za programu ni code ya mashine , ambayo inaelekeza moja kwa moja maagizo (yaliyomo ya kumbukumbu ya programu) kama mlolongo wa nambari, na lugha ya mkutano ambapo maelekezo ya mashine yanawakilishwa na mnemonics na anwani za kumbukumbu zinaweza kupewa maandiko ya mfano. Hizi ni wakati mwingine huitwa lugha ya kwanza na ya pili ya kizazi .

Katika miaka ya 1960, lugha za kanisa zilitengenezwa ili kuunga mkono COPY za maktaba na kizazi kikubwa cha hali ya kizazi kikubwa na uwezo wa kuendeleza, KUTAA ( inakuja ), vigezo vya nje na sehemu za kawaida (globals), na kuwezesha kutumia kanuni muhimu na kutengwa kutoka kwa vifaa vya vifaa kupitia matumizi ya waendeshaji wa mantiki kama READ / WRITE / GET / PUT. Mkutano ulikuwa, na bado hutumiwa kwa mifumo muhimu ya wakati na mara nyingi katika mifumo iliyoingia kama inatoa udhibiti wa moja kwa moja wa kile mashine inafanya.

Lugha za taratibu

Mapema ijayo ilikuwa maendeleo ya lugha za kiutaratibu . Lugha hizi za kizazi cha tatu (kwanza zilizotajwa kuwa lugha za juu ) kutumia msamiati kuhusiana na shida kutatuliwa. Kwa mfano,

  • Lugha ya Biashara ya Lugha ya Chumuni ( COBOL ) - inatumia maneno kama faili , hoja na nakala .
  • Mfumo wa Mfumo wa Formula ( FORTRAN ) - kwa kutumia nenosiri la lugha ya hisabati , ilianzishwa hasa kwa matatizo ya sayansi na uhandisi.
  • Lugha ALGOrithmiki ( ALGOL ) - imeelezea kuwa lugha inayofaa ili kufafanua algorithms , wakati wa kutumia nenosiri la lugha ya hisabati na kulenga matatizo ya kisayansi na uhandisi kama FORTRAN.
  • Lugha ya Mpangilio Moja ( PL / I ) - mseto wa kisasa wa biashara-kisayansi kwa kusudi la kuunga mkono hoja .
  • Mwanzo Wajibu wote wa Kanuni ya Maagizo ya Msingi ( BASIC ) - ilianzishwa ili kuwezesha watu wengi kuandika programu.
  • C - lugha ya jumla ya programu ya programu, ambayo ilianzishwa awali na Dennis Ritchie kati ya 1969 na 1973 katika AT & T Bell Labs .

Lugha hizi zote zifuatazo mtazamo wa kiutaratibu. Hiyo ni, wanaelezea hatua kwa hatua, utaratibu ambao lazima, kwa mujibu wa mtengenezaji fulani angalau, ufuatilie ili kutatua tatizo fulani. Ufanisi na ufanisi wa suluhisho lolote ni wote wenye kujitegemea na wanategemea sana uzoefu wa programu hiyo, ujuzi, na uwezo.

Mpangilio wa lengo la

Kufuatia kuenea kwa matumizi ya lugha za kiutaratibu, kitu-oriented programu (OOP) lugha viliumbwa, kama vile Simula , Smalltalk , C ++ , C # , Eiffel , PHP , na Java . Katika lugha hizi, data na mbinu za kuitumia huwekwa kama kitengo kimoja kinachoitwa kitu . Njia pekee ambayo kitu kingine au mtumiaji anaweza kufikia data ni kupitia mbinu za kitu. Kwa hivyo, kazi za ndani za kitu zinaweza kubadilishwa bila kuathiri msimbo wowote unaotumia kitu. Bado kuna msuguano uliofufuliwa na Alexander Stepanov , Richard Stallman [7] na programu nyingine, kuhusu ufanisi wa mtazamo wa OOP dhidi ya mtazamo wa kiutaratibu. Mahitaji ya kitu chochote kuwa na njia za ushirika husababisha baadhi ya wasiwasi kuhusisha OOP na bloat ya programu ; jaribio la kutatua shida hii ilikuja kupitia polymorphism .

Kwa sababu programu zinazoelekezwa na kitu ni kuchukuliwa kama dhana, sio lugha, inawezekana kuunda hata lugha ya kusanyiko inayotokana na kitu. Bunge la High Level (HLA) ni mfano wa hii ambayo inasaidia kikamilifu aina za data na mpango wa lugha ya mkutano wa mkutano - pamoja na asili yake ya mwanzo. Hivyo, tofauti za programu za programu zinaweza kuonekana badala ya memes motational ya watetezi wao, badala ya lazima inawakilisha maendeleo kutoka ngazi moja hadi ijayo. Kufananisha vizuri ya ufanisi wa dhana za kushindana mara kwa mara hufanywa vigumu zaidi kwa sababu ya istilahi mpya na tofauti inayotumika kwa vyombo sawa na taratibu pamoja na tofauti nyingi za utekelezaji katika lugha.

Maandishi mengine ya

Programu ya kuandika , kama mfumo wa programu muhimu , mipango ya miundo kama mtandao wa kibinadamu, kama insha ya hypertext : nyaraka ni muhimu kwa programu, na mpango umeundwa kufuatia mantiki ya maonyesho ya prose, badala ya kufungia urahisi.

Uhuru wa tawi muhimu, maelekezo ya programu ya kupitisha yalipangwa. Katika lugha hizi, kompyuta inauambiwa tatizo ni nini, sio jinsi ya kutatua tatizo - mpango huo umeundwa kama seti ya mali ili kupata matokeo yaliyotarajiwa, si kama utaratibu wa kufuata. Kutokana na database au seti ya sheria, kompyuta hujaribu kupata suluhisho vinavyolingana mali zote zinazohitajika. Archetype ya lugha ya kutangaza ni lugha ya kizazi cha nne SQL , na familia ya lugha za kazi na programu za mantiki.

Programu ya kazi ni subset ya programu ya kupitisha. Mipango iliyoandikwa kwa kutumia kazi hii ya matumizi ya dhana, vitalu vya kificho vinavyotakiwa kufanya kama kazi za hisabati . Lugha za kazi huvunja mabadiliko katika thamani ya vigezo kwa njia ya kazi , na kufanya matumizi makubwa ya kurudia badala yake.

Kubadilisha maoni ya mantiki ya mtazamo wa maandishi kama mawazo ya moja kwa moja juu ya mwili wa ujuzi. Ukweli kuhusu uwanja wa shida huonyeshwa kama fomu za mantiki, na mipango inatekelezwa kwa kutumia sheria za infring juu yao hadi jibu la tatizo linapatikana, au kuweka seti ya maandishi imethibitishwa.

Programu ya mfano ni dhana inayoelezea mipango inayoweza kutumia kanuni na vipengele vya programu kama data. [3] Programu zinaweza kujibadilisha kwa ufanisi, na kuonekana kuwa "kujifunza", na kuzifanya zifaa kwa programu kama vile akili ya bandia , mifumo ya wataalam , usindikaji wa lugha za asili na michezo ya kompyuta. Lugha zinazounga mkono dhana hii ni pamoja na Lisp na Prolog . [8]

Njia nyingi

Lugha ya programu ya utaratibu wa lugha ni lugha ya programu ambayo inasaidia zaidi ya moja ya kielelezo cha programu. [9] kubuni lengo wa lugha hiyo ni kuruhusu programmers kutumia kufaa zaidi programu style na kuhusishwa constructs lugha ya kazi aliyopewa, kwa kuzingatia kuwa hakuna dhana moja kutatua matatizo yote katika njia rahisi au ufanisi zaidi.

Mfano mmoja ni C # , ambayo ni pamoja muhimu na kitu-oriented dhana, pamoja na kiwango fulani cha msaada kwa ajili ya programu ya kazi na makala kama wajumbe (kuruhusu kazi kutibiwa kama vitu kwanza ili), aina inference , kazi bila majina na lugha Integrated Query . Mfano mwingine ni F # na Scala , ambayo hutoa utendaji sawa na C # lakini pia hujumuisha msaada kamili kwa programu za kazi (ikiwa ni pamoja na kupima , kufanana kwa mfano , aina za data za algebraic , tathmini ya wavivu , upungufu wa mkia , kutoweza kutengeneza , nk). Pengine mfano uliokithiri zaidi ni Oz , ambayo ina subsets ambayo inaambatana na mantiki (Oz inatoka kutoka mantiki programu), kazi , inayotokana na kitu , dataflow concurrent , na miundo nyingine. Oz iliundwa zaidi ya kipindi cha miaka kumi ili kuchanganya katika dhana za umoja ambazo zinahusiana na jadi tofauti za programu. Lisp , ingawa mara nyingi hufundishwa kama lugha ya kazi, inajulikana kwa sababu yake ya kutosha na hivyo uwezo wake wa kuzingatia dhana nyingi.

Angalia pia

  • Lugha ya maelezo ya usanifu
  • Kulinganisha lugha za programu
  • Kulinganisha dhana za programu
  • Lugha maalum ya kikoa
  • Mindset
  • Kielelezo cha lugha
  • Eneo la programu
  • Weka mfumo
  • Ukamilifu wa Turing
  • Von Neumann lugha za programu

Marejeleo

  1. ^ Nørmark, Kurt. Overview of the four main programming paradigms . Aalborg University, 9 May 2011. Retrieved 22 September 2012.
  2. ^ Frans Coenen (1999-10-11). "Characteristics of declarative programming languages" . cgi.csc.liv.ac.uk . Retrieved 2014-02-20 .
  3. ^ a b Michael A. Covington (2010-08-23). "CSCI/ARTI 4540/6540: First Lecture on Symbolic Programming and LISP" (PDF) . University of Georgia . Retrieved 2013-11-20 .
  4. ^ Peter Van Roy (2009-05-12). "Programming Paradigms for Dummies: What Every Programmer Should Know" (PDF) . info.ucl.ac.be . Retrieved 2014-01-27 .
  5. ^ Frank Rubin (March 1987). " ' GOTO Considered Harmful' Considered Harmful" (PDF) . Communications of the ACM . 30 (3): 195–196. doi : 10.1145/214748.315722 . Archived from the original (PDF) on March 20, 2009.
  6. ^ Floyd, R. W. (1979). "The paradigms of programming" . Communications of the ACM . 22 (8): 455. doi : 10.1145/359138.359140 .
  7. ^ "Mode inheritance, cloning, hooks & OOP (Google Groups Discussion)" .
  8. ^ "Business glossary: Symbolic programming definition" . allbusiness.com . Retrieved 2014-07-30 .
  9. ^ "Multi-Paradigm Programming Language" . developer.mozilla.org . Retrieved 21 October 2013 .

Viungo vya nje