Kezdőoldal » Számítástechnika » Programozás » Van olyan aki első nyelvként...

Van olyan aki első nyelvként haskellt, erlangot tanult? Van értelme?

Figyelt kérdés
2016. jún. 2. 13:22
 1/6 anonim ***** válasza:
52%

...én nem elsőnek tanultam, de pl nekem nagyon tetszett a haskell..., azt hiszem az volt az egyik feladat, hogy vegyünk egy sztereó hangállományt és válogassuk szét a bal illetve a jobb hangadatokat külön-külön állományokba.


Persze a haskell-t nem ilyen problémákra találták ki, de egy példa volt arra, hogy mennyire univerzális.


Hogy minek van értelme és minek nincs, nos ez egy örök emberi dilemma... :-)


Mindennek van értelme, ha adunk neki!

2016. jún. 2. 13:30
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Én sem elsőnek tanultam Haskellt, de azt tudom, hogy a legnagyobb problémát az okozta a tanulásban, hogy ne ragaszkodjak a procedurális nyelveknél megszokott gondolkodási sémákhoz.

Emiatt gondolom, hogy aki elsőként egy funkcionális nyelvvel ismerkedik meg, annak könnyebb lehet.

2016. jún. 2. 14:09
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:
Köszi! Mindenhol annyira misztifikálják ezeket a nyelveket, már nem is tudom mit gondoljak néha. :D
2016. jún. 2. 22:09
 4/6 anonim ***** válasza:

Azért vannak túlmisztifikálva mert merőben eltérő gondolkodást igényelnek a mainstream nyelvekhez képest.

Ezt nem mindenki képes befogadni, főleg ha már x évet lehúzott egy nem funkcionális nyelvvel.


Pl. ha már megszoktad hogy a változóidnak akármikor értéket adhatsz akkor furcsa lesz az "egyszeri értékadás". Ebből lesznek aztán a A0, A1, A2, A3, ... változó iterációk.


Első nyelvnek talán nem ajánlanám, de ha tényleg érdekel akkor ez ne tartson vissza.

Én "utolsónak" tanultam/tanulom.

2016. jún. 3. 00:31
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

1986-ban kezdtem, Sinclair Basic , Pascal, C++ volt az első élmény, de 1995 táján megismerkedtem a LISP-pel és a Prolog-gal, ami erős élményt jelentett a számomra, itt találkoztam először a deklaratív megközelítések lehetséges erejével, ehhez valamiért rögtön vonzódni kezdtem, talán azért, mert amúgy is a matematika érdekelt már korábbról is.


A Haskell-lel közvetett úton ismerkedtem meg. Eleinte nem is a programozás, hanem a matematika terén kerültem kapcsolatba a lambda-kalkulussal (1998 körül), a dologra eleinte nem is programozásként, hanem inkább valamiféle mókás algebraként tekintettem. Itt nagyon megtetszett, hogy nagyon kevés, de zseniálisan jól feltalált alapszabályból szinte teljes világokat lehet felépíteni. Mindig is szerettem az ilyen ,,bűvös kocka'', ,,gó'' jellegű dolgokat, ahol épp a mások által zseniálisan jól feltalált játékszer egyszerű alapszabályaiból bontakozik ki a nyitottságot és szabadságot adó összetettség.


Egyszóval, ami vonzott engem a lambda-kalkulusban, az a ,,varázslatos ragasztó'' volt. Nagyon erősen modularizált, fogalmilag önálló, jól elkülöníthető, lazán kapcsolt részekre lehet bontani bármilyen összetett algoritmikus problémát.


A dolog annyira megtetszett, hogy C-ben csináltam magam számára egy kis lambda-kalkulus interpretert, és azzal kísérletezgettem: előbb egyszerűbb, majd bonyolultabb programokat valósítottam meg ezen a (jó értelemben) ,,primitív'' matematikai nyelven. Olyan lelki függőséget okozott nálam, mint amilyen függőséget az assembly tanulás tud még kiváltani az emberben. Olyan érzés volt, mint semmiből tetszőleges új világokat teremteni.


A Haskellről később hallottam, 2001 körül, és eredetileg a lambda-kalkulus matematikája vonzott hozzá, de később ,,saját jogán'' is megkedveltem, mint programnyelvet, és szinte anyanyelvemmé vált, abban az értelemben, hogy a legtöbb problémát, feladatot igyekszem legalább fogalmi síkon Haskellben is megragadni, még akkor is, ha a végső kódot egyébként hagyományos nyelvre készítem. Van egy olyan érzésem, hogy közvetetten segít a tesztelésben, a specifikációban, a fogalmi modellekben.


Az elmúlt másfél évben munkaként webfejlesztéssel foglalkoztam: PHP, MySQL, jQuery. Sajnos másfél év után ki lettem rúgva, lenyomott a legacy kód súlya, amit sosem tudtam igazán uralni. Nagyon rossz állapotban volt és van is a projekt, hatalmas, százsoros metódusokkal, és nagyon szorosan kapcsolt, ,,minden mindennel összefügg'' megoldás-szövedékekkel. Ennek az örökségnek az uralása a mindvégig a legnagyobb gyengeségem volt. Egyedül az adatbáziskezelés volt az erősségem: az SQL a maga jellegzetes deklaratív megközelítésmódjával hamar kedvencemmé vált. Maga a projekt egésze viszont már átvételkor is nagyon rossz állapotban volt. Unit teszteket igyekeztem bevetni, és egy-két helyen sikerült egye-gy szövevényesebb kódrészletet átírni lazán kapcsolt, jobban modularizált, külön-külön is természetesen megfogalmazható funkcionalitással bíró részekre, amiket unit tesztek védenek. Azonban egészében véve a ,,technical debt'' súlya lenyomott engem, külön idő a refactoryra vagy a tesztekkel való lefedésre nem volt, sőt a kód eleve nagyon nehezen volt automatizált tesztek védelme alá vonható. Szerintem a projektet legfeljebb csak egy tudatosan bevállalt ,,lábadozó'' időszak árán lehetett volna megmenteni, de erre nem volt keret, erőforrás: folyamatosan kellett új és új üzleti funkcionalitásokat hozzátennünk.


Bevallom, ebben a lelkileg nagyon megterhelő időszakban a Haskell volt az én egyetlen örömöm. Hétvégékre sikerült némi szabadidőt kiharcolnom, és ekkor újra foglalkozni kezdtem Haskell-lel. Hogy miért? A ,,varázsragasztó miatt'' (,,glue''): a lazy coupling, a modularitás és a kódújrafelhasználás olyan megnyilvánulásait sikerült benne megismernem és gyakorolnom, amit mindig is szerettem volna a valódi munkámban is megvalósítani.


Most a Yesod és a Haste webalkalmazásfejlesztő keretrendszerrel foglalkozom (mindkettő Haskell alapú), és sok inspirációt merítettem belőlük. Az a vágyam, hogy nem is olyan soká képes leszek teljes webalkalmazásokat létrehozni bennük, frontend-backend téren egyaránt tiszta funkcionális megoldásokkal. Nem biztos, hogy kapok ilyen tényleges munkát (vannak ilyenek, de nem afféle középkezdőknek, mint én), viszont úgy érzem, így meg tudok ismerkedni olyan mintákkal, elvekkel, amelyek bármilyen ,,mainstream'' nyelven is segítségemre lesznek egy-egy munkahelyen az elvadult legacy kóddal szemben.


Persze mellette foglalkozomm OOP tervezési mintákkal és elvekkel is, és külön unit teszteléssel (How to test a legacy code), hogy a két világgal egységes és integrált kapcsolatot tarthassak, de igazából hosszú távú terveim a Haskell, Clojure, Scala terén vannak, és egykor a távolabbi jövőben majd szeretnék külön is megismerkedni a programtervezés mögött álló átfogóbb kérdésekkel is (ilyenekre gondolok, mint az Agda, Coq által lehetővé tett helyességbizonyítás, vagy a nagyléptékű specifikálást, stratégiát formalizálható tevő kategóriaelmélet).

2016. jún. 4. 10:43
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

Arrról, hogy maguk a szakemberek milyen hosszú távú lehetőslgeket látnak a funkcionális nyelvekben, a Quorán szoktam olvasgatni. Két dolgot láttam megemmítve:


- a ,,ragasztót'' (persze különböző formákban, code reuse, lazy coupling, modularity),


- a sokmagvas gépek terjedésével, a Moore törvény lelassulásával fontossá váló párhuzamosság terén a funkcionális nyelvek előnyöket tartogatnak, elméleti és gyakorlati szempontokból egyaránt.


Értelme tehát ezek szerint van: ha robbanásra talán nem is, de terjedésre igenis lehet számítani. Azonban ami az utóbbi témát, a párhuzamosságot illeti, ahhoz semennyire sem értek, nem tudok hozzászólni. Ami viszont az első témát, a ,,ragasztót'' (glue) illeti, arról viszont van egy nagyon jó cikk, és ennek az állításait magam is sokszor tapasztaltam munkám során bebizonyosodva:


John Hughes: Why functional programming matters

[link]

2016. jún. 4. 10:58
Hasznos számodra ez a válasz?

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!