Programozás tanulás

Fórumok

Sziasztok!

Szeretnék megtanulni programozni. Segítséget szeretnék kérni, hogy milyen tapasztalataitok vannak.
A helyzet az, hogy a legjobb nyilván a felsőoktatás volna. A problémám itt, hogy nagyon nehéz teljesíteni a követelményeket (matek, fizika), viszont úgy érzem, hogy a valós gyakorlati része a dolognak (programozási nyelvek ismerete) elsikkad. Tévednék ezzel kapcsolatban?
Itt előny volna a diploma elismertsége és értéke, hátrány, hogy nem is azt tanulom, amit szeretnék (így látom) és ebből kifolyólag nem is biztos, hogy meg tudom csinálni.

A másik lehetőség, hogy OKJ-s tanfolyamot végzek, de nem tudom érdemes-e erre időt fordítani, nem nagyon gagyi-e az a színvonal. Illetve ott sem kifejezetten programozással foglalkoznak.

A gombamód szaporodó programozósulik meg nagyon drágák, és szerintem az sem ad többet ha van egy pecsétes fecni az ingyombingyom codesulitól, hogy tudok programozni. Szerintem ennyi erővel (és jóval olcsóbban) meg tudok tanulni magamtól is.

A programozással a célom az, hogy plusz bevételre tegyek szert, több lábon tudjak állni, esetlegesen külföldre költözéskor jó lenne, ha ezzel a tudással tudnék elhelyezkedni, mert eredeti szakmámmal hamar biztosan nem fogok tudni.

Kíváncsi vagyok a gondolataitokra, tanácsaitokra.

Köszönöm szépen! :)

Hozzászólások

Mihez akarsz kezdeni utána?

Biztos lesz aki javasolni fog egy "kezdő nyelvet", ami után könnyebb lesz megtanulni egy másodikat, de szerintem nem éri meg a duplicate effort. Szóval, mi érdekel a programozáson belül? UI, hardver, web, backend, adatbázis, ...?

Első körben jobban tudom, hogy mi nem érdekel: web és hardver. Az UI, androidos fejlesztések, adatbázis érdekelne.
Illetve a security téma, de azt gondolom, hogy ahhoz, hogy abban jó-középszerű legyek, ahhoz nagyon pengének kell lenni pl matekból, asm-ből, stb.

Először az ilyen freelanceres témák fognának meg. Mindt mondtam, ez egy "második láb" volna, ha úgy hozná a sors, hogy elsődleges szakmámmal nem tudnék elhelyezkedni.

web: html/php/js
android: java+kötélidegek
UI: gtk/Qt programozása c/c++ nyelven
security: kezdetben bármi, amivel file-t/stream-et össze tudsz zagyválni, majd ugyanazon (vagy hasonló) eljárás segítségével viszaállítani. (kezdetnek az xor művelet bármely programozási nyelvben) Matek, asm nem feltétlenül kell hozzá.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Ha hash algoritmust akar irni akkor kell a matek, de ha egyszeruen biztonsagi szakember szeretne lenni, aki tudja hogyan vedjen meg rendszereket, nem feltetlenul kell. Sokkal inkabb szukseges ismerni a titkositasi eljarasokat, azok gyengesegeit, a kukonbozo tamadasi formakat, a rendszerek kozotti kommunikacio mukodeset, az auditalas modszereit, stb. Ahhoz nem sok matek kell.

-
Kiterjesztések írása Go nyelvi környezetben

Mondjuk egy EGYSZERŰ jelszavas fájltitkosításhoz/visszafejtéshez mennyi matek kell?

a teljesség igénye nélkül:

ciklus (i=0;i<fájlfájlméret;i++){
fajl_olvas(fájl1,olvasotott_byte);
irando_byte=olvasott_byte xor jelszo[i mod hossz(jelszo)];
fájl_ir(fájl2,irando_byte);
}

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Tisztában vagyok vele, hogy élesben ilyet már nem használunk, de programozási iskolapéldának kitűnő.
Lehet még kombinálni, többszörösen hozzá xor-olni mást is, mondjuk a ciklusváltozót, vagy egy egész kulcsfájlt is, amit random()-mal hoztunk létre.

A példában említett módszer által létrehozott titkosítmányt törte már fel valaki közületek?

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

A csak xor-olunk módszer nagy hátránya, hogy ha van a kódolatlan fájlban egy csupa nulla terület, akkor onnan már el lehet indulni.

Konkrétan a Word 2 titkosítását valami nagyon pancser készíthette, mert a kódolatlan fájlokban, a fejléc után (valahol, a részletekre már nem emlékszem) volt egy csupa nulla terület. A felhasználó által beírt jelszóból valamilyen bonyolult módszerrel készített 32 bájtos valamit (hash-t?), és azzal végig xor-olta a fejléc utáni területet. Viszont a csupa nullás terület miatt, a jelszó nélkül vissza lehetett állítani az eredeti fájlt. Ugyan a „dekódolás” után egy checksum nem egyezett, és ezért a fájl megnyitásakor feldobott egy figyelmeztető ablakot a Word, de a dokumentumot hibátlanul megnyitotta. Ezért aztán a chesksum „megjavításával” már nem is foglalkoztam.

Nomeg, a dolog fordítva is működhet: ha matek tanuláshoz használok programnyelvet?

Nekem középsuliban nagyon jó volt, hogy már tudtam valamelyest pascal-ban programozni, nagyon hasznos volt, hogy egy adott függvényt adott intervallumban végigfuttattam, és putpixel(x,y,szín) módszerrel ábrázoltam. Lett némi "számfogalmam" a függvények terén.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Ősidőkből származó, de szerintem ma is érvényes tapasztalat: ahol programnyelvre tanítanak, ott nem tanulsz meg programozni. Nyelveket magadtól kell megtanulni, az iskolában legyen egy, ami segít megtanulni az alapokat, elveket, gondolkodást stb.

Szerintem kevés az olyan ember, aki egyedül meg tudja ezt tanulni. Kereshetsz olcsó/ingyenes online tanfolyamot, de azért még mindig jobb a programozó iskola, mert van egy rendes összeállt naprakész tanrend, ember aki segít és azonnal válaszol, motiválnak, stb. Ezt mind extra szívás lenne egyedül csinálni, felnőtt korban más munka mellett főleg.

Az egyetemmel félig egyet értek, félig nem. Tényleg van egy csomó szívás tantárgy (nekem pl. fizika volt a főellenség), és szivatásra rámenő tárgyak, tanárok, vizsgák... Ugyanakkor sok olyan dolgot is megtanítanak, amit a programozó iskolában nem vagy csak minimálisan. Számításelmélet, algoritmusok, gráfok...

Sok olyan probléma jöhet szembe, ahol nem egyértelmű, hogy kell a speckót programnyelvre fordítani. Ehhez egy külön gondolkodásmódot kell elsajátítani. Edzheted magad codewars és hasonló kihívásokkal. De még ha egyértelmű is a speckó, leprogramozni valamit úgy, hogy minimálisan csak működjön, még mindig csak félsiker. Hogy az tesztelhető, karbantartható, érthető, jó futásidejű, stb., röviden "szép" legyen, az a történet másik fele. Ha azt akarod, hogy tényleg érjen valamit a tudásod, ez is kell hozzá. És ezt az ember élete végéig fejleszti mert mindig van valami új.

Esetleg menj el egy tanfolyamra alapozni és utána gyúrj rá a mélyebb témakörökre önállóan.

A programozás megtanulásához feladat kell.

> Sol omnibus lucet.

Ahogy en latom, ezeknek a programozo suliknak ugy van ertelme, ha suli utan valami melohelyre is betesznek, ahol van rendes junior kezo programjuk, amit ott tudnak folytatni, ahol a suli abbahagyta. Amugy auto-didakta modon sem lehetetlen a dolog, van sok jo (magyar) irodalom. Mindenfelekeppen konyvet javaslok, ahol van tematika. De leges legeloszor el kell dontened mit szeretnel programozni, mert nagyon nem mindegy. A platformok nem is hasonlitanak egymasra, szoval teljesen mas tool set kell egy ui, vagy egy smart contract fejlesztonek. Mas kihivasokkal talalkozik egy elosztott rendszert fejleszto coder mint egy web fejleszto vagy egy scripter. Egy a kerdes, mivel akarsz Sz0p... mert fogsz :).

-
Kiterjesztések írása Go nyelvi környezetben

Ha angol megy, akkor rengeteg online elerheto, ingyenes kepzest talasz, pl. itt, itt, itt es itt, miutan eldontotted milyen iranyban indulnal el. Kezdesnek Python jo otlet lehet, de mindjart jon valaki es megcafol:) Matek kelleni fog egy bizonyos szint felett, de sok matematikai kurzus elerheto online amerikai egyetemekrol, ingyen.

Ha az angol nem megy, annak allj neki mindenekelott.

Fontos kérdések: Milyen jellegű programokat szeretnél írni? Milyen platformra akarsz programokat készíteni? Milyen OS-(ek)re?

Szerintem kezdésnek a legjobb a c (vagy pascal, de az ma már elavult). Mert: az alapdolgok megtanulhatók vele, pl. ciklusszervezés, elágazás, értékadás, feltételvizsgálat, függvényhívás, fuggvényírás, állománykezelés, változók, struktúrák, matematika, stb... valamint a rendszerhez is közel áll, sok rendszerszintű dolog leprogramozása is megtanulható pl. argumentumkezelés, processzek köti műveletek, lib-ek használata/készítése stb...

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Ideális esetben (ami hazánknak limitáltan erőssége) a felsőoktatás nem programozni tanít meg, hanem programozóként gondolkodni.
Ebből a szempontból pedig a matematika megkerülhetetlen. Ha matematikai vénád nincs, nem lesz programozói sem. Ez nem tévesztendő össze a "nem érdekel"-lel. Nem szeretni kell, hanem érteni. És bár azt gondolod, hogy soha semmire nem kell majd az xy tétel és bizonyítása, (természetesen el is felejted), de mégis ezek végnélküli egymásutánja vési be, hogy kikökések nélkül nincs értelme, hogy "nem mindegy, hogy mi mindegy" ... stb.
Csupa olyan elv, és módszertan amik segítenek programozóként is(!) gondolkodni.
Nekem legalábbis így alakult. A halmazelmélet jól jön adatbázis kezelésnél, a számításelmélet rendezéseknél, kereséseknél.

A programozás nem csak if for while és társaik egymásutánja.

Ilyenkor mindig hozzáteszem (kikötés! :) , hogy nem vagyok programozó, scriptekben utazom. A véleményem ez alápján lehet, hogy téves. :)

---
"A megoldásra kell koncentrálni nem a problémára."