OCaml
Wyświetlono archiwalną wersję tematu "OCaml" z forum pl.comp.programming
Krzysztof Parzyszek - 29 Maj 2002, 21:03
Czy ktos moglby mi wyjasnic skad ta nagla popularnosc OCamla?
Wszyscy ekscytuja sie tym jezykiem, szczegolnie w porownianiu
z C czy C++. Zastanawia mnie tylko jedna rzecz: dlaczego
wlasnie OCaml, a nie Standard ML, z ktorego OCaml sie wywodzi?
O ile mi wiadomo, OCaml to ``wynalazek'', zdefiniowany przez
swoja implementacje. SML'97 to niemal ustandaryzowany jezyk
z wieloma kompilatorami/interpreterami. Dlaczego wiec OCaml?
Lucifer - 29 Maj 2002, 21:31
Czy ktos moglby mi wyjasnic skad ta nagla popularnosc OCamla?
Wszyscy ekscytuja sie tym jezykiem, szczegolnie w porownianiu
z C czy C++. Zastanawia mnie tylko jedna rzecz: dlaczego
wlasnie OCaml, a nie Standard ML, z ktorego OCaml sie wywodzi?
O ile mi wiadomo, OCaml to ``wynalazek'', zdefiniowany przez
swoja implementacje. SML'97 to niemal ustandaryzowany jezyk
z wieloma kompilatorami/interpreterami. Dlaczego wiec OCaml?
To ja zacząłem tą burze na pclc, więc sie tłumacze - dlatego ocaml, a
nie sml, bo nie znalazłem w pakietach debiana nic ciekawego na temat
sml'a i naczytałem się, że kompilator jest strasznie kobylasty. Ocaml'a
dostałem na tacy, ma sporo dokumentacji, jest obiektowy i na początek
chyba najlepszy.
wcześniejszych potyczkach z Pascalem, <moje subiektywne zdanieale w
porównaniu z OCamlem wypadają blado </moje subiektywne zdanie. Poza tym
języki funkcyjne to raczej inny świat, inne zastosowanie itd...
Lucifer
Tomasz Zielonka - 29 Maj 2002, 22:24
Czy ktos moglby mi wyjasnic skad ta nagla popularnosc OCamla?
Wszyscy ekscytuja sie tym jezykiem, szczegolnie w porownianiu
z C czy C++. Zastanawia mnie tylko jedna rzecz: dlaczego
wlasnie OCaml, a nie Standard ML, z ktorego OCaml sie wywodzi?
O ile mi wiadomo, OCaml to ``wynalazek'', zdefiniowany przez
swoja implementacje. SML'97 to niemal ustandaryzowany jezyk
z wieloma kompilatorami/interpreterami. Dlaczego wiec OCaml?
Sam chętnie przesiadłbym się na Clean'a, ale odstraszają mnie opłaty
licencyjne i gorsze wsparcie dla Linuksa, więc na razie piszę głównie w
OCamlu.
Dlaczego OCaml, a nie SML?
W pewnej mierze może to wynikać z jakiejś mody, ale jest to też bardzo
dobry język programowania i zasługuje na zainteresowanie. Oczywiście nie
twierdzę, że SML nie zasługuje, jest to doskonały język do zastosowania
m.in. w dużych projektach, gdzie stabilność, obecność standardów i wielu
implementacji ma ogromne znaczenie. Szkoda, że oba są niedoceniane w
"przemyśle".
W ostatnich latach OCaml wydaje się być aktywniej rozwijany, jego twórcy
duży nacisk położyli na używalność języka i jego implementacji. Np. do
OCamla jest działający debugger o dużych możliwościach, a do SML? Debugger do
SML/NJ chyba od lat nie jest rozwijany, w innych implementacjach nie
widziałem. (Właściwie nie używam debuggerów, ale niektórzy lubią mięc
pod ręką).
Wynika to zapewne z tego, że kilkunastu naukowców w INRIA dostaje
pieniążki za usprawnianie OCamla ;) Dzięki temu powstały też bardzo
fajne aplikacje, jak HeVeA czy ActiveDVI.
Poza tym OCaml oferuje wiele mechanizmów, których w SMLu nie
uświadczysz. Są to:
- wsparcie dla programowania obiektowego
- etykietowane parametry funkcji (bardzo przyjemne)
- typy "polymorphic variant"
- CamlP4 - umożliwia stosowanie innej składni, rozszerzanie składni,
tworzenie makr.
- ... inne, o których zapomniałem
Są drobne rzeczy, które trochę pomagają, np. to, że konstruktury typów
algebraicznych zaczyna się dużą literą, a nazwy wartości i zmienne we
wzorcach małymi. Dzięki temu trudniej się pomylić i edytory mogą
odpowiednio je kolorować.
Są też rzeczy, które w OCamlu denerwują, np.
- etykiety pól rekordów się przesłaniają, tj. utrudnione jest użycie
takich samych nazw pól w różnych rekordach.
- mutowalne stringi (podoba mi się sposób implementacji Stringów w Clean'ie).
- drobne pułapki w składni (ale można użyć składni Revised przy pomocy
CamlP4.
Na razie tyle. Czas spać.
pozdrawiam,
tomek
Krzysztof Parzyszek - 29 Maj 2002, 22:40
To ja zacząłem tą burze na pclc, więc sie tłumacze - dlatego ocaml, a
nie sml, bo nie znalazłem w pakietach debiana nic ciekawego na temat
sml'a i naczytałem się, że kompilator jest strasznie kobylasty Ocaml'a
dostałem na tacy, ma sporo dokumentacji, jest obiektowy i na początek
chyba najlepszy..
http://www.standardml.org
W szczegolnosci http://www.smlnj.org zawiera linki do opisow,
artykulow, tutoriali itp.
Co do debiana, to sam uzywalem mlton-a (poza SML/NJ). Nie pamietam,
czy byl od razu jako .deb, czy .rpm. Tak czy inaczej dzialal calkiem
sprawnie. Jedyne co mi sie bardzo w mltonie nie podoba, to to,
ze jest za bardzo linuksowy. Nie udalo mi sie go uruchomic pod
FreeBSD, ale nie mialem tez zbyt wiele czasu, zeby z nim walczyc.
Na FreeBSD uzywam SML/NJ i chwale sobie, moze z wyjatkiem srednio
wygodnego generowania plikow wynikowych (heapy, zamiast egzekow).
Nie wiem, co jest najlepsze na poczatek. Mnie sie podoba SML. :)
Dodam, ze nie pisze odnosnie jakichs ostatnich burz --- watek
OCamla przewijal sie tu i owdzie juz od dosc dawna. Zastanawial
mnie tylko ten brak jakichkolwiek odnosnikow do SML-a, ktory
przeciez jest bardziej ``pierwotny''.
wcześniejszych potyczkach z Pascalem, <moje subiektywne zdanieale w
porównaniu z OCamlem wypadają blado </moje subiektywne zdanie. Poza tym
języki funkcyjne to raczej inny świat, inne zastosowanie itd...
Zgadza sie. Jezyki maja swoje cechy, a nie uniwersalne zalety.
W zaleznosci od potrzeb dobiera sie jezyk i wowczas jego cechy staja
sie zaletami. To oczywiscie wyidealizowany obraz, bo w praktyce
bywa roznie (a wlasciwie tak samo: C/C++ :) ...
Ponadto piszac w C czy C++ nie nakladamy na nikogo obowiazku
zdobycia wlasciwych kompilatorow, takie bowiem sa juz czescia
systemu. Chyba, ze piszemy pod jakas konkretna platforme...
Tomasz Zielonka - 30 Maj 2002, 04:17
Co do debiana, to sam uzywalem mlton-a (poza SML/NJ). Nie pamietam,
czy byl od razu jako .deb, czy .rpm. Tak czy inaczej dzialal calkiem
sprawnie. Jedyne co mi sie bardzo w mltonie nie podoba, to to,
ze jest za bardzo linuksowy. Nie udalo mi sie go uruchomic pod
FreeBSD, ale nie mialem tez zbyt wiele czasu, zeby z nim walczyc.
Na FreeBSD uzywam SML/NJ i chwale sobie, moze z wyjatkiem srednio
wygodnego generowania plikow wynikowych (heapy, zamiast egzekow).
Wiesz może jaki jest status FFI (Foreign Function Interface) w SMLu?
Wiem, że MLTon ma własne niestandardowe FFI, ale czy w ogóle istnieje
odpowiedni standard? Jeśli nie i każda implementacja SML ma swoje FFI,
to "standardowość" SMLa na tym traci. Żeby nie było, że tak sobie
narzekam - potrzebuję FFI w największym z moich projektów.
pozdrawiam,
tomek
Krzysztof Parzyszek - 30 Maj 2002, 06:48
Wiesz może jaki jest status FFI (Foreign Function Interface) w SMLu?
Niestety nie mam zadnych doswiadczen z FFI. Obawiam sie, ze standardu
nie ma i ile jest implementacji jezyka, tyle moze byc roznych implemen-
tacji FFI.
wszawa dziwa - 30 Maj 2002, 08:26
Sam chętnie przesiadłbym się na Clean'a, ale odstraszają mnie opłaty
licencyjne
75$ jest takie straszne?
wszawa dziwa - 30 Maj 2002, 08:26
Czy ktos moglby mi wyjasnic skad ta nagla popularnosc OCamla?
Nie wydaje mi sie nagla. Ja raczej zauwazam stopniowy jej wzrost.
O OCamlu duzo sie slyszy:
- kilkakrotne sukcesy w konkursie zwiazanym z ICFP
- artykuly na LWN
- newsy na /.
- wyniki benchmarkow Douga Bagleya, o ktorych pisano wszedzie
- kompilator, narzedzia i biblioteki trafily do wielu popularnych
dystrybucji linuxa
- ludzie piszacy w ocamlu wydaja sie bardzo aktywni, zamieszczaja
'anonse' swoich projektow na FM, SF, c.l.functional, c.l.ml itp.
Generalnie widac, ze jezyk zyje, ma uzytkownikow i jest czyms wiecej
niz tylko swietnym jezykiem do pisania kompilatorow *MLa.
O SML nie slyszy sie prawie wcale. Widac wlasciwie tylko 3 osoby
jakos zwiazane z SMLem - Sestofta (ostatnio juz nie widac), Rossberga
i Blume. Poza anonsami kolejnych (najczesciej niestabilnych,
developerskich) wersji SML/NJ nie widac niemal *nic*.
Ludzie zwiazani w jakikolwiek sposob z OCamlem potrafili wytworzyc
wokol niego duzo (niemal zawsze pozytywnego) 'szumu', ci od SMLa spia
i nie wydaje sie, by mieli zamiar obudzic sie...
Wszyscy ekscytuja sie tym jezykiem, szczegolnie w porownianiu
z C czy C++. Zastanawia mnie tylko jedna rzecz: dlaczego
wlasnie OCaml, a nie Standard ML, z ktorego OCaml sie wywodzi?
Ocaml nie wywodzi sie z SMLa.
O ile mi wiadomo, OCaml to ``wynalazek'', zdefiniowany przez
swoja implementacje.
Ale *wybitnie* dobra implementacje. To rowniez jedna z przyczyn
popularnosci. Dobra to:
- praktyczna i przypominajaca znane kompilatory C/C++ - dla osob
ktore wczesniej programowaly w C/C++ ma to ogromne znaczenie - nie
musza zmieniac wielu swoich przyzwyczajen. Tak samo pisze sie
mejkfajle, sa jednostki kompilacji z prawdziwego zdarzenia,
normalne, 'stand alone' programy wynikowe. SML/NJ i MLTon sa pod
tym wzgledem bardzo egzotyczne...
- wydajna. kompiluje *bardzo* szybko i daje bardzo szybki kod
wynikowy, o stosunkowo niewielkim zapotrzebowaniu na pamiec (w
odroznieniu od SML/NJ). Ma znakomity runtime, GC ktorego efektow
dzialania (tych negatywnych rzecz jasna) prawie nie widac.
- prawie bezbledna.
wszawa dziwa - 30 Maj 2002, 08:26
Czy ktos moglby mi wyjasnic skad ta nagla popularnosc OCamla?
Jest jeszcze jedna rzecz - do OCamla latwo znalezc dobra
dokumentacje. Standard SMLa natomiast kosztuje. O ile caly jezyk
OCaml, wraz z roznymi 'kruczkami' mozna poznac z manuala i FAQa, to z
SMLem jest znacznie gorzej. Kontakt z SMLem jest przez to nieco
frustrujacy, np. do dzis nie wiem, jak zrobic odpowiednik OCamlowego:
let some_function (((foo, bar) as fubar, blah) as tuple) = ...
Tomasz Zielonka - 30 Maj 2002, 15:22
| Sam chętnie przesiadłbym się na Clean'a, ale odstraszają mnie opłaty
| licencyjne
75$ jest takie straszne?
Hmm... ostatnio jak zaglądałem było jakieś 400 lub 500 $. Jakieś zmiany?
Pozdrawiam,
Tomek
Krzysztof Parzyszek - 30 Maj 2002, 16:31
np. do dzis nie wiem, jak zrobic odpowiednik OCamlowego:
let some_function (((foo, bar) as fubar, blah) as tuple) = ...
fun some_function (tuple as (fubar as (foo,bar))) = ...
wszawa dziwa - 30 Maj 2002, 17:50
Hmm... ostatnio jak zaglądałem było jakieś 400 lub 500 $
495$ 8-(
Jakieś zmiany?
Najwyrazniej - kiedys to bylo 75$ :(
runtime z OCamla, wybitny generator kodu MLRISC, wystarczy to zlozyc
do kupy i 'troche' dopisac... To jak, kiedy zaczynamy? :PPP
Marek - 31 Maj 2002, 04:40
| O ile mi wiadomo, OCaml to ``wynalazek'', zdefiniowany przez
| swoja implementacje.
Ale *wybitnie* dobra implementacje. To rowniez jedna z przyczyn
popularnosci. Dobra to:
- praktyczna i przypominajaca znane kompilatory C/C++ - dla osob
ktore wczesniej programowaly w C/C++ ma to ogromne znaczenie - nie
musza zmieniac wielu swoich przyzwyczajen. Tak samo pisze sie
mejkfajle, sa jednostki kompilacji z prawdziwego zdarzenia,
normalne, 'stand alone' programy wynikowe. SML/NJ i MLTon sa pod
tym wzgledem bardzo egzotyczne...
- wydajna. kompiluje *bardzo* szybko i daje bardzo szybki kod
---------------------------------^^^^^^^^^^^^^^^^
Jak szybki?, jakis zyciowy przyklad np. diagonalizacja macierzy
2000X2000 ?
wynikowy, o stosunkowo niewielkim zapotrzebowaniu na pamiec (w
odroznieniu od SML/NJ). Ma znakomity runtime, GC ktorego efektow
dzialania (tych negatywnych rzecz jasna) prawie nie widac.
--
siga brak ;(
Tomasz Zielonka - 31 Maj 2002, 07:29
| Hmm... ostatnio jak zaglądałem było jakieś 400 lub 500 $
495$ 8-(
| Jakieś zmiany?
Najwyrazniej - kiedys to bylo 75$ :(
runtime z OCamla, wybitny generator kodu MLRISC, wystarczy to zlozyc
do kupy i 'troche' dopisac... To jak, kiedy zaczynamy? :PPP
A wiesz, że też o tym myślałem. Tyle, że na razie nie czuję się na
siłach, ale próbuję to zmienić. Na razie czytam sobie o teorii typów,
itp.
pozdrawiam,
tomek
wszawa dziwa - 31 Maj 2002, 08:33
Jak szybki?
Dla typowego, wysokopoziomowego kodu daje zblizona do gcc wydajnosc.
jakis zyciowy przyklad np. diagonalizacja macierzy 2000X2000 ?
To jest wysokopoziomowy jezyk, ktory powstal z mysla o obliczeniach
symbolicznych, wiec to nie jest zyciowy przyklad. zyciowym byloby np.
symboliczne rozniczkowanie duzych wyrazen, albo parsowanie duzego
pliku tekstowego, w ktorym jest wydajniejszy niz gcc. Mowimy o
wydajnosci kodu generowanego przez _wysokopoziomowy_ jezyk dla
_wysokpoziomowego_ kodu, a nie o kompilatorze fortranu. a do
diagonalizacji macierzy uzywa sie LAPACKa z BLASem, albo ATLASem...
Marek - 31 Maj 2002, 10:46
| Jak szybki?
Dla typowego, wysokopoziomowego kodu daje zblizona do gcc wydajnosc.
| jakis zyciowy przyklad np. diagonalizacja macierzy 2000X2000 ?
To jest wysokopoziomowy jezyk, ktory powstal z mysla o obliczeniach
symbolicznych, wiec to nie jest zyciowy przyklad. zyciowym byloby np.
symboliczne rozniczkowanie duzych wyrazen,
Hmm.. A ktos ta szybkosc juz zmierzyl/porownal np z maple lub
mathematica ?
albo parsowanie duzego
pliku tekstowego,
to samo pytanie co wyzej tylko w porownaniu z perlem?
Mowimy o
wydajnosci kodu generowanego przez _wysokopoziomowy_ jezyk dla
_wysokpoziomowego_ kodu,
Co to jest _wysokopoziomowy_ kod ?
a nie o kompilatorze fortranu. a do
diagonalizacji macierzy uzywa sie LAPACKa z BLASem, albo ATLASem...
wlasnie, no wiec o jakiej predkosci wykonywania tu mowimy?
Lucifer - 31 Maj 2002, 11:21
Hmm.. A ktos ta szybkosc juz zmierzyl/porownal np z maple lub
mathematica ?
Jest kilka porównań:
http://www.bagley.org/~doug/shootout/
Lucifer
Sebastian Kaliszewski - 31 Maj 2002, 12:01
2000X2000 ?
http://www.bagley.org/~doug/shootout/
Jest tu i macierz (300x300) i zabawy na tekscie, itd.
Wychodzi, ze jest wolniejszy tylko od C w wydaniu GCC 3.0 (ale szybszy od
C++ (tez GCC 3.0), gdy w C++ napisze sie obiektowo).
pzdr
Dariusz Sznajder - 31 Maj 2002, 12:22
- ludzie piszacy w ocamlu wydaja sie bardzo aktywni, zamieszczaja
'anonse' swoich projektow na FM, SF, c.l.functional, c.l.ml itp.
Ehmmm...
Na FM to akurat:
Programming Language
OCaml (2 projects)
Nawet wziąwszy pod uwage, że conajmniej 1 biblioteka jest pod MLem, to
dużo to to raczej nie jest.
Na SF jakby lepiej, zato nie ma osobnej kategorii dla Ocaml.
wszawa dziwa - 31 Maj 2002, 14:08
A wiesz, że też o tym myślałem.
Wiem :) Wiekszosc ludzi, ktorym podoba sie Clean w pewnym momencie
dochodzi do wniosku, ze milo byloby miec kompilator ktory dziala, ma
sensowne wsparcie dla unixow i normalna (albo tania) licencje.
Wiekszosci niestety brakuje albo know-how (bo to jednak calkiem
trudny problem), albo motywacji (bo przeciez w ostatecznosci jest
Haskell ze swoim GHC).
Tyle, że na razie nie czuję się na siłach, ale próbuję to zmienić.
Na razie czytam sobie o teorii typów, itp.
Jak juz sie poczujesz na silach, to daj znac :) Zostawiajac zarty na
boku, ja mysle o tym calkiem powaznie, tyle ze sam nie bede porywal
sie z motyka na Slonce, a we dwoch razniej. Gdyby jeszcze dalo sie
zwerbowac Qrczaka i mikona, to byla by jakas szansa powodzenia... ;)
Lucifer - 5 Cze 2002, 13:11
To co z tą grupą p.c.l.functional?? Jestem wielce zainteresowany.
OCaml - string i char
Wprawka algorytmiczna
Współpraca C# i C/C++
szybkosc
ktos ma standardowe hasla do BIOSow?
DOS - Screenshot
Szukam firmy programistycznej
syskey efs
samobojstwo policjanta w suszu
jak wgrac mape do medion 510t
bass life
hwdp wojsko
kzzk bierzemy sie porzadnie za siebie 400
do podstrony;435
wirtualna mapa rzeszow
eko planeta wyniki konkursu
Zbieranina tematów z for dyskusyjnych || Index