Multe fraza de captură, spunând, „Programarea este o arta -“ nu este pe deplin conștient de sensul său, de multe ori adăugarea la ea, cum ar fi timbre ( „arta cere sacrificiu“). Uneori, puteți vedea și imaginea opusă - programarea se reduce la nivelul de „șuruburi de tăiere mecanice pe mașină.“ Unii susțin, ambarcațiuni sau arta de programare (și poate știința). Mulți pur și simplu, nici o diferență.
conceptul a fost popular în primele zile ale programării că programarea - este o disciplină de inginerie. Apoi a intrat în folosință, termenul de „inginerie software“. Esența conceptului este faptul că programul poate fi dezvoltat de către disciplinele de inginerie tradiționale. În acest aspect al programării este văzută doar ca o subregiune inginerie, care are legături strânse cu știința calculatoarelor. Și acest concept ( „inginerie software“) nu ar trebui să fie confundat cu „dezvoltarea de software“, care este un termen mai general, un proces care vizează crearea și menținerea eficienței, calitatea și fiabilitatea software-ului nu este utilizat în mod necesar în această abordare de inginerie.
Abordarea Engineering a fost propus inițial pentru a face față cu următoarele fenomene:- Proiectele depășesc bugetul.
- Proiectul depășește termenele limită.
- Software-ul a fost prea ineficient.
- Software-ul a fost prea slabă calitate.
- Software-ul de multe ori nu îndeplinesc cerințele necesare.
- Proiectele au fost neastamparat, a avut probleme de cod de sprijin.
- Software-ul a fost nepotrivit pentru distribuție.
Și, deși el (abordare de inginerie) a demonstrat rezultate excelente în multe proiecte mari, el a suferit un fiasco total în software-ul de producție de masă. De ce? Pentru că, dacă rămânem la o nevoie clară de a urma un plan prestabilit, puteți petrece o mulțime de efort pentru a fi verificate și nu observați că lumea sa schimbat, iar planul nu mai este relevant, astfel încât rezultatul va pur și simplu nu îndeplinesc cerințele practice ale lumii reale.
Puncte-cheie ale abordării de inginerie pentru discuția noastră: planificarea, structurarea, ca urmare a unui plan și de contract, sistemic (responsabilitate), etc.
Cei mai mulți oameni spun atât de des cuvintele „software“ și „hardware“, referindu-se la hardware-ul și software-ul de calculatoare, care au uitat semnificația lor originală. „Soft“ înseamnă „moale“ și „greu“ - „greu“, „neschimbat“. Nu este greu de înțeles modul în care oricare dintre acești termeni. Codul ar trebui să fie „moale“, ar trebui să fie ușor să se schimbe. Partea hardware a computerului, o dată dezvoltat, rămâne neschimbat. Și vorbim aici nu despre o unitate de înlocuire sau de memorie și despre imutabilitatea arhitecturii și set de instrucțiuni. Să ne amintim că primele calculatoare hardware programate: nu au existat programe în forma sa pură, ele au fost cusute direct în hardware-ul - prin cabluri specifice (de sârmă). Ie aproximativ la fel ca și comutatorul de perete „programat“ aprinde luminile fiind comutată în poziția „pornit“.
Ceea ce am spus doar?
În programare, trebuie amintit că, cauza primordială de bază a programelor ca atare, separarea lor de fier - este flexibilitatea și „moliciune“. În cazul în care codul nu este flexibil și nu permite să se modifice cu ușurință în sine - care este sensul existenței sale este ca codul? Flexibilitate - este Sfântul Graal de cod software. Aici, cu toate acestea, este necesar să se înțeleagă în mod corect termenul de „flexibilitate“. Multe (novice) programatori nu-l înțeleg. „Ei bine, eu pot redenumi variabila și introduceți unul nou. Și eu pot insera un apel de funcție. Vezi, eu pot schimba codul, ce sa întâmplat aici?“ Flexibilitatea se referă la capacitatea de a se adapta la schimbarea cerințelor și evoluția tehnologiei. Flexibilitatea se referă la lucruri, cum ar fi înlocuirea unui motor de baze de date la alta, schimbarea GUI pentru a CUI (interfață grafică cu utilizatorul pe consola), etc. Pe scurt, un cod flexibil bun ar trebui să lucreze cu concepte abstracte. opereze pe comune, mai degrabă decât să fie legat de o anumită punere în aplicare, o anumită clasă, etc. Acest lucru, de altfel, este una dintre cauzele OEP, în cazul în care flexibilitatea ( „Abstract“) este construit până la nivelul de sintaxa limbii (în comparație cu abordarea anterioară, în cazul în care este cel puțin posibil, dar necesită eforturi deosebite - în cazul în care numai pentru că datele și metodele lor tratamente nu sunt legate în mod oficial).
Amintiți-vă acest post. A existat un astfel de element ca un „test“. Știu că unii (novice) programatori ar putea crede că nu au nevoie. De fapt, codul de unitate de testare este foarte util nu numai pentru propria lor de testare, dar și din cauza efectul pe care îl are asupra design-cod. La urma urmei, atunci când scrie un test de unitate, ar trebui să alunece în loc de un singur strat de celălalt. În schimb GUI - fix de intrare și de ieșire, în loc de a conecta la baza de date - emularea strat, etc. Cu alte cuvinte, atunci când scrie un test, vă poate garanta un anumit nivel de flexibilitate în cod. test de scriere relevă lipsa de flexibilitate în codul dvs., astfel încât să puteți repara. Este pe această abordare bazată pe fapt de a dezvolta software-ul TDD (Test Driven Development - dezvoltare prin testare). Acesta garantează un anumit nivel de calitate a codului (în termeni de flexibilitate).
Timpul specificat (flexibilitatea) este motivul pentru apariția unor metodologii de dezvoltare de software „agil“, în încercarea de a reduce complexitatea dezvoltării sale: Agile, XP, Scrum, etc. De asemenea, trebuie remarcat faptul că abordările „flexibile“ nu se opun abordării de inginerie, în sensul că acestea sunt, de asemenea, menite să combată problemele de mai sus (în plus față de buget, etc.).
Cele de mai sus ar trebui să vă dau un indiciu că programele de dezvoltare (mai ales) - nu este un inginer, și abilități (și, în consecință, nu se ocupă cu inginerii și meșteșugari). Conceptul de calificare dificil de formalizat, nu este ușor de înțeles. Acest concept este un rol important de artă, sau chiar prioritatea artei științei. Acest lucru nu înseamnă că maestrul neglijează știință sau inginerie abordare, dar acestea nu sunt majore. Îndemânare - este un echilibru de artă și știință. Este echilibrul corect duce la un cod de calitate.
(Așa cum comentariile trebuie să spun că un program de succes nu este întotdeauna un cod de calitate. Un cod de calitate nu este nici o indicație a unui program de calitate (programe de calitate din punct de vedere al utilizatorului), nu are nimic de a face cu succes și popularitatea sa nu este o garanție a acestora . codul de înaltă calitate garantează numai ușurința de dezvoltare, modificare, rectificare și programul de întreținere. nu va urmări acest subiect aici. Poate atunci voi scrie un post separat pe ea, dar atâta timp cât ea atât de frumos dezvăluit în mea ECȚIUNEA Traducerea -. Postează despre curbele de compatibilitate software, dar programele relevante și de succes, și anume calitatea codului sursă - aceasta este beneficiul dezvoltator Bunătatea / popularitate / succesul programului. - utilizatorii acest beneficiu și, uneori, acestea intră în conflict unele cu altele) ..
Masura - capul de tot.
De exemplu, mulți oameni înțeleg expresia „nu este necesar să se utilizeze X“, „X - este rău“, „X este depreciată, folosiți Y“ literalmente. De fapt, astfel de declarații vorbesc numai că, în cele mai multe cazuri, X are unele probleme serioase în cazul general. Iar articolele care vorbesc despre motivul pentru care X - este un lucru rău, de fapt, să vă indice pe partea negativă și dezavantajele X. Gândiți-vă variabile globale. cu. Goto ( "GOTO considerate dăunătoare"), și alte lucruri. Acest tip de articol trebuie să fie înțeleasă în așa fel încât să dea să examinați / cunoștințe deficiențe de X. X aici nu este rău în sine, dar numai în condiții foarte specifice. Ceea ce înseamnă că aveți ca un profesionist în aceste aspecte, va fi capabil să cântărească argumentele pro și contra și să aleagă soluția potrivită. Acesta ar trebui să utilizeze X sau nu. Desigur, ca și dezavantajele X atât de semnificative încât să necesite fel de mult ca un articol special, în cele mai multe cazuri, alegerea va inclina spre „nu utilizați“. Acesta este motivul pentru toată lumea spune fraze de genul „nu folosesc X“. Pentru că atât de profesionist și știe când și ce să folosească. Dar un programator novice de o astfel de alegere conștientă și în cunoștință de cauză nu este în stare să facă. Prin urmare, este mai bine să li se spună cum să o facă. Iar atunci când „cresc“ - el va înțelege. benzi desenate bine în subiect.
Acesta este motivul pentru programarea în primul rând este o artă. Nu contează cât de mult ai citit cărți și articole despre programare educație, așa cum s-ar putea învăța sfaturi „face acest lucru“ / „Nu face asta“ - final procesul de dezvoltare de software vine în jos la experiența și priceperea. Puteți investi într-o grămadă de cunoștințe, dar pe care, ca și cum ar spune că nu apare, „un sentiment de corectitudine.“ Este vorba despre modul în care doi oameni care au petrecut aceeași cantitate de efort și folosind același set de ingrediente, sau le poate transforma într-un tort delicios sau rahat necomestibilă. În timpul procesului de dezvoltare există întotdeauna un fel de A și B, precum și o grămadă de variante intermediare între ele. Demn de un dezvoltator face o alegere potrivita intre aceste opțiuni bazate pe experiența și sentimentele lor, alegerea echilibrul corect. În cazul în care o persoană se simte procesul de dezvoltare, surprinde esența ei, cunoașterea detaliilor tehnice specifice retrogradeaza in fundal. De aceea, un dezvoltator bun este întotdeauna studii ceva (noi tehnologii, metodologii, etc.) pentru a lărgi experiența și perspectivele lor.
Morala? Programarea nu pot fi predate în liceu. Aceasta este - o artă care trebuie să se învețe.
În acest sens, a fost un post plus față de postul anterior.
Îmi pare rău, dar nu am putut să termin de lectură.
negație -
Programarea se reduce la nivelul de „șuruburi de tăiere mecanice pe mașină.“
Pentru mine este aceasta:
1. ambiții atunci când scrieți programe sunt dăunătoare. Lasă-l profesioniștilor, care a studiat. artiști și designeri Real.
2. Atunci când o persoană face ceva ce este nevoie încredințată folosind desene și instrumente create pentru acest lucru - nu e jenant. Este o rușine să nu facă, care este indicat în Speke și TK. Deoarece este calculat alte persoane din comando pe tine. În noi toți lăcătuș aceste momente. chiar dacă o faci pe propriile lor desene.
3. Arta formalizate. În primul rând însușit abilitățile de bază și să învețe să le aplice. În programarea toate naobrot. Toată lumea este de a face arderilor lor de prog, apoi trece în managery, citit câteva cărți, și apoi începe să gestioneze software-ul lor de tehnologie.
Și ține capul ca păunii. Deși tinerii trișorii au nevoie pentru a trage și rupe urechile. Peste tot este, și de programare este o raritate.
Total: Programatorul trebuie să înțeleagă că el este angajat în afaceri industriale. Programatorul trebuie să înțeleagă unde a fost designer, și unde montator Miller. În caz contrar, atât halturka.
În comparație cu modelele mazyukanem de exprimare nu ar trebui să fie.
Cand digera totul. dau seama. Arta care nu este în rebeliune și în curs de desfășurare. Creatorul motorului - creatorul unui nou. Dorită. Lucrând pentru binele. Și nu blocheze și să complice textele deja mediocre ale programelor.
P / S - STL - este un exemplu negativ pentru ceea ce poate aduce isskusnichat dorință. Din păcate, acest lucru a fost, de asemenea, standardul (dar nu pentru mult timp). Sunt simple și elegante mijloace razrobotki. Instrumente. Și ei creează spechialno, programatori pentru noi. Noi să facem ceva simplu, fiabil și convenabil. Au făcut-o împreună, nu de modă individual o armată statuie
Puteți utiliza unele HTML-tag-uri, de exemplu:
Vă rugăm, dacă este posibil, folosiți „Nume / URL-ul“ în loc de „Anonim“. URL-ul poate fi pur și simplu omise.
Mesajul dvs. poate fi marcat ca spam de filtrul de spam - nu vă faceți griji, va apărea după validare.