Toimivan ohjelmointikielen valitseminen [suljettu]

Suljettu. Tämä kysymys on aiheen ulkopuolella . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

  • Mitä valitset, kirjoita paljon koodi, jota käytät johonkin siinä.
  • Ei ' ajattele Scala ?
  • @ykombinator: I ' ve kuulin siitä, mutta en ole etsinyt enempää. En tiedä ' en tiedä, onko sillä mitään tarjottavaa lueteltujen joukossa, vai voisiko se tuoda yhdistelmän mielenkiintoisia vaihtoehtoja jokaisesta niistä … Don ' ei tiedä. Kuulostaa minulta melko matalan profiilin kieleltä, vaikkakin se näyttää kasvavan suosiotaan.
  • En tiedä missä kuulit Java-maailman olevan " reunalla " – se ' on parhaillaan läpi suuren renessanssin, suurelta osin kiitos a) OpenJDK: sta vakiomuotoinen toteutus b) uudet JVM-kielet, kuten Scala ja Clojure, ja c) tosiasia, että suuret data- / pilviprojektit ovat lisääntymässä, valitsevat JVM: n kohdealustaksi ja d) Android. Alkuvuodesta 2012 se ' on todennäköisesti mielenkiintoisin yksittäinen foorumi, jolla ollaan …..
  • @mikera: Hyväksytty. Tämä on yli vuoden vanha, heti sen jälkeen, kun Oracle osti Sun Microsystemsin, ja kaikki huolestuttava ja spekuloiva Java hallitsevan yrityksen vaarantaa Javan tulevaisuus … JVM näyttää onneksi tällä hetkellä melko turvalliselta!

vastaus

Koska haluat käytännön   kieli:

vaihtoehtoinen teksti

Huomaa, että Haskellia ja Lispiä käytetään teollisuudessa enemmän kuin muita, vaikka siellä on ollut viime aikoina kiinnostunut Clojuresta ja F #: sta.

Mutta katso mitä tapahtuu, kun lisätään Scheme sekoitukseen:

alt text

Hmm, ei näytä siltä kuin nyt akateemiselta kieleltä, eikö niin?

Yllä oleva kaavio on todennäköisesti valhe; sana ”järjestelmä” voi esiintyä apuna halusi mainoksia muissa yhteyksissä paitsi ohjelmointikielissä. 🙂

Joten tässä on toinen kaavio, joka on todennäköisesti (vähän) edustavampi:

alt-teksti

Jos haluat tutustua Scheme-järjestelmän todella potkukielen murteeseen, katso Maila.

Kommentit

  • Vau, mukava viesti. Maila on juuri se, mitä käytin ' m … PLT-Scheme oli sen nimi, kun aloitin sen oppimisen. Tuo punainen viiva viimeisessä kuvassa häiritsee minua. Koskaan ajatellut, että järjestelmää voitaisiin käyttää niin paljon. Ja Clojure näyttää varmasti nousevan. Hmm …
  • @M. Joanis: Ota kaksi viimeistä kaaviota suolajuurella; portaikkomainen ilme ja viimeisen kaavion volatiliteetti viittaavat siihen, että kaaviossa ei ole paljon datapisteitä, vaikka se viittaa siihen, että jonkun mielestä kielet ovat maksamisen arvoisia.
  • @Robert Harvey, mitä vaihdettu toisesta kaaviosta kolmanteen?
  • @Geoffrey: Katso tekstityksiä; Lisäsin hakutermeihin sanan " developer ".
  • Huomaa, että Haskell ja Lisp ovat myös homonyymejä ja että todellakin ' -tietoja ei yleistetä muulle maailmalle. ITJobsWatch listaa 79 Scala-työtä, 55 F #, 47 Haskell, 30 Lisp ja 7 Clojure-työtä.

Vastaa

Jos haluat oppia toiminnallisen ohjelmoinnin, saatat palata paremmin oppimaan ensin Haskellin ja sitten käyttämään haluamaasi kieltä. Voit oppia toiminnallisen ohjelmoinnin muilla kielillä, mutta ne sallivat silti välttämättömän ja olio-koodin. Jos kirjoitat todellisen ohjelman Haskellissa, opit toiminnallisen ohjelmoinnin nopeammin, koska muut paradigmat eivät ole käytettävissä palata takaisin.

Haskell-ohjelman kirjoittamisen jälkeen sinulla on työkaluja, kuten monaatit ja tekniikat kuten pisteettömän koodauksen tuominen valitsemallesi kielelle. Käsitteet näyttävät sopivan erityisen hyvin järjestelmään.

Kommentit

  • Luulen, että sinä ' on oikeassa puhtaan toiminnallisen kielen valitsemisessa ensin. Olisin hyvin kiinnostunut näkemään funktionaalisten kielten järjestyksen puhtauden mukaan.
  • @M. Joanis: kysymyksessäsi luetelluilla kielillä sanoisin, että Haskell on puhtain, jota seuraavat Clojure, F # ja Lisp.

Vastaa

Jos pystyt toteuttamaan kohtuullisen monimutkaisen järjestelmän kaaviossa, sinä melko toivottavaa yrityksissä, joissa haluat todennäköisesti työskennellä. Aiemmin urani aikana törmäsin joihinkin opiskelijoihin, jotka olivat tehneet melko paljon työtä Scheme-ohjelmassa, ja ainoa kerta, kun se oli haitta, oli se, että he eivät kyenneet selittämään työtään tai eivät ymmärtäneet sitä riittävän hyvin perustietojen toteuttamiseen rakenteita ja algoritmeja kohtuullisen ajan kuluessa. Annoin ehdokkaiden aina vastata näihin kysymyksiin haluamallaan kielellä; törmäsin joihinkin ihmisiin, jotka ajattelivat olevansa parhaita järjestelmässä, jotka onnistuivat kamppailemaan melko vähän asioilla, joiden pitäisi olla helppoja, kuten elementin lisääminen linkitettyyn luetteloon, mikä hämmensi minua.

Mutta jos pystyisit ”hankkimaan” järjestelmän tarpeeksi hyvin jopa keskimääräisen verkkosovelluksen kirjoittamiseen, se olisi korkeintaan melko hyvä myyntipiste vakavat ohjelmistoyritykset.

Jos haastattelisit ”blub” -myymälässä ja kehittäjät ajattelivat vain olevasi outoja Scheme- tai Haskell-taitosi tai F # -taitosi takia, et todennäköisesti halua työskennellä siellä. Useimmissa tapauksissa osaavat kehittäjät valitsevat keikkansa, joten älä hiki ”käytännöllisyyttä”, ellei ainoa vaihtoehto, jonka voit kuvitella tulevaisuudessa, on yritys. Työskentele pätevyyden, joustavuuden ja ongelmien hajottamisen puolesta.

College ei tarkoita käytännöllisyyttä. Kyse on turvallisen ympäristön luomisesta tutkittavaksi ja oppimiseksi. Se on itse asiassa hyödyllistä, vaikka päätät kirjoittaa tavallisen ohjelmiston loppuelämäsi ajaksi.

Tästä huolimatta en usko ” t ymmärrät, miksi haluaisit rajoittaa vain yhteen näistä valinnoista niin pian. Voisit helposti saada käsityksen kaikista neljästä kielestä noin neljän viikon aikana, ja sitten valita yksi, joka keskittyy parhaiten nykyisiin mielihahmoihisi. palaa toiseen vaihtoehtoosi ja yritä toteuttaa jotain vastaavaa. Siirry johonkin monimutkaisempaan ja harkitse vaihtoehtojasi uudelleen. Kokeilu on hyvä. Ellet yritä ansaita elantoa ensi kuussa, sinun ei tarvitse tule vielä asiantuntijaksi.

Olen kirjoittanut joitain Scheme, F #, Emacs Lisp ja Common Lisp, ja lukenut ainakin vähän Haskellia, ainakin satunnaisesti viime vuosina. En voi sanoa olevani asiantuntija missään heistä, mutta jokainen retki näille kielille on hyödyttänyt minua kaikilla muilla kielillä, joita ammattimaisesti käytän (C #, Java, Ruby ja joskus Boo, Perl ja Python). Uteliaisuus rakentaa sinulle kestävämmän ja tyydyttävämmän uran kuin mikään muu.

Kommentit

  • " Uteliaisuus rakentaa sinulle kestävämmän ja tyydyttävämmän uran kuin mikään muu. " Tämä lausunto on erittäin inspiroiva. Olet ' oikeassa. Olen ' liian kiireinen. Minusta tuntuu aina, että kaiken oppiminen vie liian paljon aikaa … Jos voisin palata 12 vuotta taaksepäin, aloittaessani <

tiedän, ettei tuhlaa kaikkea aika VB: llä ja C ++: lla. Minusta tuntuu, että nämä vuodet olivat hukkaan hukkaan. En ollut ' t utelias. Halusin koodata tavaraa. Kielien käyttö, jonka tiesin, riitti. Ajattelin tuolloin, että tiesin kohtuullisen määrän, mutta että niin kauhistuttavasti ei ollut lainkaan.

2 ' > Vastaus

Sukeltelin Haskelliin hetkeksi, mutta päädyin siihen johtopäätökseen, että se oli vähän liian akateeminen. Oli hyvin vaikeaa tehdä mitään käytännöllistä. Puhtaalla toiminnallisella kielellä IO: n kaltaiset asiat eivät vain sovi malliin, joten sinun on käsiteltävä monadeja. Päätin, että minun pitäisi käyttää valtavasti aikaa ollakseni vain tuskin pätevä, joten siirryin eteenpäin .

Tein Schemein yliopistossa. Saattaa kuulostaa vähäpätöiseltä, mutta kaikki vanhemmat ovat todella häiritseviä / ärsyttäviä. Vaikeaa palata asiaan, kun olen käyttänyt Pythonin kaltaisia kieliä.

Viime aikoina minulla on Se on toiminut, mutta se voi olla myös välttämätöntä ja olio-suuntautunutta, kun haluat. Tämä yhdessä minkä tahansa .NET-kirjastojen käytön kanssa mahdollistaa puhtaiden toiminnallisten osien helposti sekoittamisen käytännön asioihin, kuten GUI: t, IO ja verkkoyhteydet. Voit hankkia erillisen version F #: sta.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=effc5bc4-c3df-4172-ad1c-bc62935861c5&displaylang=en

Kommentit

  • Sillä, että F # ja Clojure eivät ole puhtaasti toiminnallisia, on tärkeä rooli heidän hyväkseen. Ehkä F # voisi olla minun lähtökohtani Nettoperhe jonain päivänä …
  • @MJoanis, ilmoitit kustannukset pisteenä F: tä vastaan, mutta kuten Erik huomauttaa, voit saada sen täysin ilmaiseksi.
  • Jos luin ehdot oikein, saat periaatteessa sen ilmaiseksi sillä ehdolla käyttämättä sitä (tai ostamalla lisenssejä). Mutta ymmärrän, että se voi silti olla erittäin hyvä asia oppia, jos päädyin yritykseen, joka käyttää Visual Studiota.' kokeilen sitä todennäköisesti, kun olen ' m toiminnallinen vapaammin toimivalla ohjelmointikielellä.
  • @M. Joanis: Ei, F # on jopa avoimen lähdekoodin ja voit yrittää juosta Monossa muilla alustoilla.
  • Ehkä ajat ovat muuttuneet vuodesta 2010, mutta koska joku, joka aloitti haskellin oppimisen viime kuukausina, minä älä ' usko, että IO: n tekeminen haskellissa on ollenkaan vaikeaa. Perusasioita varten sinun tarvitsee vain oppia uusi syntaksi. Todellisen perustavanlaatuisen ymmärryksen saaminen vie muutaman viikon huipputason, mutta en todellakaan näe ', mitä fuzz on monadeista. En usko ' sitä, että heitä oli vaikea oppia kuin luokkia, instansseja, staattisia jäseniä ja kaikkea muuta OOP: n osavaltioon liittyvää jazzia.

Vastaus

Arvioin kaikki tärkeimmät toiminnalliset kielet vuosi tai kaksi taaksepäin siitä näkökulmasta, että haluan käytännöllisen, yleiskäyttöisen toiminnallisen ohjelmointikielen.

Päädyin valitsemaan Clojure , joka on myöhemmin osoittautunut erinomaiseksi valinnaksi.

Keskeiset syyt olivat:

  • Kirjaston ekosysteemi – jotta kieli olisi hyödyllinen, tarvitset käyttöoikeuden hyviin kirjastoihin. JVM: ssä oleminen tarkoittaa, että sinulla on helppo pääsy suurimpaan avoimen lähdekoodin kirjastoon ja työkalujen ekosysteemiin, joten JVM-kielen käyttäminen ei ollut järkevää käytännön näkökulmasta. Scala sai myös hyvät pisteet täällä.

  • Makrometroprogrammit – Tämä näkökohta of Lisp vetoaa aina minuun, varsinkin kun odotin tekevän melko vähän koodia. Olen ”arvostanut suuresti Paul Grahamin lyhyessä esseessä” Keskiarvojen voittaminen esitettyjä argumentteja. Erilaiset Lisps-pisteet saivat kaikki vahvat pisteet täällä.

  • Suorituskyky oli ”hyvä tarpeeksi ”- Clojure kootaan aina, ja se saa JVM JIT -optimoijan ja erinomaisen GC: n edut. Kuten aina, toiminnallisen kielen käytössä on jonkin verran yleiskustannuksia, mutta Clojuren kanssa oli selvää, että kumpikin voi lähellä Java-nopeutta hieman vaivalla (Clojure tukee Java-primitiivejä ja valinnaista staattista kirjoittamista tilanteissa, joissa sitä tarvitaan). Arvioni on, että Clojure on 2-5x hiekkapallokenttä hitaampi kuin mitä voit saavuttaa optimoidulla Java- tai C ++ -koodilla, mikä on yhdenmukaista puutteellisten vertailuarvojen kanssa. , ja ajan myötä odotan, että tämä ero kavenee edelleen. Lisäksi on tarpeeksi helppoa kirjoittaa erityisen suorituskykyherkkä koodi puhtaalla Java-ohjelmalla ja kutsua sitä Clojuresta.

  • Samanaikaisuus – Clojurella on melko ainutlaatuinen ja tehokas lähestymistapa samanaikaisuuteen, erityisesti erittäin moniydinten samanaikaisuuden suhteen. Sitä on vähän vaikea selittää, mutta tämä video on erinomainen antamaan maun periaatteista. Luulen, että Clojurella on tällä hetkellä paras vastaus hankalaan kysymykseen ”Kuinka sinun pitäisi hallita jaettua, samanaikaista ja muutettavaa tilaa toiminnallisella ohjelmointikielellä?”.

  • Kielisuunnittelu – Clojure on IMO: n hyvin harkittu kielisuunnittelu. Esimerkkejä ovat vektori [] – ja kartta {} -kirjainten käyttäminen tavallisten Lisp-sulkeiden lisäksi, muuttumattomien pysyvien tietorakenteiden käyttö, laiskuuden tukeminen koko kielellä sekvenssin abstraktion avulla ja ohjelmoijalle monien ortogonaalisten ominaisuuksien tarjoaminen erilaisten ongelmien ratkaisemiseksi . Katso abstraktiotaide ja yksinkertainen helppo .

  • Yhteisö – aina subjektiivinen, mutta pidin siitä, mitä näin Clojure-yhteisössä. Asenne oli erittäin hyödyllinen, rakentava ja käytännöllinen. ”Tee asioita tehty” -asiakirjassa on voimakas korostus, mikä heijastaa mahdollisesti sitä tosiasiaa, että monet Clojure-ihmiset (mukaan lukien Rich Hickey itse) tulevat monimutkaisten yritysjärjestelmien rakentamisen taustasta. Se, että Clojure-yhteisöllä on vahvat siteet myös Java-yhteisöön, oli tärkeä vakuuttaakseni minut siitä, että Clojure ei vaaranna juuttua ”kapealle”.

Jos minun pitäisi nimetä muutama pieni Clojure-haittapuoli, nämä olisivat:

  • Dynaaminen kirjoittaminen – usein tämä on etu tuottavuuden kannalta, mutta keskimäärin luulen, että vaihdan tämän vahvempaan tyyppitarkastukseen ja päättelyyn. Enimmäkseen tätä lievennetään hyvällä automaattisella testipaketilla, mutta jos pidät kääntäjän staattisesti vahvistamista tyyppeistä, Haskell tai Scala saattavat olla enemmän teekuppi.

  • iv kärjessä – Clojure kehittyy erittäin nopeasti ja siellä ”sa paljon innovaatioita – tämän haittapuolena on, että kokeiluja on paljon, jotkut kirjastot ja työkalut ovat edelleen epäkypsiä, ja Clojure-pääversioiden välillä tapahtuu ajoittain rikkovia muutoksia, joita sinun on pidettävä silmällä.

Kaiken kaikkiaan en kuitenkaan usko, että voit mennä pieleen Clojuren kanssa, jos haluat erinomaisen ja käytännöllisen modernin toiminnallisen kielen!

Kommentit

  • Kiitos! Upea viesti! Harkitsin juuri näinä päivinä sen käyttöä yrityksen sisäisessä projektissa, joka perustuu voimakkaasti puihin ja rekursiivisuuteen. Lisäksi täällä on melko paljon Java-koodia, jota voimme käyttää uudelleen Clojuren kanssa.

Vastaa

Se näyttää siltä, että olet tehnyt kotitehtäväsi, joten tiedät todennäköisesti jo tämän, mutta Scheme on Lispin murre aivan kuten Common Lisp. Jos pidät paljon asioita Scheme-ohjelmasta, mutta et pidä sen akateemisesta luonteesta, kokeile Common Lisp. TIOBE -hakemiston mukaan se on 13. suosituin kieli vs. kaavio sijainnissa 26.

Muutama valitsemasi kieli Mainitut henkilöt näkyvät viime aikoina näkemissäni työhön liittyvissä kuvauksissa, vaikka se saattaa olla vain pieni otosjoukkoni. Oppin henkilökohtaisesti Haskellia, vaikka en aio käyttää tätä kieltä suoraan työssäni. Funktionaalisen ohjelmoinnin käsitteet ovat minulle arvokkaampia tulevaisuuden ohjelmasuunnittelussa kuin itse kielen suora myyntikelpoisuus.

Kommentit

  • Kiitos TIOBEsta linkki, se on mielenkiintoinen viite. Luulen, että valitset Haskellin puhtauden funktionaalisen ohjelmoinnin kannalta?
  • @ M.Joanis: Melko paljon, vaikka ajattelen myöhemmin poimimisen jälkeenpäin ' Lisp samoin. Katso programers.stackexchange.com/questions/18838/…
  • Valittu vastaus antaa paljon järkeä. Puhtaus näyttää olevan oikea tapa edetä, kunnes olen todella ymmärtänyt koko toiminnallisen paradigman.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *