|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 832
|
[OCAML] ha senso studiare questo linguaggio ?
Oggi all'università (Ingegneria Informatica, Roma Tre) ho iniziato a seguire il corso di Programmazione Funzionale, in cui si usa il linguaggio OCAML, che supporta vari paradigmi (funzionale, imperativo, oop).
Sinceramente a una prima occhiata sono rimasto perplesso, non sono riuscito a cogliere i pregi e l'utilità di questo linguaggio, se non che il codice funzionale è molto più compatto (te credo, non c'è iterazione, si usano funzioni ricorsive a gogo che saranno anche belline e compatte ma sono anti intuitive imho). Inoltre in termini di performance mi chiedo come faccia ad essere decente quando usando la ricorsione in altri linguaggi succede un puttanaio nello stack e la complessità asintotica aumenta.... Qualcuno mi può illuminare ? E soprattutto, volendo scegliere un linguaggio, non si poteva fare Python che anche lui supporta la programmazione funzionale ma almeno è moderno, ha librerie e ha utilità sul mercato del lavoro ?
__________________
Trattative concluse su mercatino: The_Saint, ewandeep, Wiltord, maurizioi, Compulsion, mauryxxx76 |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non necessariamente, posso fornirti tanto per esempio l'algoritmo di un insertion sort iterativo e ricorsivo che hanno la stessa complessità asintotica.
Quote:
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 06-10-2009 alle 19:21. |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Ha senso studiare OCAML? Poiche' ti serve per l'esame un senso ce l'ha... Ti servira' mai piu' OCAML in seguito? Non che io sappia. O probabilmente troppo poco per privilegiarlo a discapito di altri linguaggi piu' richiesti.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#4 | ||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Comunque tante volte per implementare in maniera iterativa una funzione ricorsiva ti è comunque necessario uno stack in cui memorizzare valori intermedi, e qui si pongono diversi problemi. Per prima cosa il codice ti diventa più "complesso" e meno "semplice" da leggere (PGI, guarda che t'ho visto: metti giù la mazza! Secondo, o ti allochi una struttura statica (e quindi imponi già in partenza un preciso limite al tuo algoritmo), oppure ne usa una dinamica ma complicando ulteriormente il codice. Quote:
Quote:
Python supporta IN PARTE la programmazione funzionale, ma non è un linguaggio funzionale. Se ne distacca abbastanza. Personalmente non ispira neppure a me la programmazione funzionale, fatta eccezione per alcuni costrutti che trovo comodi e abbastanza leggibili (se non si esagera, e qui alcuni se sanno qualcosa In generale trovo il codice troppo pieno di simboli e poco leggibile AI MIEI OCCHI (è una doverosa precisazione questa; d'altra parte ognuno ha i suoi gusti). Anche se devo dire che l'approccio a pattern matching di Prolog prima e di Erlang adesso mi ha particolarmente affascinato. Comunque per la programmazione funzionale in Python consiglio questo documento.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
A 'sto punto avrebbe avuto più senso studiare F# imho che è quantomeno + moderno come linguaggio ed è molto molto simile ad ocaml (in pratica è possibile scrivere in F# codice ocaml senza determinate funzioni).
..guardando il lato positivo almeno avrai una buona base per studiare F# per conto tuo.
__________________
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
credo che studiare OCAML ti permette di sviluppare la forma mentis per passare dalla programmazione imperativa a quella funzionale.
E l'universitá deve dare solo la forma mentis, quindi thumb up! |
|
|
|
|
|
#7 | ||
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Quote:
http://stackoverflow.com/questions/3...l-optimization F# sarà uno dei linguaggi ufficiali della prossima versione di Visual Studio... visto che è praticamente OCaml su .NET, magari qualcosa di utile da questo corso la tiri fuori...
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
||
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
per quanto riguarda il "puttanaio" dello stack... tail-call optimization si tratta della stessa ottimizzazione che converte un fattoriale ricorsivo in un fattoriale iterativo. Quote:
|
||
|
|
|
|
|
#9 | |||
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Visto che fai l'universita', "ragionare ricorsivamente" ti verra' naturale un po' alla volta. Quote:
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|||
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
F# ha dalla sua un buon ide, ma dal punto di vista del linguaggio e dell'implementazione non vedo vantaggi rilevanti.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 832
|
Grazie a tutti per i chiarimenti !
Mi avete rinfrancato, temevo di fare una cosa inutile. Spero di riuscire ad apprezzare meglio le particolarità di questo linguaggio nei prossimi tempi. Certo che forse un corso così potevano metterlo a scelta o nella specialistica e dedicare quel tempo a qualcosa di più diffuso sul mercato del lavoro. Vabbé, staremo a vedere. Dopo l'esame mi guardo questo F#.
__________________
Trattative concluse su mercatino: The_Saint, ewandeep, Wiltord, maurizioi, Compulsion, mauryxxx76 |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Non e' necessariamente un vantaggio. Il framework e' pensato per un linguaggio ad oggetti, e richiede la rinuncia ad alcuni idiomi tipici della programmazione funzionale. Probabilmente col tempo questo un po' cambiera', ma per il momento e' cosi'. Senza contare che per lo stesso fatto alcune feature caratteristiche di ocaml (tipo il preprocessore) non sono disponibili.
Se il problema e' l'accesso a librerie esterne, si puo' comunque usare la FFI
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#14 | |
|
Registered User
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
|
Quote:
I linguaggi funzionali sono utilizzati anche nel mondo del lavoro anche se in settori di nicchia come la bioinformatica o applicazioni statistiche. E' molto probabile che in futuro trovino maggiori campi di applicazione. A parte questo OCAML ti aprirà la mente più di 20 anni di PHP e 30 di COBOL. L'unico esame realmente utile per il mondo del lavoro italiano dovrebbe avere questo titolo: "Come mantenere la calma quando si è costretti in 3 giorni a implementare l'ennesimo acrocchio per far fesso il cliente in barba a tutte le regole dell'ingegneria del software". |
|
|
|
|
|
|
#15 |
|
Registered User
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
tempo fa gugoXX ha aperto un topic illuminante su questa questione: ormai giá da tempo abbiamo raggiunto dei limiti fisici e la corsa al Mhz (poi al Ghz) é finita, di conseguenza l'immediato futuro é completamente parallelilzzato e multicore. il motivo per cui in un simile contesto i linguaggi funzionali hanno la meglio é che un programma scritto in maniera puramente funzionale é anche automaticamente rientrante, e gli algoritmi rientranti sono piu facilmente parallelizzabili. |
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 198
|
Wow, anch'io quest'anno faccio i funzionali
Cmq, per chi parlava di scarsa velocità, da quello che sento in giro, pare che Ocaml sia veramente una scheggia, molto più verso C++ e Java che Python e Ruby come performance (immagino sia compilato o JITtato), per dare un'idea. http://shootout.alioth.debian.org/u3...=python3&box=1 (non conoscendo OCaml e non essendo un grande cultore di Python, non posso verificare la bontà dei test) PS: quando uscirà il linguaggio che sto sviluppando, dimenticherete in breve tempo tutti sti Python, OCaml, F#, Java e robaccia varia :P :P :P |
|
|
|
|
|
#19 | |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
A dire il vero OCAML è lento. Con lento intendo fino a 2 ordini di grandezza più lento di F#. Ovviamente non parlo di F# su Mono, ed ovviamente come riferimento il meglio che si può trovare sono benchmark sintetici, ma il mio argomento è sostenuto da un gran conoscitore di OCAML, ovvero Jon Harrop. (*uno* dei post da cui emerge quanto dico).
Comunque vale la pena di imparare OCAML o F# se non altro per conoscere modi nuovi e spesso eleganti di affrontare problemi. Quote:
|
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:01.



















