Mennyire kell a matematika a programozáshoz?

Címkék

Állandó vita tárgya, hogy a matematika és a programozás között mekkora az összefüggés. Csak erős matematikai hajlammal lehet valaki programozó, illetve a jó matekosból jó programozó is lesz?

Semmi szükség a matematikára
3% (37 szavazat)
Néha jól jöhet, egyébként lényegtelen
11% (126 szavazat)
Egyes területeken fontos (pl mesterséges intelligencia, titkosítás, 3D grafika), máshová nem kell
36% (403 szavazat)
Általában kell, bár néhány területen (pl weboldalak) el lehet lenni nélküle
27% (299 szavazat)
Az informatika alapja a matematika
21% (235 szavazat)
Egyéb, leírom
2% (23 szavazat)
Összes szavazat: 1123

Hozzászólások

Matematikai logikára, arra szükség van. Amúgy meg java backend fejlesztőként még a középiskolai pitagorasz tételt sem kellett soha használnom, nemhogy az integrálását vagy deriválást vagy más műszaki informatikai dolgot.

Megfogtad a lényeget. Nagyon sok fejlesztő észre sem veszi egy feladatnál, hogy matematikai problémával áll szemben, aminek van szépen kidolgozott elmélete és megoldása. Ehelyett elkezdenek saját kútfőből béna függvényeket írni az éppen eszükbe jutó részhalmazok lefedésére, amit tovább bővítenek pár nap múlva újabb ötletekkel és a végeredmény valami tákolt, kezelhetetlen cseppet sem időtálló förmedvény lesz.

Igen, a matematika nem azért volt sose a közoktatás része mert baromira ki kell tudni számolni a szinuszfüggvényt, hanem mert az tanít logikusan meg absztrakcióban gondolkozni.

Aki nem tud absztrakt fogalmakban gondolkozni, annak nem csak a programozás (egy komolyabb keretrendszerben), de pl már egy atlassian Jira beállítása is komoly kihívás lehet

(próbálj meg hozzá új kötelező mezőt adni... ugye a kötelező mező egy sajátmező, ami a mezőkonfiguráció miatt kötelező azokban a projektekben ahol a mezőkonfigurációs séma érvényes, de ettől még be kell állítanod a képernyőket is..)

amúgy múltkor volt egy általános iskolás feladat, hogy ha hétköznap 20.000 ft a hotelszoba, hétvégén 25.000 akkor ha csütörtöktől hétfőig vagyunk mennyit fizetünk, mondja ismerős, ez nem életszerű. Én mondom: nemondmár, hát tényleg így számoljuk a hotelárakat, én magam írtam az egyik nagy rendszerben az algoritmust, mire ő: pont ettől nem életszerű! Hiszen te kiszámolod, velem csak a napi átlagárat közlöd!

azaz az informatika eldugja a matematikát az emberek elől, de ehhez azért a csinálásához kell a matek.

Ezt senki nem is vitatja szerintem. Itt azon folyik a vita, mennyire kell „absztraktul” gondolkodnia a programozónak. Szerintem annál magasabb absztrakciós szint mint amire a gimnáziumi matek szoktat minket, egy programozónak nagyon ritkán kell. Ha mégis, többnyire úgyis adnak mellé egy kifejezetten matematikai szakot végzett valakit...

Konkrét példa. Az egyetemen nagyjából azzal kezdik, hogy elmagyarázzák, mi az hogy „program”. Az ugye a jó professzorok szerint „egy útvonal a probléma által reprezentált többdimenziós állapottérben”...

vagy valami ilyesmit mondanak, remélem nagyjából jól idéztem. És én ezt értem is,és belátom hogy lehet a dolgokat így szemlélni. DE MINEK?!

Soha nem volt szükségem erre az elvontságra, még most se amikor a saját programnyelvemet írom. Számomra a program nem egy „útvonal” amikor írom, hanem a programozói munkámat úgy tekintem, hogy van a számítógépnek bizonyos elemi utasításkészlete, ezekből komplexebb utasításokat tudok gyártani - utóbbiak neve függvények, szubrutinok, eljárások, stb - és ezt addig folytatom amíg el nem készül az a konkrét egyetlen, nagyon komplex utasítás ami megoldja a feladatot: ezen utasítás neve maga a PROGRAM, az adott feladatra!

Vagy tekinthetjük fodítva is: a problémát lebontogatom amíg az egyes részek komplexitása annyira lecsökken, hogy mindegyik részre van már a számítógépemben elemi utasítás, vagy valami komplexebb utasításcsoport amit korábban megírtam én vagy más (library például).

Számomra egy program tehát mindig valamiféle utasítások összessége, halmaza. Nem egy „útvonal” valamiféle „állapottérben”.

Ismétlem nem tagadom, a professzorok definíciója is igaz. Épp csak marhára semmi haszna a gyakorlatban ekkora hihetetlen absztrakciónak!

Most mondható, túl gyakorlatias vagyok... lehet. De nem is elméleti matematikus a szakmám...

Obsessed commandline-maniac.

Azt hiszem azok akik az örökmozgón vagy az ingyen energián dolgoznak, hasonlóan gondolkodhatnak. Ugyanis, ha az ember nem ismeri az általad is idézett definíciót, akkor hajlamos lehet felesleges utak bejárására. A logikus gondolkodásunk nem a semmiből jön. Aki szerencsés az megkapja a szüleitől (gének+nevelés, példamutatás) és amikor az ilyen illető találkozik a matematikával, akkor kvázi az anyanyelvén szólnak hozzá. Aki meg nem, az az elején megszenvedi, de később ugyanannyi az esélye, hogy megtanuljon gondolkodni.

Amikor portolnod kell obskurus platformokról (pl Delphi vagy COBOL) valami modernebbre (pl web), vagy egy problémát valami obskurus keretrendszerben kell megfogalmaznod (most épp BPMN, de van, hogy SAP, salesforce és barátaik), akkor ezek a definíciók baromi jól jönnek.

Pont a héten megkérdezték, hogy hogy tudom lendületből portolni az ótvar házibarkács toolokat laza mozdulattal androidra úgy, hogy az használható maradjon annak is, aki az eddigi cuccon nőtt fel, meg annak is, akinek csak Android ismeretei vannak, nos annak pont ez az alapja.

Gondolom backend fejlesztőként már legalább egyszer leírta SQL-ben a Joint. Ilyenkor eszébe jut a halmazelmélet? Vagy felhasználók csoportos kezelése esetén a kombinatorika? Vagy a gráf elmélet és még sorolhatnám. Aki ilyet leír, hogy soha nem volt szüksége még a középiskolai matematikára sem, arról jobban el tudom képzelni, hogy egyszerűen nincs meg a készsége arra, hogy a matematikát a gyakorlatban észrevegye egyáltalán. Nemhogy alkalmazza is. És ekkor jönnek a felesleges körök, meg a de f.szán kitaláltam valamit érzés egy évszázadok óta megoldott probléma kapcsán.

Azt lehet, hogy nem kell, bár lehet van olyan rendszer, ahol ez jól jön, de tuti nem mindennapi feladat. De mondjuk a relációs algebrával érdemes tisztában lenni, ha adatbázisokkal foglalkozik az ember, főleg, ha non-sql adatbáziskezelőt használsz, de gondolom a relációs adatbázisoknál is egyértelmű, hogy miért. Sokat tud segíteni, pl az adatbázis szervezésénél mondjuk.

A feladattól erősen függ, hogy mennyi matek kell hozzá.

Szerkesztve: 2020. 04. 10., p - 11:56

Amennyiben a kreatív és logikus gondolkodást matematikának nevezzük, akkor elengedhetetlen.
Különben meg a faladattól függ, hogy az mennyire igényli a matematikai megközelítést. Azért a négy alapművelet általában szükséges.

Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox

A matematikusoknak csináltam külön programozási nyelveket :) Néhány speciális terület van, ahol matematikai probléma megoldása is a fejlesztés része.

Ahol sok múlik a pontos számításon, ott az üzleti logika része az is, hogyan kell valamit kiszámolni. Nem a kódoló fogja kitalálni, hanem a business analyst mondja meg, hogy mit kell használni. 

Kell e a grafikus designernek tudni jól rajzolni? (Szvsz nem kell, de sokat tud segíteni.)

Nehéz belátni, de programozáshoz egy olyan mindset kell, ami nagyon (de tényleg nagyon) idegen a hétköznapi élethez szükséges "józan paraszti észtől". Nem véletlen, hogy a jó programozók a hétköznapi életben gyakran bénázó fehérzoknisok, nem teljesen alaptalan a sztereotípia. Hogy ez mennyiben "matematika", azt nem tudom, de szerintem nem pont ugyanaz, csak hasonló. 

Ez jó példa volt. Bátran mondhattad volna azt is, hogy a tehén tejet ad mégsem kell megtanulni fejni.

Viszonylag hamar belefutottam, hogy kell matekozni programozáskor, mikor nem vált el a backend a frontendtől (80-as évek). Azóta is előfordult nem egyszer. Nagyon nem árt, ha az ember képben van.

"...olyan mindset kell, ami... idegen a hétköznapi élethez szükséges "józan paraszti észtől"..."

Hát ahol a "hitelkárosultaknak" egyesületük van, mert a kamatos kamat és a deviza árfolyamok törlesztőrészletre gyakorolt hatása már nem tartozik a józan paraszti ész kategóriájába, ott valóban igaz az állításod :-(

Mondok egy ellenpéldát, ami való életből ellesett, nem kitaláció:

Huszonvalahány éve megpróbáltak behúzni egy pilótajátékba, ami 'fogyasztói klub' és MLM érdekes zanzája volt. Elvittek egy bemutatóra olyan ismerőseim, akik mélyen hittek a modell működésében. A megmondóember hosszan ecsetelte, hogy micsoda fantasztikus ez az egész, életre szóló karrier lehetőség, és a többi bullshit... Mellékesen megemlítette, hogy a MLM hálózatban mindenki maga alá két embert szervezhet be, és azok is fejenként két embert, és így tovább. Természetesen a magam alá "épített" hálózat bármelyik tagját támogathatom, sőt!

Végiggondoltam magamban, hogy ez gyakorlatilag egy bináris fa, a 2 hatványai kiadják, hogy hányadik szinten hány ember van beszervezve. Meg is kérdeztem a fickót, hogy ez a hálózat most hányadik szinten van, és mennyi idő alatt jutott el eddig. Láttam a szemén, hogy nem örül a kérdésnek, de végül kinyögte.

Mikor kijöttünk, mondom a többieknek, hogy ez a hálózat kb. 12, de maximum 18 hónap alatt bedől, mert eljut addig, hogy már nincs kit beszervezni. Nem értették. Röviden vázoltam, hogyan lehet megállapítani, mennyi a kifutása ennek, és mivel már felettünk x szint van, felesleges belépni és pénzt fektetni bele, mert mint minden piramisépítő pilótajátéknál, itt is csak azok nyernek, akik az elején lépnek be, és a hálózat legfelső szintjein vannak.

Nem tudtam őket meggyőzni, és másfél év múlva valóban bedőlt a rendszer, néhány szervezőt meg is csípett a yard, a cimboráim meg futhattak a pénzük után.

Pls. def. matematika:

- halmazelmélet, trigonometria, boole-algebra, trigonometria

Pls. def. programozás:

- html, js, java...

 

Matematika első osztály:

fehér kocka = 1

kék kicsi téglatest = 2

rózsaszín kicsi téglatest = 3

fehér+kék = ???

Szerkesztve: 2020. 04. 10., p - 12:19

igen, elvont - absztrakt gondolkodást - eddigi ismereteim szerint csak a matematika fejleszti.

talán még a szerepjátékok, társasjátékok, kártya játék...

manapság egyiket se teszik (vannak kivételek)..

talán még a szerepjátékok, társasjátékok, kártya játék...

Szerintem ezek mödött mind komoly matek van, aki próbált már bármi ilyet csinálni csak úgy intuitíve, az hamar rájön, hogy matek nélkül az eredmény vagy nagyon unalmas lesz, vagy random kezdeti előny hamar behozhatatlanná válik, és az is tönkreteszi a játék élményt. Azt tudom, hogy a legjobb társasjáték fejlesztők komoly matekos stábot alkalmaznak.

A legkülönfélébb helyzetekben bukkanhat fel a matematika, sokszor teljesen váratlanul. Pl. vannak metrikáink amik exponenciálisan súlyozott mozgóátlagok (lásd: load average), egy ilyen metrikához kellett beállítani egy olyan hibaküszöböt amit a metrika egy adott számú hiba felett lép át egy adott időszakban.

Vagy említhetném az implikációt, ami rendszeresen felbukkan, és mindenképp előny ha az ember ránézésre felismeri egy ¬ A ⋁ B kifejezésből.

A UI design-t ki lehet szervezni, de egy if után következő feltételt ugyan milyen alapokon lehet összerakni (pláne hatékonyra)? Hogy egyesek ezt józan paraszti észnek hívják, másokat meg szivattak matekórán, attól ez a témakör még matematika.

A matematika eléggé nagy területet fed le. Analízis, kalkulus, topológia, geometria, logika, bizonyításelmélet, csoportelmélet, gráfelmélet, algebra, kategóriaelmélet, számelmélet, kombinatorika stb.,

Ebből sok olyan, ami annyira absztrakt, hogy nem igazán használod sehol, amikor szoftvert készítesz.

 Viszont a matematika önmagában nem más, mint a szigorú logikus gondolkodás használata. Azt, hogy ezt számokra, geometriai objektumokra vagy éppen gráfokra alkalmazod, más kérdés. Ez a része a matematikának elengedhetetlen a programozáshoz. Logikusan gondolkodni tudni kell.

Rengeteg informatikai eszközzel megvalósuló dolognak matematikai az alapja. Például a modern asszimetrikus kulcsú titkosírás vagy éppen számelmélet alapú (pl. RSA), vagy  csoportelmélet  (diszkrét elliptikus görbéken végzett műveletek és inverzei - elliptikus görbe alapú titkosírás).

A 3D játékok számításainak nagy része tiszta lineáris algebra. Ha hozzáveszed a renderelést, az már matematikai optika.

A térképészeti szoftverek magja projektív geometria.

A fizikai mérések kiértékelésének vagy a gépi tanulás magja  matematikai statisztika.

És akkor még nem beszéltünk az algoritmuselméletről, helyességbizonyításról, formális nyelvekről.

 

Az alkalmazott  matematika ugyanis nem más, mint a világban lévő folyamatok és dolgok közötti kapcsolatok formális (absztrakt) leírása, hogy következtetni, számolni lehessen belőle. És ezen következtetéseket, számolásokat gép végzi. Amely gépnek a programozó mondja meg, hogy mit csináljon.  

Rengeteg helyen el tudsz persze lenni matematika nélkül (UI építés, stb), de ha nem érted a mögöttes matekot, akkor rengeteg kulcs backend funkcionalitást nem tudsz leprogramozni rengeteg szoftvernél. És ezt a matekot érteni kell.

Azért nem teljesen. Kalkulus alatt a valós és komplex differenciál és integrálszámítást és a hozzá szorosan kapcsolódó dolgokat szokás (sorozatok, határérték, folytonosság, sorok stb.) érteni. 

 Az analízis jóval komolyabb dolgokat felülel ezen felül. Például mértékelméletet, analitikus függvények elméletét, topologikus tereket, funkcionál-elméletet, differenciálegyenlet-rendszereket, variációszámítást, nemsztenderd analízist (hipervalós számok), stb.

A kalkulus nem csak az angol neve. Nagyon régi magyar matematikakönyvekben is szerepel magyarul kalkulus néven, persze kevésben, mert ekkoriban a komolyabb könyveket még inkább latinul írták, meg a nagyobb matematikusok is latinul publikáltak. Mondanom sem kell, hogy ők is calculusnak hívták latinul.

Igazából ugyanazt jelenti, csak az analízis modernebb név, angol nyelvterületen is ismerik ilyen néven, csak inkább a calculus szokásosabb helyette. Kb. mint a távbeszélő meg a telefon elnevezés.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

" Amely gépnek a programozó mondja meg, hogy mit csináljon. "

a programozónak pedig az üzleti logika felelőse mondja milyen műveletet programozzon le :)
Hamar kiderült, hogy a "matematika" kifejezés kb értelmetlenné teszi a kérdés, ha azt bármilyen matematikára értjük. Amúgy meg lehet a kozépiskolai mateknak is csak kis részét kell aktívan "kitalálnia" a programozónak. Ahol komoly matektudást kell előadnia, ott vagy ő a mindenes vagy valami speciális terület, szerintem. Szerintem azért is annyira ellentmondásos az emberek véleménye erről, mert egyesek olyan csapatban dolgoznak, ahol minden területnek megvan a felelőse, míg mások szuperhősök :D

Nem az a lényeg, hogy új matekot kell tudnia kitalálni. Szerintem ezt programozóktól sehol nem kérik. Hanem azt kérik, hogy értse, hogy mit csinál. Hogy mit jelentenek a fogalmak, amikkel dolgozik és a fogalmak között milyen kapcsolatok vannak.

Amikor üzleti szoftvert csinálunk (mondjuk jogszabály alapú számítást/nyilvántartást, valamely üzleti folyamatot támogató nyilvántartást), akkor is jó, ha a programozó érti, mi az a THM, mi az az ÁFA stb. Nem kell tudnia, hogy mi mögötte a politikai/gazdasági ok (mi a mögöttes matematikai elmélet, ha matematikára vetítjük), de értenie kell, hogy mit jelentenek ezek a fogalmak.

Hiszen például meg kell írnia a teszteket rá, modelleznie kell, adatstruktúrát kell építenie (ehhez ismernie kell az üzleti fogalmak közötti kapcsolatokat), stb.

Az üzleti elemző nem fogja átnézni a tesztkódot meg az UML ábrát, hogy tényleg jól modellezte-e a gép számára is érthető struktúrákba a valóság elemeit.

Szerkesztve: 2020. 04. 10., p - 16:05

Én egész életemben bukdácsoltam matekból. Soha nem értettem, soha nem tudták megtanítani. Teljesen logikátlan zagyvaságnak tartom a mai napig.

Ellenben infóból mindig kitinű voltam. Sosem felejtem el az egykori infó tanárom képét, amikor meglátta a naplóban, hogy egy tucat matek 1-esem van, infóból meg csak 5-ös. Nem értette hogy lehet ez...

És valóban, a programozást mindig is tök egyszerűnek, logikusnak tartottam. De nem csak azt, hanem kvázi magát a számítógépet, annak működését. Az egész cucc 0-ból és 1-esekből áll, van adat vagy nincs adat, van áram vagy nincs áram. Minden további erre a két állapotra épül.

Mára már egy tucat programozási nyelvet ismerek. Saját processzor is építettem, saját assembly nyelvvel, fordítóval, stb... Szóval jól vágom az elektronikát, mert az is egyszerű szerintem. De a matek...
Ha valamit számolni kell, akkor inkább szólok páromnak! Néha azt sem tudom valaminek az x %-át hogy számoljuk ki, vagy hasonló "alap" dolgok. Hiába mondják el, nem jegyzem meg, nem is értem, nem látok mögötte logikát. Kettes számrendszerben is jobban tudok számolni mint tizedesben, mert ott azért van logika mögötte. Az egész számítógép egy tök logikus dolog, a programozással együtt. 

Sokan azt mondják a matek is logika, de én mégsem láttam meg benne soha. Nekem zagyvaság az egész.

Velem egyetemen utáltatta meg a sok elvont szobatudós figura, de pl a mest.int.-et szerettem, pláne a gyakszit. Igaz csak keresőalgoritmusok és heurisztikák voltak, de akkor is. A nummat is jó volt, amíg nem a bizonyításokkal szivatott a túrótorta király.

Amúgy matematikai logikát minden kódmunkás használ vagy érdemes használnia.

Szintén zenész.

Sosem értettem a matekot. Vannak részei, amik jobban mentek, de alapjában véve sík hülye vagyok hozzá. Középsuliban bukdácsoltam belőle, nappali képzés egyetemen vagy főiskolán emiatt elérhetetlen lett számomra. Aztán egy tanfolyamon levelezőn végigküzdve - főleg a matek miatt - végül meglett a papíros a programozó végzettségről. A szakdogám témája egy egyszerű BASIC interpreter volt, assembly-ben. (Amihez ugye emlékeim szerint pl szintaxis gráfokat is kellett csinálnom. Sikerült, de ne kérdezzétek.) Ez volt az utolsó komolyabb kód, amit írtam mert akkoriban a következő lehetőségek voltak a szakmában: lehetett választani, hogy számlázó, raktárkezelő, vagy könyvelő szoftvert fejleszt az ember. Így hagytam a szakmát, azóta is rendszereket terelgetek.

Feleségem elég penge matekból, tetejében alkalmazást fejleszt. (Nem érti, hogy ha valaki tud programozni, az nem indukálja azt, hogy érti is matekot. Ezen sokat vitatkozunk, mert nem képes felfogni, hogy én tényleg hülye vagyok hozzá. Szeretné elérni, hogy újra programozzak. Nem tudom vele megértetni, hogy az a vonat már elment. Ha fogok is valaha maximum hobbiból.) A kollégái szintén pengék. De amikor szakmáznak és ott ülök közöttük folyton az az érzésem van, hogy "a fizikus villanyt szerel". Biztos nagyon pengék elméletből, de borzasztó szakmunkát csinálnak. (Bocsánat, nekem a programozás részben szakmunka.)

Az egész cucc 0-ból és 1-esekből áll, van adat vagy nincs adat, van áram vagy nincs áram. Minden további erre a két állapotra épül. Ez így nagyon erős sarkítása a dolgoknak.

Szóval jól vágom az elektronikát, mert az is egyszerű szerintem. Az elektronika tömény matek, amiről beszélsz az nem elektronika. 

+sok, egy nyüves szakaszoló (olyan kapcsoló, amit terhelés alatt nem is kapcsolgathatunk) méretezésénél is egy halom dologgal kell foglalkozni, számolni, valamint digitális áramkörök sem simán boole algebra, vannak mindenféle hibajelenségek, hazárdok, és a digitális áramkörök elektronikus illesztésénél is lehet számolgatni, ésatöbbi...

Mindenesetre egy kész számítógépes infrastruktúra nagyban megkönnyíti a programozók életét, ahhoz képest, ha pl ttl áramkörökből kellene huzalozni, de még így is marad matek számukra is, pláne ha gyors és optimális kódot szeretnének írni.

Ha arrol a matekrol van szo amit a suliban tanultam, akkor az elmult 20+ evben sosem volt ra szuksegem. 

IMHO a programotok toredeke ir crypto fuggvenyeket. En is inkabb meghivtam az OpenSSL -t es jonapot. Jatek grafikus motort sem tervezek irni. Jozan eszre mindig szukseg volt, de matekra csak annyira mint a nyelvtanra. Az altalanos iskolai szint elegendo a programozo tarsadalom tulnyomo reszenek.

Ami fontos vagy bonyolult vagy kritikus, arra mar van lib, en legalabbis mindig talaltam megfelelot. Persze aki a libet irja, annak kelleni fog. De ha egy libet megir egy ember es hasznalja ezer, akkor kozel egy ezrelek a matek tudas szuksegessege.

Valóban, mindennek az alapja a matek, ez cáfolhatatlan igazság!

Sajnos azonban olyannyira alapvető igazság, aminek semmi köze a topiknyitó kérdéséhez. Mert ugye egy hasonlattal élve, az érzelmeinket a hormonok szabályozzák, de ahhoz hogy egy csinos nő érzelmeit magad felé próbáld fordítani néminemű udvarlás által, ahhoz még nem okvetlenül kell belgyógyásznak lenned és részletesen tanulmányozni az illető nő endokrin rendszerének működését...

Mondom ezt annak ellenére hogy nagyon szeretem és tisztelem a matematikát. Szerintem kifjezetten jó, ha egy programozó minél több matematikát tud!

Mindazonáltal, ha jó is, de nem okvetlenül szükséges neki... Mármint, a bool-algebrával azért legyen tisztában. A számrendszerekkel is, főleg a kettessel és tizenhatossal. Ami ennél több, jó ha van, de a legtöbb esetben nem létszükséglet.

Én valahogy úgy vélem, a programozó képes kell legyen elvontan gondolkodni, de nem szükséges neki olyan absztrakciós képességekkel rendelkezni, mint egy „igazi” matematikusnak! Másrészt, ez azért jobban kell menjen neki, mint egy mérnöknek...

Azaz, a programozó ilyen téren szerintem a mérnök és a matematikus közt áll. Ugyanakkor azonban a programozónak nagyobb érzéke kell legyen a „rendszerekben” gondolkodáshoz mint egy matematikusnak, de kevesebb mint egy mérnöknek...

Szóval a leggyakorlatiasabb a mérnök, a legelvontabb a matematikus. Egy programozó akkor jó, ha lehetőleg pont e kettő közt áll. (talán egy picit közelebb a mérnökhöz).

Obsessed commandline-maniac.

Ha csinálni akarod az informatikát, akkor nem kell a matek, ha érteni akarod, akkor kell a matek.

Hozok pár vad példát (a linkek random linkek a matematika azon területéről, aminek köze van az adott problémához, feltűnően sok esetben olyan karakterekkel, amit sokan kiolvasni se tudnak):

Nyilván lehet ezt mind csinálni úgy, hogy fogalmad sincs a matekról, mert vannak minták, amit megjegyezhetőek, és a problémák többségénél megoldásra, sőt sok esetben optimális vagy optimálishoz közeli megoldásra vezetnek.

(Disclaimer: közepesen értek a matekhoz is meg az informatikához is. A felsoroltak közül kb. a felének értem a matekját, cserébe az informatikai részek közül mindegyiket csináltam már.)

Életemben egyszer szégyelltem el magamat nagyon az egyetemen hogy nem értek a szabtechhez, amikor megkérdezték hogy mégis hány IIS szerver kell ennyi és ennyi kérés kiszolgálásához... és akkor talán Hassan, de lehet valamelyik (akkor még) doktorandusz felrajzolt egy baromi nagy integráljelet (Elosztott rendszerek órán, a diplomatémám is abból volt), hogy “hát ez baromi egyszerű, egy szabtechképlet...”

lehet hogy van köze ahhoz hogy nem értek a szabtechhez hogy mindig a lazacok szaporodásával akarták elmagyarázni, nem pedig szerverek skálázásával... pedig mai napig tudnék mondani olyat, akinek jól jönne...

lehet hogy van köze ahhoz hogy nem értek a szabtechhez hogy mindig a lazacok szaporodásával akarták elmagyarázni, nem pedig szerverek skálázásával...

Biológus kutatóknak nagyon kellenének a lehető legalaposabb statisztikai ismeretek. Sajnos, a biológus statisztika oktatást mindig valszámmal kezdik és kockadobálással magyarázzák, ezért a biológusok tipikusan nem értenek a statisztikához. Lehet, ha ott használnák a lazacok szaporodását, és a programozóknak a kockadobálást, akkor jobban menne előre a világ...

Nekem most az az egyik karantén projektem, amire most van időm, hogy átnézem a matek jegyzeteket és kicserélem a példákat olyanra, ami megfogja az informatikusokat. Hogy ne csak az legyen, hogy milyen jók a komplex számok, hanem elmondani, hogy IT-ben mire is lehet használni, hogy mittudom én a leghaszontalabb felhasználás, ha kombinálod sorozatok határértékével, akkor nagyon szép kis Mandelbrot halmazt lehet rajzolni, de jol jön Fourier Transzformáció megértésénél, ami mondjuk jpg tömörítés alapja, ebböl következik a jelfeldolgozás, Robotikai problémák. Pl ha komplex számokat lineáris algebrával kombináljuk, akkor Lyapunov "1. módszere" alapján meg tudjuk állapítani egy rendszerről, hogy stabil-e. Valamint ez a kombó nagyon jól jön mondjuk a quantum számítógépek megértésénél, programozásánál. Szóval elvagyok ezzel a projektel, rendszerint valami nem tul gyórs stratégiai játék közben szoktam ezeken agyalni. :) 

Azért azon el szoktam gondolkozni, hogy ebből vajon mi az ami

  1.) általános szoftver kódolói szint  --> ide végülis elégséges lenne egy frankó szakgimnáziumi képzés. Ez tuti jobb, mint a mai 3 hónapos gyorstalpaló.
  2.) általános szoftver tervezői szint
  3.) specialista tervezői szint

Én abben látok nagy problémát, hogy gyakran a főnök nem látja át a dolgot (nem ért hozzá) és végül a mezei kódolót bízza meg tervezői szintet igénylő feladattal. Aztán csodálkozik, hogy a "programozó" nem tudja leprogramozni.
A legjobban tetszik, amikor egy szervertermi áramszünethez informatikust rendelnek be, hogy aggregátorozzon. Mert hát szerverterem, tehát informatika.

En is orulnek annak ha a tanarok sokkal modernebb modszerekkel es modszertannal, gyakorlatorientaltan tanitananak, mert a legtobb szakerto tanarnak lovese sincs a pedagogiai modszertanokrol es hogy akkor marad meg valami jobban ha kotjuk egy gyakorlati dologhoz.

Engem pl ez akadalyozott meg abban hogy jobban megszeressem a matekot, es te egesz erdekesen ta'laltad a kulonbozo teruleteket.

Még egy aspektus.

Van egy robotod. Három dolgot tud csinálni: 1) balra fordulni 90 fokkal, 2) egyet előre lépni 3) megnézni, hogy van-e előtte fal. Oldd meg a következő feladatokat:

  • Fordítsd el a robotot jobbra 90 fokkal!
  • Menj végig a robottal az L alakú folyosón!
  • A robot egy 3x3-as szobában van és északra néz. A robotnak adott utasításokkal, és a megnézések eredményével találd ki, hogy melyik mezőn áll!
  • A robot egy 101x101-es labirintusban van a középső mezőn és északra néz. A labirintus térképét ismered. Juttasd ki a robotot a labirintusból.

Ezekhez eddig nem kell matek.

  • A robot egy 101x101-es labirintusban van a középső mezőn és északra néz. A labirintus térképét nem ismered. Juttasd ki a robotot a labirintusból.

Ehhez már talán kell.

  • A robot egy 1000001x10000001-es labirintusban van a középső mezőn és északra néz. A labirintus térképét nem ismered, de tudod, hogy a kijárata északon van a középső mezőn. Juttasd ki a robotot a labirintusból minél kevesebb lépésben.
  • A robot egy 101x101-es labirintusban van a középső mezőn és északra néz. A labirintus térképét nem ismered, de tudod, hogy a kijárata északon van a középső mezőn. A robot tud még egy dolgot ebben a körben: egy bombát tud felrobbantani, ami körülötte egy 3x3-as területen lerombolja az összes falat. Juttasd ki a robotot a labirintusból minél kevesebb lépésben.

Ezekhez sok sikert matek nélkül.

Ugyanez a komplexitásbeli különbség akkor is megvan, ha készletnyilvántartó programot írsz. Ha az otthoni konyhai fűszereket akarod nyilvántartani, akkor semmi problémád nem lesz a matekkal. Ha a DHL készleteit raktáraiban lévő készletekről van szó, akkor matek nélkül nem fog menni a dolog.

Ugyanakkor nagyon sok helyen boven eleg lenne a konyhai fuszerek nyilvantartorendszer es fontosabb lenne hogy karbantarthatosag szempontjabol jol legyen megtervezve.

Emlekszem, amikor 1 csapat a nagykonyv szerint tervezett meg egy varazslot, design patternek es abstrakciok mindenhol. Aztan 1 checkboxot kellett hozzaadnom a varazslohoz. Hat, olyan 30-40 fajlt kellett modositanom. A poen: az egesz rendszer csupan EGY dolgot kezelt le. Tehat ehhez baromira szukseg volt Vizitorra.... :( Persze a csapat lelepett, mi meg vegul ugy dontottunk h refactor.

Ez volt az a pillanat, amikor nagyvallalatnal a legfontosabb szempontnak a KISS-t tartom, azaz a meg elegseges legegyszerubb megoldast es nem erdekel az h esetleg 10 ev mulva lehet h nem lesz optimalis. Nyilvan ha tobb millio elemet kell tarolni mas megkozelitest kivan mint amivel csak par szazat, de a riziko es a koltseg is mas lesz.

Még egy érdekes dolgot hozzáraknék. Sok terület az, aminek az elkezdéséhez a 0 matek elegendő. (0 mateknak vegyük az alap ált. isk. matekot, mert mondjuk tudjunk a négy alapműveletet, kisebb, nagyobb, stb). Aztán ahogy egyre bonyolultabb dolgot csinálsz folyamatosan kopogtat be a matek, fentebb nagyon szép példák voltak. Vannak olyan területek, amiket szoktak matek nélkül tárgyalni, mint mondjuk genetikus algoritmusoknál a fittness függvény, arról matek nélkül kb bármennyit lehet beszélni. Ha behozod a metrika fogalmát, és megtanítod mi az a metrika, amit szintén nagyon szemléletesen el lehet magyarázni, akkor kb 20 perc alatt el lehet törni a problémát. Nyilván megfelelő matek tudással a problémákat a matek inkább egyszerűsíti, mint bonyolítja, szóval érdemes megtanulni. Az is igaz, hogy egy UX designer-nek startból nem kell, de ahogy elkezd szórakozni az animációkkal és kódolnia kell őket, már hatalmas szolgálatot tehet nekik. Van egy csatorna a youtube-on, ahol egy New Yorki egyetemi tanár csinál, aki designereket tanít programozni. Nézd meg a csatornát, igen van a kezdetek, amikor javascript-ben kockákat meg vonalakat rajzol, aztán ott is megjelenik a komplex sorozatok határértéke és minden egyébb. Bevallom régen nekem se sok humorérzékem volt a matekhoz, aztán szép lassan pár nagyon jó Prof. rávett, egyik pillanatban még utáltam a matekot, másik pillanatban meg lelkesen magyaráztam az órán a matekot. Sok esetben szerintem tanárfüggő is. Ha szerencséd van és elkapsz egy-egy jó tanárt akkor az nagyon sokat tud segíteni. 

Soha nem értettem a szögfüggvényeket (tg,ctg, sin, cos). Állandóan egy séma alapján volt felállítva a háromszög és csak a, b, c, alfa, béta, gamma nevezék tannal volt szemléltetve. Jobb híjján bemagoltam az alap egyenleteket, csak akkor volt baj amikor a háromszög nem a sztenderd szerinti helyzetben volt felállítva.

Majd szakmai tovább képzés keretében volt egy jó pár órás matek áttekintő-felfrissítő anyag. Jöttek a szögfüggvények és láss csodát a tanár olyan baromi egyszerű módon értette meg velem, hogy azóta is álmomból felébredve vágom.

A lényeg az volt, hogy nem szigorúan a, b, c oldalakról és alfa, béta, gamma szögekről beszélt. Hanem szög melletti vagy szöggel szemközti befogókról és az átfogóról. A három szög helyzete és az ismert oldal és szögek értéke meg meghatározza az alkalmazandó szögfüggvényt. Az hogy melyik befogó lessz a vagy b az átfogó határozza meg, ahhoz képest meg az óramutató járásával ellentétesen kell elindúlni. A helyes szögfüggvényt akkor tudod meghatározni, ha tudsz abban a kontexusban gondolkodni. Amikor szöggel szemközti vagy melletti befogót keresel és azokat állítod valamilyen arányba az átfogóval.

Szóval mikor tananyag szerint tanúltam-tanították, ez utóbbi prezentáció kimaradt az akkori tanár példatárából.

Nekem a görög betűk vették el a kedvem, addig ok, hogy alfa, béta, még gamma, de amint le kellett volna jegyzetelni a tábláról, hogy éta, pszí, még nű és néha még két hasonló görög bötű is volt egy képletben, na akkor dobtam el sikítva a tollat. Meg is fogadtam, ha lesz kis matematikai készsége a gyerkőcök, tuti megtanítom a görög abc-re a magyar mellett, csak van a guglin valami erre is :)

A görög betűk használata nagyon praktikus tud lenni. Pl, hogy ne keverd össze a változókat. Ha a fenti példában az oldalak a,b,c, akkor ha a szögeket d,e,f-el jelölöm, az okozhat zavart, ha görög betűvel akkor szépen elkülönül. Megjegyzem, itt ez csak jelölés, símán lehet smilie-kal jelölni őket, csak a görög betűket könnyebb leírni. 

Az említett példámban az a lényeg, hogy bármivel lehet jelölve bármelyik összetevője a derékszögű háromszögnek és az is mindegy, hogy áll. Helyére tudom tenni a megfelelő információkat és aztán a helyzetnek megfelelő szögfüggvényt tudom alkalmazni a hiányzó érték kiszámítására. 

Szerkesztve: 2020. 04. 10., p - 22:52

A rendszerszervezőnek is kéne matek.

Most éppen valakivel azon vitatkozom, hogy van-e olyan, hogy 1,9 perc.
(Ami ugye úgy is fölírható, hogy 1 perc és 54 másodperc). [Ez azért lényeges egyébként, mert ha 1,54-gyel szorzol föl egy számot, akkor kedvezőbb KPI jön ki, mintha 1,9-cel]

Valaki elterjesztette nálunk, hogy van olyan, hogy variancia és azt úgy kell számolni, hogy az aktuális havi értékből kivonod az előző havi értéket. Ebből a variancia alakulásáról szép színes Excel grafikonok mennek a felsővezetésnek...

Airconditioned terminal, do not open Windows.

ird le neki 1'54", es akkor a guglival kiszamolja, hogy hany lab es hany huvelyk lesz.

 

A hulyeseget sose tudod megallitani, de ha te krealod, akkor az elso sorbol elvezheted.:)

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

A mai napig sajnálom, hogy a matematikát nem tudom annyira, amennyire szeretném, mert nem vettem elég komolyan.

Amit annak idején nehéznek gondoltam, azt ma átolvasom és már tudok is segíteni gimiseimnek. A szemléletet és megközelítési módot ad a problémához.

Akkor meg még annyira sem ajánlom. Mivel pont a tudást, a miérteket nem kapod meg tőlük. Neked meg az lenne a lényeg.

Matematika nem arról szól, hogy meg tudjál oldalni példákat. Arra legtöbb esetben semmi szükséged nem lesz, az csak azért van, hogy segítsen rávilágítani a lényegre. Azzal meg ha minden mélyebb magyarázat nélkül muttat módszert, azzal nem mész semmire (megjegyzem az amit mutat néhol hibás, vagy nem általános esetben használható, pedig azt állítja). Szerintem sokkal többet érsz, ha felcsapod az MIT Youtube csatornáját. 

Logikus gondolkodás és józan paraszti ész kell a programozáshoz. ... és annyi matematika amit a feladat kíván.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.

Szerkesztve: 2020. 04. 11., szo - 19:49

Intelligencia; meg logikai (bool) algebra, az kell.

Ja, és az affinitás, az, az kell nagyon.

 

Matematikának egyebkent nem sok koze van a programozashoz; a fenti reszen kivul.

Ha egy szoftver kifejlesztesenel van olyan resz, amihez fizikai ismeretek szuksegesek, akkor fizikust kell hivni segitsegul.

Ha van olyan resz, amihez kozgazdasagi ismeretek szuksegesek, akkor egy kozgazdaszt kell hivni segitsegul.

Ha van olyan resz, ... , akkor egy ... kell hivni segitsegul.

Es a matematikai problemak kore szinten igy orvosolando.

 

Nincs olyan, hogy egy programozo fizikus is egyben, kozgazdasz is egyben, ... is egyben, es persze matematikus is egyben.

 

Ketsegtelen, hogy vannak, akik ugy gondoljak, hogy a matek az alap, de tevednek, nem alap, lasd a fenti levezetest; bool algebran kivul nem sok matek kell ide.

Abilities that makes you a better developer szerint

Mathematics is going to give you a logic necessary to program in a better way. Learn about arithmetic, algebra, discrete mathematics, geometry and statistics.

szerintem itt a better a kulcsszó, nem feltétlenül szükséges minden esetben, de jó (jobb) ha adott ez a tudás is.

AL

Ez így van, ha csak magát a programozást vesszük. Én mondjuk nem választanám le a hogyan programmozzunk kérdést a mit programozunk kérdéstől, a kettőt együtt kezelném. 

Szerintem a közeljövőben van izgalmasabb kérdés is, mégpedig az, hogy azt értjük-e amire software-t kellene írni. Nekem az a meglátásom, hogy emiatt egyre több matek fog kelleni, mivel egyre bonyolúltabb dolgokat kell majd megcsinálni. Mondjuk az üzleti intelligencia fejlődik annyit, hogy az integrálás, deriválás az csak a beugró. Ha belegondolunk, akkor az elmúlt 10-15 évben ez mennyit fejlődött. Természetesen ez nem úgy lesz, hogy holnaptól mindenhol a bonyulultabb van, hanem ez elkezdődik pár cégnél (itt tartunk most szerintem) és a többiek, hogy ne maradjanak le, elkezd mindenhova beszivárogni. "Normál" kóderre akkor is lesz szükség, mert ne a magasabban képzett arc foglalkozzon mondjuk a frontend-el, vagy szívjon az adatbázisokkal...stb. De ezeknek az értéke folyamatosan csökkenni fog, mert ezzel párhuzamosan egyre jobb toolok lesznek, amik leveszik az emberrről a favágó melót. 

Szóval szerintem matekot mindenképpen megéri tanulni, mert minnél többet tudsz annál érdekesebb és jobban fizető projektekben vehetsz részt és ez egyszerre át fog fordulni, szerintem a mi karrierünk alatt, hogy már az lesz a "normál".  

Végül is 7 dimenzióban megoldhatóak az egyenesek, Gram-Schimdt-el ha van 7 vektorom, ami bázis a 7d térben símán kiszámíthatóak az új bázisok, amit lehet egyenesnek használni ezzel a feladat első része megoldva, a zöld tintával piros egyenest meg lehet filmtrükk. :D

Az animátoroknak meg oldják meg a 7d egyenest 2d-ben , ez nem lehet olyan nehéz, hiszen ők expert-ek , csak 7 egyenest kell rajzolni. :D 

whitcwa:
There are a couple of versions of this story. I first heard it when I attended RCA Broadcast technical training in the 1970's. Here's the basic story: In the 1950's when color television was being developed by RCA, the engineers would often use a bowl of fruit as a test subject for the cameras. One day one of the engineers painted the banana blue. Another engineer worked feverishly to try to make it look yellow. He finally succeeded, but the apples and oranges were all wrong.

KWETDT:
Prior to going into broadcast engineering I worked with the engineer who was on duty the night the "blue bananas" prank was pulled.
It was to be the first color transmission ever and the studio engineering staff was working to make sure that it went perfectly. At that time the cameras were huge and they started there to set then up. They used a still-life bowl of fruit as the subject. After completing the camera setup, they moved to the control room the setup the camera control units (CCU's). After setting the phase of the I & Q signals - the quadrature phasing which adjusts the hue - they put the picture on a monitor. The apples were red, the grapes were green, the oranges were orange and the bananas were blue.
Now in a panic with only a couple of hours before air time, they readjusted the CCU's from +/- 1 degree to +/- nothing. The damn bananas were still blue. Frantically they went into the studios to recheck the cameras. That's when they found that some one had painted the bananas blue.

http://www.edn.com/electronics-blogs/voice-of-the-engineer/4410917/What…--

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin