Megjegyzések
- És F # és Clojure.
Válasz
Javaslom mindkettő megtanulását, először Haskellt, majd a Common Lisp-t. Az a tapasztalatom volt a Haskellel kapcsolatban, hogy a statikus gépelés először korlátozó bosszúságnak tűnt, de miután megszoktam, észrevettem, hogy a típushibáim nagy részében logikai hibák rejlenek. Amikor eljut erre a pontra, és a következő mérföldkőhöz, amely megtanulja a típusokban való gondolkodást és a saját típusok meghatározását a megoldás kifejezésének eszközeként, készen áll a Common Lisp-re.
A Common-tal Lisp, felvehet monádokat, curry-t és mindent, ami Haskelltől tetszett, de több örökséget is kap, mint például Frank Shearar, és több funkcióval ellátott többfunkciós funkciókat, valamint egy speciális kivételkezelő rendszert.
Szóval miért nem csak a Common Lisp-t tanulja meg először? Eljárási és OOP háttérből származik az a tapasztalatom, hogy nem igazán értettem a funkcionális programozást, amíg nem kellett kizárólagosan használnom. Miután a funkcionális programozás kényelmes, felveheti a többi eszközt, amelyet a Common Lisp elérhetővé tesz, és bármelyik eszközt használhatja, amely a legjobban megfelel az adott feladatnak.
Megjegyzések
- Azt hiszem, hogy leszögezte – ami Haskellt és Smalltalkot annyira hasznos a tanuláshoz, az a tisztaságuk.
- I egyetérteni a tisztasággal sokkal könnyebbé teszi a nyelvtanulást. Nem tudtam ' megérteni magát a funkcionális nyelvet a LISP-vel, mert minden lehetséges a nyelvben, és túl sok imperatív, OO háttérrel rendelkezem. De Haskellben nincsenek olyan fogalmak, amelyek megzavarnák a tanulást.
- Ez ' vicces, én ' ve ellentétes tapasztalata volt. A funkcionális programozás főbb pontjait az első nyelvemen, a Scheme-n keresztül vettem fel. Időnként feltörek Haskellbe, és óhatatlanul azt tapasztalom, hogy újra meg kell tanulnom a tudás 90% -át +, amit tudtam, amikor egy időre elhagyom Haskellt. Ennek ellenére a Haskell hihetetlenül gazdag nyelv, hatalmas összegekkel (nagyon erőszakosan) taníthat meg. Típusok típusok típusok típusok! Kövesse a típusokat!
Válasz
ÉS kérem.
Haskell a legtisztábban tanítja az FP-ből, amennyire legalább “tisztában vagyok vele, csakúgy, mint a Smalltalk tanítja a legtisztább OO-t.” alapgondolat a végletekig eljutott.)
A Lisp valóban egy nyelvcsalád, ezért a Common Lisp-ről fogok beszélni, mert ez a család bizonyos tagja, akit használok.
Lispnek még sok mindent meg kell tanítania:
- Ez egy többparadigmás, tehát, amire dsimcha rámutat , “megmutatja neked” hogyan lehet integrálni az FP-t más paradigmákkal.
- A Lisp megtanítja például, hogy a “kód-az-adat, az az adat-az-kód”, például a makrói révén.
- A CLOS egy nagyon érdekes OO márka, többszörös örökséggel, amely működik, és általános funkciókkal.
Válasz
Haskell és Lisp két teljesen különböző vadállat.
A Haskell egyfajta “tiszta funkcionális programozás egy elefántcsont toronyban”.
A Lisp a “code-is-data / data-is-code / saját nyelvi konstrukciók készítése”. Bármilyen módon el tudja képzelni a kódját.
Nagyon különböznek egymástól. Mindkettő osztja a “funkcionális programozás” szempontot, de ez valóban egy apró kis közös pont a különbségeikhez képest. Csak próbáld ki őket, és meglátod, mennyire különböznek egymástól!
Megjegyzések
- +1: Jó pont. Ismerek néhány Haskell-t és néhány Lisp-t. Annak ellenére, hogy egyikükben sem vagyok szakértő, szerintem igazad van abban, hogy nagyon különböznek. nincs ötleted az adatok kódként történő felhasználására. A Lisp-ben nincs (AFAIK) mintaillesztés. Valószínűleg a különbségek listája (!) hosszabb.
Válasz
A Lisp későbbi elsajátítása lehetővé teszi az Emacs testreszabását, amely vitathatatlanul a legfejlettebb szövegszerkesztő. Ezt nem lehet megtenni a Haskellben.
Megjegyzések
- [Élesíti zárójelét]
- Lehet, hogy valaki írhat hozzá szövegszerkesztőt. Úgy hallom, hogy az Emacs operációs rendszer nem jön '. (Gyerekem. Tudom, hogy elérhető a Viper mód. 🙂
- Valójában létezik egy Yi nevű Emacs-klón, amely pontosan ugyanúgy használja a Haskellt, mint Emacs a Lisp-t.Valójában a (GNU) Emacs-hez képest Yi még tisztább, mert a kerneljét is Haskell-ben írják, míg az Emacs-kernek általában nem írása Lisp-ben. A GNU Emacs ' kernel C-ben, a JEmacs ' például Java-ban van írva.
- @J ö rg, ha a GNU Emacs vagy XEmacs teljes klónja helyett részleges újbóli megvalósításról van szó, akkor ez nem ugyanaz. Hasonló a Word és a Wordpad vagy a Jegyzettömb összehasonlításához.
- @Thorbj ø rn Ravn Andersen: Igen, de nem egészen ez rossz. 🙂
Válasz
A Lisp elsajátításának legfőbb előnye, hogy megtanulom integrálni az FP-t egy valódi -világ orientált multiparadigma nyelv, ahelyett, hogy csak a tisztaságot hangsúlyozó akadémiai nyelv keretében tanulná.
Megjegyzések
- Gondolom, szeretné egy " Haskell vs Lisp " háború!
- A Haskell olyan tudományos nyelv, amely hangsúlyozza a tisztaságot … és sokan használják a való világban. Smalltalk ' s ebben a táborban is.
- Sokan használják a Haskellt a való világban?
- @Jon Harrop: Nos, én használd a Haskell-et a való világban (és ez bizonyos alkalmazásoknál nagyon jól működik), talán a kevesek közé tartozom (?)
Válasz
Én is C / C ++ / Python háttérből származom, és az elmúlt években néhányszor kipróbáltam az FP-t. Kezdetben Haskellre néztem, és nem tudtam sem fejet, sem farkat csinálni belőle, majd megpróbáltam az Ocaml-t, de ezzel nem jutottam tovább. Végül elkezdtem jó dolgokat hallani a Scaláról, kipróbáltam, és úgy találtam, hogy ez nagyon jól áll nekem (régebben is csináltam egy kicsit Java-t), arra a pontra, hogy egy évnyi Scala-ban való dumálás (és 161 Úgy tűnik, hogy Haskell sokkal értelmesebb. Valójában csak megrendeltem pár könyvet a Haskellről, és szeretnék még egyet engedni neki, bár ezt nagyrészt a Scalaz létezése motiválja.
Tehát azt találtam, hogy egy több paradigmás nyelvet (azaz Scala, de valószínűleg Lisp is beleférne a számlába), jó út az FP-be. De ha boldogan merülsz Haskellbe (nem voltam), hajrá.
Megjegyzések
- Érdekes, hogy továbbjutottál a Scalával mint OCaml. Hogy lehet?
- @Jon: Jó kérdés; nehéz kimondani. Lehet, hogy éppen nem voltam ' készen arra, hogy " bekerüljek abban az időben a " funkcióba. Talán véletlenül találtam egy Scala oktatóanyagot, amelyet a megfelelő szinten dobtak ki. Lehet, hogy a Scala ' s C / C ++ / Java törzs egy kicsit kevésbé idegenné tette. Tekintettel arra, hogy manapság bármilyen racionális fogadás inkább F # -ra, mint Scalára vonatkozna, valószínűleg <
valamikor felkeresem az OCaml-domaint, bár mivel csak a puszta örömöm miatt bonyolódom bele ebbe a dologba. belépve egy másik " programozási gondolkodásmódba " a C ++ nappali munkámhoz, perverz hajlandóságom van, hogy legközelebb újra megpróbáljam Haskellt.
Válasz
Eredetileg C / C ++ / Ruby háttérről érkeztem és FP fogalmakat használtam a Ruby-ban, amikor csak tudtam. Állam csak megsebesítette az agyam. Egyik haverom felhívott egy nap, és megkért, hogy írjak valamit Haskellbe (az első – és remélhetőleg nem utolsó – haskelli munkám!). Gyorsan megtanultam a nyelvet, és összedobtam valamit, ami működött. Nem volt szép, vagy bármi más, de sikerült.
Egy hónap szünetet tartottam Haskelltől, mert nem volt mire használnom. De amikor úgy döntöttem, hogy meg kell írnom a saját blog szoftveremet, Haskell-t használtam ( https://symer.io ). A Haskell nagyon klassz, mert egy problémát részekre bonthat, és ezeket a részeket a bemenet alapján másképp valósíthatja meg. Haskell az intelligens értékbokszolás révén rendkívül jól kezeli a kudarcot is. Olyan sok eszköz működik ezekkel a dobozokkal, hogy egyszerűen elfelejti, hogy léteznek.
A lisp (Scheme) tapasztalataim teljesen negatívak voltak. Nem csak a nyelv hiányolta ezeket az intelligens, egyszerű eszközöket, hanem olyan veszélyesnek érezte magát, mint a Ruby vagy a JavaScript. Borzalmas élmény volt, és semmi újat nem kínál Ruby vagy Python mellett.
A C ++ a memóriakezelésen kívül nem tarthat gyertyát Haskell előtt. A Haskell ugyanolyan gyors (ha nem gyorsabb), lényegesen szűkebb és sokkal biztonságosabb. De Haskell biztonsága soha nem jut be az út.
TL; TR Haskell egy friss levegő, Lisp pedig egy kissé funkcionálisabb Ruby.