Sign in to follow this  

Recommended Posts

Guarda, io mi sono avvicinato alla programmazione con cocoa tramite l'ObjectiveC, linguaggio sicuramente molto pulito ed elegante, sicuramente più elegante del C++, ma praticamente assente al di fuori dell'ambiente Mac OS X. Devo essere sincero, la documentazione standard di Apple non mi è piaciuta affatto nè tantomeno ho trovato buon materiale sulla rete (se conosci qualche buon link e me lo segnali ti sarei veramente grato!). Quindi l'approccio con questo linguaggio è stato per me difficoltoso.

Ho provato con il Java, linguaggio che apprezzo veramente tanto, ma sinceramente (almeno per il tipo di software che devo scrivere) l'ho trovato esageratamente lento e per questo l'ho abbandonato.

Avendo una buona (o così spero!!!!) conoscenza del C mi sono avvicinando a Carbon e l'ho trovato assolutamente abbordabile (ho trovato il manuale "Programmare Mac OS X, Dan Parks Sydow, Jackson libri che è veramente ben fatto e molto intuitivo), inoltre generando applicazioni eseguibili anche su versioni precedenti del system, l'ho veramente apprezzato.

Certamente conoscere un linguaggio come Java o la programmazione ad oggetti è importantissimo, e sicuramente è la scelta ideale per l'insegnamento della programmazione nei corsi universitari, ma a volte creo che la vecchia programmazione procedurale sia più facile (anche se a lungo termine meno facile da gestire) rispetto alla OOP, per chi è meno "tecnico".

PS: un semplice programmino scritto in C sfruttante Carbon che scrive la classica "Hello World!" in una finestra, con menu e tutto il resto dell'interfaccia Aqua disegnata tramite l'interface builder è lungo tutto sommato solo 10 righe, compresa la dichiarazione delle variabili necessarie!

OFF TOPIC: il ritardo nella consegna della mia copia di Jaguar mi sta facendo veramente INCAZZARE, avete notizie di come va la distribuzione presso Macpoint a Milano?

Share this post


Link to post
Share on other sites

<FONT COLOR="ff0000">Ho provato con il Java, linguaggio che apprezzo veramente tanto, ma sinceramente (almeno per il tipo di software che devo scrivere) l'ho trovato esageratamente lento e per questo l'ho abbandonato</FONT>

Dimmi, quali sono gli aspetti del java che "apprezzi tanto"?

Il java e' lento in che cosa nello specifico? Che tipo di software scrivi?

<FONT COLOR="ff0000">credo che la vecchia programmazione procedurale sia più facile (anche se a lungo termine meno facile da gestire) rispetto alla OOP, per chi è meno "tecnico"</FONT>

Questo non e' assolutamente vero, chiunque conosca la PO sa quanto sia simile al modo di pensare gli oggetti nel quotidiano. Non occorre essere "tecnici" per imparlarla, e' esattamente l'opposto. Piuttosto bisogna slegarsi da certi vincoli mentali in cui ci siamo impigliati con linguaggi non-OO.

<FONT COLOR="ff0000">un semplice programmino scritto in C sfruttante Carbon che scrive la classica "Hello World!" in una finestra, con menu e tutto il resto dell'interfaccia Aqua disegnata tramite l'interface builder è lungo tutto sommato solo 10 righe, compresa la dichiarazione delle variabili necessarie!</FONT>

Bisogna vedere cosa ci sta dietro a quelle 10 righe di codice ... e quante righe di codice senza metter mano all'IB? Dimmi un'altra cosa: visto che conosci il java, quante righe di codice servono per fare la stessa cosa con questo linguaggio (senza Interface Builder)? Posted Image

Share this post


Link to post
Share on other sites
Guest

Gennaro><FONT COLOR="ff0000">Puoi osservare che carbon è più difficile da programmare rispetto a cocoa (ma qui siamo sempre in questioni di abitudini, gusti...) però alla fine diciamo ambedue di imparare un linguaggio noto e poi passare ad una particolare API. Soltanto che C e Java hanno "bacini d'attrazione" diversi.</FONT>

Il fatto che il C sia più difficile per i proncipianti pare sia opinione comune (anche se non unanime, ovvio).

Chi gli fa fare di imparare il C e farsi una testa così quando poi magari questo lo porta a perdere la voglia?

Che usi il Java, che faccia qualcosa di funzionante e si diverta! poi, quando avrà una certa base, valuterà se conviene passare al ObjC (e fare app mac praticamente subito) o passare al C e carbon (con un certo impegno) o migliorare il suo java e fare app multipiattaforma! tanto, ormai, avranno già preparato il compilatore di java che produce codice macchina e che fornisce prestazioni paragonabili a quelle del C++!

Share this post


Link to post
Share on other sites
Guest

Giulio><FONT COLOR="ff0000">Il java e' lento in che cosa nello specifico? Che tipo di software scrivi?</FONT>

Oh Giulio, non mi cadere dalle nuvole!

Java è *lento*, lo si sa. Solo che alla fin fine per moltissimi usi questo non conta e, in più, è molto più veloce da scrivere.

Non per niente nelle università si usa MAtlab, che produce codice lentissimo. però si fa prestissimo a scriverlo così che il vantaggio c'è comunque.

Share this post


Link to post
Share on other sites

<FONT COLOR="ff0000">Oh Giulio, non mi cadere dalle nuvole! Java è *lento*, lo si sa</FONT>

Complimenti per la risposta! Ricorda molto "Il mac e' *solo per la grafica*, lo si sa". Il parametro di valutazione "lento" non lo trovate neanche nella rivista di elettrodomestici di + bassa tiratura, quindi per favore diamo elementi alla discussione altrimenti possiamo anche fermarci qui ...

Share this post


Link to post
Share on other sites

Semplice programmino, il classico Hello World

Codice in (pure) Java:

import java.awt.*;

public class Hello extends Frame {

public static void main(String argv[])

{

new Hello();

}

Hello() {

Label hello = new Label("Hello World");

add("Center", hello);

resize(200, 200);

show();

}

}

Codice in C (Carbon):

#include

int main(int argc, char* argv[]) {

IBNibRef nibRef;

WindowRef window;

OSStatus err;

err = CreateNibReference(CFSTR("main"), &nibRef);

err = SetMenuBarFromNib(nibRef, CFSTR("MainMenu"));

err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window);

disposeNibReference(nibRef);

Show(window);

RunApplicationEventLoop();

return err;

}

La differenza come vedi (in lunghezza!!!!) è lieve, inoltre con il secondo, tramite l'interface builder hai la possibilità di aggiungere i classici menu "Archivhi", "Composizione",... che nel primo non compaiono.

Sulla velocità, è innegabile che la stessa applicazione cocoa, scritta in ObjectiveC risulterà più lenta di una scritta in Java, questo lo si può sperimentare compilando "Sketch", esempio che si trova nei tool di sviluppo. E per lento intendo in ogni operazione (o quasi).

Però quando avverrà quello che dice Olaf, ovvero un compilatore Java che produce codice veloce come quello in C++, non ci saranno dubbi su quale sia la miglior scelta per programmare in Mac OS X.

Mi occupo di "software matematico", in questo momento sto (cercando) di sviluppare un algoritmo che mi dia valutazioni della funzione gamma.

Share this post


Link to post
Share on other sites

<FONT COLOR="ff0000">Gennaro: import java.awt.*;</FONT>

Ecco perche' dicevi che il java non si integra bene con il sistema: usi le AWT!!! Forse ne sei gia' a conoscenza, ma sono cambiate un bel po' di cose dai tempi dell'introduzione di questo sistema grafico.

<FONT COLOR="ff0000"> ... [resto del codice java] ...</FONT>

Se vogliamo essere pignoli, la stessa cosa si puo' fare in ancora meno righe Posted Image

<FONT COLOR="ff0000"> ... [tuo codice C (Carbon)] ... </FONT>

Eh, eh, le righe sono + di 10 e hai messo mano all'IB, hai barato Posted Image!!! Scrivi un codice autonomo, fammi vedere tutti i passaggi! Col java se uso l'IB (e quindi cocoa) posso scrivere ZERO (0) righe di codice per fare la stessa cosa. Comunque a me sembra come avevo detto: poche righe, ma i concetti che ci stanno dietro non sono certo elementari come quelli usati nel codice java.

<FONT COLOR="ff0000">Sulla velocità, è innegabile che la stessa applicazione cocoa, scritta in ObjectiveC risulterà più lenta di una scritta in Java, questo lo si può sperimentare compilando "Sketch"</FONT>

Immagino che tu abbia inavvertitamente scambiato i 2 linguaggi. In ogni caso hai perfettamente ragione, anch'io ho fatto lo stesso test su Sketch. E' proprio uno dei motivi che mi hanno portato all'ObjC.

Ti avevo chiesto in quale particolare ambito trovavi il java lento perche' spesso molte persone escludono il pure-java gia' in partenza, perche' come dice erroneamente Olaf "il java e' *lento* lo si sa", senza nemmeno sapere cos'hanno in mente e di cosa hanno bisogno per realizzarlo. Si buttano sul linguaggio "+ veloce" (passami il termine anche se e' da ignoranti totali) sperando di guadagnare chissa' che cosa. Magari sporcano continuamente il codice con funzioni fatte alla meglio ignorando l'esistenza di librerie ottimizzate e pronte per l'uso. Quello che penso e' che la velocita' del pure java va sicuramente bene alla maggior parte delle persone e in alcuni casi (pochi ma documentati) supera anche il C. Se poi il problema e' la velocita' di esecuzione e non i tempi di sviluppo/apprendimento perche' non buttarsi tutti sull'assembly?

<FONT COLOR="ff0000">Mi occupo di "software matematico", in questo momento</FONT>

Innanzi tutto buon lavoro, e poi ti faccio un'ultima domanda: ma non si dice (un po' alla Olaf) "che il C *non va bene* in ambito matematico"? Ho sentito che di solito si utilizzano delle librerie esterne abbastanza costose per poterci lavorare degnamente ... mah, sicuramente su questo sei + informato tu ... Ciao (dai una ripassata al java che serve sempre Posted Image).

<FONT COLOR="ff0000">x Enrico Salomone:</FONT> ti sarai di certo annoiato a leggere tutti questi discorsi inutili!!! ma sicuramente tra un po' di tempo anche tu avrai la tua da dire ... buono studio e speriamo che sia <FONT SIZE="+2">java</FONT> Posted Image

Share this post


Link to post
Share on other sites
Guest

Dirò due cose.

1) Nel caso Gennaro non se ne fosse accorto, non ha senso fare a gara a chi riesce a scrivere un programma inutile in meno righe. Meglio non scriverlo affatto.

2) Nel caso Olaf non se ne fosse accorto, Giulio è come Cisco, mutatis mutandis (cioè sostituendo Java alla Apple).

Share this post


Link to post
Share on other sites
Guest

Gennaro><FONT COLOR="ff0000">Sulla velocità, è innegabile che la stessa applicazione cocoa, scritta in ObjectiveC risulterà più lenta di una scritta in Java, questo lo si può sperimentare compilando "Sketch", esempio che si trova nei tool di sviluppo. E per lento intendo in ogni operazione (o quasi).</FONT>

ObjC è più veloce di java. Punto. Magari non nell'esempio che ti è capitato (dipende da cosa voleva mostrare chi l'ha scritto!).

Ovvio che se ti occupi di software matematico devi usare C, neanche C++. Che è la funzione gamma?

Giulio><FONT COLOR="ff0000">Eh, eh, le righe sono + di 10 e hai messo mano all'IB, hai barato !!! Scrivi un codice autonomo, fammi vedere tutti i passaggi! Col java se uso l'IB (e quindi cocoa) posso scrivere ZERO (0) righe di codice per fare la stessa cosa. Comunque a me sembra come avevo detto: poche righe, ma i concetti che ci stanno dietro non sono certo elementari come quelli usati nel codice java</FONT>

Non capisco l'inizio, (IB?), però hai ragione: è evidentemente più semplice java.

<FONT COLOR="ff0000">Ti avevo chiesto in quale particolare ambito trovavi il java lento perche' spesso molte persone escludono il pure-java gia' in partenza, perche' come dice erroneamente Olaf "il java e' *lento* lo si sa", senza nemmeno sapere cos'hanno in mente e di cosa hanno bisogno per realizzarlo. Si buttano sul linguaggio "+ veloce" (passami il termine anche se e' da ignoranti totali) sperando di guadagnare chissa' che cosa. Magari sporcano continuamente il codice con funzioni fatte alla meglio ignorando l'esistenza di librerie ottimizzate e pronte per l'uso. Quello che penso e' che la velocita' del pure java va sicuramente bene alla maggior parte delle persone e in alcuni casi (pochi ma documentati) supera anche il C. Se poi il problema e' la velocita' di esecuzione e non i tempi di sviluppo/apprendimento perche' non buttarsi tutti sull'assembly?</FONT>

Esattissimo.

Per quanto riguarda il software matematico, ormai le librerie penso si trovino in giro.

Piuttosto, se sei in una università e l'obiettivo è solo studiare (intendo: se sei dottorando), non produrre codice commerciale, io userei Matlab o Mathematica.

Share this post


Link to post
Share on other sites

Sfortunatamente le migliori librerie matematiche sono ancora scritte in Fortran 77 (nel caso non si voglia naturalmente usare l'onnipresente Matlab)!!! Comunque c'è in giro tanta gente che le sta riscrivendo in C o C++. A me il C non dispiace affatto perchè comunque mi garantisce ottime prestazioni

Giulio

>Ecco perche' dicevi che il java non si integra bene con il sistema: usi le AWT!!! Forse ne sei gia' a conoscenza, ma sono cambiate un bel po' di cose dai tempi dell'introduzione di questo sistema grafico.

Ti riferisci alle Swing? Comunque mi hai stuzzicato un pò andrò a vedermi un pò 'sto Java e vedremo... Posted Image

Giulio

>Eh, eh, le righe sono + di 10 e hai messo mano all'IB, hai barato !!! Scrivi un codice autonomo, fammi vedere tutti i passaggi! Col java se uso l'IB (e quindi cocoa) posso scrivere ZERO (0) righe di codice per fare la stessa cosa. Comunque a me sembra come avevo detto: poche righe, ma i concetti che ci stanno dietro non sono certo elementari come quelli usati nel codice java.

Riga più riga meno Posted Image comunque questo è il miglior modo (o almeno credo) per scrivere quel programmino (sfruttando carbon).

Tuo nonno in carriola

>Nel caso Gennaro non se ne fosse accorto, non ha senso fare a gara a chi riesce a scrivere un programma inutile in meno righe. Meglio non scriverlo affatto.

sbaglio o il classico "Hello World" è il primo programmino che s'insegna a chi dive apprendere i primi concetti di programmazione?

Share this post


Link to post
Share on other sites

Olaf:

>Per quanto riguarda il software matematico, ormai le librerie penso si trovino in giro.

Piuttosto, se sei in una università e l'obiettivo è solo studiare (intendo: se sei dottorando), non produrre codice commerciale, io userei Matlab o Mathematica.

Beh effettivamente sia il Matlab che il Mathematica sono due software utilizzatissimi per implementare o sviluppare nuovi algoritmi. Il linguaggio di Mathematica se devo essere sincero non mi piace affatto e quindi non è che l'abbia utilizzato particolarmente, il Matlab invece è comodissimo anche perchè ti permette di leggere direttamente da tastiera funzioni e cose del genere quindi senza scrivere niente di particolare per convertire stringhe in espressioni matematiche... Però in alcuni casi c'è bisogno di molta velocità oppure come nel mio (sto realizzando un ambiente che mi permetta di effettuare uno studio completo sulle funzioni gamma, gamma incompleta etc. etc.) e quindi preferisco realizzare un programma indipendente.

Olaf:

>Che è la funzione gamma?

Una "funzione speciale" (non scherzo si dice proprio così!). Ha applicazioni che vanno dall'economia all'ingegneria elettronica...

Share this post


Link to post
Share on other sites
Guest

Gennaro><FONT COLOR="ff0000">A me il C non dispiace affatto perchè comunque mi garantisce ottime prestazioni</FONT>

allora compra MAc OS X... ci sarà una sorpresa...

LAPACK dice niente...?

Ora ricordo della funzione gamma.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this