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

Programu ya kompyuta

Programu ya kompyuta (mara nyingi walioteuliwa na programu) ni mchakato ambayo inaongoza kutoka uundaji wa awali wa kompyuta tatizo ili la kutekelezwa programu za kompyuta . Programu inahusisha shughuli kama vile uchambuzi, kuendeleza uelewa, kuzalisha algorithms , kuthibitisha mahitaji ya algorithms ikiwa ni pamoja na usahihi wao na rasilimali matumizi, na utekelezaji (kawaida inajulikana kama coding [1] [2] ) ya algorithms katika lugha ya programu ya lengo. Nakala ya chanzo imeandikwa katika lugha moja au zaidi ya programu. Kusudi la programu ni kutafuta mlolongo wa maagizo ambayo yatasaidia kufanya kazi maalum au kutatua tatizo lililopewa. Mchakato wa programu hiyo mara nyingi huhitaji ujuzi katika masomo mengi tofauti, ikiwa ni pamoja na ujuzi wa uwanja wa maombi , algorithms maalum, na mantiki rasmi.

Kazi zinazohusiana zinajumuisha kupima , kufuta upya , na kudumisha msimbo wa chanzo , utekelezaji wa mfumo wa kujenga, na usimamizi wa mabaki yaliyotokana na vile vile mashine ya kompyuta ya programu. Hizi zinaweza kuchukuliwa kuwa ni sehemu ya mchakato wa programu, lakini mara nyingi maendeleo ya programu ya muda hutumiwa kwa mchakato huu mkubwa na programu ya muda, utekelezaji , au coding iliyohifadhiwa kwa uandishi halisi wa msimbo wa chanzo. Uhandisi wa programu huchanganya mbinu za uhandisi na mazoea ya maendeleo ya programu.

Yaliyomo

Historia

Ada Lovelace , ambaye maelezo yake yaliyofikia mwishoni mwa karatasi ya Luigi Menabrea ilijumuisha algorithm ya kwanza iliyoundwa kwa ajili ya usindikaji na injini ya Analytical . Mara nyingi hujulikana kama programu ya kwanza ya kompyuta ya historia.

Vifaa vilivyotengenezwa vimekuwepo angalau kama vile 1206 AD, wakati automatiska ya Al-Jazari ilipangwa , kupitia vifungo na makamu , ili kucheza viwango tofauti na mifumo ya ngoma; [3] na 1801 Jacquard loom inaweza kuzalisha mazao tofauti kabisa kwa kubadilisha "mpango" - mfululizo wa kadi za pasteboard na mashimo punched ndani yao.

Hata hivyo, programu ya kwanza ya kompyuta kwa ujumla imewekwa mwaka wa 1843, wakati mtaalamu wa hisabati Ada Lovelace alichapisha algorithm ili kuhesabu mlolongo wa nambari za Bernoulli , ambazo zilipangwa kufanyika na injini ya uchambuzi wa Charles Babbage . [4]

Takwimu na maelekezo mara moja zimehifadhiwa kwenye kadi za nje zilizopigwa , ambazo zimehifadhiwa kwa utaratibu na zimepangwa katika vituo vya programu.

Katika miaka ya 1880 Herman Hollerith alinunua dhana ya kuhifadhi data katika fomu inayoweza kusoma. [5] Baadaye jopo la kudhibiti (plugboard) liliongezwa kwa aina yake ya 1906 I Tabulator iliruhusu kuandaliwa kwa kazi tofauti, na mwishoni mwa miaka ya 1940, vifaa vya rekodi ya kitengo kama vile IBM 602 na IBM 604 , viliandaliwa na paneli za kudhibiti njia sawa; kama ilivyokuwa kompyuta za kwanza za elektroniki . Hata hivyo, kwa dhana ya kompyuta iliyohifadhiwa programu iliyoletwa mwaka wa 1949, mipango na data zote zilihifadhiwa na kutumiwa kwa njia sawa katika kumbukumbu ya kompyuta .

Nambari ya mashine ilikuwa lugha ya mipango ya awali, iliyoandikwa katika kuweka maelekezo ya mashine fulani, mara nyingi katika notation ya binary . Lugha za Mkutano zilikuwepo hivi karibuni ili basi mpangilio aeleze maelekezo katika muundo wa maandishi, (kwa mfano, ADD X, TOTAL), pamoja na vifupisho kwa kila kanuni ya operesheni na majina yenye maana ya kutaja anwani. Hata hivyo, kwa sababu lugha ya kanisa ni kidogo zaidi kuliko uwiano tofauti kwa lugha ya mashine, mashine yoyote mbili yenye seti tofauti za maelekezo pia ina lugha tofauti za mkutano.

Jopo la kudhibiti wired kwa mashine ya Uhasibu ya IBM 402 .

Kiwango cha juu cha lugha kuruhusu programu kuandika mipango katika maneno ambayo ni zaidi dhahania , na chini amefungwa na vifaa msingi. Wanaunganisha nguvu za kompyuta ili kufanya programu rahisi [6] kwa kuruhusu programu za kutaja mahesabu kwa kuingia formula moja kwa moja (kwa mfano, Y = X * 2 + 5 * X + 9 ). FORTRAN , lugha ya kwanza iliyotumiwa kwa kiwango cha juu ili kuwa na utekelezaji wa kazi, ilitoka mwaka wa 1957 [7] na lugha nyingine nyingi zilianzishwa hivi karibuni - hasa, COBOL yenye lengo la usindikaji wa data za kibiashara, na Lisp kwa ajili ya utafiti wa kompyuta.

Programu zilikuwa bado zimeingia kwa kutumia kadi zilizopigwa au mkanda wa karatasi . Angalia programu ya kompyuta katika zama za kadi ya punch . Mwishoni mwa miaka ya 1960, vifaa vya kuhifadhi data na vituo vya kompyuta vilikuwa vya gharama nafuu ambavyo mipango inaweza kuundwa kwa kuandika moja kwa moja kwenye kompyuta. Wahariri wa maandishi walitengenezwa ili kuruhusu mabadiliko na marekebisho kufanywa kwa urahisi zaidi kuliko kwa kadi zilizopigwa.

Programu ya kisasa

Mahitaji ya ubora

Chochote mbinu ya maendeleo inaweza kuwa, mpango wa mwisho unapaswa kukidhi mali fulani ya msingi. Mali zifuatazo ni kati ya muhimu zaidi:

  • Kuegemea : mara ngapi matokeo ya programu ni sahihi. Hii inategemea usahihi wa dhana ya algorithms, na uharibifu wa makosa ya programu, kama vile makosa katika usimamizi wa rasilimali (kwa mfano, upungufu wa buffer na hali ya mashindano ) na makosa ya mantiki (kama vile kugawanyika kwa makosa ya zero au mbali moja kwa moja ).
  • Uvumilivu : ni mpango gani unatarajia matatizo kutokana na makosa (sio mende). Hii inajumuisha hali kama vile sahihi, data isiyofaa au rushwa, kutokuwepo kwa rasilimali zinazohitajika kama vile kumbukumbu, huduma za mfumo wa uendeshaji na uhusiano wa mtandao, kosa la mtumiaji, na vikwazo vya nguvu zisizotarajiwa.
  • Usability : ergonomics ya mpango: urahisi ambayo mtu anaweza kutumia mpango kwa madhumuni yake lengo au katika baadhi ya matukio hata malengo zisizotarajiwa. Masuala hayo yanaweza kufanya au kuvunja mafanikio yake hata bila kujali masuala mengine. Hii inahusisha aina mbalimbali za vipengee vya textual, graphical na wakati mwingine vya vifaa vya kuboresha uwazi, intuitiveness, ushirikiano na ukamilifu wa interface ya mtumiaji wa programu.
  • Uwezeshaji : aina mbalimbali za vifaa vya kompyuta na mfumo wa mfumo wa uendeshaji ambao kanuni ya chanzo cha programu inaweza kuundwa / kufasiriwa na kuendeshwa. Hii inategemea tofauti katika vifaa vya programu zinazotolewa na majukwaa tofauti, ikiwa ni pamoja na vifaa vya vifaa na mfumo wa uendeshaji, tabia ya kutarajia ya vifaa na mfumo wa uendeshaji, na upatikanaji wa makundi maalum ya makondoni (na maktaba wakati mwingine) kwa lugha ya msimbo wa chanzo.
  • Kudumisha : urahisi ambayo programu inaweza kubadilishwa na watengenezaji wake wa sasa au wa baadaye ili kufanya maboresho au usanifu, kurekebisha mende na mashimo ya usalama , au uidhinishe na mazingira mapya. Kazi nzuri [8] wakati wa maendeleo ya awali hufanya tofauti katika suala hili. Ubora huu hauwezi kuwa wazi kwa mtumiaji wa mwisho lakini unaweza kuathiri sana hatima ya mpango juu ya muda mrefu.
  • Ufanisi / utendaji : Upimaji wa rasilimali za mfumo programu hutumia (muda wa processor, nafasi ya kumbukumbu, vifaa vya polepole kama vile diski, bandwidth ya mtandao na kwa kiasi fulani hata ushirikiano wa mtumiaji): chini, bora. Hii pia inajumuisha uangalifu wa rasilimali, kwa mfano kusafisha faili za muda na kuondoa uvujaji kumbukumbu .

Kusoma kwa msimbo wa chanzo

Katika programu za kompyuta, readability inahusu urahisi ambayo msomaji wa kibinadamu anaweza kuelewa kusudi, kudhibiti mtiririko , na uendeshaji wa kanuni ya chanzo. Inathiri nyanja za ubora juu, ikiwa ni pamoja na portability, usability na muhimu zaidi kudumisha.

Uwezeshaji ni muhimu kwa sababu programu hutumia muda mwingi wa kusoma, kujaribu kuelewa na kurekebisha msimbo wa chanzo uliopo, badala ya kuandika msimbo mpya wa chanzo. Msimbo usioweza kusoma mara nyingi husababisha mende, ufanisi, na msimbo uliopigwa. Utafiti [9] uligundua kwamba mabadiliko machache ya usomaji yalifanywa kifupi na kupunguzwa kwa kiasi kikubwa wakati wa kuelewa.

Kufuatia mtindo wa programu ya kawaida mara nyingi husaidia kusoma. Hata hivyo, usomaji ni zaidi ya mtindo wa programu tu. Sababu nyingi, kuwa na kitu kidogo au hawana chochote cha kufanya na uwezo wa kompyuta ili kuunganisha kwa ufanisi na kutekeleza msimbo, huchangia kwa kusoma. [10] Baadhi ya mambo haya ni pamoja na:

  • Mitindo tofauti ya indent (whitespace)
  • Maoni
  • Uharibifu
  • Kuita mkutano wa vitu (kama vile vigezo, madarasa, taratibu, nk)

Masuala ya uwasilishaji wa hili (kama vile indents, mapumziko ya mstari, kuonyesha rangi, na kadhalika) mara nyingi hushughulikiwa na mhariri wa msimbo wa chanzo , lakini vipengele vya maudhui huonyesha talanta na ujuzi wa programu.

Lugha mbalimbali za programu za Visual pia zimeandaliwa kwa nia ya kutatua matatizo ya kusoma na kuzingatia kwa kutumia mbinu zisizo za jadi za muundo na maonyesho ya kanuni. Miundo ya maendeleo ya pamoja (IDEs) ina lengo la kuunganisha msaada wote. Mbinu kama Code refactoring inaweza kuboresha readability.

Algorithmic utata

Somo la kitaaluma na mazoezi ya uhandisi wa programu za kompyuta ni kwa kiasi kikubwa unaohusika na kugundua na kutekeleza taratibu za ufanisi zaidi kwa darasa la tatizo lililopewa. Kwa madhumuni haya, taratibu hizi zinawekwa katika amri kwa kutumia kinachoitwa Big O notation , ambayo inaelezea matumizi ya rasilimali, kama vile wakati wa kutekeleza au matumizi ya kumbukumbu, kulingana na ukubwa wa pembejeo. Wataalam wa programu wanajifunza na aina mbalimbali za algorithms zilizowekwa vizuri na matatizo yao na kutumia ujuzi huu kuchagua taratibu zinazofaa zaidi kwa hali.

Methodologies

Hatua ya kwanza katika taratibu za maendeleo ya programu nyingi ni uchambuzi wa mahitaji, ikifuatiwa na kupima ili kuamua mfano wa ufanisi, utekelezaji, na kushindwa kushindwa (kufuta). Kuna njia nyingi tofauti za kila kazi hizo. Njia moja inayojulikana kwa uchambuzi wa mahitaji ni Matumizi ya Uchunguzi wa Uchunguzi . Wengi wa programu hutumia aina za maendeleo ya programu ya Agile ambapo hatua mbalimbali za maendeleo rasmi ya programu zinaunganishwa zaidi katika mzunguko mfupi ambao huchukua wiki chache badala ya miaka. Kuna njia nyingi za mchakato wa maendeleo ya Programu.

Mbinu maarufu za ufanisi ni pamoja na Uchambuzi na Design (Object-Oriented Analysis and Design) ( OOAD ) na Usanifu wa Model-Drived ( MDA ). Lugha ya Unified Modeling ( UML ) ni notation inayotumika kwa OOAD na MDA.

Mbinu sawa kutumika kwa kubuni database ni Entity-Relationship Modeling ( ER Modeling ).

Mbinu za utekelezaji zinajumuisha lugha muhimu ( vitu vinavyolengwa au kiutaratibu ), lugha za kazi , na lugha za mantiki .

Kupima matumizi ya lugha

Ni vigumu sana kujua ni nini maarufu zaidi katika lugha za kisasa za programu. Mbinu za upimaji wa lugha ya programu ni pamoja na: kuhesabu idadi ya matangazo ya kazi ambayo hutaja lugha, [11] idadi ya vitabu vilivyouzwa na mafunzo ya kufundisha lugha (hii inaonyesha umuhimu wa lugha mpya), na makadirio ya idadi ya mistari zilizopo ya kificho iliyoandikwa katika lugha hii (hii inaelezea idadi ya watumiaji wa lugha za biashara kama vile COBOL).

Lugha zingine zinajulikana sana kwa aina fulani za maombi, wakati lugha zingine hutumiwa mara kwa mara kuandika aina nyingi za programu. Kwa mfano, COBOL bado ina nguvu katika vituo vya data vya ushirika [12] mara nyingi kwenye kompyuta kubwa za kiwanda , Fortran katika programu za uhandisi, lugha za script katika maendeleo ya Wavuti , na C katika programu iliyoingia . Maombi mengi hutumia mchanganyiko wa lugha kadhaa katika ujenzi na matumizi yao. Lugha mpya kwa ujumla zimeundwa karibu na lugha ya awali na kazi mpya imeongezwa, (kwa mfano C + + inaongeza mwelekeo wa kitu kwa C, na Java inaongeza usimamizi wa kumbukumbu na bytecode kwa C ++, lakini matokeo yake, inapoteza ufanisi na uwezo wa chini - uharibifu wa kizunguko).

utatuzi

Bug kutoka 1947 ambayo ni asili ya etymolojia maarufu (lakini isiyo sahihi) kwa muda wa kawaida kwa kasoro ya programu.

Kupotosha ni kazi muhimu sana katika mchakato wa maendeleo ya programu tangu kuwa na kasoro katika programu inaweza kuwa na matokeo makubwa kwa watumiaji wake. Lugha zingine zinaweza kukabiliwa na aina fulani za makosa kwa sababu maagizo yao hayataki washiriki kufanya uchunguzi kama lugha zingine. Matumizi ya chombo cha kuchambua kificho cha kificho inaweza kusaidia kuchunguza matatizo yanayowezekana. Kwa kawaida hatua ya kwanza katika kufuta upya ni kujaribu kuzalisha tatizo. Hii inaweza kuwa kazi isiyo ya kawaida, kwa mfano kama na michakato inayofanana au baadhi ya mende za programu isiyo ya kawaida. Pia, mazingira maalum ya mtumiaji na historia ya matumizi inaweza kuwa vigumu kuzaliana na tatizo.

Baada ya mdudu huo, pembejeo ya programu inaweza kuhitajika iwe rahisi ili iwe rahisi kufuta. Kwa mfano, mdudu kwenye compiler anaweza kuifanya wakati wa kupiga faili kubwa ya chanzo. Hata hivyo, baada ya kurahisisha kesi ya majaribio, mistari michache tu kutoka faili ya asili ya chanzo inaweza kutosha kuzalisha ajali sawa. Uboreshaji kama huo unaweza kufanywa kwa mikono, kwa kutumia mbinu ya kugawa na kushinda. Mpangilio atajaribu kuondoa sehemu fulani za kesi ya awali ya mtihani na angalia ikiwa tatizo bado lipo. Unapopotosha tatizo katika GUI, programu anaweza kujaribu kuruka mwingiliano wa mtumiaji kutoka kwenye maelezo ya tatizo la asili na angalia ikiwa vitendo vilivyobaki vinatosha kwa mende kuonekana.

Ukatishaji mara nyingi hufanyika na IDE kama Eclipse , Visual Studio , Xcode , Kdevelop , NetBeans na Kanuni :: Vitalu . Wafanyabiashara wa kawaida kama GDB pia hutumiwa, na mara nyingi hutoa mazingira ya chini ya kuona, kwa kawaida kutumia mstari wa amri . Wahariri wengine wa maandishi kama vile Emacs inaruhusu GDB kuingizwa kwa njia yao, kutoa mazingira ya kuona.

Lugha za programu

Lugha tofauti za programu zinaunga mkono mitindo tofauti ya programu (inayoitwa dhana za programu ). Uchaguzi wa lugha uliotumiwa unapaswa kuzingatia mambo mengi, kama sera ya kampuni, kustahili kufanya kazi, upatikanaji wa vifurushi vya tatu, au upendeleo wa mtu binafsi. Kwa hakika, lugha ya programu bora inafaa kwa kazi iliyopo itachaguliwa. Biashara kutoka kwa hali hii inahusisha kutafuta wasomaji wa kutosha ambao wanajua lugha ya kujenga timu, upatikanaji wa wasanidi wa lugha hiyo, na ufanisi na mipango ambayo imeandikwa katika lugha fulani. Lugha huunda wigo wa takriban kutoka "ngazi ya chini" hadi "ngazi ya juu"; Lugha za kiwango cha chini ni kawaida zaidi ya mashine na inafaa zaidi kutekeleza, lakini lugha za "ngazi ya juu" ni rahisi zaidi na zinaweza kutumia lakini hufanya haraka sana. Kwa kawaida ni rahisi kuandika katika lugha za "ngazi ya juu" kuliko ilivyo kwa "kiwango cha chini".

Allen Downey , katika kitabu chake How To Think Like A Computer Scientist , anaandika hivi:

Maelezo yanaonekana tofauti katika lugha tofauti, lakini maagizo ya msingi ya msingi yanatokea karibu kila lugha:
  • Input: Kusanya data kutoka kwa kibodi, faili, au kifaa kingine.
  • Pato: Kuonyesha data kwenye skrini au kutuma data kwenye faili au kifaa kingine.
  • Hesabu: Fanya shughuli za msingi za hesabu kama kuongeza na kuzidisha.
  • Utekelezaji wa masharti: Angalia hali fulani na kutekeleza mlolongo sahihi wa kauli.
  • Kurudia: Kufanya hatua kwa mara kwa mara, kwa kawaida na tofauti fulani.

Lugha nyingi za kompyuta hutoa utaratibu wa kupigia kazi zinazotolewa na maktaba ya pamoja . Kutoa kazi katika maktaba hufuata mkataba wa wakati wa kukimbia (kwa mfano, njia ya kupitisha hoja ), basi kazi hizi zinaweza kuandikwa katika lugha nyingine yoyote.

Wapangaji

Programu za kompyuta ni wale wanaoandika programu ya kompyuta. Kawaida kazi zao huhusisha:

  • Ukodishaji
  • Kutenganisha
  • Nyaraka
  • Ushirikiano
  • Matengenezo
  • Uchambuzi wa mahitaji
  • Usanifu wa Programu
  • Kupima Programu
  • Ufafanuzi

Angalia pia

  • ACCU
  • Chama cha Mitambo ya Computing
  • Mitandao ya kompyuta
  • Mpango wa ulimwengu wa furaha
  • Taasisi ya Wachambuzi na Waandaaji
  • Wiki ya Coding ya Taifa
  • Programu ya mfumo
  • Sanaa ya Programu ya Kompyuta

Marejeleo

  1. ^ Shaun Bebbington (2014). "What is coding" . Retrieved 2014-03-03 .
  2. ^ Shaun Bebbington (2014). "What is programming" . Retrieved 2014-03-03 .
  3. ^ Fowler, Charles B. (October 1967). "The Museum of Music: A History of Mechanical Instruments". Music Educators Journal . Music Educators Journal, Vol. 54, No. 2. 54 (2): 45–49. doi : 10.2307/3391092 . JSTOR 3391092 .
  4. ^ Fuegi, J.; Francis, J. (2003). "Lovelace & babbage and the creation of the 1843 'notes ' ". IEEE Annals of the History of Computing . 25 (4): 16. doi : 10.1109/MAHC.2003.1253887 .
  5. ^ "Columbia University Computing History - Herman Hollerith" . Columbia.edu . Retrieved 2010-04-25 .
  6. ^ "Fortran creator John Backus dies" . msnbc.com . Retrieved 19 November 2014 .
  7. ^ "Fortran creator John Backus dies - Tech and gadgets- msnbc.com" . MSNBC. 2007-03-20 . Retrieved 2010-04-25 .
  8. ^ "Programming 101: Tips to become a good programmer - Wisdom Geek" . Wisdom Geek . 2016-05-19 . Retrieved 2016-05-23 .
  9. ^ James L. Elshoff, Michael Marcotty, Improving computer program readability to aid modification , Communications of the ACM, v.25 n.8, p.512-521, Aug 1982.
  10. ^ Multiple (wiki). "Readability" . Docforge . Retrieved 2010-01-30 .
  11. ^ Survey of Job advertisements mentioning a given language
  12. ^ Mitchell, Robert. "The Cobol Brain Drain" . Computer World . Retrieved 9 May 2015 .

Kusoma zaidi

  • A.K. Hartmann, Practical Guide to Computer Simulations , Singapore: World Scientific (2009)
  • A. Hunt, D. Thomas, and W. Cunningham, The Pragmatic Programmer. From Journeyman to Master , Amsterdam: Addison-Wesley Longman (1999)
  • Brian W. Kernighan, The Practice of Programming , Pearson (1999)
  • Weinberg, Gerald M. , The Psychology of Computer Programming , New York: Van Nostrand Reinhold (1971)
  • Edsger W. Dijkstra , A Discipline of Programming , Prentice-Hall (1976)
  • O.-J. Dahl, E.W.Dijkstra , C.A.R. Hoare, Structured Pogramming , Academic Press (1972)
  • David Gries , The Science of Programming , Springer-Verlag (1981)

Viungo vya nje