Kezdőoldal » Számítástechnika » Programozás » A nyelvészet ennyire fontos?

A nyelvészet ennyire fontos?

Figyelt kérdés
Még valamikkor tavaly beszélgettem egy programozóval, aki azt mondta, hogy a minőségi programozáshoz elengedhetetlen a nyelvészeti ismeret, hiszen a programozó programnyelvekkel dolgozik. Ez igaz? Tényleg kell nyelvészeti ismeret is a jó programozóknak?

jan. 9. 16:38
1 2 3 4
 31/39 A kérdező kommentje:

4.3. Nyelvtanok Chomsky-féle osztályozása . . . . . . . . . . . . . 38

4.4. A Chomsky-féle osztályozás fontossága . . . . . . . . . . . . . 40

4.5. Állítások a Chomsky-osztályokkal kapcsolatban . . . . . . . . 41

4.6. Chomsky-féle normál alak . . . . . . . . . . . . . . . . . . . . 43


5.1. Reguláris kifejezések . . . . . . . . . . . . . . . . . . . . . . . 47

5.2. Reguláris kifejezések, és a reguláris nyelvtanok . . . . . . . . . 48

5.3. Reguláris kifejezések alkalmazása . . . . . . . . . . . . . . . . 49

5.4. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57


6.1. Környezetfüggetlen nyelvek alkalmazása . . . . . . . . . . . . . 59

6.2. Szintaxis elemzők . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.3. Rekurzív leszállás módszere . . . . . . . . . . . . . . . . . . . 62

6.4. Early-algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.5. Coke-Younger-Kasami (CYK) algoritmus . . . . . . . . . . . . 63

6.6. Szintaxisdiagram . . . . . . . . . . . . . . . . . . . . . . . . . 66

6.7. EBNF - Extended Bachus-Noir forma . . . . . . . . . . . . . . 67


7.1. Automaták . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

7.2. Automata általános megadása . . . . . . . . . . . . . . . . . . 70

7.3. Véges automaták . . . . . . . . . . . . . . . . . . . . . . . . . 72

7.4. Parciális delta leképezés . . . . . . . . . . . . . . . . . . . . . 75

7.5. Determinisztikus és nem determinisztikus működés . . . . . . 76

7.6. Automaták ekvivalenciája . . . . . . . . . . . . . . . . . . . . 77

7.7. Automata konfigurációja . . . . . . . . . . . . . . . . . . . . . 78

7.8. A véges automata működésének elemzése . . . . . . . . . . . . 81

7.9. Minimál automata . . . . . . . . . . . . . . . . . . . . . . . . 81

7.10. Véges automata leírás és feldolgozó algoritmus . . . . . . . . . 82

7.11. Baar-Hiller lemma . . . . . . . . . . . . . . . . . . . . . . . . 83

7.12. Számítási kapacitás . . . . . . . . . . . . . . . . . . . . . . . . 85

7.13. Verem automaták . . . . . . . . . . . . . . . . . . . . . . . . . 85

7.14. Veremautomata konfigurációja . . . . . . . . . . . . . . . . . . 88

7.15. Delta leképezés elemzése . . . . . . . . . . . . . . . . . . . . . 89

7.16. A verem automata működése . . . . . . . . . . . . . . . . . . . 89

7.17. Veremautomata számítási kapacitása . . . . . . . . . . . . . . 90

7.18. Példa veremautomata . . . . . . . . . . . . . . . . . . . . . . . 91

jan. 14. 19:19
 32/39 A kérdező kommentje:

Mondatok bonyolultsága


Ebben a fejezetben nem kimondottan a beszélt nyelvi mondatok bonyolult-

ságával, hanem inkább gyakorlati megfontolásból a programok, pontosabban

a különböző programozási nyelveken írt mondatok bonyolultságával foglalko-

zunk.


Nyelvtanok csoportosítása


Ahogy az előző példában láthattuk, a különböző elemzési problémák, és a

különböző típusú nyelvek leírásához minden esetben másfajta nyelvtani leírá-

sokat alkalmaztunk. Nézzük meg, hogy ezek a nyelvtanok, vagy pontosabban

a nyelvek megadásához használt generatív grammatikák miben különböznek

egymástól.


A környezetfüggő nyelvek, és a hozzájuk tartozó nyelvtanok a szemantikus

elemzés eszközei a gyakorlatban, és a programozási nyelvek fordítóprogram-

jainak szemantikus elemzőjéhez ezt a nyelvtantípust implementálják.


A fordítóprogramok szintaktikai elemzői ezt a nyelvtantípust használják

a nyelvtani elemzések elvégzésére. Az elemzések során szintaxisfa generálást,

vagy redukciót is használhatunk annak eldöntésére, hogy az elemzett mondat

helyes, vagy sem. Az első esetben a generált szintaxisfa levélelemein jelennek

meg az elemzett mondat szimbólumai, a második esetben pedig a terminá-

lisok helyettesítése során a startszimbólumig kell redukálnunk az elemzendő

szöveget.


A Chomsky 2-es típusú, vagyis a környezetfüggetlen nyelvtanok, ahogy azt

a nyelvek osztályozásánál láthattuk, a szintaktikai elemzés eszközei. Ezért a

gyakorlatban is leginkább a programozási, és egyéb nyelvek nyelvtani leírási-

nál alkalmazzák őket, valamint a programozási nyelvek fordítóprogramjainak

a nyelvtani elemző komponensében.

Bővítsük tovább a környezetfüggetlen nyelvtanokról szerzett tudásunkat

néhány új szabály bevezetésével.


Ahogy az eddigi fejezetekből ez kiderül, a generatív grammatikákat, vagy

másképpen a produktív nyelvtanokat felhasználhatjuk arra, hogy egy adott

szót, vagy mondatot generáljunk, de arra is, hogy megállapítsuk ugyanezekről

a szavakról, vagy mondatokról, hogy azok elemei egy adott nyelvnek.

Ez a folyamat viszont, legalábbis kézzel elvégezve nagyon lassú, és könnye-

dén elrontható. A szabályok megkeresése, és alkalmazása, valamint a behe-

lyettesítések elvégzése még rövid nyelvtani szabályrendszer esetén is körül-

ményes.


Mindezért szükségünk van arra, hogy a nyelvtani elemzésekhez progra-

mokat, vagy legalább algoritmusokat konstruáljunk.

Ezeket az algoritmusokat automatáknak, vagy állapot átmenet gépeknek

is tekinthetjük. Minden nyelvtan típushoz, amely része a Chomsky osztályok-

nak találunk hozzá tartozó automata osztályt, amely az adott nyelvcsaládot

felismeri.

jan. 14. 19:37
 33/39 A kérdező kommentje:

Ezen túl ki-ki úgy hülyíti saját magát, ahogy akarja.


Részemről: a kérdés megválaszolásra került, a téma lezárva.

jan. 14. 19:39
 34/39 BringaManó ***** válasza:
82%

Mármint megválaszoltad a saját kérdésedet, oké. (De ehhez minek kellettünk mi?...)

Mindenesetre örülök hogy részedről le van zárva, akkor most már remélhetőleg lehet nyugodtan beszélgetni, anélkül, hogy ötpercenként belekotyognál. :-D

jan. 14. 22:44
Hasznos számodra ez a válasz?
 35/39 anonim ***** válasza:
82%

28-as vagyok!


Mivel az beszélt nyelv is valamilyen logika (nyelvtan) mentén működik és a számítógépes programozás is egy logika mentén működik így vonhatunk párhuzamot. A logika pedig alkalmazott matematika így minden visszavezethető a matematika nyelvére.


De a kérdésed arra irányul, hogy fontos-e a nyelvészet egy programozó számára. A válasz egyértelműen NEM, ahogy kifejtettem röviden.

A logika fontos a programozó számára? A válaszom határozottan igen.


Csak hogy megértsd az orvostudomány alkalmazott biológia, a biológia alkalmazott kémia, a kémia alkalmazott fizika, a fizikai alkalmazott matematika.


Kérdés: Kell e tudnia Dr. Gipsz Jakab nőgyógyásznak Newton törvényeit?

Mert most burkoltan azt próbálod megmagyarázni, hogy igen!

jan. 14. 22:57
Hasznos számodra ez a válasz?
 36/39 2*Sü ***** válasza:

#18 > Fonetika valóban nincs, de morfológia van, hiszen pl. egy utasítás felbontható akár függvénynév, paraméterlista vagy objektumok esetén metódus alapján, illetve pragmatika is, mert pl ha egy függvénynek nincs explicit dekarálva a visszatérési típusa…


Sőt magamat javítva a dialektusok is értelmezhetők, hiszen egy-egy programnyelvnek lehetnek különböző dialektusai.


De itt az a kérdés, hogy nyelvészeti ismeretek segítenek-e a programozásban. Lehet-e mondjuk a C++ nyelvet a nyelvészetnek a morfológiai területének a szemszögéből különösebben vizsgálni? A morfológia a nyelvészetben foglalkozik mondjuk szófajokkal, szóképzés szabályaival, a ragozással, az elő- és utótagokkal. Na most a C++ nyelvet meg lehet teljes mélységében ismerni anélkül, hogy bármit is tudnál a természetes nyelvek morfológiájáról. Ugyanígy mondjuk az SQL nyelv különböző dialektusait meg lehet ismerni anélkül, hogy bármit is tudnál a természetes nyelvek dialektusairól, és ha tudsz, akkor sem kerülsz közelebb az SQL megismeréséhez. A felhozott példa, a „this” kontextusfüggése is olyan dolog, amit el lehet mondani két bővített mondatban, ami megérthető bármiféle nyelvészeti ismeret nélkül, és amiről a nyelvészet eszközeivel nem igazán lehet tenni egy harmadik mondatot kitevő megállapítást.

jan. 15. 12:01
Hasznos számodra ez a válasz?
 37/39 A kérdező kommentje:

"Na most a C++ nyelvet meg lehet teljes mélységében ismerni anélkül, hogy bármit is tudnál a természetes nyelvek morfológiájáról."


A kérdés nem arról szól, hogy a C++ vagy bármely más nyelv megismerhető-e nyelvészeti ismeretek nélkül, hanem arról, hogy képes lesz-e hatékonyan alkalmazni az adott nyelvet a munkája során. Erre a válasz az, hogy nem. Magasabb régiókban, összetettebb feladatok esetén pedig nem, hogy segítségére lesz a nyelvészeti ismeret, de anélkül, bizonyos feladatok megoldására egyszerűen képtelenné válik.

jan. 15. 12:44
 38/39 2*Sü ***** válasza:

Kérdező:


#32 > Ebben a fejezetben nem kimondottan a beszélt nyelvi mondatok bonyolultságával, hanem inkább […]


Ez pl. egy kulcsmondat. Amit a nyelvészetről tudni lehet, az itt nem igazán használható, a programnyelvek esetén valami más természetű megközelítést kell alkalmazni. És innentől ezt a teljesen más megközelítést – ami alapvetően matematikai természetű – boncolgatja végig.


~ ~ ~ ~ ~ ~ ~


De ahogy írtam, van maga a programozás. Megtanulsz egy programnyelvet, megtanulod, hogy milyen szintaktikát használ az adott programnyelv, milyen vezérlő szerkezetek, milyen operátorok és miegyebek vannak. Az egyik nyelvben van egy eléggé univerzális for ciklus, a másikban csak felsorolható típusú változóval lehet for ciklust csinálni, a harmadik nyelvben meg nincs for ciklus, más vezérlési szerkezetet kell használni.


Na ehhez nem kell nyelvészeti ismeret. Nota bene ahogy a korosztályom egy nem jelentéktelen része, úgy én is kb. 10 éves koromban kezdtem el programozni, nulla nyelvészeti ismerettel. És bár megismertem a nyelvészetet, soha nem éreztem azt, hogy ez a programozási tudásomhoz is hozzátenne bármit.


~ ~ ~


Megint más a programozásnak a tárgya, a megírandó program témája. Ja, ha sakkprogramot írsz, nagyon nem árt megtanulni valamennyire sakkozni. Ha számlázó programot írsz, óhatatlanul szükséged lesz megismerni az ide vonatkozó jogszabályokat. Ha kottaszerkesztő programot írsz, nem árt némi zeneelméleti ismeret. De ez magából az elkészítendő program tárgyából fakad, és nem a programozásból általában.


(Bár ez sem teljesen igaz, ha van egy szakértő, aki egzakt lépésekre le tudja bontani a programot, akkor egy sakkprogram egy adott funkcióját a megadott egzakt működésmód mentén le tudja programozni egy programozó, anélkül, hogy tudna sakkozni, vagy egyáltalán tisztában lenne azzal, hogy amúgy sakkprogramoz írnak.)


Így hát nem kell sakkozni tudnia annak egy nüansznyit sem, aki számlázó programot ír. Nem kell gazdasági jogszabályokat ismerni annak, aki kottaszerkesztőt ír, és nem kell zeneelméleti ismeret annak, aki sakkprogramot ír.


~ ~ ~


Szóval nyilván van átfedés. Aki a programozásban egy szűk részterületen dolgozik, annak hasznos lehet, ha rendelkezik a nyelvészet egy szűk részterületének ismeretével. Mondjuk aki fordítóprogramot vagy reguláris kifejezés értelmezőt ír. Vagy fordítóprogramot, helyesírás ellenőrzőt ír. Vagy pl. egy kereső megírásánál – mondjuk egy receptgyűjtő honlap esetén – sem árt tisztában lenni azzal, hogy a ragozással megváltozhat egy szó szótöve (pl. [kapor] vs. [kapr]os), hogy vannak szinonimák, helyesírási hibák és félregépelések. De ehhez sem kell mondjuk a morfológiában hű de mélyen elmerülni, ehhez is csak felszíni ismeretek kellenek maximum, hogy igen, a magyar nyelvben ragozásnál változhat a szótő (de hogy amúgy milyen szabályok, sajátosságok, összefüggések mentén, és ez mennyire hasonlít vagy különbözik más nyelvekhez képest, azzal a tudással már nem sokra mész).


Meg persze fordítva is igaz, ha olyan nyelvészeti témával foglalkozol, akkor ahhoz nagyon szükséges az, hogy rendelkezz programozási, adatbázis kezelési tudással (pl. nyelvi korpuszt összeállítás, szavak gyakorisága egy adott nyelvben, stb…) Meg persze a formális nyelvek – ide értve pl. a programozást, úgy tágabban az informatikát, de akár a matematika formális nyelveit is – is szegről–végről a nyelvészet alá vannak rendelve, de ez már inkább interdiszciplináris terület.


~ ~ ~ ~ ~ ~ ~


De mint programozó, és egyben a nyelvészetben is műkedvelő szinten el-elmélyedő ember továbbra is azt mondom, hogy önmagában a programozásban az esetek 99%-ban semmiféle hasznossága sincs semmiféle nyelvészeti ismeretnek, a maradék 1%-ban is a nyelvészet területének néhány százalékához kell csak valamelyest konyítani.

jan. 15. 12:58
Hasznos számodra ez a válasz?
 39/39 A kérdező kommentje:

Látom, nem sikerül neked azt megérteni, amit írtam. A programozást, ahogy sok minden mást is, lehet jól, még jobban és rosszul is művelni. Akik otthon hobbistaként elprogramozgatnak maguknak, azok ezen a körön kívül esnek. Viszont, akiknek ez a hivatásuk, azok elé kerülhet és persze kerül is olyan feladat, ami, ahogy korábban írtam is, számukra lehetetlenné teszi annak megoldását, ha nincs meg a kellő szintű ismeret és ebbe az ismeretbe beletartozik a nyelvészet is. Aki jó nyelvészeti ismeretekkel bír, az önmagához képest is jobb kódot fog írni, mintha úgy írná meg ugyanazt a kódot, hogy nyelvészeti ismeretei nincsenek, vagy alig valami. A nyelvészet sok témához szorosabban, sok témához lazábban, de kötődik. A jelfeldolgozás, a statisztika és még ezer dolog van, ami kisebb nagyobb mértékben igényli a nyelvészeti ismereteket ahhoz, hogy megfelelő minőségű produktum születhessen. Hangsúlyozom, abszolúte nem speciálisan nyelvészek számára írt programokról beszélek.


Maga a programozási nyelv mint olyan is egy, a természetes nyelvek mintájára létrehozott produktum. Ahogy egy ujságcikket is meg lehet írni nagyon silányul és nagyon jól is, úgy lehet egy feladatot ugyanazon programnyelven implementálni pocsék és kiváló minőségben.

Vannak kódminőség elemző programok, amik nyelvészeti szempontok alapján vizsgálják, elemzik, minősítik a rájuk bízott forráskódokat.

jan. 15. 13:29
1 2 3 4

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!