Di solito, alla domanda «a cosa serve la matematica?» si risponde con qualcosa tipo «ginnastica per la mente». A mio avviso, questa spiegazione è insufficiente. Quando una persona svolge esercizi fisici, sa esattamente il nome dei gruppi muscolari che vengono sviluppati. Ma le discussioni sulla matematica rimangono troppo astratte. Quali sono precisamente le «muscoli della mente» che si allenano con l'algebra scolastica? Non somiglia affatto alla vera matematica, dove si fanno grandi scoperte. Quali benefici offre la capacità di cercare la derivata di funzioni complesse?
L'insegnamento della programmazione a studenti poco motivati mi ha portato a una risposta più precisa alla domanda «perché?». In questo articolo cercherò di trasmetterla a voi.

A scuola, si dedica abbastanza tempo alla trasformazione e semplificazione delle espressioni. Ad esempio: 81×2+126xy+49y2 deve essere trasformata in (9x+7y)2.
In questo esempio, si aspetta dallo studente che ricordi la formula del quadrato di una somma.

Nei casi più complessi, l'espressione ottenuta può essere utilizzata per altre trasformazioni. Ad esempio:

si trasforma prima in

e poi, con la precisazione (a + 2b) != 0, si ottiene così

Per ottenere questo risultato, lo studente deve riconoscere nell'espressione iniziale e poi applicare tre formule:
- Il quadrato di una somma
- La differenza dei quadrati
- La semplificazione dei fattori di una frazione ordinaria
Nella normale scuola, in algebra, trascorrevamo quasi tutto il tempo a fare questo tipo di trasformazioni. All'università, in analisi matematica, non è cambiato molto. Ci hanno insegnato come calcolare le derivate (integrali, ecc.) e ci hanno assegnato un sacco di esercizi. È stato utile? A mio avviso, sì. Come risultato di questi esercizi:
- Si è affilata la capacità di trasformare espressioni.
- Si è sviluppata l'attenzione ai dettagli.
- È stato formato un ideale: un'espressione concisa, a cui si può aspirare.
A mio avviso, avere un ideale del genere, una qualità e una competenza è molto utile nel lavoro quotidiano di uno sviluppatore. Infatti, semplificare un'espressione significa, in sostanza, modificarne la struttura per facilitarne la comprensione, senza intaccarne il significato. Vi ricorda qualcosa?
È praticamente la definizione di refactoring dal libro omonimo di Martin Fowler.
Nel suo lavoro, l'autore le formula nel seguente modo:
Refactoring (Refactoring) (sost.): modifica della struttura interna del software, finalizzata a facilitare la comprensione del suo funzionamento e semplificare la modifica, senza alterare il comportamento visibile.
Effettuare refactoring (Refactor) (verbo): modificare la struttura del software, applicando una serie di refactoring, senza alterarne il comportamento.
Il libro presenta "formule" che devono essere riconosciute nel codice sorgente e regole per la loro trasformazione.
Come esempio più semplice, porto "l'introduzione di una variabile esplicativa" dal libro:
if ( (platform.toUpperCase().indexOf("MAC") > -1 ) &&
(browser.toUpperCase().indexOf("IE") > -1 )&&
wasInitialized() && resize > 0 ) {
// fai qualcosa
}Le parti dell'espressione devono essere scritte in una variabile, il cui nome ne spiega lo scopo.
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) {
// fai qualcosa
}
Immagina una persona che non è in grado di semplificare le espressioni algebriche utilizzando la formula del quadrato della somma e della differenza dei quadrati.
Cosa pensi, questa persona sarà in grado di fare refactoring del codice?
Potrà davvero scrivere del codice comprensibile per altre persone, se non ha sviluppato un'idea di questa particolare leggibilità? A mio avviso, no.
Tuttavia, a scuola studiano tutti, mentre solo una minoranza diventa programmatori. È utile il talento di trasformare le espressioni per le persone comuni? Penso di sì. Solo che il talento viene applicato in un modo più astratto: è necessario valutare la situazione e scegliere l'azione successiva in modo da avvicinarsi all'obiettivo. In pedagogia, questo fenomeno è chiamato .
I più evidenti esempi si presentano nell'ambito delle riparazioni domestiche con mezzi semplici, in modo "fai da te". Ne derivano quegli stessi "trucchi" e hack, uno dei quali è illustrato nella KDVP. L'autore dell'idea aveva un pezzo di legno, un filo e quattro viti. Ricordando il modello di un portalampada, ne ha assemblato uno artigianale.
Anche quando si guida un veicolo, il conducente è costantemente impegnato a riconoscere schemi nel mondo circostante e a compiere manovre appropriate per raggiungere la meta.
Quando muori, non lo sai, solo agli altri pesa. È lo stesso quando non hai padroneggiato la matematica...
Cosa succede se una persona non riesce a padroneggiare la trasformazione delle espressioni? Di tanto in tanto tengo lezioni individuali con studenti che hanno avuto difficoltà in matematica a scuola. Di solito, si bloccano completamente sul tema dei cicli. Tanto che dobbiamo lavorare su una 'algebra', ma nel linguaggio di programmazione.
Questo accade perché quando si scrivono cicli, il principio fondamentale consiste proprio nel trasformare un gruppo di espressioni identiche.
Supponiamo che il risultato del programma debba apparire così:
Introduzione
Capitolo 1
Capitolo 2
Capitolo 3
Capitolo 4
Capitolo 5
Capitolo 6
Capitolo 7
Conclusione
Un programma banale per ottenere questo risultato appare così:
static void Main(string[] args)
{
Console.WriteLine("Introduzione");
Console.WriteLine("Capitolo 1");
Console.WriteLine("Capitolo 2");
Console.WriteLine("Capitolo 3");
Console.WriteLine("Capitolo 4");
Console.WriteLine("Capitolo 5");
Console.WriteLine("Capitolo 6");
Console.WriteLine("Capitolo 7");
Console.WriteLine("Conclusione");
}Ma questa soluzione è lontana dall'ideale conciso. Prima di tutto, è necessario trovare il gruppo di azioni ripetitive e poi trasformarlo. Alla fine, si otterrà una soluzione del genere:
static void Main(string[] args)
{
Console.WriteLine("Introduzione");
for (int i = 1; i <= 7; i++)
{
Console.WriteLine("Capitolo " + i);
}
Console.WriteLine("Conclusione");
}Se una persona non ha padroneggiato la matematica a suo tempo, non sarà in grado di effettuare tali trasformazioni. Non avrà semplicemente le competenze necessarie. È proprio per questo che il tema dei cicli rappresenta il primo ostacolo nell'istruzione di un sviluppatore.
Problemi simili si presentano anche in altri settori. Se una persona non sa usare gli strumenti a disposizione, non potrà mostrare ingegnosità pratica. Le lingue maliziose diranno che le mani non vengono dal posto giusto. Sulla strada, questo si manifesta nell'incapacità di valutare correttamente la situazione e scegliere una manovra. Cosa che può a volte portare a conseguenze tragiche.
Conclusioni:
- La matematica scolastica e universitaria ci serve affinché possiamo migliorare il mondo con i mezzi che abbiamo.
- Se stai studiando e hai difficoltà a comprendere i cicli, prova a tornare alle origini — all'algebra delle scuole superiori. Prendi un libro di esercizi per la nona classe e risolvi gli esercizi in esso contenuti.
Fonte: habr.com
