Mennyire kell a matematika a programozáshoz?

Mennyire kell a matematika a programozáshoz?

Bevezetés

A legtöbb ember, amikor, vagy mielőtt nekikezd fejlesztői tanulmányainak, szembe kerül a fejlesztői rémítgetés kulcsmondatával „Ahhoz kell ám a matek is!”. Sokan emiatt a kulcsmondat miatt fordulnak el a fejlesztői hivatástól, mondván, hogy sosem voltak jók matekból, akkor meg milyen esélyekkel indulnának el egy ilyen területen.

Kétségtelen, hogy a számítástechnika, melynek részterülete a szoftverfejlesztés (aminek a programozás) már a nevében hordozza, hogy a matematika az alapja, ily módon tagadhatatlan, hogy valamilyen szinten biztosan szükség van rá.

A helyzet azonban koránt sem ennyire vészes lássuk is, hogy miért.

A nézetkülönbségek problémaja

Igazából a legtöbb esetben két alapvető probléma van akkor, amikor a matematikáról és annak szükséges ismereti szintjéről beszélünk, hogy akkor pontosan mi is kell a programozáshoz.

 

Kell-e a matek?

Milyen matek kell a programozáshoz?

Kezdjük a metamatematikával mindenféle ismereti szint nélkül. Nincs olyan szakma, tudományterület, amihez ne lenne szükség valamilyen szintű matematikára, hiszen még egy gyári rakodónak is ki kell tudnia számolnia, hogy mondjuk hány darab termék van egy raklapon egy egyszerű szorzással. Természetesen az egyes szakmák, tudományterületek teljesen eltérő mértékű és szintű matematikát igényelnek, nincs ez másképp a számítástechnika részterületeinél sem.

A ma használt programozási nyelvekben való kódolás alapvetően a matematikai logikára épít, melyben igencsak el kell mélyülnie annak, aki fejleszteni szeretne. Ami nagyon fontos viszont, hogy a matematikai logika (Boole algebra, kijelentés logika, [következtetés logika], predikátum logika) nem egyenlő azzal a matematikával, amit a legtöbben matematika alatt értenek, sőt olyan emberek, akik a matematika más területein nem tudnak kimagaslóan teljesíteni, sokszor a matematikai logikában teljesen otthonosan tudnak mozogni és igen magas szintre tudnak fejlődni.

Ennek az oka pedig igen egyszerű. Az emberek nagyrésze amikor a matematikát tanulja, elveket, szabályokat tanul meg és annak kiszámítási módját, de azt nem, hogy a való életben ezt hol fogja tudni kamatoztatni és ez unalmassá, illetve egyúttal érthetetlenné teszi számukra az anyagot. Azonban a programozás tanulása közben azonnal látszik is az idő közben elsajátított matematikai logika gyakorlati haszna, ráadásul a hibák egyértelmű módon jelentkeznek.

Nyilvánvalóan szükség van az alapvető matematikára is a különböző programok fejlesztéséhez, de az elvárt szintet legtöbb esetben rosszul ítélik és határozzák meg a legtöbben.

 

Kell-e matek?

Milyen szintű matek kell a programozáshoz?

A legnagyobb probléma, hogy aki most kezd neki ennek a szakmának nem tudja, hogy később milyen problémák fognak vele szembe kerülni és az majd milyen matematikai készséget fog igényelni, így adja magát, hogy megkérdez egy programozót erről, aki viszont nem ritkán egy-egy szegregált problémamegoldási eseten felbuzdulva hatalmas túlzással próbálja bebizonyítani, hogy bizony a programozásban, aki nem tud egy harmadrendű nyolcad fokú transzcendens differenciálegyenletet partikulárisan fejben megoldani az halálra van ítélve. Nyilván van olyan terület, feladat, ami igényli annak ismeretét és felhasználási módjának ismeretét, de ezt minimumnak beállítani nonszensz.

Kezdjük tehát azzal, hogy bármilyen szakmát, vagy tudományterületet is nézünk minden esetben elmondható, hogy bizonyos problémák megoldásához az adott területen belül magasabb szintű matematikára van szükség. Az előző logikán elindulva azt is mondhatnánk, hogy addig amíg egy kőműves tanuló nem képes differenciálegyenleteket megoldani, nem lehet kőműves, mert akkor mégis, hogy számolná ki, hogy az általa felépített épület milyen környezeti hatásokkal milyen rezonanciába fog lépni. Az utóbbi probléma megoldása az épületgépész és statikus feladata, nem a kőművesé. Tehát habár megfelelő nagyságú és struktúrájú építmény esetén elengedhetetlen a megfelelő mélységű matematika alkalmazása, de nem mindenki felhőkarcolót és hidat fog építeni, vagy ha mégis ilyen probléma elé kerül, akkor majd akkor utánajár, hogy az milyen plusz problémák megoldásával jár…

A másik oldala ennek a problémának, hogy a programozó „ninja”-k, közülük is főként azok, akik nagyon büszkék arra, hogy szakirányú egyetemet végeztek, próbálják az egyetemen beléjük erőszakolt és azóta jó, ha egyszer felhasznált matematikai tudást minimumnak beállítani (tisztelet a kivételnek, mert van). Ebből adódóan próbálják azt a képet fenntartani, hogy bizony egyetemi matek nélkül ebben a világban lehetetlen megmaradni. Természetesen ahogy már előzőleg az építészet esetében a szoftverfejlesztésben is lehet nem egy olyan területet mondani, ahol nagyon mély matematikai tudásra van szükség, hogy ott valaki labdába rúghasson, de megint csak ugyan ezt a példát tudom felhozni „nem mindenki felhőkarcolót és hidat fog építeni”, tehát amikor egy fejlesztő azzal riogat, hogy a matematika megfelelő ismerete nélkül kár is nekikezdeni a tanulásnak, akkor abban egyrészt van egy „te is szenvedd végig amit én”, azaz arra vezetnek rá, hogy tessék elmenni felsőoktatási intézménybe és ott megtanulni a programozást és a matematikát, másrészről egy beszűkült látókör, mert ha egy kicsit szélesebbre nyitná a szemét látná, hogy a programozásban millióegy olyan terület van amit a már említett matematikai logika, és a középszintű tanulmányokban elsajátított matematika segítségével minden probléma nélkül megtanulható, felhasználható.

Azonban, hogy ennek a gondolatmentnek kiemeljem a legfontosabb hibáját egy egyszerű példán keresztül: Nézzük meg, hogy hány meg hány sikeres szoftver startup indult el úgy, hogy a mögötte álló emberek sokszor még középiskolai tanulmányaikat sem fejezték be, amikor lefejlesztették a szoftver első változatait. Ez az előzőekben felvázolt minimumok alapján fizikai lehetetlenség lenne, mégis nem egy, nem kettő ilyenről hallhattunk már.

 

Kell-e a matek?

Konklúzió

Tehát a jelenlegi állás a következő okokból alakult ki summázva:

  • A mai programozást a matematika egyértelmű részhalmazának kezeljük, így egyértelmű, hogy minden, ami ahhoz kapcsolódik, vagy annak részterülete az mindenképpen magas szintű matematikát igényel, pedig ez mára már teljesen fals elgondolás. Millió olyan részterület van még a programozáson belül is ami középszintű matematika tudással gond nélkül végezhető.
  • Az újonnan belépők nem tudják, hogy mire kell számítani később és a sztereotípiák alapján a programozást mindenki szorosan a matematikához köti.
  • Az „öreg rókák” próbálják az eddigi legnehezebb, vagy nagyobb nehézségű feladataik alapján úgy beállítani az iparágat, hogy komoly matematika nélkül lehetetlen elhelyezkedni benne. Mindemellett azt is fontos megemlíteni, hogy a legtöbb ebben a témában megszólaló fejlesztő általánosan kijelenti, hogy mire van szüksége annak, aki beletanul ebbe a szakmába, de azt figyelmen kívül hagyja, hogy a szoftverfejlesztés nem homogén szakma, ennek megfelelően nem ugyan az a tudásszint szükséges az egyes részterületeihez.
  • Nem ritkán az is előfordul, hogy a már régóta fejlesztőként munkálkodó emberek valójában nem tudják, hogy pontosan mit fed le például egy érettségi tematika matematikából. Nem egyszer olvastam olyat, amikor egy programozó mondjuk egy bináris osztást, alapvető egyenlet megoldást és vektor alapműveleteket sorol a magas szintű matematika kategóriájába, amikor példákat hoz, hogy ezeket meg kell tudni oldani. Lehetséges, hogy az adott fejlesztők felsőoktatási intézményben találkoztak először ilyen problémák megoldásával, de ez már a közép szintű matematika érettséginek is anyagát képezi.

Összegezve, nem állítom, hogy a szoftverfejlesztésben nincs olyan feladatkör, részterület, amihez nagyon mély matematika, vagy a matematika speciális területei kellenek, sőt, lehetséges, hogy általánosan véve ebben a tudományágban nagyobb arányban fordul elő ilyen feladat, mint általánosan más tudományágakban. Az is egyértelmű, hogy mivel a számítástechnika tudományára épít, így az alapját a matematika (egy részága, a matematikai logika) fogja meghatározni. Azonban azt állítani, hogy aki nem ismeri a matematika magasabb szintű területeit, abból nem válhat programozó az átverés és aki ezt állítja általában beszűkült látókörrel, csak a saját problémáiból kiindulva, nem ritkán túlzással jelenti ezt ki. Mindemellett fontos kiemelni, hogy a fejlesztőknek a legfontosabb erénye manapság főként a magasszintű probléma megoldási hatékonyság, ha egy jó probléma megoldó egy problémába ütközik, legyen az matematikai, elvi, vagy bármilyen más, akkor azt relatív gyorsan fogja tudni orvosolni a megfelelő módon.

Így összességében, akit eddig az tartott vissza a fejlesztői hivatástól, hogy a matematikában nem penge, nyugodtan kezdjenek neki a tanulásnak. A nyitottság az újra, kitartás, a kreativitás, a folyamatos gyakorlás és a motiváltság fontosabbak, mint a parciális integrálás elméletének ismerete.

 

 Elmélyülnél a programozásban? Jelentkezz programozás alapismeretek képzésre!

Oszd meg barátaiddal is!

Facebook Instagram Linkedin