Általában a „miért szükséges a matematika?” kérdésre valami olyasmit válaszolnak, hogy „az elme gimnasztikája”. Véleményem szerint ez a magyarázat nem elegendő. Amikor az ember fizikai gyakorlatokat végez, pontosan tudja, mi a neve azoknak az izomcsoportoknak, amelyek fejlődnek. De a matematikával kapcsolatos beszélgetések túl elvontak maradnak. Milyen konkrét „elmeizmokat” edzünk az iskolai algebrával? Ez egyáltalán nem hasonlít a valódi matematikára, ahol nagyszerű felfedezések születnek. Mit ad a bonyolult függvények deriváltjának keresésének képessége?
A programozás gyengébb diákoknak való tanítása pontosabb választ adott a „miért?” kérdésére. A cikkben megpróbálom átadni ezt a választ.

Az iskolában meglehetősen sok időt fordítanak kifejezések átalakítására és egyszerűsítésére. Például: 81×2+126xy+49y2 átalakítása (9x+7y)2 formájába.
Ebben a példában a diákból elvárják, hogy felidézze a képlet négyzetének összegét.

Bonyolultabb esetekben a kapott kifejezés más átalakításokra is használható. Például:

először átalakul

majd, ha pontosítunk (a + 2b) != 0, így kapjuk

Ahhoz, hogy ezt az eredményt elérje, a diáknak fel kell ismernie az alap kifejezésben és három képletet kell alkalmaznia:
- Összeg négyzete
- Négyzetek különbsége
- Többszörös egyszerűsítése a törteknek
A hagyományos iskolában az algebrán szinte az összes időt ilyen kifejezések átalakításával töltöttük. A főiskolán a magasabb matematikában semmi lényegesen nem változott. Megtanították nekünk, hogyan kell deriválni (integrálni stb.), és tonna feladatot kaptunk. Hasznos volt? Véleményem szerint – igen. Az ilyen gyakorlatok elvégzése eredményeként:
- Finomult a kifejezések átalakításának képessége.
- Fejlődött a figyelem a részletekre.
- Kialakult egy ideál – a tömör kifejezés, amelyre törekedhetünk.
Véleményem szerint egy ilyen ideál, minőség és készség nagyon hasznos a fejlesztő napi munkájában. Mivel a kifejezés egyszerűsítése lényegében a struktúrájának megváltoztatását jelenti a megértés megkönnyítése érdekében, anélkül, hogy megváltoztatná a jelentését. Nem emlékeztet ez semmire?
Ez gyakorlatilag a refaktorálás definíciója Martin Fowler azonos című könyvéből.
Munkájában, a szerző így fogalmazza meg őket:
Refaktorálás (Refactoring) (főnév): a szoftver belső struktúrájának megváltoztatása, amelynek célja a működésének megértésének megkönnyítése és a módosítás egyszerűsítése anélkül, hogy az észlelhető viselkedést érintené.
Refaktorálni (Refactor) (ige): a szoftver struktúrájának megváltoztatása egy sor refaktorálási eljárás alkalmazásával anélkül, hogy annak viselkedését érintené.
A könyv olyan „képleteket” ad, amelyeket fel kell ismerni a forráskódban, valamint a transzformálásuk szabályait.
Egyszerű példaként említem a könyvből származó „magyarázó változó bevezetését”:
if ( (platform.toUpperCase().indexOf("MAC") > -1 ) &&
(browser.toUpperCase().indexOf("IE") > -1 )&&
wasInitialized() && resize > 0 ) {
// csinálj valamit
}A kifejezés részeit egy olyan változóba kell rögzíteni, amelynek neve magyarázza a feladatát.
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) {
// csinálj valamit
}
Képzeljünk el egy olyan embert, aki nem tudja egyszerűsíteni az algebrai kifejezéseket a négyzetek összegének és különbségének képletével.
Szerinted ez az ember képes lenne refaktorálni a kódot?
Képes lenne egyáltalán érthető kódot írni mások számára, ha nincs meg benne az a bizonyos tömörség ideálja? Szerintem nem.
Az iskolában mindenki tanul, de programozókká csak a kevesek válnak. Hasznos-e az kifejezések transzformálásának készsége a hétköznapi emberek számára? Azt hiszem, hogy igen. Csak ez a készség egy absztraktabb formában alkalmazható: értékelni kell a helyzetet, és választani a további lépések között, hogy közelebb kerülj a célhoz. A pedagógiában ezt a jelenséget úgy nevezik, .
A legszembetűnőbb példák a háztartási javítások esetében a házi eszközökkel, „kolhoz” módszerrel történnek. Ennek eredményeként megjelennek azok a „trükkök” és életkönnyítők, amelyek egyike a KPDV-n van ábrázolva. Az ötletgazdának volt egy darab fája, egy drótja és négy csavarja. Emlékezve a lámpa patronjára, saját készítésű patront készített belőlük.
Még autóval közlekedve is a sofőr folyamatosan a környező világ mintáinak felismerésével és a megfelelő manőverek végrehajtásával foglalkozik, hogy eljusson a célhoz.
Amikor meghalsz, arról nem tudsz, csak másoknak nehéz. Ugyanez történik, amikor nem sajátítottad el a matematikát…
Mi történik, ha valakinek nem sikerül elsajátítania a kifejezések átalakítását? Időnként egyéni órákat tartok diákokkal, akiknek az iskolában nem ment jól a matematika. Általában teljesen megakadnak a ciklusok témájánál. Olyannyira, hogy velük "algebrával" kell foglalkozni, de programozási nyelven.
Ez azért van, mert a ciklusok írásakor az alapvető trükk éppen az, hogy egy csoport azonos kifejezését kell átalakítani.
Tegyük fel, hogy a program eredménye így kell kinézzen:
Bevezetés
1. fejezet
2. fejezet
3. fejezet
4. fejezet
5. fejezet
6. fejezet
7. fejezet
Zárás
Az ennek elérésére szolgáló triviális program így néz ki:
static void Main(string[] args)
{
Console.WriteLine("Bevezetés");
Console.WriteLine("1. fejezet");
Console.WriteLine("2. fejezet");
Console.WriteLine("3. fejezet");
Console.WriteLine("4. fejezet");
Console.WriteLine("5. fejezet");
Console.WriteLine("6. fejezet");
Console.WriteLine("7. fejezet");
Console.WriteLine("Zárszó");
}De ez a megoldás távol áll a tökéletes egyszerűségtől. Először meg kell találni az ismétlődő cselekvések csoportját, majd átalakítani. Végül egy ilyen megoldás lesz:
static void Main(string[] args)
{
Console.WriteLine("Bevezetés");
for (int i = 1; i <= 7; i++)
{
Console.WriteLine("Fejezet " + i);
}
Console.WriteLine("Zárszó");
}Ha valaki nem sajátította el a matematikát, akkor nem tudja elvégezni az ilyen átalakításokat sem. Egyszerűen nem lesz megfelelő képessége. Éppen ezért a ciklusok témája az első akadály a fejlesztők képzésében.
Hasonló problémák merülnek fel más területeken is. Ha valaki nem tudja használni az otthoni eszközöket, akkor nem tudja kifejezni a mindennapi leleményességét. A rossz nyelvek azt mondják, hogy a kezek nem a megfelelő helyről nőnek. Az úton ez abban nyilvánul meg, hogy nem képes helyesen felmérni a helyzetet és választani a manőverezést. Ami néha tragikus következményekhez vezethet.
Következtetések:
- Az iskolai és egyetemi matematika arra van szükség, hogy megtanuljuk jobbá tenni a világot azokkal az eszközökkel, amelyek a rendelkezésünkre állnak.
- Ha tanulsz, és problémáid adódnak a ciklusokkal, próbálj meg visszatérni a gyökerekhez - a középiskolai algebrához. Vegyél egy 9. osztályos feladatgyűjteményt, és oldj meg belőle példákat.
Forrás: habr.com
