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?

--
siga brak ;(


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