Kɔmputa so dwumadi ahorow (Computer programming)

Nnwuma a ɛka nhyehyɛe ho na ɛfa ho no bi ne sɔhwɛ, debugging, source code a wɔhwɛ so, build systems a wɔde bedi dwuma, ne nneɛma a wonya fi mu a wɔhwɛ so, te sɛ kɔmputa so dwumadi ahorow mfiri code. Nanso, bere a wobetumi abu eyinom sɛ ɛyɛ nhyehyɛe nhyehyɛe no fa no, mpɛn pii no, wɔtaa de asɛmfua softwea nkɔso di dwuma kɛse ma nhyehyɛe kɛse yi nyinaa – bere a nsɛmfua nhyehyɛe, dwumadie, ne mmarahyɛ taa twe adwene si mmara a wɔkyerɛw ankasa so. Nea ɛne eyi hyia no, softwea mfiridwuma de mfiridwuma ho akwan ne nnyinasosɛm ahorow bom ne softwea a wɔyɛ. Afei nso, ɛtɔ mmere bi a wɔn a wɔde wɔn ho hyɛ softwea a wɔyɛ mu no betumi de wɔn ho ahyɛ reverse engineering, a ɛyɛ adeyɛ a ɛne sɛ wɔbɛhwehwɛ sɛ wɔbɛte dwumadi bi a ɛwɔ hɔ dedaw ase sɛnea ɛbɛyɛ a wɔbɛsan de ne dwumadi adi dwuma wɔ ɔkwan bi so no mu.

 Abakɔsɛm 

Mfiri a wotumi yɛ ho nhyehyɛe wɔ hɔ mfehaha pii. Wɔ afeha a ɛto so 9 mu tɔnn no, Persiafo Banu Musa anuanom na wɔyɛɛ nnwom a wɔde di dwuma nhyehyɛe a wotumi yɛ ho nhyehyɛe, na wɔkaa mfiri a wɔde bɔ sanku a wɔde yɛ adwuma ho asɛm wɔ Book of Ingenious Devices. Wɔ 1206 mu no, Arab mfiridwumayɛfo Al-Jazari yɛɛ afiri a wɔde bɔ sanku a wotumi yɛ ho nhyehyɛe a wobetumi ayɛ mfiri a wɔde bɔ nnwom a wɔde bɔ nnwom a ɛyɛ dɛ ne sanku nhyehyɛe ahorow, denam pegs ne cams so. Wɔ afe 1801 mu no, Jacquard loom no tumi yɛɛ nwene soronko koraa denam "program" no a wɔbɛsesa so – pasteboard card ahorow a ɛtoatoa so a wɔabɔ ntokuru wɔ mu.

Nhyehyɛe ahorow a wɔde brɛki koodu nso awɔ hɔ mfehaha pii. Wɔ afeha a ɛto so 9 mu no, Arabni akontaabufo Al-Kindi kaa ɔkwan bi a wɔfa so kyerɛw nsɛm a wɔde asie a wɔde kyerɛkyerɛ mmara a wɔabɔ no kokoam mu ho asɛm, wɔ A Manuscript on Deciphering Cryptographic Messages. Ɔde nkyerɛkyerɛmu a edi kan mae wɔ cryptanalysis by frequency analysis, algorithm a edi kan a ebrɛki koodu so.

Mpɛn pii no, wɔkyerɛ sɛ kɔmputa so dwumadi a edi kan no wɔyɛɛ no 1843 mu, bere a akontaabufo Ada Lovelace tintim nhyehyɛe bi a wɔde bu Bernoulli akontaahyɛde ahorow a ɛtoatoa so, a na wɔahyɛ da ayɛ sɛ Charles Babbage ne Analytical Engine na ɛbɛyɛ no. Nanso, na Charles Babbage akyerɛw ne dwumadi a edi kan ama Analytical Engine no dedaw wɔ 1837.https://arxiv.org/abs/2303.13740


Wɔ 1880 mfe no mu no, Herman Hollerith de adwene a ɛne sɛ wɔbɛkora nsɛm so wɔ ɔkwan a mfiri betumi akenkan so bae. Akyiri yi control panel (plug board) a wɔde kaa ne 1906 Type I Tabulator ho maa kwan ma wɔ hyehyɛ maa nnwuma ahorow, na ebeduu 1940 mfe no awiei no, wɔde unit record mfiri te sɛ IBM 602 ne IBM 604 yɛɛ nhyehyɛe denam control panels a ɛte saa ara kwan so, sɛnea na ɛlɛtrɔnik kɔmputa ahorow a edi kan no te no. Nanso, bere a wɔde adwene a ɛne sɛ wɔde kɔmputa a wɔde nneɛma akora so no bɛba wɔ 1949 mu no, wɔde nhyehyɛe ne nsɛm nyinaa siee na wɔyɛɛ ho adwuma wɔ ɔkwan koro no ara so wɔ kɔmputa so nkae mu (computer memory).

 Mfiri kasa 
Na mfiri koodu yɛ kasa a wɔde kyerɛw nhyehyɛe ahorow a edi kan no, na wɔkyerɛw no wɔ mfiri pɔtee no akwankyerɛ nhyehyɛe mu, na mpɛn pii no wɔde nkyerɛwde abien na ɛkyerɛw. Ankyɛ na wɔyɛɛ assembly kasa ahorow a ɛma Nnhyehyɛefoɔ (programmer) no kyerɛ akwankyerɛ wɔ nsɛm a wɔakyerɛw no kwan so (text format) mu (sɛ nhwɛso no, ADD X, TOTAL), a wɔde tiawa ma adwumayɛ koodu biara ne din ahorow a ntease wom a wɔde bɛkyerɛ address ahorow. Nanso esiane sɛ assembly kasa yɛ kakraa bi sen nkyerɛwde soronko ma mfiri kasa nti, mfiri abien a ɛsono akwankyerɛ ahorow nso wɔ assembly kasa ahorow.

 Kɔmpaela kasa ahorow 
Kasa ahorow a ɛkorɔn maa ɔkwan a wɔfa so yɛ dwumadi bi no yɛɛ mmerɛw na ntease wom, na na wonhia hardware a ɛwɔ ase no kɛse . Adwinnade a edi kan a ɛfa kɔmpaela ho, A-0 System, no, Grace Hopper, a ɔno nso hyehyɛɛ asɛmfua ‘compiler’ na ɔyɛɛ no afe 1952 mu. FORTRAN, kasa a ɛdi kan a wɔde di dwuma kɛseɛ a ɛwɔ dwumadie a ɛyɛ adwuma, puei wɔ afe 1957 mu, na ankyɛ na wɔyɛɛ kasa foforɔ pii —titiriw no, COBOL a na wɔde asi wɔn ani so sɛ wɔbɛyɛ nsɛm ho dwumadie wɔ aguadi mu, ne Lisp a wɔde yɛ kɔmputa nhwehwɛmu.

Saa kasa ahorow a wɔaboaboa ano yi ma nhyehyɛeyɛfo no tumi kyerɛw nhyehyɛe ahorow wɔ nsɛmfua a ɛyɛ den wɔ kasamufa mu, na otumi yi mmara no mu nsɛm pii, na ɛma ɛyɛ mmerɛw sɛ ɔde n’ani besi mfiri akwankyerɛ ahorow a ɛsonosonoe so denam mpaemuka a wɔaboaboa ano ne heuristics so. Wɔn a wɔboaboa nneɛma ano de kɔmputa tumi dii dwuma de maa nhyehyɛe yɛɛ mmerɛw denam ma a wɔmaa nhyehyɛeyɛfo kwan ma wɔkyerɛɛ akontaabu denam fomula bi a wɔde infix nkyerɛwde bɛhyɛ mu no so.

 Nhyehyeɛ Dwumadi kasa ahorow 
Dwumadie kasa ahodoɔ boa dwumadie ahodoɔ (a wɔfrɛ no programming paradigms). Kasa a wɔde bedi dwuma no gyina nneɛma pii a ɛsɛ sɛ wosusuw ho, te sɛ adwumakuw no nhyehyɛe, sɛnea ɛfata sɛ wɔyɛ adwuma, sɛnea nnipa foforo package ahorow wɔ hɔ, anaa ankorankoro pɛ. Sɛnea ɛbɛyɛ yiye no, wɔbɛpaw programming kasa a ɛfata yiye ma adwuma a ɛwɔ hɔ no. Nneɛma a wɔde di gua fi saa adwene yi mu ne sɛ wobenya nhyehyɛeyɛfo a wɔdɔɔso a wonim kasa no a wɔde bɛkyekye kuw, sɛnea wɔbɛboaboa  nneɛma ano ama saa kasa no, ne sɛnea dwumadi ahorow a wɔakyerɛw wɔ kasa bi mu no yɛ adwuma yiye.

Kasa ahorow a efi ase fi "nea ɛba fam" kosi "nea ɛkorɔn"; "low-level" kasa ahorow no taa yɛ nea ɛfa mfiri ho kɛse na ɛyɛ ntɛm sɛ wɔde di dwuma, bere a "high-level" kasa ahorow no ɛnyɛ den sɛ wɔde bedi dwuma nanso ɛnyɛ ntɛmntɛm. Mpɛn pii no ɛyɛ mmerɛw sɛ wobɛkyerɛw mmara wɔ "nea ɛkorɔn" kasa ahorow mu sen "nea ɛba fam" de. Nhyehyeɛ Dwumadi kasa ahorow ho hia ma sɔftwɛɛ nkɔso. Wɔn ne nneɛma a wɔde si sɔftwɛɛ nyinaa, efi aapɔ ahorow a ɛnyɛ den so kosi nea ɛyɛ nwonwa sen biara so.

Allen Downey, kyerɛw wɔ ne nhoma How To Think Like A Computer Scientist mu sɛ:

Ɛsono sɛnea nsɛm no mu nsɛm no te wɔ kasa ahorow mu, nanso ɛkame ayɛ sɛ akwankyerɛ atitiriw kakraa bi pue wɔ kasa biara mu:

 nea wɔde hyɛm: Boaboa data ano fi keyboard, fael, anaa mfiri foforo bi so.
 nea wɔde ba: Kyerɛ data wɔ screen no so anaasɛ fa data kɔ fael anaa mfiri foforo bi so.
 Nkontaabu: Yɛ akontabuo mfitiaseɛ dwumadie te sɛ nkabom ne dodoɔ.
 Tebea a Wɔde da no adi: Hwɛ sɛ tebea horow bi wɔ hɔ na di nsɛm a wɔahyehyɛ no nnidiso nnidiso a ɛfata.
 Mpɛn pii: Yɛ adeyɛ bi mpɛn pii, mpɛn pii no, wosakra no bi.
Kɔmputa kasa pii ma wonya ɔkwan bi a wɔfa so frɛ dwumadi ahorow a nhomakorabea ahorow a wɔkyɛ de ma no. Sɛ dwumadie a ɛwɔ nwomakorabea bi di  dwumadi mber nhyiamde a ɛfata akyi (sɛ nhwɛsoɔ, method of passing arguments) a, ɛnde wɔbɛtumi akyerɛw saa dwumadie yi wɔ kasa foforɔ biara mu.

 Wɔn a wɔyɛ nhyehyɛe 
Kɔmputa so dwumadifo ne wɔn a wɔkyerɛw kɔmputa so dwumadi ahorow. Wɔn nnwuma taa hwehwɛ sɛ:

 Nhwɛsode a wɔde yɛ
 Koodu kyerɛw
 Nsiesie wɔ koodu mu
 Nkrataa
 Wɔaka abom
 Nsiesie
 Ahwehwɛde ahorow mu nhwehwɛmu
 sɔftwɛɛ nhyehyɛe
 sɔftwɛɛ a wɔsɔ hwɛ
 nkyerɛkyerɛmu a wɔakyerɛkyerɛ mu

Ɛwom sɛ wɔde nhyehyɛe ho nsɛm akyerɛ wɔ nsɛm ho amanneɛbɔ mu sɛ ɛyɛ akontaabu asɛm bi de, nanso nhwehwɛmu ahorow bi kyerɛ sɛ nhyehyɛeyɛfo pa wɔ ahokokwaw a emu yɛ den wɔ nnipa awosu kasa mu, na sɛnea wosua sɛnea wɔkyerɛw koodu no te sɛ ɔman foforo so kasa a wosua.

 Beaɛ a menyaa mmoa fii 

Nkyekyεmu:Wikipedia