Pagina 1 di 2
Sviluppo software su Linux
Inviato: lun 18 lug 2005, 15:01
da kioto
Salve a tutti ho aperto questo thread con l'intenzione di poter raccogliere opinioni ed utili informazioni circa l'adozione di un linguaggio o un insieme di strumenti per sviluppare applicazioni orientate al desktop.
Mi chiedevo attualmente quali strumenti potrei adottare per sviluppare
applicazioni di software gestionale, front-end per database ed altri programmi windowed.
Sono parecchio indeciso sul tipo di linguaggio da adottare visto che al momento non trovo una scelta multipiattaforma da utilizzare per questo genere di applicazioni.
Ogni consiglio e ben accetto.
Grazie e buon lavoro.
Inviato: lun 18 lug 2005, 15:17
da rob
secondo me la scelta migliore, per quanto impopolare su questo forum (vè useless? :P) è java. ti permette, usando le swt, di poter usare le librerie grafiche del s.o. su cui gira l'applicazione (potresti scegliere di usare le gtk o le api di uindos) mantenendo la stessa interfaccia di programmazione. inoltre a mio parere è piuttosto facile programmare applicazioni web-oriented e che si interfaccino cn i dbms.
ciao, rob
Inviato: lun 18 lug 2005, 15:47
da useless
be' sì, se vuoi un'applicazione pesante java è una scelta ottima :P. se già lo conosci io consiglio il c++. prendi un eccellente toolkit multipiattaforma quale è qt e usalo. la portabilità è ottima, e la qualità delle applicazioni anche.
un altro approccio ottimo e forse + semplice potrebbe essere quello di un'applicazione web-bases usando php. in questo caso la portabilità è intrinseca.
Inviato: lun 18 lug 2005, 16:05
da rob
auhauhahuahu, e come te sbaji :P
allora, inizio flame

: che java sia pesante, dipende anche dal programmatore :P... un linguaggio interpretato quale è java, si è visto che perde tempo principalmente nei cicli, perchè ogni riga va ritradotta in linguaggio macchina comportando perdite di tempo assurde... meno male che hanno inventato l'hot spot xò, che si salva la traduzione in binario delle righe di codice + frequentemente utilizzate risultando un bel po' + veloce. inoltre una connessione a un dbms cn java richiede 3 (tre) righe di codice e un package da importare... cn il c++ sinceramente nn ci ho mai provato, ma ci ho provato in c ad interfacciare un'applicazione a un dbms: ho dovuto usare il pro-c che generava codice del cavolo x funziare, inoltre snaturava il linguaggio orientandolo agli oggetti... a sto punto xchè nn utilizzare un linguaggio a oggetti nativo?
per quanto riguarda php... occhio alla sicurezza!
<diplomazia>non che il c++ sia + brutto, ma java mi sembra migliore cm scelta</diplomazia>
ihihihihihih, rob
Inviato: lun 18 lug 2005, 18:49
da kioto
Bhe PHP lo conosco e sviluppo applicazioni web ma vorrei fare il salto verso altre tecnologie e iniziare a sviluppare con linguaggi con un raggio d'azione più ampio come il Java oppure il C++.
Personalmente credo che i linguaggi tipizzati siano più istruttivi rispetto ai linguaggi di scripting almeno é quello che noto quando leggo due righe di C.

:D
L'unico problema che ho al momento é che comunque devo tirare a' campa con PHP ed in background scegliere una tecnologia da iniziare a studiare.
P.S: Ci fai vedere come fai una query con C++ io ci metto 2 sec ^^
Inviato: lun 18 lug 2005, 21:16
da Sari
io dalla mia esperienza di C/C++ e Java ritengo Java più semplice e immediato, C/C++ più pulito e veloce. Non si può a mio parere sviluppare un'applicazione con entrambi e pretendere di paragonarla, cioè ogni applicazione o software ha per me il suo linguaggio giusto. Per rimanere nel mio campo, sviluppare un Mud in Java sarebbe una pazzia, i cicli (che superano le milioni di iterazioni nel caso delle liste) sarebbero talmente lenti da prevaricare la velocita' del server irrimediabilmente. Daltro canto se si vuole sviluppare un programma gestionale con accesso a db il java è sicuramente più consigliato. Il mio parere e' quindi : "prima si deve sapere cosa sviluppare e poi si decide che Codice usare"
Inviato: lun 18 lug 2005, 21:29
da rob
x kioto: incollo un pezzo di un progetto che avevo fatto... nn aggiungo commenti che mi sembra self-explaining.. purtroppo nn ho il codice pro-c, ma vi assicuro che faceva un po' + schifo di questo...
Codice: Seleziona tutto
import java.util.Vector;
import java.sql.*;
public class Fattura {
public Fattura( int id ) throws Exception {
/* bla bla */
Connection connection;
Statement statement;
try {
Class.forName( "com.mysql.jdbc.Driver" );
connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/e_commerce" );
statement = connection.createStatement();
} catch( ClassNotFoundException cnfe ) {
System.err.println( "Driver non trovato" );
connection = null;
statement = null;
throw new ClassNotFoundException( "Driver non trovato" );
} catch( SQLException sqle ) {
System.err.println( "Connessione al db non riuscita" );
connection = null;
statement = null;
throw new SQLException( "Connessione al db non riuscita" );
}
ResultSet rs = statement.executeQuery( "select t.ID_CLIENTE, f.DATA, t.ID_PRODOTTO, t.QUANTITA, f.PREZZO_TOTALE from fattura f, transazione t where f.ID=t.ID_FATTURA and f.ID=" + id + ";" );
if( rs.next() ) {
this.id = id;
data = rs.getDate( "DATA" );
cliente = new Cliente( rs.getInt( "ID_CLIENTE" ) );
fatturaVector.addElement( String.valueOf( id ) );
fatturaVector.addElement( data.toString() );
fatturaVector.addElement( String.valueOf( cliente.getId() ) );
} else {
throw new Exception( "Fattura numero " + id + " inesistente" );
}
do {
this.addProdotto( rs.getInt( "ID_PRODOTTO" ), rs.getInt( "QUANTITA" ) );
} while( rs.next() );
fatturaVector.addElement( String.valueOf( prezzoTotale ) );
try {
statement.close();
connection.close();
} catch( SQLException sqlex ) {
sqlex.printStackTrace();
} finally {
statement = null;
connection = null;
}
}
/* eccetera... */
}
sono assolutamente d'accordo cn sari.
rob
Inviato: lun 18 lug 2005, 21:36
da absinthe
rob ha scritto: un linguaggio interpretato quale è java,
ma non era compilato a tempo di esecuzione??!!
c/c++ fino alla morte (*) se la cosa è limitata ad applicazioni residenti su un'unica architettura!!!!
java non lo conosco ho provato a leggere robe tipo "java for idiots" ma quando vedevo i codici per fare l'"hallo world!" mi cascavano le braccia ed ho smesso...
M.
----------------------------------------------------------------------------------
(*) nel senso che se non trovi le librerie ci muori prima di aver finito il software

Inviato: lun 18 lug 2005, 21:52
da rob
compilato a tempo di esecuzione vuol dire interpretato

comunque funzia così: il compilatore java prende il sorgente (.java) e genera il bytecode (.class), che è il codice multipiattaforma multiarchitettura ecc che viene interpretato dalla java runtime environment (jre). la jre genera dal bytecode generico codice binario tipico dell'architettura su cui deve girare.
ho programmato un sacco e continuo a programmare in c/c++ (soprattutto in c ultimamente) e, da ciò che ho visto, ogni linguaggio ha pro e contro. nn è granchè sensato preferirne uno all'altro solo x simpatia xsonale... cm giustamente diceva sari, guarda prima che deve fare il programma, poi fai la tua scelta.
quando vedevo i codici per fare l'"hallo world!" mi cascavano le braccia
non mi sembrano tanto diversi c++ e java :P
ciao, rob
Inviato: lun 18 lug 2005, 22:41
da useless
dunque dunque:
compilato a tempo di esecuzione vuol dire interpretato
questo è vero, ma java non è così! non ho idea di come sia implementata la JVM, ma comunque legge il bytecode, che è il suo linguaggio macchina. se fosse interpretato il bytecode non avrebbe senso crearlo. credo comunque che alla fine il bytecode sia tradotto in codice macchina nativo just-in-time (jit).
inoltre snaturava il linguaggio orientandolo agli oggetti... a sto punto xchè nn utilizzare un linguaggio a oggetti nativo?
su questo non sono minimamente d'accordo. il paradigma ad oggetti è, in quando paradigma, un'idea astratta, implementabile in un linguaggio qualsiasi (o quasi, in C comunque si può fare comodamente). a me gli oggetti in sé non dispiacciono, anzi... usati propriamente contribuiscono sicuramente alla "pulizia" del programma e alla leggibilità. quel che mi fa schifo è LA PERVERSIONE con cui java usa gli oggetti. TUTTO è un oggetto, e questo spesso e volentieri complica la vita (vedi il famoso
the march of progress), pensa anche solo al dover creare una public static main... quanto casino x niente, senza contare che tutto ciò ha chiaramente il precco della velocità. insomma, xké usare gli oggetti in c? x fare un programma ad oggetti veloce!
Il mio parere e' quindi : "prima si deve sapere cosa sviluppare e poi si decide che Codice usare"
sacrosanta verità... ma bisogna conoscere molti linguaggi x fare la scelta migliore.
Inviato: mar 19 lug 2005, 0:43
da B4sH
vabbè io di programmazione non ci capisco praticamente niente, ma ho letto un po le basi del python e ho provato a fare cose molto elementari, dalla mia esperienza posso dire che il python è un linguaggio piuttosto semplice da imparare, se dopo è un linguaggio "migliore" o "peggiore" di altri come java o c++ non ne ho proprio idea

Inviato: mar 19 lug 2005, 10:39
da gioco
questo è vero, ma java non è così! non ho idea di come sia implementata la JVM, ma comunque legge il bytecode, che è il suo linguaggio macchina. se fosse interpretato il bytecode non avrebbe senso crearlo.
Il bytecode viene creato per ottenere la portabilità su le altre piattaforme. In questo modo ogni JVM viene implementata per una specifica architettura, ma tutte le JVM eseguono lo stesso bytecode.
credo comunque che alla fine il bytecode sia tradotto in codice macchina nativo just-in-time (jit).
Si è esattamente così.
comunque io sto con useless. Java mette a disposizione delle caratteristiche molto interessanti, ma a un costo abbastanza elevato. Sono tutte caratteristiche che si possono ottenere anche in C, se il C uno lo sa scrivere (perchè lì non c'hai mica i try/catch e le strutture dati già pronte). Il java è utile se uno deve scrivere un programma in 2 giorni, perchè è davvero troppo semplice (e noioso) . :twisted:
Inviato: mar 19 lug 2005, 10:44
da useless
gioco ha scritto:Il bytecode viene creato per ottenere la portabilità su le altre piattaforme. In questo modo ogni JVM viene implementata per una specifica architettura, ma tutte le JVM eseguono lo stesso bytecode.
d'accordo, ma non sarebbe strettamente necessario solo x questo, potrebbero benissimo leggersi il sorgente. probabilmente il motivo è che è molto + veloce fare il jit di uno pseudolinguaggio macchina +ttosto che di uno umanamente comprensibile.
Inviato: mar 19 lug 2005, 15:08
da gioco
Probabile. Il bytecode viene anche controllato e ottimizzato dal compilatore. Vengono fatti ad esempio dei controlli sugli upcasting, per vedere se possono essere risolti in esecuzione (sebbene il compilatore non sappia nulla sul tipo di oggetto che si trova davanti).
Dai useless che forse troviamo anche qualcosa di buono in questo folle linguaggio

Inviato: mar 19 lug 2005, 15:37
da absinthe
rob ha scritto:compilato a tempo di esecuzione vuol dire interpretato
quando vedevo i codici per fare l'"hallo world!" mi cascavano le braccia
non mi sembrano tanto diversi c++ e java :P
ciao, rob
boia... ma se tutti rompevano col fatto che compilato a tempo di esecuzione è diverso dall'interpretato, che java non è come il basic... ma allora sono stato gabbato...
comunque quello che mi son letto io come "compilato a tempo di esecuzione" voleva dire grosso modo quello che ha scritto useless ovvero che non c'era la diretta interpretazione delle righe del codice sorgente ma una prima rielaborazione in un linguaggio + rapido da interpretare....
o forse no? boia mi è cascato ilmondo...
il discorso sul "hallo world" era riferito al fatto che in c/c++ basta un
int main (int argc, char** argv)
{
...
return quel_che_vuoi_basta_che_non_abbia_i_decimali;
}
di là ci sono classi dappertutto... o mio dio ci hanno assediato...nooooooooooooooo
comunque scegli cosa vuoi fare e poi bla,BLA,BLA... incontestabile: io per fare prima a volte mi faccio gli script matlab per i calcoli
e poi se deve essere un passatempo e non una professione prendi il linguaggio che ti attira di + e provalo: a cambiare sei in tempo!
M.