Newsgroup: it.comp.os.linux.development
Titolo: Programmare: con cosa?

Salve a tutti.
Mi chiamo Leonardo e sono nuovo del ng.
Da circa un paio di anni uso con profitto Linux sia sul portatile sia
sul fisso. Ho la passione della programmazione e, su Windows, utilizzavo
Visual Basic 6. Migrando sul Pinguino scoprii Gambas, un Basic visuale
molto semplice ma discretamente capace e con una sintassi simile a
quella del VB. Grazie a Gambas ho realizzato diversi programmi e posso
dirmi soddisfatto.
Però... non so... forse la voglia di cambiare... forse la voglia di
imparare qualcosa di nuovo... Gambas attualmente "mi va stretto".
Ho quindi deciso di imparare un nuovo linguaggio, ma qui sono entrato in
crisi a causa del loro elevato numero in circolazione...
Mi sono un po' guardato in giro ed ho visto che la tendenza attuale è
quella di orientarsi verso linguaggi interpretati di tipo dinamico quali
Python, Ruby e simili.
Premetto che le mie esigenze non sono eccessive: programmo giusto per
passione realizzando piccoli applicativi quali gestionali e simili.
Vorrei principalmente la possibilità di creare una GUI in maniera facile
ed una buona gestione dei database, tipo SQLite.
Scartando il C/C++ (ma non in maniera definitiva), che non conosco,
vorrei un consiglio da chi su questa piattaforma ci programma da tempo:
cosa usare?
Grazie a tutti :-)
-- 
Ciao.
Leo.
Web: 
www.leonardomiliani.com
E-mail: 
leon...@leonardomiliani.com
Scegli software opensource - Choose opensource software

 writes:
L> Mi sono un po' guardato in giro ed ho visto che la tendenza attuale
L> è quella di orientarsi verso linguaggi interpretati di tipo
L> dinamico quali Python, Ruby e simili.
Non scarterei nemmeon Java o C# su Mono.
Sono ambedue liberi (Java in procinto di essere rilasciato sotto
GNU GPL v2)
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

 Python, Ruby e simili.
Qualsiasi programmatore Python ti consiglierebbe il Python. Io, che di
questa classe di linguaggi conosco bene solo il Perl, ti  consiglio il...
Python.
Max

 Non scarterei nemmeon Java o C# su Mono.
beh beh, su c# c'è un po' di maretta per via di novel....

 ed una buona gestione dei database, tipo SQLite.
Mmm... Pascal? Con Lazarus la GUI praticamente la disegni (oppure
utilizzi Glade e ti mappi il file tramite una chiamata GTK2). Per
quanto riguarda i database, beh, hai parecchie scelte: o utilizzi dei
wrapper alle librerie C (semplici in alcuni casi, complessi in
altri[1]), o utilizzi delle librerie per FreePascal/Lazarus (e.g. fblib
e` una libreria ad oggetti per l'accesso a Firebird completamente
scritta per Delphi/FreePascal), oppure usi le Zeos Library (praticamente
una libreria che ti permette di ottenere un risultato simile a quello
che otterresti utilizzando la tecnologia JDBC per Java, la tecnologia
DBApi per Python, o la tecnologia DBI per Perl: avere un metodo comune
di programmazione indipendentemente dal database utilizzato). Ah, 
ovviamente puoi scegliere anche il modello di programmazione: FreePascal
supporta sia la tipica programmazione strutturata/procedurale, sia la
programmazione ad oggetti (introdotta nel Pascal con Delphi)
Enrico
[1] Personalmente ho trovato abbastanza complesso utilizzare i wrapper
per PostgreSQL, ma penso che sia piu` un mio problema

 
Python e Ruby :)
-- 
SF
"Mio nonno guidava l'autobus e le corriere di linea, ed io spero sempre
di morire come lui, tranquillamente nel sonno, non urlando come i suoi
passeggeri..."

 ed una buona gestione dei database, tipo SQLite.
python, PostgreSQL, SQLAlchemy e (se vuoi imparare il C++) Qt ...
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

 
Il Pascal, sinceramente, mi piaceva a suo tempo come linguaggio. Oggi
penso che sia stato un po' lasciato andare... FreePascal/Lazarus non
sono male ma mi pare che a livello grafico siano un po' indietro
rispetto a molte altre soluzioni. Non vorrei sbagliarmi ma Lazarus
lavora con le GTK1: le GUI sanno un po' troppo di "stagionato".
Purtroppo questo è un limite. Sul sito parlano di una futura revisione
1.0 con supporto per altri widget set ma per ora...


Max M. ha scritto:

Python...
E' di moda, oggi. Ma è semplice creare una GUI?
Vedo che il supporto alle interfacce grafiche si ha utilizzando moduli
esterni al linguaggio. E come IDE? C'è qualcosa di valido per poter
cominciare?


 
Sono stato sul sito ufficiale di Ruby ed ho apprezzato, con l'interprete
online, la semplicità di questo linguaggio. Davvero incredibile!
Però non riesco a capire se sia effettivamente valido oppure no.
Mi pare che allo stato attuale sia utilizzato quasi esclusivamente come
linguaggio di scripting per appicazioni WEB. Beh, io avrei piuttosto la
necessità di sviluppare applicativi stand-alone.
E poi il perenne quesito: e per la GUI? Anch'esso mi pare che non abbia
nulla di integrato ma ci si debba appoggiare a software di terzi.


 python, PostgreSQL, SQLAlchemy e (se vuoi imparare il C++) Qt ...
QT/C++ mi pare un'accoppiata estremamente difficile da imparare da solo
e senza conoscere neanche il C.
Ho provato, tempo fa, a comprarmi un buon libro sul C++ (scritto dal suo
creatore) ma mi sono perso dopo poco... E le Qt non sono da meno, anche
se su KDE regnano sovrane, e questo sarebbe un ottimo punto a favore di
quest'accoppiata.


 writes:
L> Python...
L> E' di moda, oggi. Ma è semplice creare una GUI?  Vedo che il
L> supporto alle interfacce grafiche si ha utilizzando moduli esterni
L> al linguaggio. E come IDE? C'è qualcosa di valido per poter
L> cominciare?
Non sono un fan di Python, anzi, ha un paio di cose che non mi piacciono molto.
Ma ha i binding per GTK2.


 writes:
L> QT/C++ mi pare un'accoppiata estremamente difficile da imparare da
L> solo e senza conoscere neanche il C.  Ho provato, tempo fa, a
L> comprarmi un buon libro sul C++ (scritto dal suo creatore) ma mi
L> sono perso dopo poco...
Lasciamo perdere Sturmtruppen ed il suo linguaggio... Ma tu la vuoi proprio
usare una cosa prima che la migliorino :) ?


 writes:
L> Però... non so... forse la voglia di cambiare... forse la voglia di
L> imparare qualcosa di nuovo...
Vuoi veramente imparare qualcosa di nuovo ? Guile, ovvero Scheme.
Preparati ad un salto concettuale fortissimo.
Al MIT c'è  scaricabile un testo usato per un  corso "101" si computer
science  (primo corso di  informatica per  il primo  anno) che  è pure
divertente - ma è in inglese.
Mi sa  che sullo scatolino  che sta per  arrivarmi userò quello  e non
Python...


 Ma ha i binding per GTK2.
Anche per le QT, usato (ad esempio) dalla HP per il programmino annesso
ai driver hplip..
Ciao.
-- 
*** Linux user # 198661 --- ICQ 33500725 ***
***  Home  
http://web.tiscali.it/kailed
  ***
       ***  Powered by SuSeLinux  ***

 cominciare?
http://wiki.python.org/moin/GuiProgramming
-- 
Under construction

 divertente - ma è in inglese.
parla al passato
http://lambda-the-ultimate.org/node/1840
(tra l'altro tolgono scheme proprio per python :P)
-- 
Under construction

 
scusa, è un problema il fatto che si usino librerie esterne?


> è pure divertente - ma è in inglese.
Z> parla al passato
Il libro rimane divertente lo stesso.
Z> (tra l'altro tolgono scheme proprio per python :P)
Ma questo vuole dire che Python è un linguaggio da CS 101 :>
La sintassi  continua ad  avere, alle mie  narici, un odore  di vecchi
mostri che probabilmente molti di  voi hanno solo sentito nei racconti
paurosi fatti per passare il tempo nelle notti di inverno :).
E alcune scelte  come mettere membri ed attributi  in un dei dizionari
non mi  esalta: in alcune  situazioni è molto  comoda, ma in  tutte le
situazioni ci mette il suo bravo overhead... :)


 cominciare?
Scordati Visual Studio.
In Linux ogni parte e` distinta. Hai un editor (con tutti gli orpelli che
vuoi) per il codice, e un GUI designer per l'interfaccia.
Come editor io uso Eclipse, perche` lo uso per 4-5 linguaggi diversi e mi
integra CVS e subversion.
Come GUI builder, per Gtk io uso Glade, ma ci sono anche alternative.
Bye.

 writes:
AP> Come editor io uso Eclipse, perche` lo uso per 4-5 linguaggi
AP> diversi e mi integra CVS e subversion.
Eclipse come "project management tool" mi va benissimo, ma i suoi editor
sono decisamente poveri.


 creatore) ma mi sono perso dopo poco...
ce l'ho anche io ... e non e' proprio per iniziare !! dovrebbe essere almeno
il secondo libro da leggere sul C++
ciao ..


ZeD ha scritto:

Grazie. Link interessante.


 
Non è un problema. Però mi piaceva l'idea di avere uno strumento unico.
Gambas è ottimo sotto questo punto di vista: si ha un ambiente tipo
Visual Studio dove puoi creare interfacce grafiche e codice nella stessa
IDE. L'unica cosa che non piace di Gambas a chi non lo usa è che è
"BASIC", nel bene e nel male del termine. C'è chi lo considera troppo
semplice, chi troppo poco potente, ecc.. Tutto qui.


 il secondo libro da leggere sul C++
Ah... allora ho scelto proprio bene... :-/


Allora... tiriamo un po' le somme :-)
Prima di tutto, ringrazio tutti per la pazienza che mettete nel
rispondere ai miei interventi, interventi di "non addetto ai lavori" per
cui scusate ancora se ogni tanto scrivo castronerie :D
In secondo luogo, volevo vedere se alla fine dei salmi riuscivo a
raccapezzarmi un po' tra tutti i vostri commenti ed a decidere per bene
perché l'ultima cosa che vorrei sarebbe quella di mettermi ad imparare
un linguaggio che, arrivati a metà dell'opera, mi accorgo non risponde
ai miei requisiti ed alle mie necessità (peraltro neanche eccessive).
Ruby:
tutti ne parlano bene, in molti dicono che è straordinario... ma ancora
non mi sono chiare le _reali_ potenzialità di questo linguaggio. Non
vorrei che fosse l'ennesima "idea geniale" che poi viene usato da una
manciata di appassionati e basta.
Python:
i pareri sono "imparalo per forza!" o "Dio te ne scampi", non mi pare
che esista una via di mezzo. Chi lo usa (ovviamente) mi ha detto che è
ottimo ma alcuni di voi mi hanno detto l'esatto contrario...
C/C++:
un listato in C riesco a capirlo bene ed ho tradotto dal C diversi
algoritmi di cifratura che mi servivano per un programma che ho
realizzato in Gambas per la crittazione dei file. Quando però leggo un
programma in C++ mi viene il mal di testa... Eppure è/sono il/i
linguaggi alla base di Linux, per cui sembra/no la scelta obbligata,
soprattutto se si cerca potenza e compattezza dell'eseguibile..
Argh... scelta difficile!!! :-(


 Argh... scelta difficile!!! :-(
Smista ancora un po'.
Ti serve pura potenza di calcolo? C/C++
Ti serve velocita` di sviluppo, codice chiaro e facilmente modificabile?
Python/Ruby.
Purtroppo non ho ancora avuto tempo di studiarmi Ruby, ma a occhio e croce
trovi piu` "pappa pronta" (librerie, pezzi di codice, ecc.) e sviluppatori
che possono darti una mano con Python, mentre Ruby e` piu` usato sul web
(per via di Rails) rispetto a Python e ha una comunita` meno ampia (ma
piu` esaltata).
Ora devo decidere anche io quale sara' il prossimo linguaggio da studiare:
C++ o Ruby.
Solo che io lo faccio per sfizio, quindi non ho particolari esigenze :)
Bye.

 piu` esaltata).
in effetti molti dei miei che si sono laureati con me , messi in proprio a
sviluppare per il web usano ruby (da quel che ricordo piu' per via di
eclipse che di rails), in ogni caso di ruby io non  so niente.
poss solo dirti che python č veramente potente, e veramente pesante.
Dipende , al solito, dalle tue esigenze.
s

 writes:
L> Python: i pareri sono "imparalo per forza!" o "Dio te ne scampi",
L> non mi pare che esista una via di mezzo. Chi lo usa (ovviamente) mi
L> ha detto che è ottimo ma alcuni di voi mi hanno detto l'esatto
L> contrario...
Personalmente ho  detto "non  mi piacciono alcune  cose". Poi  andrà a
finire che me lo imparo.
Questo non  toglie che non sia  potente. Mia moglie (che  a seconda di
come  si   sveglia  è  una  sistemista  AIX   pluricertificata  o  una
studentessa di  arabo e turco)  con Python +  GTK si sta  scrivendo un
"blocco  degli appunti"  che permette  di prendere  documenti  in vari
formati (immagini, testo, html e quello che le serve e per cui troverà
librerie  libere)  che permette  di  prendere  pezzi  di un  documento
originale, metterli in un  "capitolo" nell'ordine voluto ed aggiungere
annotazioni -  in pratica  digitalizza gli appunti  di amiche  e suoi,
riordina le parti di testo e ci mette delle note.
Dal momento  in cui ha scoperto  il patter MVC (oh,  è una sistemista,
programma per hobby) mi ha detto  "ma che hai fatto a spiegarmelo, ora
l'applicazione si scrive da sola".
Per  la  cronaca. Red  Hat  (e derivate)  avevano  un  bel gestore  di
pacchetti grafico in python. Era leeento a partire (o forse era che lo
usavo su un P133) ma era in grado di risolvere le dipendenze... Altro
che le anaconde...


 1.0 con supporto per altri widget set ma per ora...
Si, Lazarus utilizza ancora le vecchie GTK 1, pero` e` possibile gia` da
ora utilizzare le GTK 2 (supporto un po' sperimentale) oppure utilizzare
direttamente le GTK 2 senza passare per Lazarus. Eccoti un esempio di
Hello World realizzato in FreePascal che utilizza le GTK 2:
program HelloWorld;
{$mode objfpc}{$H+}
uses
  Glib2, Gdk2, Gtk2;
procedure hello(Widget: PGtkWidget; Data: gpointer); cdecl;
begin
   g_print ('Hello World'#13#10);
end;
function delete_event( Widget: PGtkWidget; Event: PGdkEvent; Data: gpointer):gint; cdecl;
begin
  g_print ('delete event occurred'#13#10);
  Result:=gTRUE;
end;
procedure destroy(Widget: PGtkWidget; Data: gpointer); cdecl;
begin
  gtk_main_quit;
end;
var
  Window: PGtkWidget;
  Button: PGtkWidget;
begin
  gtk_init (@argc, @argv);
  window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
  g_signal_connect (G_OBJECT (window), 'delete_event',
                      G_CALLBACK (@delete_event), NULL);
  g_signal_connect (G_OBJECT (window), 'destroy',
                      G_CALLBACK (@destroy), NULL);
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  button := gtk_button_new_with_label ('Hello World');
  g_signal_connect (G_OBJECT (button), 'clicked',
                      G_CALLBACK (@hello), NULL);
  g_signal_connect_swapped (G_OBJECT (button), 'clicked',
                              G_CALLBACK (@gtk_widget_destroy), window);
  gtk_container_add (GTK_CONTAINER (window), button);
  gtk_widget_show (button);
  gtk_widget_show (window);
  gtk_main ();
end.
Ovviamente, tutto questo puo` essere anche semplificato utilizzando
Glade che, tra le altre cose, ti permette di disegnare l'interfaccia
in modalita` visuale (quello che verra` prodotto e` un file XML che
richiamerai con un'apposita chiamata nel codice)
Enrico

 bene quest'ultimo ho aiutato mio cognato con scheme).
Senti, toglimi una curiosita`, ma tua moglie di cognome fa Kernighan?
Enrico

 IDE.
Per Python c'e` Boa Constructor che e` simile. In alternativa,
l'accoppiata (G)Vim + Glade e` insuperabile
Enrico
P.S. anche Kate come editor non e` male...

 E' di moda, oggi. Ma è semplice creare una GUI?
import pygtk
pygtk.require('2.0')
import gtk
def hello(b):
    print 'Hello'
class Hello:
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        #self.window.connect("delete_event", self.delete_event)
        self.window.connect("destroy", self.destroy)
        self.window.set_border_width(10)
        self.button = gtk.Button("Hello")
        self.button.connect("clicked", self.hello, None)
        self.window.add(self.button)
        self.button.show()
        self.window.show()
 
    def main(self):
        gtk.main()
 
    def hello(self, widget, data=None):
        print 'Hello'
 
#    def delete_event(self, widget, event, data=None):
#        print 'Event deleted'
#        return False
#        
    def destroy(self, widget, data=None):
        print 'Quitting'
        gtk.main_quit()
 
if __name__ == '__main__':
    h = Hello()
    h.main()
Questo e` un Hello World in Python che utilizza le GTK. Anche in questo
caso, come nel caso di FreePascal/Lazarus, e` possibile utilizzare Glade
per la costruzione dell'interfaccia
Enrico

 IDE.
guardati cosa fa kdevelop (col qtdesigner integrato)
http://kdevelop.org/index.html?filename=HEAD/screenshots1.html
non e' cosi' "BASIC" come Gambas, ma e' abbastanza RADdoso per andare
incontro ai tuoi gusti
-- 
Under construction

 per la costruzione dell'interfaccia
già che ci siamo, questo e' l'hello world in python/Qt
#!/usr/bin/env python
import sys
from qt import *
a = QApplication(sys.argv)
hello = QLabel("Hello world!", None)
a.setMainWidget(hello)
hello.show()
a.exec_loop()
ovviamente anche per le Qt ci sono GUI designer, più o meno integrati con
IDE vari :D
-- 
Under construction

> con scheme).
E'B> Senti, toglimi una curiosita`, ma tua moglie di cognome fa
E'B> Kernighan?
No :) :) anche se anche lei e` una telecomunicazionista :)


 già che ci siamo, questo e' l'hello world in python/Qt
Messa cosi` sembra che sia molto piu` semplice usare Qt che Gtk.
Per correttezza avresti dovuto fare un pulsante al centro della finestra,
con bordi di 10 px che, clickato, scrive "Ciao mondo" in console, e che
gestisce in modo pulito la chiusura della finestra (senza killare
brutalmente l'applicazione).
Inoltre quello di Henryx contiene codice ridondante e potrebbe essere
ottimizzato. Evitando le classi si guadagnerebbe anche in spazio e
leggibilita`. :)
Non e` polemica, e` solo per fare chiarezza sulla differenza tra i due
programmi presentati. :)
Bye.

 leggibilita`. :)
Ehm, non e` il mio, ma e` quello di esempio :)
Enrico

 leggibilita`. :)
Sullo spazio ok (sono comunque poche le righe di codice scritte in piu`), ma
sulla leggibilita` non sono molto d'accordo :)
Magari sara` una questione di abitudine, ma preferisco l'approccio OOP :)
Riprendendo e semplificando l'esempio di Henryx:
--- hello-oop.py ---
import pygtk
pygtk.require('2.0')
import gtk
class Hello:
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", gtk.main_quit)
        self.window.set_border_width(10)
        self.button = gtk.Button("Hello")
        self.button.connect("clicked", self.hello, None)
        self.window.add(self.button)
        self.window.show_all()
    def main(self):
        gtk.main()
    def hello(self, widget, data=None):
        print 'Hello'
if __name__ == '__main__':
    h = Hello()
    h.main()
--- end ---
Rispetto ad una cosa del genere:
--- hello.py ---
import pygtk
pygtk.require('2.0')
import gtk
def hello(self, widget, data=None):
    print 'Hello'
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("destroy", gtk.main_quit)
window.set_border_width(10)
button = gtk.Button("Hello")
button.connect("clicked", hello, None)
window.add(button)
window.show_all()
if __name__ == '__main__':
    gtk.main()
--- end ---
Beh, io mi trovo molto piu` a mio agio con la prima forma :) 
Ad esempio i vari dialog in genere li tengo all'interno dello stesso file
come classi differenti.
Senza contare che il toolkit stesso e` object oriented :)
Trattare i widget come classi li rende maggiormente riutilizzabili. Pensa ad
esempio se devi crearti un custom widget :)
Un altro esempio: decido di usare un file resource per la descrizione
dell'interfaccia (la libglade, oppure attraverso loader di gazpacho se
utilizzo python); in questo caso e` molto comodo utilizzare l'autoconnect
sulla classe stessa :)
Il tutto senza voler fare polemiche e senza scatenare flame su
programmazione strutturata vs OOP :)
Saluti!
-- 
 Eriol - *p = NULL; - EIBTI
 GPG Key ID 0B7C8A19
 
http://blog.mornie.org

 Magari sara` una questione di abitudine, ma preferisco l'approccio OOP :)
Anche io, infatti consiglio anche io di usare sempre la OOP, soprattutto
con Python+Gtk, dove e` stata implementata molto bene, nonostante il
toolkit di base non la preveda.
Bye.

 writes:
AP> Anche io, infatti consiglio anche io di usare sempre la OOP,
AP> soprattutto con Python+Gtk, dove e` stata implementata molto bene,
AP> nonostante il toolkit di base non la preveda.
Occhio che GTK sono programmate ad oggetti anche se in C semplice, che
si  puň programmare  ad  oggetti  anche quando  il  linguaggio non  ha
supporto per la cosa, č molto piů laborioso ma si puň fare.


 saprei come definirlo).
Questa e` una scelta di design (e so che lo sai ;)
O la ami o la odi :D
Oppure usi un po' di magia nera con le metaclassi, ma non e` una pratica che
consiglio :D


 supporto per la cosa, è molto più laborioso ma si può fare.
Si`, penso che Alessandro volesse sottolineare infatti la *comodita`*
dell'usare un approccio ad oggetti con un linguaggio che la supporta
nativamente :)


 
Ragazzi....
siete veramente grandi.
Intanto grazie per i numerosi consigli.
Vediamo di tirare le somme...
Tenendo a mente le priorità di GUI/potenza/versatilità, voi oggi cosa
imparereste (partendo dal presupporto che dovete imparare un solo nuovo
linguaggio)?


 linguaggio)?
PHP. Ha la sintassi del C ma le variabili non le tipizza, ha le classi
come il C++ e Java ma fa meno lo schizzinoso (pero' queste due, se non
stai attento, possono essere molto negative), puoi pasticciare con le
regex come in PERL, hai PHP-GTK che piu' o meno supporta GTK2, oppure
PHP-QT per le altre, se vuoi passare su web (ehi, adesso fanno figo il
web 2.0 e le web services no?) con CakePHP hai la stessa roba di Ruby On
Rails, supporta quasi ogni database esistente ed AdoDB e' una salvezza,
lo puoi usare come linguaggio di scripting ed in italia fa sicuramente
piu' figo nel curriculm di Python e Ruby. ;)
	spassionatamente,
	Cthulhu
-- 
http://www.rlyeh.it/

> presupporto che dovete imparare un solo nuovo linguaggio)?
C> PHP. Ha la sintassi del C ma le variabili non le tipizza, ha le
C> classi come il C++ e Java ma fa meno lo schizzinoso
Sintatticamente è un po' meno obbrobrioso di ASP. Sintassi "raffazzonata".
E a seconda della versione il supporto OO è una cosa atroce.
C> pasticciare con le regex come in PERL,
Come il 90% dei linguaggi del pianeta...
C> (ehi, adesso fanno figo il web 2.0 e le web services no?)
Ho provato a fare dei WS in PHP. Se ti tocca usare la versione sbagliata
è più allegro usare un remington calibro 12 verso i propri genitali...
C> linguaggio di scripting ed in italia fa sicuramente piu' figo nel
                              ^^^^^^^^^
... Purtroppo ...


 ... Purtroppo ...
Non esiste il linguaggio, esiste il programmatore che lo usa.
	misticamente,
	Cthulhu
-- 
http://www.rlyeh.it/

> ^^^^^^^^^ ... Purtroppo ...
C> Non esiste il linguaggio, esiste il programmatore che lo usa.
Il problema è dall'altra parte. Ed è il manager che dirige. Ed a lui
dedico il purtroppo.


 Mi pare abbiano fatto ad oggetti anche il LISP :).
Tra parentesi, tanto per saltare di palo in frasca, era interessante in
progetto Sawfish (un window manager scriptabile con LISP che, per
qualche tempo, e` stato il wm di default di GNOME). Peccato che il
progetto sembra quasi morto (oramai l'unica maniera di avere qualche
agiornamento e` quella di scaricare i sorgenti da CVS e compilarselo per
fatti propri)
Enrico

> Mi pare abbiano fatto ad oggetti anche il LISP :).
E'B> Tra parentesi, tanto per saltare di palo in frasca, era
E'B> interessante in progetto Sawfish (un window manager scriptabile
E'B> con LISP che, per qualche tempo, e` stato il wm di default di
E'B> GNOME). Peccato che il progetto sembra quasi morto (oramai
E'B> l'unica maniera di avere qualche agiornamento e` quella di
E'B> scaricare i sorgenti da CVS e compilarselo per fatti propri)
GWM era "ancora peggio" :), tutto tutto tutto in LISP. 


 E gli oggetti non sono una sega mentale. Sono un altro modo di pensare.
Non penso che Cthulhu intendesse che gli oggetti sono seghe mentali, ma
che finche` sono usati con criterio sono una metodologia. Quando iniziano a
non essere piu` "metodologia di programmazione", ma diventano "seghe
mentali", allora sbroccano.
Tipicamente lo fanno i "javisti" (fanatici di java, definizione rubata da
un thread su it.comp.lang.python in corso in questi giorni):
sovraingegnerizzano tutto. Fanno 12 classi per astrarre una tabella di un
DB, 15 per aprire dei file, 130 per gestire un catalogo prodotti, ecc.
Bye.

 writes:
AP> Tipicamente lo fanno i "javisti" (fanatici di java, definizione
AP> rubata da un thread su it.comp.lang.python in corso in questi
AP> giorni): sovraingegnerizzano tutto. Fanno 12 classi per astrarre
AP> una tabella di un DB, 15 per aprire dei file, 130 per gestire un
AP> catalogo prodotti, ecc.
Qui si rischia molto l'O.T.
Ambedue i linguaggi hanno punti di debolezza e punti di forza.
Poi  ci sono  i campi  di applicazione.  In alcuni  campi c'è  un solo
programmatore  che  fa  tutto  e  quindi si  permette  le  più  grandi
porcherie,  in altre  c'è da  far  in modo  che lavori  una squadra  e
rimanendo nei temi (ovvero costi).
Verissimo  che  in  Java  sono stati  creati  carrozzoni  incredibili,
programmati un po' tanto coi piedi.
Peraltro ci  sono gran seghe  mentali in Python (per  me l'overloading
degli operatori è una sega mentale e dipendenza eccessiva da una unica
notazione :) ) e sprechi di efficenza.
Nello specifico delle affermazioni che riporti: 
* tra  db relazionali e  linguaggi OO  c'è un  "conflitto strutturale"
  (permettetemi il  termine) per cui o  bisogna che i  dati passino da
  una rappresentazione tabellare ad una ad oggetto o si perde l'object
  orientation, in mezzo ci sono le situazioni in cui una riga è già un
  oggetto sufficente.
* l'I/O su  file all'inizio ti  lascia perplesso. Ma appena  ti tirano
  fuori la  parola "filtro", ti  tornano in mente  le pipe di  sette o
  otto  comandi che  risolvono un  problema  e allora  la cosa  appare
  chiara. Mi  spiego. Chi ha pensato  le librerie di I/O  ha deciso di
  creare  un  meccanismo  a   filtri  successivi  che  possono  essere
  sovrapposti per arrivare al risultato finale:
              quello che preleva i dati
              quello che li decomprime
              quello che li decripta
              quello che li presenta già impaccati in
              oggetti complessi
* Sul  proliferare  delle  classi,  in  qualsiasi  linguaggio  è  male
  dettagliare troppo come dettagliare troppo  poco. Va da se che usare
  una  modellazione  ad oggetti  permette  di  garantirsi che  vengano
  realizzate interazioni indesiderabili tra  le componenti.  E ci sono
  programmatori cani in  Python come ce ne sono in  Java. Java ha solo
  molto  più appealing  ed  è purtroppo  usato  come il  COBOL del  3º
  millennio con la falsa idea che Java sia facile. 


Enrico 'Henryx' Bianchi wrote:

sawfish non rispetta anche alcune delle EWMH, quindi è sconsigliabile
usarlo a priori. :-)
ciao,
 Emmanuele.

Oggi sono andato in libreria ed ho comprato un testo sul Python...
Alla fine, penso di imparare questo linguaggio: più che altro perché mi
pare molto diffuso per cui dovrei avere anche un buon supporto.
