Zárt . Ez a kérdés véleményalapú . Jelenleg nem fogadja el a válaszokat.

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.

  • Sima mozgású megközelítés 🙂
  • 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.

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük