Hogyan jelentkezik a matematika a programozásban?
Programozásban abszolút nem szükséges.
A programozás csak ötletek megvalósítására jó. Egy eszköz, amit használhatnak vállalatok szép online felületek létrehozására vagy fizikusok bizonyos dolgot vizualizálására stb...
Területtől függően az "ötletek" tartalmazhatnak elég sok matekot, de maga a programozás nem matekos dolog.
Egy programozónak tipikusan abszolút nem kell matek, de azért érteni kell mit csinál, így bizonyos területeken vannak olyan programozók akik 1-1 témából felkészültebbnek kell lenniük, mert nem áll mellettük egy matematikus és fizikus, akik diktálja a képleteket.
Úgy jelentkezik, hogy minden program, amit gépen futtatnak, színtiszta matematika. Matematikai műveletek sora, adatokon. Ezek a műveletek, műveletsorok az esetek nagy részében, viszonylag egyszerűek, könnyen kivitelezhetőek.
De van sok olyan feladat is, ahol a megoldás időhöz kötött, vagy nagyon összetett. Előfordul, hogy mindkét állapot egyszerre áll be (pl. video/audio valós idejű enkódolása és megjelenítése). Ilyen esetekben a matektudás az egyetlen eszköz ahhoz, hogy használható produktum szülessen.
Ki használna szivesen olyan videó-lejátszót, ami percenként egy-két képkocka sebességgel tudná csak lejátszani a videókat?
Kinek lehetne eladni olyan tömörítő programot, ami random adathalmazon, átlagban csak 10:9 kompressziós arányt tudna felmutatni?
Mit érne az a titkosító algoritmus, amit hetedik osztályos nyasgem gézukák is fel tudnának törni, egy matek-óra alatt?
Mekkora élmény lenne egy olyan számítógépet használni, amin csak ilyen, matekból felmentett, php pistonkák gányolásai futnának?
Szerintem két dolgot fontos leszögezni.
Először is a "programozók" nem homogén tömegek akik mind ugyan azt csinálják. Egy frontend programozónak teljesen más készségekre van szüksége mintha valaki mondjuk egy operációs rendszert ír vagy pénzügyi modellekkel dolgozik(akár ML akár egyéb) vagy éppen milliónyi adatokat dolgoz fel vagy FPGA kat programozik. Egyértelműen egy frontend programozó viszonylag kevésszer fog középiskolás mateknál nehezebb dologba ütközni, ellenben big datanál elég fura ha nem tudod hogy mik az alap mátrixműveletek.
Másodszor a matematika tudás nem egyenlő azzal hogy te a munkahelyeden majd integrálgatsz papíron, ilyet nagyon nagyon kevésszer fogsz látni, ellenben nagyon hasznos tudni hogy mik a szabályai és mire is lehet felhasználni.
Pár példa:
-Diszkrét matek: halmazműveletek nagyon sokszor kellhetnek és nem véletlen hogy pl pythonban beépített műveletek ezek. De a gráfok is elég alapok, hiszen gondolj bele mit csinálsz ha végig akarsz mondjuk iterálni egy fájlstruktúrán, vagy fel szeretnél dolgozni valamit és szeretnél egy fa struktúrát építeni.
Vagy egy Karnaugh tábla felírása egy egy logika egyszerűsítéséhez.
-Kalkulus: Jeleknél, bizonyos adatoknál(pl pénzügyi adatok) bizony elő elő jön az integrálás és deriválás és mint mondtam a legtöbb esetben nem fogod ezt papíron csinálni, de tudnod kell hogy mi is történik és miért.
-Mátrixműveletek: Sok adat feldolgozása esetén fontos a sebesség, (mondjuk tesco szeretné tudni hogy milyen termékeket vásárolnak meg együtt az emberek) és van mondjuk több 10 ezer terméke az áruháznak, hogyan írod fel ezt vásárlónként hogy feldolgozható maradjon?
És jönnek a hasonló feladatoknál a fogalmak mint sparse mátrix, ortogonális mátrixok, transzponálás és egyéb nyalánkságok.
Visszatérve, nagyon erősen függ hogy milyen programozó is vagy, vannak területek ahol nem nagyon, de vannak olyan területek ahhol esszenciális a matektudás.
Nem kell elmenni a lineáris algebráig, analízisig, stb, elég csak abba belegondolni, hogy az, amit egy program (vagy alprogram, szubrutin, stb) implementál, az nem más, mint egy algoritmus, márpedig az algoritmuselmélet a matematika egyik ága.
Lásd még: [link]
Attól függ a programozás melyik ágában szeretnél dolgozni.
Hirtelen két példa jut eszembe, a webfejlesztéshez elég egy minimális matektudás, de ha mondjuk 3D játékok fejlesztésével szeretnél foglalkozni oda erős matek kell.
#4 Itt nem arról van szó hogy milyen végzettség kell a programozáshoz, hanem arról hogy a gyakorlatban, konkrétan a munkád során mennyire használod. Az pedig bizony attól függ hogy milyen területen vagy.
És attól hogy van papírod valamiről még nem jelenti azt hogy tudsz is valamit, ha átbukdácsolja valaki a matek tárgyakat az nálam nem azt tanusítja hogy elsajátította valaki azt a tudást és bármivel is többet tudna mint egy középiskolás.
Magában a programozási gyakorlatban a matematika csak elég korlátozottan jelentkezik a logikus és algoritmikus gondolkodás szükségességén, valamint a rengeteg programozési nyelvben előforduló közös adatszerkezeteken és programozási rutinokon keresztül: számszerű adatok, tömbök, listák, hash table-ök, elágazások, for és while ciklusok, ugrások, függvényhívások, öröklés, interfészek, stb.
Éppen emiatt bizonyos gyakorlattal egy abszolút nem matek agyú ember is képes magas szinten megtanulni programozni, hiszen végül is egy viszonylag szűkre szabott eszközkészlettel kell dolgoznia ahhoz hasonlóan, mint egy emberi nyelv esetén (ez utóbbiban persze sokkal több a nyelvi elem).
Ugyanakkor egy átlagos programozó matek tudás nélkül nem képes műszaki és tudományos célú szoftverek megalkotására, mert nem képes átlátni a működését.
" bizonyos gyakorlattal egy abszolút nem matek agyú ember is képes magas szinten megtanulni programozni,"
Ez az, amiben te tévedsz. Hatalmasat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!