De obicei, la întrebarea „de ce este necesară matematica?” se răspunde cu ceva de genul „gimnastică pentru minte”. În opinia mea, această explicație nu este suficientă. Atunci când o persoană face exerciții fizice, știe exact denumirea grupurilor musculare care se dezvoltă. Dar discuțiile despre matematică rămân prea abstracte. Care sunt, mai exact, „mușchii minții” care sunt antrenați de algebra școlară? Aceasta nu seamănă deloc cu adevărata matematică, în care se fac mari descoperiri. Ce aduce abilitatea de a căuta derivata unor funcții complicate?
Predarea programării studenților mai puțin capabili m-a condus spre un răspuns mai precis la întrebarea „de ce?”. În acest articol, voi încerca să vă transmit acest răspuns.

În școală, se acordă destul de mult timp transformării și simplificării expresiilor. De exemplu: 81×2+126xy+49y2 trebuie transformat ca (9x+7y)2.
În acest exemplu, de la elev se așteaptă să-și amintească formula pătratului sumei.

În cazuri mai complexe, expresia obținută poate fi utilizată pentru alte transformări. De exemplu:

se transformă mai întâi în

iar apoi, cu precizarea (a + 2b) != 0, se obține așa

Pentru a obține un astfel de rezultat, elevul trebuie să recunoască în expresia inițială și apoi să aplice trei formule:
- Pătratul sumei
- Diferența pătratelor
- Simplificarea factorilor în fracții ordinare
În școala obișnuită, la algebra, aproape tot timpul ne-am ocupat de astfel de transformări ale expresiilor. La facultate, la matematicile superioare, nimic nu s-a schimbat semnificativ. Ni s-a explicat cum să luăm derivatelor (integrale etc.) și ne-au fost date o mulțime de exerciții. A fost benefic? În opinia mea – da. Ca rezultat al acestor exerciții:
- S-a rafinat abilitatea de a transforma expresii.
- A crescut atenția la detalii.
- S-a format un ideal – o expresie concisă, la care putem aspira.
În opinia mea, existența unui astfel de ideal, calitate și abilitate este foarte utilă în munca zilnică a unui dezvoltator. Căci a simplifica o expresie, în esență, înseamnă a-i modifica structura pentru a facilita înțelegerea, fără a afecta sensul. Ți se pare cunoscut?
Este practic definiția refactorizării din cartea omonimă a lui Martin Fowler.
În lucrarea sa, autorul formulează acestea astfel:
Refactorizarea (Refactoring) (substantiv): modificarea structurii interne a software-ului cu scopul de a facilita înțelegerea funcționării acestuia și de a simplifica modificarea, fără a afecta comportamentul observabil.
A efectua refactorizarea (Refactor) (verb): a modifica structura software-ului, aplicând o serie de refactorizări, fără a afecta comportamentul său.
Cartea oferă „formule” care trebuie recunoscute în codul sursă și reguli pentru transformarea lor.
Ca exemplu simplu, voi aduce „introducerea unei variabile explicative” din carte:
if ( (platform.toUpperCase().indexOf(“MAC”) > -1 ) &&
(browser.toUpperCase().indexOf(“IE”) > -1 )&&
wasInitialized() && resize > 0 ) {
// execută ceva
}Părțile expresiei trebuie înregistrate într-o variabilă, a cărei denumire explică scopul acesteia.
final boolean isMacOS = platform.toUpperCase().indexOf(“MAC”) > -1;
final boolean isIEBrowser = browser.toUpperCase().indexOf(“IE”) > -1;
final boolean isResized = resize > 0;
if(isMacOS && isIEBrowser && wasInitialized() && isResized) {
// execută ceva
}
Imaginează-ți o persoană care nu poate simplifica expresiile algebrice folosind formula pătratului sumei și al diferenței pătratelor.
Crezi că această persoană poate refactoriza codul?
Va putea să scrie un cod clar pentru altele, dacă nu are formată ideea de concizie? Din punctul meu de vedere — nu.
Totuși, la școală învață toți, iar programatori devin doar o minoritate. Este utilă abilitatea de a transforma expresii pentru oamenii obișnuiți? Cred că da. Această abilitate este aplicată într-o formă mai abstractă: trebuie să evaluezi situația și să alegi acțiunea ulterioară astfel încât să te aproprii de scop. În pedagogie, acest fenomen se numește .
Cele mai vii exemple apar în timpul reparațiilor casnice cu mijloace improvizate, într-un mod „amator”. Ca rezultat, apar acele „trucuri” și life hack-uri, unul dintre ele este ilustrat în CPDV. Autorul ideii a avut o bucată de lemn, un fir și patru șuruburi. Amintindu-și de modelul unei prize pentru lampă, a construit din ele o priză făcută manual.
Chiar și atunci când utilizează transport auto, șoferul recunoaște constant modele în lumea înconjurătoare și efectuează manevre corespunzătoare pentru a ajunge la destinație.
Când ai murit, nu știi, ci doar altora le este greu. Acelasi lucru se întâmplă când nu ai stăpânit matematica...
Ce se întâmplă, dacă o persoană nu reușește să învețe transformarea expresiilor? Din când în când, fac sesiuni individuale cu studenți care au avut dificultăți cu matematica la școală. De obicei, ei se blochează complet pe tema buclelor. Atât de mult, încât trebuie să lucrăm la „algebră”, dar în limbajul de programare.
Acest lucru se întâmplă pentru că, atunci când scriem bucle, principala tehnică constă tocmai în a transforma un grup de expresii identice.
Să presupunem că rezultatul programului ar trebui să arate astfel:
Introducere
Capitolul 1
Capitolul 2
Capitolul 3
Capitolul 4
Capitolul 5
Capitolul 6
Capitolul 7
Concluzie
Un program trivial pentru a obține acest rezultat arată astfel:
static void Main(string[] args)
{
Console.WriteLine("Introducere");
Console.WriteLine("Capitolul 1");
Console.WriteLine("Capitolul 2");
Console.WriteLine("Capitolul 3");
Console.WriteLine("Capitolul 4");
Console.WriteLine("Capitolul 5");
Console.WriteLine("Capitolul 6");
Console.WriteLine("Capitolul 7");
Console.WriteLine("Concluzie");
}Dar această soluție este departe de idealul concis. Mai întâi trebuie să găsim grupul repetitiv de acțiuni și apoi să-l transformăm. În cele din urmă, va apărea o soluție de genul:
static void Main(string[] args)
{
Console.WriteLine("Introducere");
for (int i = 1; i <= 7; i++)
{
Console.WriteLine("Capitolul " + i);
}
Console.WriteLine("Concluzie");
}Dacă o persoană nu a învățat matematica la vremea ei, atunci nu va putea efectua astfel de transformări. Pur și simplu nu va avea abilitățile necesare. De aceea, tema buclelor este prima barieră în formarea unui dezvoltator.
Probleme similare apar și în alte domenii. Dacă o persoană nu știe să folosească un instrument la îndemână, nu va putea să demonstreze ingeniozitate în viața de zi cu zi. Limbile rele vor spune că mâinile nu cresc din locul potrivit. Pe drum, acest lucru se manifestă prin incapacitatea de a evalua corect situația și de a alege manevra. Ceva ce uneori poate duce la consecințe tragice.
Concluzii:
- Matematica școlară și universitară ne este necesară pentru a putea face lumea mai bună cu resursele pe care le avem.
- Dacă studiezi și întâmpini probleme în învățarea buclelor, încearcă să te întorci la originile tale - algebra școlară. Ia un caiet de exerciții pentru clasa a 9-a și rezolvă exercițiile din acesta.
Sursa: habr.com
