Sviluppo software su Linux

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
kioto
Linux 0.x
Linux 0.x
Messaggi: 39
Iscritto il: gio 18 nov 2004, 0:00

Sviluppo software su Linux

Messaggio 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.

Avatar utente
rob
Linux 3.x
Linux 3.x
Messaggi: 924
Iscritto il: lun 22 nov 2004, 0:00
Località: Roma

Messaggio 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

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio 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.

Avatar utente
rob
Linux 3.x
Linux 3.x
Messaggi: 924
Iscritto il: lun 22 nov 2004, 0:00
Località: Roma

Messaggio da rob »

auhauhahuahu, e come te sbaji :P
allora, inizio flame :D : 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

kioto
Linux 0.x
Linux 0.x
Messaggi: 39
Iscritto il: gio 18 nov 2004, 0:00

Messaggio 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: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 ^^

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio 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"

Avatar utente
rob
Linux 3.x
Linux 3.x
Messaggi: 924
Iscritto il: lun 22 nov 2004, 0:00
Località: Roma

Messaggio 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

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio 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 :)

Avatar utente
rob
Linux 3.x
Linux 3.x
Messaggi: 924
Iscritto il: lun 22 nov 2004, 0:00
Località: Roma

Messaggio 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

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio 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.

Avatar utente
B4sH
Linux 2.x
Linux 2.x
Messaggi: 488
Iscritto il: sab 25 giu 2005, 0:00
Contatta:

Messaggio 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 :?:

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio 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:

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio 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.

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio 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 :lol:

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio 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.

Rispondi