Newsgroup: it.comp.java
Titolo: Quale linguaggio?

Salve a tutti.
Sono in procinto di dedicarmi alla programmazione, e sono indecisa su quale
linguaggio applicarmi.
Mi sconsigliano il delphi perché è un linguaggio proprietario, al contrario
del java, che invece dovrebbe andar bene sulla maggior parte delle
piattaforme.
E la facilità d'apprendimento? Immagino che il java sia più "tosto", per
dirla in parole povere.
Voi che ne pensate?
Sono graditi i vs. commenti.
Ciao.

dirla in parole povere.
Java ha, purtroppo dal punto di vista dell'apprendimento, elementi sintattici
mutuati dal C, che non sono della massima eleganza e facilita` di
apprendimento; Delphi, poggiando la sua sintassi su Pascal, ti sarebbe
probabilmente piu` agevole e congeniale da questo punto di vista.
"Java" e` un linguaggio piu` un'enorme varieta` di librerie standard; "Delphi"
e` un linguaggio, una ricca libreria standard, _e_ un ambiente di sviluppo.
Naturalmente, anche con Java userai un qualche ambiente di sviluppo,
foss'anche solo un editor di testi e i compilatori a linea di comandi, ma
piu` probabilmente un qualche IDE; non so pero` se si raggiunge la stessa
"fusione e sinergia" fra ambiente e linguaggio+librerie, che si ha in Delphi,
dove il tutto e` progettato assieme, "unitariamente".  D'altro canto, avere
la possibilita` di scegliere fra tanti ambienti diversi potrebbe anche essere
considerato un vantaggio, ma forse non per un principiante.
Su Java trovi una incredibile varieta` di libri, alcuni molto buoni (altri,
naturalmente, mediocri o pessimi); su Delphi, *molto* meno (della
qualita` di questi ultimi, non so).
Questi sono, piu` o meno, i pro e i contro (non mi addentro neppure
sui dettagli tecnici dei linguaggi e delle librerie, sui quali mi aspetto
si scatenera` il solito putiferio:-).  Io, a mio figlio, ho consigliato Java,
anche se veniva da Turbo Pascal; ma, a seconda delle circostanze
precise, non e` detto che Delphi sia necessariamente una scelta
sbagliata per te.
Alex

 linguaggio applicarmi.
Dalla mia esperienza (parecchia con Java, poca con Delphi, parecchia ma obsoleta con il vecchio TurboPascal "a oggetti") le difficolta' sono piuttosto comparabili - anche
se la mia lunga esperienza con C++ mi ha facilitato le cose con Java.
In ogni caso, una buona "lanterna" potrebbe essere una pur vaga idea di cosa ti 
*piacerebbe* fare, e i motivi per cui sei "in procinto di" :); programmerai per 
lavoro? per divertimento? per costruire un gestionale per la ditta dello zio, o con 
l'idea di disegnare sistemi world-wide? (okay, *questa* forse e' grossa per 
cominciare! :) ).
La risposta a queste domande potrebbe forse aiutarti a "scremare".. :)
Saluti,
	Cris
-- 
dr. Cristiano Sadun
AIS S.p.A.
Senior OO Architect
crs...@tin.it
, 
csa...@ais.it

piattaforme.
E' vero, ma personalmente continuo a consigliarti Delphi:
non penso che a un principiante possano interessare
questi discorsi.
In ogni caso qualunque linguaggio imparerai ti aiutera'
a comprendere meglio e piu' velocemente l'altro.

Dipende anche da cosa devi fare, in altre parole con Delphi hai un ambiente
di sviluppo per Windows con un compilatore velocissimo e librerie adeguate
per ogni genere di sviluppo. Se, devi usare prestazioni tipiche di windows o
sfruttare componenti o DLL o altro di legato al sistema Delphi ha un punto
di vantaggio.
Se fai sviluppo generico di applicazioni o stai solo esplorando, tieni conto
del fatto che i due linguaggi sono piuttosto simili nei benefici
fondamentali: struttura OO chiara e pulita, la nozione di unit o package,
l'assenza di file da includere per utilizzare dei componenti e altre ancora.
Il discorso successivo è l'ambiente di sviluppo.
Ce ne sono diversi gratuiti nella loro versione entry e a pagamento in
quella professional, come Supercede o VisualAge for Java di IBM che è uscito
su una rivista (Internet News) questo mese.
Potresti iniziare a sperimentare con uno di questi e vedere come ti trovi.

 Voi che ne pensate?
Dipende, per che (o quali) piattaforma/e devi programmare ?
Ad esempio di Delphi c'e' un "clone" per OS2 (compila anche per 
win32), pero' Java e' indubbiamente il linguaggio multipiattaforma per
eccellenza.
Inoltre Java ha delle richieste in termini di risorse di sistema molto
alte e questo per programmi
di certe dimensioni e' un fattore da considerare.
Poi, Delphi e' un Rad (Rapid Application Developer) e quindi in alcuni
campi e' molto comodo,
mentre per altri puo' essere un po' troppo esoso di risorse rispetto 
al semplice C++ ...
Non esiste un linguaggio superiore agli altri in assoluto, dipende da 
quello che vuoi fare...
by Frengo
IACT Member.
http://Frengo.dragonfire.net/


Beh, questo significa che tuo figlio non si stava avvicinando alla
programmazione ma ne sapeva gia' qualcosa (oddio, se arriva dalle
scuole superiori... vabbeh, lasciamo cadere questo genere di discorso,
diciamo solo che ho avuto svariate ed orribili esperienze a
riguardo!).
Ho un solo dubbio: Delphi permette di utilizzare *anche* il paradigma
ad oggetti oppure *solo* il paradigma ad oggetti (come ci obbliga a
fare Java) ?
Credo che un linguaggio che li utilizzi entrambi possa magari
confondere il neofita ma alla fine gli avra' insegnato "di tutto un
po'"che non fa mai male!
Ciao!
Matteo!!!

fare Java) ?
Anche.
Per la verita' con Delphi si e' un po spinti verso la oop, dato che le
librerie ne fanno uso intensivo, ma volendo se ne puo' fare a meno.
Comunque chi usa Delphi e' piu' simpatico.   :-p
:-)

po'"che non fa mai male!
Il linguaggio multiparadigma per eccellenza e` naturalmente C++
(consigliato in merito l'ultimo libro di Coplien, "C++ multi-paradigm
design"); personalmente, penso che la caratteristica di essere
multi-paradigma POSSA "far male" a un neofita, confondendogli
le idee piu` di quanto non gli allarghi gli orizzonti, e un linguaggio
che ti guida di piu`, come Delphi o Java, essere quindi maggiormente
consigliabile di uno piu` multi-paradigma, come Basic o C++.
Alex


Credo fermamente che uno che vuol diventare un buon programmatore non possa
esimersi dallo studiare anche i costrutti e i funzionamenti dei linguaggi
non OOP. Anche xche' se poi si trova a dover scrivere qualche algoritmo di
calcolo puro e ottimizzato x la velocita' o ad utilizzare qualche API non
contemplata dalle classi standard si trova in difficolta'. Conosco parecchie
persone molto brave in VB come gestione GUI, utilizzo dei DB e altro che
poi, di fronte a un banale utilizzo di una funzione API si trovano fra le
nuvole. Credo che le basi della programmazione debbano essere uguali x
tutti, object oriented e non.
Per tuo figlio credo tu abbia dato il consiglio giusto (anzi, giustissimo),
visto che lui (come tu hai affermato) gia' conosce molto bene il Pascal, ma
per Aileen che sostiene di essere un neofita, personalmente consiglierei un
linguaggio come il Delphi, da cui puo' carpire le nozioni base x poi passare
alla programmazione OO.
Ciao,
Stefano

 [...]
OOPs :) be', visto che OOP e'un'*estensione* del paradigma procedurale, e
lo comprende come sottoinsieme... stai parlando di Prolog, LISP o SNOBOL4?
Saluti,
	Cris


No. Infatti io non ho parlato di "paradigma procedurale" ma di
"programmazione tradizionale". Due cose ben diverse.
Ciao,
Stefano

lo comprende come sottoinsieme... stai parlando di Prolog, LISP o SNOBOL4?
Questi linguaggi incorporano sicuramente paradigmi importanti, e ortogonali
a quelli procedurali e ad oggetti; altri esempi comprendono SQL (paradigma
relazionale), Icon (pattern matching, coroutine, backtracking, eccetera), ML
o Haskell (linguaggi funzionali), eccetera.  J. Coplien, "Multi-Paradigm Design
for C++", Addison-Wesley 1999 (non fatevi ingannare dal copyright -- e` gia`
pubblicato, e disponibile da un mesetto!), copre discretamente bene questo
argomento, nell'ottica dell'approccio progettuale "Multi-Paradigm Design"
(forse meglio denominato "Domain Engineering").  I template del C++, ed i
thread di Java, sono esempi di paradigmi addizionali (ortogonali a quello ad
oggetti) direttamente supportati da linguaggi assai diffusi; Coplien denomina
"paradigmi fuoribordo" quelli che un linguaggio non copre _direttamente_, ma
per i quali offre comunque buone possibilita` di uso attraverso un "aggancio
esterno" -- C++ e` molto estensibile da questo punto di vista, Smalltalk meno,
Java, una via di mezzo.
Ribadisco pero` la mia idea, sopra citata: questa enorme ricchezza, potenza,
e flessibilita`, che certo e` preziosa al programmatore professionista, in grado
di padroneggiarla e usarla pienamente e alla perfezione, NON e` necessariamente
una buona idea per un principiante!!!  Certo, un bel giorno, il principiante non sara`
piu` tale, e "non potra` esimersi", se vuole diventare un gigante del settore, dallo
studio (e dalla pratica: non e` solo studiando, che ci si impadronisce pienamente
di un paradigma "alieno"!) di paradigmi addizionali, e ortogonali, a quello ad oggetti,
che gli permetteranno, se non altro, di progettare con visione piu` ampia e chiara.
Ma *per un principiante*, cioe` *per cominciare*, questa enorme varieta` NON e`
necessariamente una buona idea; rischia di confondere le idee, e di lasciare "in
alto mare", piu` di quanto non "allarghi gli orizzonti" di una persona.  Linguaggi che
GUIDANO di piu`, come Java e Delphi, possono dunque essere considerati piu`
adatti *DIDATTICAMENTE*, cioe` migliori *PER L'APPRENDIMENTO* della
programmazione, in modo _indipendente_ dalle (ben diverse!) considerazioni
relative a come la ricchezza e varieta` di paradigmi, e l'estensibilita`, aiuti un
professionista esperto e maturo nell'espletare la sua professionalita`.
Alex

"programmazione tradizionale". Due cose ben diverse.
LISP e SNOBOL sono linguaggi molto piu` vecchi della
maggioranza di quelli oggi in uso -- prima di LISP, c'era solo
Fortran; prima di SNOBOL, anche COBOL e Algol; ma i vari
PL/I, Pascal, RPG, eccetera, sono tutti piu` moderni.  Quindi,
e` perfettamente ragionevole considerare LISP e SNOBOL
come parte della "programmazione tradizionale", mentre non
lo sarebbe certo pensare ad essi in termini di supporto per il
"paradigma procedurale".
Alex

 LISP e SNOBOL sono linguaggi molto piu` vecchi della
A proposito di SNOBOL, c'e' qualcuno che come me conosce
ed apprezza il suo successore ICON? Secondo me e' il piu'
bel linguaggio procedurale di sempre.
-- 
like a cloud dropping rain, i'm discarding all thought
--
icq#7882472/
scobi...@racine.ra.it
www.cs.unibo.it/~cobianch/IACinemania/index.html

Alex Martelli,
Personificamente ho sono sempre rifiutato di imparare snobol
perche' l'ho sempre considerato un linguaggio un po snob...
(per ricchi annoiati dalla noia)
mentre il cobol l'ho sempre considerato un po cob...
Il lisp e' po troppo complicato, se non lo inventavano era
sicuramente la cosa meglio.
Il pasqual non l'ho mai studiato perche' i francesi mi stanno
un po sull'anima...
L'rpn di cui parli non e' un linguaggio ma una notazione di tipo
polacco pervertito, anche detta notazione stra-fissa
(grammatica di tipo 7-1/4).
anche su pli ti devo corregggere: non e' un linguagio di
programazione ma un vecchio partito politico.
Comunque devo dire che il linguaggio principe di tutti
i compiuters e' sicuramente il besic (acronimo di
byghinners oll parpos simbolic instracxscion cod)
un linguaggio assolutamente potente e orientato al
wc* che permette, oltre tutto di acuisire notevole
dimesticatezza con la lingua inglese e perfezionizzare
quella dell'italianico.
Solo il besci puo' sfruttare al massimo l'enormissima
potenza elaborativa dei compiuter attuali generando
codice macchina di grande cualita', compattezza e
velocissima.
Per quanto riguarda i paradisi di cui parlate non ne ho mai
sentito parlare nemmeno a messa, di cosa si trattano ?
* sicuramente gli stolti e ignoranti si saranno messi a
ridacchiare non sapendo che wc e' l'acronimo di
windoued controlls (cioe' interfaccia a controlli
defenestrati)
Compiuter Specialists Associated
Parma
Italy


Mi pare che siamo perfettamente daccordo sul suggerimento da dare ad aileen
:-)
Ciao,
Stefano

bel linguaggio procedurale di sempre.
Si, avevo citato Icon in un altro messaggio dello stesso thread;
penso anch'io, come te, che nessun altro linguaggio di sintassi
"classica" presenti altrettanto bene il pattern matching, con il
relativo backtracking, le coroutines, le closures, e simili concetti
avanzati (che pattern matching e backtracking siano concetti
"procedurali", pero`, mi sembra un discorso davvero DUBBIO;
secondo me, sono un paradigma per conto loro, del tutto
"ortogonale" ad altri).
Alex

 
www.cs.unibo.it/~cobianch/IACinemania/index.html
-- 
Cristiano Sadun
Software Engineering & Consulting
email: crsadun#tin$it
(please substitute # by @ and $ by .)

 "ortogonale" ad altri).
Hai ragione, infatti ho definito Icon "procedurale" solo
in quanto abbastanza simile sintatticamente a C e Pascal.


 Bello, bello, bello! 
Vero, vero, vero!
Non so quanto darei per avere anche solo la meta' delle caratteristiche
di Icon in Java... anche i soli generatori sarebbero una manna dal cielo!
Mi chiedo quanto sarebbe difficile scrivere un compilatore 
Icon-to-bytecode... nessuno che ne abbia voglia? :)


Icon-to-bytecode... nessuno che ne abbia voglia? :)
"Chiedete, e vi sara` dato", ragazzi...!
Cito:
"""
Jcon is a new Java-based implementation of the Icon programming language.
The Jcon translator, written in Icon, generates Java class files that
execute in
conjunction with a run-time system written in Java. Jcon is an essentially
complete implementation of Icon, including graphics and large integers. A
few
minor features are missing -- mostly things like chdir() that cannot be done
in
Java. Jcon-derived programs are not as fast as those using the standard Icon
interpreter.
"""
La URL della terra promessa e`...:
 
http://www.cs.arizona.edu/icon/jcon/
Prerequisiti (dell'attuale port): Unix (Linux dovrebbe bastare),
ksh (non so dirvi di cloni gratuiti sufficientemente vicini...),
Icon 9.3, Java 1.1, 700k di sorgenti (.tar.gz), 3.7MB (sempre
.tar.gz) di binari (bytecode) pre-costruiti -- le doc di jcon sono
incluse in questi download.
Potrebbe essere un progetto carino quello di fare il porting
di tutto cio` a un "Pure 100% Java" o almeno ad ambienti
molto diffusi (Linux+Bash, Win32+idem magari con qualcosa
tipo GnuWin32).  Comunque, se ben capisco la situazione
attuale, il _runtime_ e` Java portabile -- quello che richiede
Unix ecc e` il _compilatore_ Jcon (Icon->java bytecode).
Chi avesse il pur minimo interesse a questo progetto sarebbe
MOLTO ben consigliato di PRECIPITARSI ad approfittare
dell'offerta speciale ($29, contro $80 di listino; +$19 per
posta aerea all'Europa) delle ULTIME copie esistenti di
"The Implementation of the Icon Programming Language",
di Griswold -- il libro e` fuori stampa, non verra` mai piu`
ristampato, queste che l'Universita` di Arizona offre a
prezzo stracciato sono, appunto, le ULTIME copie.  Se si
ordina con carta di credito, tel. 001 
(520) 621 6613
, o
fax 001 
(520) 621 4246
.
Alex

per far vedere ai miei amici le cose che si potevano fare in Icon :)
[...]
Ciao Stefano,
mi hai messo un curiosità... Volevo chiederti ulteriori informazioni a
riguardo. Possiamo qui? Forse siamo OT, in tal caso ti mando una
email. :)
Ciao!
Peppe
ICQ 9759626
http://www.geocities.com/NapaValley/4081
Togli levaccà per contattarmi via email.

email. :)
Sarebbe un peccato che la discussione su Icon (e Jcon, e
la variante ad oggetti, Idol) passasse su e-mail, visto che
tu e Stefano non siete i soli interessati; se mai, visto che
it.comp.delphi c'entra poco, e .java cosi` cosi` (Jcon si
appoggia su Java, ma...), potremmo passare su qualche
altro gruppo piu` generico, tipo it.comp.prog...
Alex

altro gruppo piu` generico, tipo it.comp.prog...
Ciao.
D'accordissimo con te, ma la cosa che mi annoia sarebbe scaricare
qualche pacco di headers... Comunque, se voi volete spostarvi,
liberissimi... Ma mandatemi una email! ;)
Grazie!



