Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Haskell - co kto wie  (Przeczytany 5577 razy)

  • Gość
Haskell - co kto wie
« dnia: 2011-08-25, 15:43:39 »
Witam.

Chciałem się spytać o ten język, czy jest dobrze wspierany w linuksie i czy można dostać jakieś tutoriale/książki w języku polskim o nim ?
Zaciekawiłem się nim bo z tego co wiem jest idealny do tworzenia rzeczy, które wykorzystywały by, wielordzeniowość dzisiejszych procesorów i jest językiem szybkim i stabilnym do zadań matematycznych? Mi akurat chodzi o tworzenie sztucznej inteligencji.

Pozdrawiam i dziękuje z góry za odpowiedzi.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Haskell - co kto wie
« Odpowiedź #1 dnia: 2011-08-25, 17:46:11 »
Jest wspierany. Do dyspozycji są:
* GHC - (Glasgow Haskell compiler), ma błogosławieństwo haskell.org, uważany za platformę referencyjną i w związku z tym najintensywniej rozwijany.
* haskell-platform - całą otoczka z bibliotekami i narzędziami zbudowana dookoła GHC
* hugs - interpreter Haskella 98, lżejszy od GHC, dobry do nauki
* helium - specjalna dydaktyczna wersja Haskella

Cała dokumentacja jest tutaj (książki), tutaj (porównanie wersji) i tutaj (tutoriale).

Aby dobrze programować w HS musisz rozbić całą swoją wiedzę programistyczną na kawałki i złożyć od nowa. Dobrym wstępem jest dobre zrozumienie aspektów funkcjonalnych w Rubym, Scali albo Clojure - języki nie aż tak kosmiczne jak HS a pozwalają liznąć funkcjonalności.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

  • Gość
Haskell - co kto wie
« Odpowiedź #2 dnia: 2011-08-26, 11:46:12 »
Dziękuje bardzo za tak obszerną odpowiedź. Niestety widzę trochę braków z językiem polskim, angielski znam, ale nie w takim stopniu, aby czytać o programowaniu :(

"Program napisany w języku Haskell i skompilowany przy użyciu GHC wykonuje się z prędkością porównywalną do C czy C++. Różnice w szybkości są jednak tak małe, że prawie bez znaczenia. Oczywiście nie dotyczy to aplikacji takich jak np. kodery MPEG, czy inne aplikacje wykonujące złożone obliczenia, które większość czasu wykonania spędzają na wykonywaniu małej części kodu. W takich przypadkach zdecydowanie lepszym rozwiązaniem jest zastosowanie języka C++."

A więc jednak nie jest wcale szybszy, a nawet potrafi być wolniejszy..

Pozdrawiam.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Haskell - co kto wie
« Odpowiedź #3 dnia: 2012-12-02, 20:53:11 »
Cytuj
nie pozwala na żadne efekty uboczne
Wbrew pozorom nie ma języków czysto funkcyjnych (nazwijmy to "purely pure"). Jeżeli język nie pozwalałby na żadne efekty uboczne, to na wuj taki język? Wykonanie dowolnego programu spowodowałoby tylko zużycie paru J prądu i podniesienie temperatury o kilka stopni. Wyników by nie podał, bo to efekt uboczny :)

W każdym języku funkcyjnym jest element niefunkcyjny ("impure") umożliwiający m.in. kontakt ze światem zewnętrznym. W Haskellu to monady, w Erlangu porty i komunikaty, itd. I odwrotnie - coraz więcej języków będących tradycyjnie imperatywnymi nabiera cech funkcyjności - np lambdy w C++11 (brakuje mi hintu dla kompilatora, funkcja typu "pure" jako rozwinięcie funkcji "const" - dałaby dużo dla optymalizatora). Większość języków skryptowych z kolei jest hybrydą funkcyjności i imperatywności, z różnie postawioną granicą (jak dla mnie np Ruby jest nieco bardziej funkcyjny od Pythona).

A co do wydajności - każdy język jest w czymś dobry. Nie zawsze najszybszy jest najlepszy. Czasami wolniejsze jest bardziej niezawodne. Czasami większe jest bardziej energooszczędne. Itepe itede. Nie ma języka "one size suits all".

P.S.
Jaki był cel wygrzebania wątku sprzed 3 miesięcy?
P.P.S.
Wywal reklamę ze stopki.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy