Kezdőoldal » Számítástechnika » Programozás » Mi ez a programozás dolog...

Mi ez a programozás dolog valójában?

Figyelt kérdés
Régóta foglalkoztat ez a "programozás" téma, és gondoltam megkérdezem hogy valójában mi is ez? Látom hogy eggyesek beszélnek hosszú kódsorokról és bonyolult képletekről, de nem igazán értem hogy lessz ebből bármi.Tehát ezek ilyen titkosított kódok? Minél bonyolultabb, annál több pénzt ér? mert a programot nem lehet feltörni? Ezeket a kód titkosításokat tanítják egyetemen? Vagy teljesen rosszul látom? Tényleg nem értek ehhez az egészhez, de mindig is érdekelt a programozás.

#programozás #programkódok
2021. júl. 21. 21:17
1 2
 1/14 anonim ***** válasza:
22%
A program a kompjúterek saját nyelve, programul kell megmondani nekik, mit csináljanak. Ha mondjuk egy lézerpisztolyt akarsz programozni (mert a lézerpisztolyban is van ám kompjúter, csak nagyon kicsi), akkor körülbelül 235000 sornyi programot kell megírnod. Az ébresztőórának kevesebb is elég.
2021. júl. 21. 21:20
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:
79%
úgy képzeld el, hogy a programozók képzeletbeli "gépeket" javítgatnak napestig. Az a szép ezekben a gépekben, hogy kicsit mindíg rosszul müködnek, ezért akármeddig lehet öket bütykölni, meg építgetni.
2021. júl. 21. 22:23
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:
100%

Semmiféle titkosítás nincs ebben.

A dolog arról szól, hogy valahogy közölnöd kell a géppel, hogy milyen feladatot szeretnél elvégeztetni vele. Nem mondhatod azt a gépnek, hogy "írd ki a képernyőre hogy szia!", mert abból ő nem fog érteni semmit. Ehelyett a saját nyelvén kell szólni neki, mondjuk azt írod:


printf("szia!");


Ez annyit jelent, hogy "írd ki a képernyőre hogy szia!". De persze a gép közvetlenül ezt sem érti meg, mivel a processzor csak bináris kódokat tud értelmezni. Tehát fogjuk a fordítóprogramunkat, és utasítjuk, hogy a fenti forráskódból csináljon gépi nyelvű tárgykódot, ami már közvetlenül futtatható. Alapvetően erről szól a dolog.


Manapság a programok több, kisebb részből, modulból állnak össze, és nagyon komplexek tudnak lenni. Különféle programozási módszereket használnak, és eltérő megközelítéssel készítenek el egy-egy programot, attól függően, hogy milyen környezetben fogják használni, kik fogják használni, stb.

2021. júl. 22. 08:30
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:
100%

Nagyon leegyszerűsítve: A számítógép csak nagyon egyszerű elemi utasításokat tud végrehajtani, amik egyszerű mat. műveletek, memóriába írás, olvasás, esetleg ezek ismétlése, egy érték alapján döntés, hogy végrehajtson-e valamit, vagy ne, stb. Egy program (pl. számológép, böngésző, videolejátszó,..) által végrehajtandó feladatokat addig kell szétbontani egyre kisebb lépésekre, amíg csupa ilyen elemi műveletek sorozatából nem áll. Ezt szokták algoritmizálásnak hívni, általánosságban főleg ezt csinálja egy programozó/programtervező.


Az más kérdés, hogy az "elemi" műveletek magasabb szinten lehetnek összetettebbek is, például egy ablakot nem kell pixelenként kirajzoltatni a képernyőre, vagy egy adatbázis kezelését is megírták már okos emberek, ezek felhasználhatók. Ezek a megoldások egymásra tudnak épülni, korábbi megoldások felhasználhatók az új feladatokhoz.

2021. júl. 22. 09:22
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:
Hát én nem tudom hogy írja ki a processzor a monitor katódcsövére, hogy "szia!"... meg amúgy ezt a fordítóprogramot ki írta? Az ebben a bipoláris nyelvben íródott? Nem semmi azért...
2021. júl. 22. 09:25
 6/14 anonim ***** válasza:

Igen, a legelső egyszerű "fordítók" nyers gépi kódban íródtak. Azok még inkább alap assemblerek voltak, később szép lassan fejlődtek a programozási nyelvekkel együtt.


"hogy írja ki a processzor a monitor katódcsövére, hogy "szia!""

Sok-sok lépcsőn keresztül. Egy kisebb könyvet lehetne írni csak egy "A" betű kiírásáról, áramköri szinttől és busz protokolloktól a karaktergenerátorig vagy akár a vektoros betűtípusok rajzolásáig, de ezt már kidolgozták előttünk, így ezzel szerencsére nem kell foglalkozni.

2021. júl. 22. 09:36
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:

Ma már olyan magas szintű programozási nyelvek léteznek, hogy a munka 80%-át megcsinálták helyetted, neked csak alkalmazni kell, használni kell őket.

Nem kell mindent nulláról megírnod!


Pl.: ha egy kocsit akarsz építeni, akkor nem fogod teljesen nulláról megépíteni az egészet. Kérsz egy kereket, kérsz egy szélvédőt, kérsz egy kormányt, kérsz egy ülést, és összerakod az igényeid szerint.


Hasonló a programozás is. Ha egy grafikus appot nézünk, akkor vannak már előre megírt gombok, input mezők, címkék stb. Neked csak azt kell "megmondani" hogy mi hol legyen, és hogyan viselkedjen.


Persze ha te mégis mindent nulláról írnál meg, arra is van lehetőség. Ez csak tőled függ.

2021. júl. 22. 09:52
Hasznos számodra ez a válasz?
 8/14 A kérdező kommentje:
Tehát ha jól értem, akkor 2021-ben a programozás egy betanított jellegű gyári munka szintjén áll manapság.. csodálatos
2021. júl. 22. 09:57
 9/14 anonim ***** válasza:

"Hát én nem tudom hogy írja ki a processzor a monitor katódcsövére, hogy "szia!"... "


Hol találsz ma már katódsugárcsöves monitort? :)

A gépekben (beépítve, vagy egy különálló videókártyán) van egy videochip, ami összeállítja a képernyő megjelenő képet. Ennek van egy memóriája, és amit oda beleírunk, az megjelenik a képernyőn (nagyon leegyszerűsítve).


"meg amúgy ezt a fordítóprogramot ki írta? Az ebben a bipoláris nyelvben íródott? Nem semmi azért..."


Nem bipoláris, hanem bináris :)

Igen, vannak olyan nagyon okos emberek, akik közvetlenül bináris kódot írnak (16-os számrendszerbeli, azaz hexadecimális formában). De sok esetben inkább az assembly nyelvet használják, ami nagyon közel áll a bináris nyelvhez, de azért egy fokkal emberbarátibb. Például itt van egy kis assembly nyelvű programocska (32 bites Intel processzorra), ami semmi mást nem csinál, csak kiírja, hogy "Hello, World!":


global _main

extern _printf

section .text

_main:

push message

call _printf

add esp, 4

ret

message:

db 'Hello, World!', 10, 0


Sok esetben azonban még ennél is magasabb szintű nyelvet használnak, például a C-t. Itt egy C nyelvű példa számlálóciklusra: [link]

Ez a kis program azt csinálja, hogy tízszer egymás alá kiírja, hogy "Hello, World!", és utána egy számot, hogy éppen hányadiknál tart.

Ugyanez a program assembly nyelven: [link]


A C egy egyszerű nyelv, ami alkalmas gépközeli, gyors kód létrehozására. Vannak még ennél is magasabb szintű nyelvek, pl. a Java vagy a C#, ahol már összettebb, a valóságot jobban leképező struktúrákat lehet létrehozni. Az ilyen programozási nyelvekben könnyebb kódot írni, viszont a lefordított tárgykód jellemzően lassabb és nagyobb méretű lesz.

Ezek, amikről beszéltünk, mind általános célú programozási nyelvek. Vannak más típusú, specializáltabb nyelvek, amik egy-egy feladatra vannak kifejlesztve, pl. matematikai ábrázolás létrehozására, statisztikai számításokra...

2021. júl. 22. 10:06
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:

Amit az ember nem ismer, azt nem érti. Ez természetes dolog. Ha valaki nem érti a latin orvosi szaknyelvet, akkor teljesen érthetetlen lesz neki két orvos közötti kommunikáció. Ha valaki nem tud kottát olvasni, az nem fogja érteni, hogy a zongorista mi alapján nyomkodja a billentyűket. Ha valaki nem ismeri a műszaki rajzot, akkor nem fogja érteni, hogy abból hogy áll elő egy 3 dimenziós tárgy. A programozás is ilyen, megvan a maga tudományos alapja, és kialakult szimbólumrendszere.

Ez persze egyáltalán nem ördögtől való dolog, és semmi mágia nincs benne. Sőt, egy nagyon egzakt rendszerről van szó. A gép azt fogja csinálni, amire utasítják. Ahhoz pár mondat kevés lenne, hogy elmagyarázzam, hogy ez hogy működik, de ha az ember beleássa magát, és mondjuk van nettó pár ezer (vagy legalább pár száz) óra szabadideje, akkor egész alaposan megértheti, hogy elektronikai szinten mi hogyan, és miért történik. Maradjunk annyiban, hogy nagyn bonyolult áramköri elemekkel megoldható egész bonyolult matematikai és vezérléstechnikai folyamatok kivitelezése. Ezekből pedig - kellő tudással és türelemmel - jóval bonyolultabb műveleteket is meg lehet valósítani.


"meg amúgy ezt a fordítóprogramot ki írta?"

Nem lehet egy adott személyhez kötni, és igazából ez több évtizedes fejlődés eredménye. A legelső gépek vezérlőegységét még közvetlenül, huzalok megfelelő helyre dugdosásával (és ez által a bele folyó áram változtatásával) programozták. Nem lettem volna akkor informatikus. :D Aztán később egyre fejlettebb "előtétet" kapott a rendszer, elemi szinten továbbra is az egyes vezetékek be- és kikapcsolásával történt a progrmozás, de ezt már egy erre a célra épített áramkör végezte, a programozónak elég volt az utasításoknak megfelelő számkódokat kilyuggatnia egy lyukkártyára. Először megtervezte a programoz a processzor által ismert elemi utasításokból, majd ezen utasításoknak kikereste a számkódjait, és azokat egy lyukkártyára lyuggatta. Ezt aztán a gép beolvasta, és sorban a processzornak beadagolta. Később már egy kiejlző, meg egy billentyűzet segítségével is be tudta vinni az utasításokat, bár még mindig a processzor által ismert gépi kódhoz közeli, úgynevezett Assembly nyelven. Ehhez persze kellett szintén egy program, ami ezt gépi kódra alakította, mert a proci csak abból ért. (Természetesen ezt is valakinek meg kellett írnia, mégpedig gépi kódban.)

Aztán később megszülettek az újabb nyelvek, amik egyre emberközelibb, egyre magasabb szintű utasításokat tartalmaztak, amiket persze fordítóprogram mind a mai napig gépi kódra alakít. Csak ma már - nagyon kevés extrém kivételtől eltekintve - nem kell ismerni a processzor utasításait és felépítését ahhoz, hogy valaki programozni tudjon. Csak az adott programozási nyelvet kell neki ismerni, amiből majd a fordító gépi kódot fog csinálni.

Hogy a fordítókat ki írta? Mindegyiket mások. A legtöbbet nem is csak egy ember, illetve ezeket általában folyamatosan fejlesztik. A BASICet például eredetileg a magyar származású John Kemény alkotta meg. Amit aztán jó sokan később átdolgoztak,többek között a Microsoft egykori frontembere, Bill Gates is. A Perl nyelvet pedig egy Larry Wall nevű misszionáriusból lett szoftverfejlesztő alkotta meg, felhasználva hozzá az ekkor már létező C nyelv bizonyos elemeit. De nem akarok erről sem esszét írni, ha érdekel, utána tudsz nézni az interneten. ;)


"Hát én nem tudom hogy írja ki a processzor a monitor katódcsövére, hogy "szia!""

Katódsugárcsővel már ritkán találkozunk, de egyébként úgy, hogy a grafikus hardver a videomemória tartalma alapján - megfelelő fizikai és logikai műveletek segítségével - képpontonként előállítja azt a jelet, amit aztán a monitor (vagy bármi más kijelző) értelmezni tud, és meg tud jeleníteni. Ma már a programozónak nem kell ezzel foglalkoznia, a grafikus kártay elvégzi ezt az átalakítást helyette. Bár volt idő, amikor a katódsugarat is "kézzel" kellett programozni, én még fejlesztettem Atari 2600-ra... nem mondom, annak is megvolt a maga varázsa, de egyáltalán nem volt kényelmes.


"Minél bonyolultabb, annál több pénzt ér?"

Dehogy. Minél hasznosabb, amit csinál a program, annál több pénzt ér. Legalábbis nagyjából. Azért az üzlet nem mindig ésszerű elvek mentén működik. ;)


"mert a programot nem lehet feltörni?"

De, fel lehet, csak nem mindegy, mennyi idő alatt. Már ha egyáltalán fel kell valamit törni. (Az sem mindegy, mit értünk feltörés alatt?)


"Ezeket a kód titkosításokat tanítják egyetemen?"

Nem titkosítás, de igen, sőt, sok helyen az alapokat már középiskolában is tanítják. Nem egy veszedelmes dolog egyébként. ;) Komoly, összetett programrendszert írni az tényleg hatalmas munka, de az alapokat elsajátítani madnem mindenki képes, csak hozzáállás kérdése.

2021. júl. 22. 10:16
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!