Lemācīt programmēšanas principi, nevis “rīki un padomi”

Link: http://www.stevemcconnell.com/articles/art03.htm

Greg Wilson jautā, kā datorzinātnieku nevajadzētu dedzināt savas zināšanas vienu nedēļu kursā fizisko zinātniekiem un inženieriem. Viņš nav ierosināt mācību teorētiskās datorzinātnes pamatus, un es domāju, ka tas ir gudrs. Bet viņš aiziet par tālu citā veidā ir ērtāk, iesakot tēmas nedēļu mācību programmu, kas ir pārāk specifiska par noteiktu instrumentus un noderīgi padomi. Tur ir vidusceļš: profesionāli programmatūras izstrādātāji sāk diferencēt vairāk teorētisks pētījums par datorzinātnes un praktiskāk programmatūras inženierijas jomā. Tas ir mācīšanās par pēdējiem principiem, būvējot labas programmas un sistēmas, kas darīs skaitļošanas zinātnieki visvairāk labi ilgtermiņā.

Mācīties veidot labas programmatūras

A pamatā mums parasti pieņemts zināšanu kopums ir sākusi parādīties software engineering. Vēl nav tik labi definēta kā zināšanu struktūras, kas ietver citu inženierzinātņu jomās, bet tas tomēr ir daudz, kas varētu būt noderīga, lai zinātnieks programmētājs veikt vienas nedēļas kursu programmatūras izstrādē.

Programmatūras izstrādes? Varbūt, pieņemot šo plašo tēmu kā vienīgo priekšmetu mūsu kurss nedaudz maina Wilson ir priekšnoteikums, bet labs iemesls. Kamēr nonprogramming prasmes, piemēram, izmantojot lateksu, e-pastam un tīmeklim var būt svarīgi, cilvēki varēs uzņemt šos vai no kolēģiem. Viņi būs mazāka iespēja paņemt līdz ko datorzinātnieks var palīdzēt visvairāk ar-ir cietā izpratni par to, kā ražot labas programmas. Tas ietver, bet iet tālāk, programmēšana, pati par sevi; Tāpēc programmatūras industrijas termins programmatūras izstrādes. Manā kursā mēs koncentrēties uz šo tēmu.

Gan viņš piebilst, ka šie citos mācību priekšmetos, kas varētu izlaist, Wilson veltīt piecas klases dienas taisnīgu daļu, programmatūras izstrādes. No mana vantage point, kā programmatūras inženieris, tomēr pat plānošanas daļas viņa kursā uzmanība pārāk stipri par īpašu programmēšanas rīki un nav pietiekami daudz par programmatūras izstrādes pamatprincipiem. Viņa rakstu sauc, “Ko datorzinātnieku jāmāca fiziskās zinātnieku un inženieru?” bet būtu precīzāks virsrakstu, “kā mācīt fizisko zinātniekiem un inženieriem, viss viņi vienmēr zināt par Unix Wanted, bet ir bail jautāt.”

Tas ir mans novērojums, galvenais iemesls, kādēļ Sally sintēzes vai Harold ķivere nokļūst nepatikšanās nav neapzināšanās par Unix komandas, Emacs vai Perl, bet neapzināšanās par programmatūru dizains, programmēšana, kvalitātes nodrošināšanu un projekta vadības pamatprincipus. Non-profesionāli programmētāji-cilvēki, kuri daži programmēšana, bet kuru primārā apmācība un zināšanas slēpjas citur var Olympics parasti pa diezgan labi uz maziem projektiem. Viņi mācās pietiekami par rīkiem pa ceļu, lai iegūtu darbu izdarīt. Ko viņi nevar mācīties pa ceļu ir vairāk abstrakts, šķietami teorētiskās zināšanas, kas, šķiet, lai neradītu nekādā tiešā izmaksa, bet kas ir ilgtermiņā organizācijām.

Kā norāda Wilson, lielākā daļa neprofesionālu programmētāji formālas apmācības aprobežojas ar divas vai trīs termini, kas centrēta uz Fortran izmantošanu. Kāds tikko iemācījusies par datoriem, Fortran, pats par sevi var likties daudz biedējošu. Bet par vidējiem un lieliem programmatūras projektus, valodas lietojuma detaļas ir vismazākās iespējamās problēmas.

Cilvēki, kas ir uzrakstījis dažas nelielas programmas koledžā dažreiz domāju, ka rakstiski liels, profesionālo programmu ir pats veida darbu tikai plašākā mērogā. Tā nav tāda paša veida darbu. Var veidot skaistu doghouse manā pagalmā pēc pāris stundām. To varētu pat veikt pirmo balvu county fair doghouse konkurenci. Bet tas nenozīmē, ka man zināšanas būvēt debesskrāpi. Debesskrāpja projekts prasa pilnīgi Christian sarežģītākas veida zināšanas. Programmas studentiem un profesionālās programmas sarežģītības starpība var būt tikpat lielas un neprofesionāliem programmētāji-zemu starpība ar vajadzīgo kompetenci savas briesmas.

Programmatūras izstrāde, zinātnieki un inženieri: vienas nedēļas gaitā

nedēļu ilgā programmatūras attīstības gaitā uzmanība būtu jāpievērš, es domāju, kā saglabāt vidēja un liela programmatūras projektus no vērpšanas ārpus kontroles, kā nekļūt grupu projektus haotiska un kā saglabāt ilgu pussabrukšanas periodu programmas no pasliktinās nevajadzības punktu. Šie projekti ir katastrofu gaida notikt. Pareizu šādu kursu mērķis nav jābūt nedaudz palielināt efektivitāti studentiem, bet tām sniegtu zināšanas par to, kā izvairīties no katastrofas. Ir maz iegūst mācību kāds gājiens pret dažiem pazudināt 25 procentiem ātrāk kā.

Nedēļu ilgajā kursā var nodrošināt lielāku labumu, Atmodas studentiem iespējas nekā pasaulē, iegremdējot tās nedaudz īpašus rīkus un metodoloģijas detaļas. Pieņemsim, attiecīgi pārskatīt Greg Wilson piedāvāto mācību programmu.

1. diena: Programmēšanas prakse

, jo skolēni jau ir programmēšana, kurss sākas ar pazīstamo temata plānošanas detaļas. Tēmas-.

Kodēšanas cilvēkiem. Tas ietver diskusiju par mainīgo un nosaukumdošanas funkciju, izkārtojumu un dokumentāciju. Tā iepazīstina ar domu, ka programmatūras izstrādes ir mēģinājums managing sarežģītības
.
Kontroles jautājumiem. Šī segmenta raksturo strukturēta pārmaiņus, vadības cikla kontroli, conditionals izmantošanu (ja paziņojumiem), Būla vērtības izteiksmes un goto paziņojumu izmantošanu
.
Integrācijas stratēģiju. Tas ir pakāpenisku integrāciju, liels sprādziena integrāciju un evolūcijas attīstības prakses izpēte.

Ieteicams papildus informācijas avotiem.

Profilēšanas un kodu regulēšana nav apskatītas. Es domāju, ka tas nav tikai nepiemērots, bet bīstami koncentrēties uz kodu noregulēšana ar īsu, vienas nedēļas laikā. Kā W.A. Wulf teica: “vairāk skaitļošanas grēki tiek iedalīti vārdā efektivitāti (bez vienmēr tā sasniegšanai) nekā jebkura cita viena iemesla dēļ — tostarp aklā – muļķība.” Laiku ir labāka izlietotās apspriežot rentablu projektēšanas un ieviešanas prakse, kas rada efektīvu programmas kā blakusprodukti.

Gan ne pieminēt to vēlreiz, katru dienu beigsies ar ieteicamās papildu informācijas avotiem.

2. diena: Programmatūras projektēšanas

2 dienu mērķis ir sniegt dažus praktiskus projektēšanas pamatprincipiem un pakļaut studentiem dažādas skolas domas programmatūras izstrādes. Tēmas šajā dienā

dizaina nozīmi. Šī segmenta skaidro izdevumus nedara dizains un kritisko lomu, ko dizains spēlē panākumu vidējiem un lieliem projektiem. Tas izskaidro lomu, labs dizains spēlē managing sarežģītības
. Informācijas slēpšana

Modularitāte

pārskats strukturētu Design

apskatu datu struktūra dizains

pārskats par objektu projektēšanas

dienā 3: kvalitātes nodrošināšanas

plānošanā, kvalitātes tikai nenotiek pats par sevi, pat tad, ja jūs to uzmanīgi. Dienā 3 tēmas

Vienība testēšanai

Atkļūdošana

ietpratēju šajā dienā niansēs tie ir nedaudz ielūkoties atsauksmes formālu vai neformālu atsauksmes par dizainu, kods un citi darba produkti ar savu kolēģi. Lietpratēju par kritisku elements jebkurā projekta veiksmes un ir viena no dažām metodēm, kas var īstenot praktiski jebkurai organizācijai, jebkuras zinātnes disciplīnu un jebkuras aparatūras un programmatūras vidē. Salīdzinošās pārskatīšanas segments ietver dažas “peer review” lomu spēlē “tāpēc, ka katra persona saņem vismaz 15 minūtes praksē, gan pārskatīt un recenzēto.

Papildus to ievērojamas kvalitātes nodrošināšanas labā atsauksmes sniedz vērtīgu iespēju nonprogrammers, apmainīties ar informāciju par efektīvu un neefektīvu plānošanas metodes un instrumentus. Mācīt skolēniem par pārskatiem nosaka tos turpināt mācības par programmatūras izstrādes no saviem vienaudžiem, kas ilgi pēc vienas nedēļas laikā ir beidzies.

4. diena: Programmatūras projektu pārvaldības

dienu 4s tēmas risināt kā programmatūras izstrādes sarežģītību ir adresēts projektu vadības līmenī:

Pārskatīšanas pārvaldībai (ieskaitot diskusiju veikt failu un pārskatīt vadības programmatūra)

ūdenskritums dzīves cikla modeli un galvenās alternatīvas (spirāles modelis, evolūcijas prototipu

u.c.)
Programmatūras uzturēšanas

Projektu koordinācijas

grupas
dienā 5: rīkus un wrap-up

pēdējā diena ir vērsta uz Rīki un sakopo tēmām, kas izklāstītas iepriekšējās lekcijas. Izskaidro, kā izmantot īpašus instrumentus, tā vietā 5 dienu mērķis ir noteikt, kāda veida rīki ir pieejami. Ja cilvēki var parādīt rīku vērtība, viņi meklē to un mācīties to izmantot sevi. Rīki ir vieta programminženierija izvēlnē, bet tie jāuzrāda kā piedevas, nevis pamatēdiens.

5 dienu aptvers šādus punktus:

pārskats un demonstrējot programmēšanas rīki. Tas var tikt izmainīti, lai noteiktu grupu un var koncentrēties uz Unix, Windows, Macintosh vai citās vidēs, pēc vajadzības. Laba izvēle ietver koda redaktori, debuggers, datu bāzes vadības programmatūras un komandrindas utilītas, piemēram, grep. Es piekrītu Wilson ir punkts, ka izvēlēts apspriešanai instrumentus vajadzētu pierādīt sevi un nedrīkst būt varētu mainīties tādā veidā, ka tiek atceltas skolēnu mācīšanās.

Pārskats par zinātniskiem instrumentiem. Tas var arī pielāgot, lai studentiem īpašās vajadzības un var iekļaut statistikas programmatūras, specializētas vārdu procesori, Mathematica, Matlab, moduļu vizualizācija vidē (MVEs) u. tml.

Kopsavilkums par tēmām, kas stiepjas caur veselu lekciju sēriju.

Iegremdēšanu fizisko zinātniekus un inženierus, nedēļas tēmu par to, ko nozīmē veidot datorprogrammas ir kur slēpjas sviras ilgstošu uzlabojumu. Pat labākie līdzekļi nāk un iet, bet ilgstošu programmēšanas principu kopums ir sākuši parādīties, un zināšanas par šiem principiem liels labums neprofesionāliem programmētājs.

Tas ir viegli rakstīt kursa struktūru. Tas ir cits jautājums pilnīgi Christian studenta smadzeņu iedziļināties šo kontūru saturu no rakstnieka spalvas. “Patiesais šī struktūra vai kādu citu ir, kā tā darbosies praksē-kā to vēlētos pāriet no domu eksperimentu mācību programmas. Neatkarīgi no mācību specifiku Wilson ir raksts būtu apsveicama, lai iegūtu mums domāt, un es ceru,
dara. Par autoru

Steve McConnell ir galvenais programmatūras inženieris Construx programmatūras veidotājiem un autora pilnu kodu: A praktiska rokasgrāmata par programmatūras būvniecības (Microsoft Press, 1993) un straujā attīstība: Taming savvaļas programmatūras grafiki (Microsoft Press, 1996). Viņš pieder programmatūras inženierijas maģistra grādu no Sietlas universitātē, ir IEEE Computer Society biedrs un ir par redakcijas Padome IEEE Software. McConnell, var sazināties ar Construx Software Builders Inc., p.o. Box 6922, Bellevue, WA 98008; e-pasts [email protected]; WWW, http://www.construx.com/stevemcc/.

Leave a Reply

Your email address will not be published. Required fields are marked *