View Full Version : Linguaggio più usato nelle aziende?
Ciao a tutti !
Ho letto il topic in sticky sul linguaggio "da preferire" per i principianti, ma mi chiedo: attualmente nelle varie aziende, qual'è il ilnguaggio di programmazione principale? Facendo una piccola ricerca ho visto che non ce nè uno preciso (almeno nella mia zona, cioè modena e provincia). Attualmente ho trovato molte richieste per la piattaforma .net, molto su java e qualcosa su c/c++. Seguono a ruota altri linguaggi.
Poi inoltre volevo chiedervi: ma per programmatore .net si intende una conoscenza buona di C# oppure va bene anche per esempio visual basic (sempre .net ovviamente, non intendo vb6 :) )?
Credo che oggi uno dei più richiesti è il JAVA, soprattutto perchè ci puoi fare di tutto (se guardi java Se , java ME e java EE)
Anche il .net diventa sempre più richiesto, anche se io sinceramente non lo conosco
Ok, grazie mille per la risposta :)
killercode
25-10-2011, 18:35
java e php
Effettivamente io anni or sono ho iniziato con il php :D
tecno789
25-10-2011, 18:55
java e php
quoto, anche se purtoppo tutti quando stai facendo la gavetta ti insegnano il c :(
quoto, anche se purtoppo tutti quando stai facendo la gavetta ti insegnano il c :(
Nel CV di un programmatore, conoscere "discretamente bene" il linguaggio C è molto, ma molto utile. Conoscere il C e le sue potenzialità, presuppone il conoscere, almeno in via generale, come la memoria è organizzata e saperla gestire significa saper scrivere codici performanti in ambiti dove le performance sono un must.
Con il java, tutta la gestione della memoria è trasparente e il programmatore di fatto sa ben poco di cosa succede in runtime.
Il java è molto richiesto certo, perchè portabile e diffuso, ma è anche tra i più conosciuti. Gente che sa scrivere bene in C/C++ è vista in modo molto diverso (meglio) dal tipico "junior java programmer". Poi comunque il java è molto semplice da imparare rispetto a C o C++, fai sempre in tempo a prenderlo in mano.
Oltre a java, anche il python può essere un bagaglio utile, è un linguaggio fortemente espressivo ad alto livello e permette alle aziende che lo adottano un buon standard di produttività. Rispetto a java penso sia meno diffuso ma sta prendendo piede.
Domanda stupida: ma Visual Basic .net come linguaggio non viene utilizzato?
Io mi domando: ho provato ad imparare un pò di java...ma magari a causa di tutorial non proprio chiari o forse perchè ho il cervello fritto...per adesso, almeno per le cose "normali" mi sto trovando meglio con python e c++. So che vado controtendenza, ma proprio non riesco ad arrivarci a certi ragionamenti per imparare java. Inoltre se parliamo di "applicazioni grafiche", lo stesso discorso che ho fatto su java vale anche per C#, che sostanzialmente mi pare SIMILE (e qui non tiratemi delle bottiglie in testa...), se dovessi usare la piattaforma .net (sempre personalmente) mi troverei più a mio agio con VB.net e penso che alcune cose si facciano anche più velocemente...anche se capisco che quando si lavora in un team bisogna usare lo stesso linguaggio :)
Poi per python...si è vero sta prendendo piede, ma sbaglio o in italia le cose arrivano sempre dopo ? :)
tecno789
25-10-2011, 21:25
Domanda stupida: ma Visual Basic .net come linguaggio non viene utilizzato?
Io mi domando: ho provato ad imparare un pò di java...ma magari a causa di tutorial non proprio chiari o forse perchè ho il cervello fritto...per adesso, almeno per le cose "normali" mi sto trovando meglio con python e c++. So che vado controtendenza, ma proprio non riesco ad arrivarci a certi ragionamenti per imparare java. Inoltre se parliamo di "applicazioni grafiche", lo stesso discorso che ho fatto su java vale anche per C#, che sostanzialmente mi pare SIMILE (e qui non tiratemi delle bottiglie in testa...), se dovessi usare la piattaforma .net (sempre personalmente) mi troverei più a mio agio con VB.net e penso che alcune cose si facciano anche più velocemente...anche se capisco che quando si lavora in un team bisogna usare lo stesso linguaggio :)
Poi per python...si è vero sta prendendo piede, ma sbaglio o in italia le cose arrivano sempre dopo ? :)
e purtroppo non sbagli :(
per questo mi domandavo perchè insistono molto sul c, linguaggio ormai soppiantato...
e purtroppo non sbagli :(
per questo mi domandavo perchè insistono molto sul c, linguaggio ormai soppiantato...
Perchè chi è in grado di programmare in C mediamente ce l'ha più grosso ...
mi riferisco ovviamente al bagaglio culturale in campo informatico. :D
Più seriamente, un linguaggio di programmazione è in ultima analisi solo uno strumento, quello che conta davvero è "cosa uno è in grado di fare" (cosa molto difficile da quantificare, uno potrebbe avere tutto il know-how teorico necessario ma non essere in grado di tradurlo in applicazioni specifiche, uno potrebbe essere un programmatore bravissimo, ma solo a patto di dargli modelli ed algoritmi molto dettagliati perchè su quel lato non è una cima, ecc. ecc.).
Di solito se uno è già in grado di programmare discretamente in C, come minimo riesce a gestire da se cose che in altri linguaggi sono implementate direttamente da runtime+compilatore, inoltre c'è qualche possibilità in più che se la cavi da se nel caso ci sia anche da sviluppare software per hardware embedded ( e magari lo ha già fatto). ecc. ecc.
In altre parole mediamente ha delle capacità "utili" in più rispetto a chi sa solo programmare in Java o in C#.
per questo mi domandavo perchè insistono molto sul c, linguaggio ormai soppiantato...
Su questa affermazione molti ingegneri informatici potrebbero lapidarti :asd:
Vai qui: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
questi dati sono da prendere con le adeguate precauzioni, ma è un indice abbastanza aderente alla realtà.
Il C non è per niente soppiantato, semplicemente spesso l'informatico con esperienza solo scolastica non pensa a tutta quella serie di applicazioni in cui il C la fa da padrone.
Prendi per esempio la programmazione dei sistemi integrati: microcontrollori e DSP. Oppure tutti quei progetti in cui alcune porzioni di codice performance critical risultano male ottimizzate e allora si integra con dei segmenti di codice o intere librerie scritte in C, ciò avviene anche per android mediante l'uso dell'NDK android laddove sia necessario ottimizzare le performance su dispositivi che hanno un limitato quantitativo di memoria e processore.
Inoltre ci sono alcuni campi in cui l'uso del java è sconsigliabile.
Ed è proprio questo che giustifica il "chi sa il C ce l'ha più lungo", perchè (si presuppone) conosca bene che esiste una cosa chiamata "memoria" e un concetto chiamato "ottimizzazione".
Un "programmatore" (fra virgolette) che conosce solo il Java è molto limitato in tal senso. Spesso non sa cosa è un compilatore o un linker, oppure non sa che java è un linguaggio che viene prima "compilato" verso un altro linguaggio chiamato bytecode che viene a sua volta mandato in pasto alla jvm. E la jvm usa un approccio misto (JIT) di compilazione - interpretazione del bytecode...
Spesso infatti questi concetti sono tralasciati dagli sviluppatori Java-only, mentre chi programma in C li deve conoscere bene e hanno il loro peso.
Per il classico hello-world o programma di 1000-10000 righe di codice java, conoscere o non conoscere quello che sta sotto è quasi indifferente, ma quando si inizia a lavorare su progetti seri, la storia cambia.
e purtroppo non sbagli :(
per questo mi domandavo perchè insistono molto sul c, linguaggio ormai soppiantato...
Il C non sarà mai obsoleto, vuoi perchè è un linguaggio stracollaudato, vuoi per le tonnellate di codice legacy in giro per il mondo.
Ciao a tutti !
Ho letto il topic in sticky sul linguaggio "da preferire" per i principianti, ma mi chiedo: attualmente nelle varie aziende, qual'è il ilnguaggio di programmazione principale? Facendo una piccola ricerca ho visto che non ce nè uno preciso (almeno nella mia zona, cioè modena e provincia). Attualmente ho trovato molte richieste per la piattaforma .net, molto su java e qualcosa su c/c++. Seguono a ruota altri linguaggi.
Poi inoltre volevo chiedervi: ma per programmatore .net si intende una conoscenza buona di C# oppure va bene anche per esempio visual basic (sempre .net ovviamente, non intendo vb6 :) )?
la domanda non ha senso, almeno in un mondo da 7 miliardi di persone e con tante imprese diverse in diversi settori, con ragioni di profitto e di immagine totalmente variegate.
per quanto riguarda il visual basic è praticamente morto, certo Visual Studio lo supporta per mantenere attivi i programmatori "vecchio stile", ma oramai si guarda al C# da tempo.
AnonimoVeneziano
26-10-2011, 16:00
Sono d'accordo, per quanto si ami o lo si odi , per un programmatore COMPLETO la conoscenza del C/C++ è fondamentale e PRIMA o POI il suo apprendimento lo si deve affrontare. Non è necessario che sia il primo magari, ma se si vuole raggiungere la completezza prima o poi bisogna prenderlo in mano.
è ovvio che chi parla di declino del C e del C++ non sa di cosa stia parlando, prospettare un declino di questi 2 linguaggi, praticamente gli unici linguaggi realmente rodati e nativi per tantissime piattaforme, significa non capire i fondamentali della programmazione, fosse per me insegnerei il C++ piuttosto che Java visto che offre una completezza maggiore e copre più esigenze, per altro Java mutua praticamente tutto dal C++ e quindi si prenderebbero 2 piccioni con 1 fava.
e-commerce84
26-10-2011, 16:57
La domanda iniziale ha poco senso...dipende a che tipo di aziende ti riferisci e in che campo operano o vuoi lavorare
In Italia la maggior parte delle aziende dove puoi lavorare come PROGRAMMATORE faranno web application...quindi Java EE è il più utilizzato per web application grosse...di fatto conoscere Java EE non ti serve a niente da solo...poi dovrai conoscere i vari framerk usati nel caso tipo:
Spring: logica di business
Spring WEb Flow, Bonita, etc: per gestire processi
PrimeFaces, IceFaces, etc per lato presentazione
Poi sempre in ambito web application per cose più piccole è molto usato anche PHP
Anche .net è un linguaggio che dà parecchio lavoro
Python è molto figo ma per ora in Italia ci sono poche offerte di lavoro per tale linguaggio
Poi dipende...conosco gente che lavora in ambito reti e che "programma" in maniera totalmente diversa...niente architetture complesse, scripting in linguaggi tipo perl o altro...è un altro campo, un altro modo di programmare, altre esigenze...non è ambito sviluppo software ma si programma per gestire determinate esigenze specifiche di rete
pabloski
26-10-2011, 17:07
wow si parla bene di java, c e c++ e nessuno arriva a linciarli :D
cavolo, l'ultima volta che ho osato dire che java è il più diffuso in ambito aziendale sono stato preso a bastonate :stordita:
comunque è vero che il c e il c++ sono fondamentali, perchè alla fin fine un informatico che non conosce un minimo di teoria non esiste, mentre esistono molti informatici "teorici" che non conoscono un'acca di come funziona un computer a basso livello
e lo dice uno che fino al liceo, amatorialmente, ha programmato SOLO ad alto livello
cdimauro
26-10-2011, 17:11
Alla fine si arriva sempre ai soliti discorsi, coi soliti slogan (perché questo sono) sulla "definizione" (è tra virgolette, perché non esiste) di programmatore "fico", "completo", le basi della programmazione, ecc. ecc.
Visto che si è parlato di "metro" sulla base della conoscenza di dettagli di più basso livello, i programmatori assembly farebbero invidiare Rocco Siffredi, e quelli in linguaggio macchina John Holmes. :sofico:
tecno789
26-10-2011, 17:29
Alla fine si arriva sempre ai soliti discorsi, coi soliti slogan (perché questo sono) sulla "definizione" (è tra virgolette, perché non esiste) di programmatore "fico", "completo", le basi della programmazione, ecc. ecc.
Visto che si è parlato di "metro" sulla base della conoscenza di dettagli di più basso livello, i programmatori assembly farebbero invidiare Rocco Siffredi, e quelli in linguaggio macchina John Holmes. :sofico:
ahahahah
comunque se dovessimo rispondere direttamente alla domanda io direi java, il c è vero che da una base incredibile, ma non è il più richiesto.
e-commerce84
26-10-2011, 18:44
Alla fine si arriva sempre ai soliti discorsi, coi soliti slogan (perché questo sono) sulla "definizione" (è tra virgolette, perché non esiste) di programmatore "fico", "completo", le basi della programmazione, ecc. ecc.
Visto che si è parlato di "metro" sulla base della conoscenza di dettagli di più basso livello, i programmatori assembly farebbero invidiare Rocco Siffredi, e quelli in linguaggio macchina John Holmes. :sofico:
Ma infatti secondo me un minimo di basi di C e di Assembly è importante averle...
All'uni prima ho visto il C dove ho imparato a gestire la memoria a manella e a sapere cos'è un puntatore...contemporaneamente con il corso di architetture degli elaboratori si è visto un po' di Assembler (magari su architetture semplificate tanto per far capire la logica) così uni si fà un'idea precisa di quello che succede alla macchina
Poi al primo corso di programmazione orientata agli oggetti ho avuto una docente BRAVISSIMA che faceva vedere anche con un asembler su architettura semplificate (e non implementata) cosa succedeva in memoria...la differenza tra un linguaggio basato su stack e su un linguaggio come Java che usa anche un Heap...cosa significa all'atto pratico mettere il riferimento di un'oggetto in una variabile...
Sono tutte cose che sul momento dici: "Ma a che cazzo ti serve tutta sta pippa mentale?" poi quando lavori capisci la differenza con chi ste cose non le ha mai neanche viste...capita die evitare begli errori o di saper fare cose in modo migliore (tipo: programmatore Android...al 99% programmerà in Java col framework di Android...devi scrivere un servizio che gira solo in background e che magari è anche bello pesante? mi pare che te lo puoi scrivere in C per renderlo più performante...eccoti che un programmatore che al 99% dovrà usare sempre Java nella sua vita professionale...beh se conosce un minimo di C nell'1% dei casi sarà molto avvantaggiato)
Poi io sono dell'idea che sapere una cosa in più è sempre meglio che saperne una in meno...
Il C è moltooo poco richiesto...però conoscere la logica a basso livello può tornarti utile per evitare errori quando programmi ad alto livello di astrazione o in casi particolari come l'esempio fatto prima
Io sono contento di aver studiato prima C...recentemnte mi sono trovato ad aiutare una ragazza appena entrata ad ing Informatica...iniziano con Java...ohhh sai che è stato difficile spiegargli cosa succede con:
Quadrato mioQuadrato = new MioQuadrato()
Sarà anche una cazzata ma vaglielo a spiegare ad uno che non sà manco come è fatta la memoria cosa significa che dentro la variabile mioQuadrato viene messo il riferimento ad un nuovo oggetto di tipo Quadrato...anche da un punto di vista puramente didattico ha un suo perchè studiare prima C e poi Java\C++
tecno789
26-10-2011, 19:12
Ma infatti secondo me un minimo di basi di C e di Assembly è importante averle...
All'uni prima ho visto il C dove ho imparato a gestire la memoria a manella e a sapere cos'è un puntatore...contemporaneamente con il corso di architetture degli elaboratori si è visto un po' di Assembler (magari su architetture semplificate tanto per far capire la logica) così uni si fà un'idea precisa di quello che succede alla macchina
Poi al primo corso di programmazione orientata agli oggetti ho avuto una docente BRAVISSIMA che faceva vedere anche con un asembler su architettura semplificate (e non implementata) cosa succedeva in memoria...la differenza tra un linguaggio basato su stack e su un linguaggio come Java che usa anche un Heap...cosa significa all'atto pratico mettere il riferimento di un'oggetto in una variabile...
Sono tutte cose che sul momento dici: "Ma a che cazzo ti serve tutta sta pippa mentale?" poi quando lavori capisci la differenza con chi ste cose non le ha mai neanche viste...capita die evitare begli errori o di saper fare cose in modo migliore (tipo: programmatore Android...al 99% programmerà in Java col framework di Android...devi scrivere un servizio che gira solo in background e che magari è anche bello pesante? mi pare che te lo puoi scrivere in C per renderlo più performante...eccoti che un programmatore che al 99% dovrà usare sempre Java nella sua vita professionale...beh se conosce un minimo di C nell'1% dei casi sarà molto avvantaggiato)
Poi io sono dell'idea che sapere una cosa in più è sempre meglio che saperne una in meno...
Il C è moltooo poco richiesto...però conoscere la logica a basso livello può tornarti utile per evitare errori quando programmi ad alto livello di astrazione o in casi particolari come l'esempio fatto prima
Io sono contento di aver studiato prima C...recentemnte mi sono trovato ad aiutare una ragazza appena entrata ad ing Informatica...iniziano con Java...ohhh sai che è stato difficile spiegargli cosa succede con:
Quadrato mioQuadrato = new MioQuadrato()
Sarà anche una cazzata ma vaglielo a spiegare ad uno che non sà manco come è fatta la memoria cosa significa che dentro la variabile mioQuadrato viene messo il riferimento ad un nuovo oggetto di tipo Quadrato...anche da un punto di vista puramente didattico ha un suo perchè studiare prima C e poi Java\C++
sarà ma a me attualmente stanno spiegando il C in maniera intensiva, il java proprio zero e non ce l'hanno neanche in programma.
beh il resto è tutto vero, serve molto per capire come "ragiona" una macchina e la gestione della memoria.
è ovvio che chi parla di declino del C e del C++ non sa di cosa stia parlando, prospettare un declino di questi 2 linguaggi, praticamente gli unici linguaggi realmente rodati e nativi per tantissime piattaforme, significa non capire i fondamentali della programmazione, fosse per me insegnerei il C++ piuttosto che Java visto che offre una completezza maggiore e copre più esigenze, per altro Java mutua praticamente tutto dal C++ e quindi si prenderebbero 2 piccioni con 1 fava.
Sono d'accordo, infatti è quello che ho studiato nei primi anni di università: prima C poi C++ e infine Java, adesso non so cosa insegnano al primo anno. Sostanzialmente però C e C++ sono la base IMHO necessaria per qualsiasi programmatore realmente preparato.
Consiglierei inoltre a tutti di leggere alcuni dati da questo sito http://langpop.com/
starfred
26-10-2011, 19:49
Il miglior linguaggio di programmazione è la progettazione.
Quando si ha un'idea precisa e quando dico precisa mi riferisco ad una metodologia di studio/analisi/specifiche comprovata e robusta di quello che il software deve fare, il linguaggio di programmazione è solo un mezzo per arrivarci. Troppo spesso si inizia a sviluppare un software avendo in mente solo un'idea vaga dicendo "poi man mano che lo sviluppo il resto vien da se'..." con risultati poi ovvi...
Sfortunatamente, in Italia, il vero proggettista viene visto come uno spreco e ciò che conta è quante linee di codice oggi hai scritto.
Se hai scritto una valanga di codice sei bravo, se hai usato molto del tuo tempo nella progettazione sei uno scansafatiche.
Detto questo mi scuso dell'eventuale OT e concordo con quello che dice e-commerce84, aggiungo che spesso manca la conoscenza della programmazione concorrente e distribuita. Si continuano a vedere programmi pesanti single thread nonostante ormai la logica multithreading sia più che affermata...
Il miglior linguaggio di programmazione è la progettazione.
Quando si ha un'idea precisa e quando dico precisa mi riferisco ad una metodologia di studio/analisi/specifiche comprovata e robusta di quello che il software deve fare, il linguaggio di programmazione è solo un mezzo per arrivarci. Troppo spesso si inizia a sviluppare un software avendo in mente solo un'idea vaga dicendo "poi man mano che lo sviluppo il resto vien da se'..." con risultati poi ovvi...
Sfortunatamente, in Italia, il vero proggettista viene visto come uno spreco e ciò che conta è quante linee di codice oggi hai scritto.
Se hai scritto una valanga di codice sei bravo, se hai usato molto del tuo tempo nella progettazione sei uno scansafatiche.
Detto questo mi scuso dell'eventuale OT e concordo con quello che dice e-commerce84, aggiungo che spesso manca la conoscenza della programmazione concorrente e distribuita. Si continuano a vedere programmi pesanti single thread nonostante ormai la logica multithreading sia più che affermata...
assolutamente d'accordo anche con questo, infatti una delle componenti fondamentali di un buon software è proprio una buona progettazione iniziale. Ingegneria del software è IMHO uno degli esami veramente fondamentali ad informatica.
Ingegneria del software è IMHO uno degli esami veramente fondamentali ad informatica.
Vero... e quest'anno sono riuscito a entrare nel corso (che a ing informatica a padova è a numero chiuso: 35 posti su più di 120 studenti ogni anno) e forse sarà pure l'ultimo anno che lo tengono visto il consiglio di laurea non se lo fila... faccio un fotio di esami di elettronica, matematica, automazione... e mi levano ingegneria del software a ingegneria informatica... che poi il prof ci fa lavorare direttamente su progetti accademici (ovviamente supervisionati) anche di discreta dimensione... vergogna... :mad:
Sfortunatamente a Ing informatica qui usano quasi esclusivamente il java, quasi nessun laureato (anche quelli quinquennali) penso conosca decentemente il C e la gran parte non ha mai scritto una riga di codice. In compenso gli elettronici lo studiano in alcuni esami come programmazione dei sistemi digitiali (che ho dato pure se non è del mio corso di laurea :D ).
Meno male che alle superiori ci ho sbattuto tanto la testa sul C e non me lo sono mai messo via.
Imparate quel linguaggio che volete, è vero che alla base ci sta la testa, l'ingegno e la capacità di progettare, ma linguaggi come il C insegnano molto sulla macchina che avete davanti al naso per diverse ore al giorno.
Ritornando IT, i programmatori java sono molto richiesti si, ma guardate quante offerte non sono a progetto o a tempo determinato di pochi mesi... :rolleyes: Senza contare che poi molti domandano "esperienza di almeno X anni" perchè c'è veramente tanta gente che sa (o pensa di sapere) programmare in Java...
tecno789
26-10-2011, 20:53
Vero... e quest'anno sono riuscito a entrare nel corso (che a ing informatica a padova è a numero chiuso: 35 posti su più di 120 studenti ogni anno) e forse sarà pure l'ultimo anno che lo tengono visto il consiglio di laurea non se lo fila... faccio un fotio di esami di elettronica, matematica, automazione... e mi levano ingegneria del software a ingegneria informatica... che poi il prof ci fa lavorare direttamente su progetti accademici (ovviamente supervisionati) anche di discreta dimensione... vergogna... :mad:
Sfortunatamente a Ing informatica qui usano quasi esclusivamente il java, quasi nessun laureato (anche quelli quinquennali) penso conosca decentemente il C e la gran parte non ha mai scritto una riga di codice. In compenso gli elettronici lo studiano in alcuni esami come programmazione dei sistemi digitiali (che ho dato pure se non è del mio corso di laurea :D ).
Meno male che alle superiori ci ho sbattuto tanto la testa sul C e non me lo sono mai messo via.
Imparate quel linguaggio che volete, è vero che alla base ci sta la testa, l'ingegno e la capacità di progettare, ma linguaggi come il C insegnano molto sulla macchina che avete davanti al naso per diverse ore al giorno.
Ritornando IT, i programmatori java sono molto richiesti si, ma guardate quante offerte non sono a progetto o a tempo determinato di pochi mesi... :rolleyes: Senza contare che poi molti domandano "esperienza di almeno X anni" perchè c'è veramente tanta gente che sa (o pensa di sapere) programmare in Java...
secondo me per fare un buono programma, prima ci vuole il progetto, uno che elabori la struttura e poi un'altrettanto buon programmatore che metta giù il codice con la sua "esperienza".
da me invece il java non si utilizza affatto, si programma in C e in assembly, quando serve.
Senza contare che poi molti domandano "esperienza di almeno X anni" perchè c'è veramente tanta gente che sa (o pensa di sapere) programmare in Java...
Non è per quel motivo, pensa che quando .Net non era uscito da manco un anno c'era chi cercava programmatori con "almeno 5 anni di esperienza con l'ambiente .Net e C#". :D
Come il classico "giovani neolaureati con almeno 5 anni di esperienza" :O
Ti pagassero tanto poi!
tecno789
26-10-2011, 21:43
Come il classico "giovani neolaureati con almeno 5 anni di esperienza" :O
Ti pagassero tanto poi!
che infami veramente.:doh:
che infami veramente.:doh:
chissà poi come li fai 5 anni di esperienza... cambiando azienda ogni 12 mesi?
mi passa la voglia prima... :rolleyes:
tecno789
26-10-2011, 22:09
chissà poi come li fai 5 anni di esperienza... cambiando azienda ogni 12 mesi?
mi passa la voglia prima... :rolleyes:
più che altro dove trovi il tempo di fare 5 anni???
metti caso che ti laurei in 5 anni, esci e come fai ad avere 5 anni già sulle spalle di lavoro?? è un controsenso. al massimo hai 5 anni di studio sul groppone!! :muro:
Non è per quel motivo, pensa che quando .Net non era uscito da manco un anno c'era chi cercava programmatori con "almeno 5 anni di esperienza con l'ambiente .Net e C#". :D
:D :D :D
Scusate visto che siamo in tema, sapete quanto viene pagato un neolaureato in Informatica?
:D :D :D
Scusate visto che siamo in tema, sapete quanto viene pagato un neolaureato in Informatica?
Dipende, se lavori come lustrascarpe non penso molto... :asd:
caxxate a parte... da quanto vedo in giro non molto di più di un perito informatico, siamo sui 1300-1600 euro lordi al mese (fonte: amici periti...). Ma non si può stimare con precisione, per natura l'informatico è un po' tuttofare e tendenzialmente nomade. Nel senso che se fai bene il tuo lavoro vieni pagato anche bene, il problema è trovare un posto di lavoro fisso :D
C'è gente che guadagna molti soldi come sistemista in banche e grandi aziende, altri che si danno all'imprenditoria e hanno fortuna (altri invece finiscono per deprimersi), altri che saltano da un contratto a progetto all'altro in attesa di un posto migliore, altri che riescono a entrare in piccole aziende di sviluppo software (tipicamente web services e sistemisti per piccole o medie imprese).
E' difficile fare una stima, diciamo che ci vuole parecchio spirito di intraprendenza per distinguersi.
AnonimoVeneziano
27-10-2011, 02:01
Alla fine si arriva sempre ai soliti discorsi, coi soliti slogan (perché questo sono) sulla "definizione" (è tra virgolette, perché non esiste) di programmatore "fico", "completo", le basi della programmazione, ecc. ecc.
Visto che si è parlato di "metro" sulla base della conoscenza di dettagli di più basso livello, i programmatori assembly farebbero invidiare Rocco Siffredi, e quelli in linguaggio macchina John Holmes. :sofico:
E tu su che basi puoi affermare il contrario? Tu il C lo conosci, non puoi sapere come sarebbe la tua vita da programmatore se non conoscessi il C.
Gira che ti rigira il C/C++ lo si incontra in un sacco di ambiti.
Spesso si trovano librerie che sono SOLO E UNICAMENTE in C/C++ e che non puoi fare a meno di usare per un motivo o per l'altro. Per usare queste librerie devi per forza sapere il C, anche se ti vuoi interfacciare ad esse attraverso un altro linguaggio (CPython, JNI o quello che vuoi).
iPhone e iPad (la moda del momento) si programmano tutti in C (Obj-C , ma è uguale al C con i messaggi, tant'è che si compila con gcc e clang) e anche MacOSX ovviamente.
Se vuoi anche solo lontanamente mettere le mani su qualcosa di livello un po' più basso della Web Application/Enterprise JavaBean app/interfaccina in C# PURTROPPO bisogna sapere il C/C++, perchè è tutto scritto con quel linguaggio.
Insomma, il C è ovunque perchè esiste da sempre e gira su tutto (essendo il primo compilatore creato per molte delle nuove piattaforme che nascono) e non si può negare che se si vuole essere un programmatore flessibile che può essere rigirato su diverse competenze (che è la mia definizione di "completo" e non "fighetto che va al bar a tirarsela che sa il C" ) il C bisogna saperlo più di ogni altro linguaggio.
E' ovvio poi che se uno programma Web Applications o Enterprise JavaBeans e farà quello per tutta la vita allora del C se ne può anche fregare, probabilmente non lo incontrerà mai sul suo cammino (ma anche qui non è detto ... CGI e librerie native possono sempre essere in agguato ...) , ciò nonostante non mi sento di chiamarlo un programmatore "completo" in quanto secondo me non ha tutto il bagaglio necessario per definirlo tale (bagaglio che include anche il Java, il python, il C# e un linguaggio funzionale a scelta).
Ciao
:D :D :D
Scusate visto che siamo in tema, sapete quanto viene pagato un neolaureato in Informatica?
Quando ho cominciato io nel 2006 (avevo lavorato anche prima nel settore, ma questo è stato il mio primo contratto "vero", diciamo) prendevo 990 euro netti in busta.
PS.
OT
Discorso vecchio, retorico e qualunquista, lo so, ma se pensate che una laurea sia il lasciapassare per uno stipendio d'oro siete vittime inconsapevoli di quel sistema che ha spinto i nostri genitori a volere che i propri figli studiassero perché "eh poi hai il pezzo di carta, e allora sì che avrai la strada spianata!", che non ha fatto altro che produrre inflazione nel settore con una base di laureati anche bravi all'università ma mediamente mediocri sul lavoro.
Nello specifico, non si fa questo lavoro per denaro, ma per passione. Punto.
Non pensate di prendere una laurea e di aspirare a grosse posizioni dirigenziali strapagate; in Italia quelle sono una percentuale minima rispetto alla massa e legate principalmente ad amicizie, raccomandazioni e posizioni politiche.
Statisticamente avete MOLTE più probabilità di arricchirvi facendo gli artigiani, i baristi o qualche altro lavoro indipendente di questo tipo: potete gonfiare i prezzi forti del cartello che vi copre le spalle ed evadere le tasse liberamente; e nel malaugurato caso vi vada male, potete sistemare la situazione fiscale con un condono, che ok "questo è l'ultimo che facciamo!", ma statisticamente viene decretato ogni 2 anni circa. E la statistica vince sulle buone intenzioni.
e-commerce84
27-10-2011, 08:34
Ritornando IT, i programmatori java sono molto richiesti si, ma guardate quante offerte non sono a progetto o a tempo determinato di pochi mesi... :rolleyes: Senza contare che poi molti domandano "esperienza di almeno X anni" perchè c'è veramente tanta gente che sa (o pensa di sapere) programmare in Java...
:D :D :D
Scusate visto che siamo in tema, sapete quanto viene pagato un neolaureato in Informatica?
1) Dipende cosa vuol dire lavorare a progetto: c'è progetto e progetto...un contratto a progetto in una multinazionale in genere significa: CONTRATTO A PROGETTO ILLEGALE perchè fanno sempre così: 800-1000 € al mese per lavorare full time (in sede o dal cliente) in modo subordinato
E già quì abbiamo 2 gravi illegalità (ma in itaGlia a quanto pare" così fan tutte"...schifo): 1) Il lavoro a progetto essendo a progetto ti dovrebbero dare un compito ed un limite temporale...se ci metti 2 giorni bella per te...se ci metti il limite massimo imposto cazzi tuoi...ma te lo dovresti poter gestire da solo. 2) Non dovrebbe essere un lavoro subordinato...più qualcosa stile libero professionista
Ed il lavoro a progetto in media dovrebbe essere pagato MOLTO DI PIU' rispetto ad un tempo indeterminato perchè non hai sicurezze per il futuro, malattie o ferie...
Aziende serie non si comportano così infatti
2) mmm io sono un laureando in Informatica (mi mancano 3 strafottuti maledettissimi esami), attualmente ho 2 lavori a progetto:
Uno come programmatore Java (web application) e prendo 800 € al mese...lavoro principalmente da casa con il PM che mi supervisiona e mi forma (perchè sono ancora molto junior)
L'altro è in ambito sicurezza informatica...niente di che...lavoro molto facile...devo monitorare che non arrivino attacchi informatici sui sistemi informativi di una grande azienda...diciamo che se non succede nulla possa farmi tranquillamente i cazzi miei (studiare, lavorare su altre cose)...contratto a progetto: 100 € nette a giornata...pagano tanto perchè ha orari strani e spesso notturni (il presidio è 24 ore su 24...)
Spero di esserti stato utile
e-commerce84
27-10-2011, 08:37
Comunque almeno quì a Roma non riscontro tutti sti problemi di "laureato con 5 anni di esperienza"
Io ho fatto uno stage semestrale (non retribuito), poi mandando i CV mi hanno richiamato 20 minuti dopo e fissato colloquio ed in media una volta ogni 3 giorni a distanza di un mese continuano a chiamarmi per fissare colloqui...un'azienda mi ha fatto addirittura:
"Senti ma te quanto prendi a progetto?" ed io: "1000 €" (anche se in realtà ne prendo 800) e loro: "E se noi te ne dessimo 1200 € li lasceresti per venire con noi?" Ho detto di no perchè ora mi trovo molto bene dove stò e mi stanno formando...
banryu79
27-10-2011, 09:02
Quando ho cominciato io nel 2006 (avevo lavorato anche prima nel settore, ma questo è stato il mio primo contratto "vero", diciamo) prendevo 990 euro netti in busta.
PS.
OT
Discorso vecchio, retorico e qualunquista, lo so, ma se pensate che una laurea sia il lasciapassare per uno stipendio d'oro siete vittime inconsapevoli di quel sistema che ha spinto i nostri genitori a volere che i propri figli studiassero perché ... snip ...
+1
Sad, but true.
Quindi puntate a fare quello che veramente vi piace, e se ancora non lo sapete cercate almeno di scoprirlo :D
starfred
27-10-2011, 09:12
Quoto quello che ha detto shinya, tuttavia tengo a precisare che è tutta roba Italiana, all'estero (e lo so per esperienza) un buon programmatore/tecnico/analista laureato prende quasi il doppio. Lì il pezzo di carta conta ma è ovvio che se non sai fare un tubo dopo 1 settimana ti licenziano in tronco dato che la meritocrazia è molto più forte che in Italia.
"Senti ma te quanto prendi a progetto?" ed io: "1000 €" (anche se in realtà ne prendo 800) e loro: "E se noi te ne dessimo 1200 € li lasceresti per venire con noi?"
E' classico, si chiama la legge del rimbalzo. Generalmente lo puoi fare ogni anno, 2 anni. E' l'unico modo in Italia per accrescere il tuo stipendio. Ovviamente l'incremento non sarà lineare però ti permette di arrivare a buoni stipendi.
Ribadisco che comunque è sempre "roba" all'italiana...
p.s. Ma non stiamo andando troppo OT?
e-commerce84
27-10-2011, 09:55
Quoto quello che ha detto shinya, tuttavia tengo a precisare che è tutta roba Italiana, all'estero (e lo so per esperienza) un buon programmatore/tecnico/analista laureato prende quasi il doppio. Lì il pezzo di carta conta ma è ovvio che se non sai fare un tubo dopo 1 settimana ti licenziano in tronco dato che la meritocrazia è molto più forte che in Italia.
E' classico, si chiama la legge del rimbalzo. Generalmente lo puoi fare ogni anno, 2 anni. E' l'unico modo in Italia per accrescere il tuo stipendio. Ovviamente l'incremento non sarà lineare però ti permette di arrivare a buoni stipendi.
Ribadisco che comunque è sempre "roba" all'italiana...
p.s. Ma non stiamo andando troppo OT?
Quello che volevo dire era che non è del tutto vero che cercano sempre il classico "neolaureato con 5 anni di esperienza"
Nel caso specifico io:
1) Non sono ancora laureato (mi mancano 3 esami)
2) Mi prenderò una cazzo di triennale a 28 anni (un tantinello fuori corso)
3) Non ho grande esperienza: uno stage in ambito Java EE + un anno presso un SOC (sicurezza informatica, non c'entra nulla con il ramo sviluppo) + esperienze personali (realizzazioni siti internet, qualcosina di php, etc)
4) Non sono ancora considerabile un programmatore autonomo
Da quello che leggo sui forum uno come me dovrebbe essere praticamente morto nel mondo del lavoro informatico...eppure ricevo chiamate su chiamate, mi hanno assunto subito come programmatore Jave EE proponendomi 800 € per 3 mesi (e già il primo mese è andato positivamente), 1000 per i successivi 3 mesi e 1200 se gli rimango da Marzo in poi (cosa in forse perchè vorrei seguire il prossimo semestre gli ultimi corsi e chiudere con l'uni)
Non sono un genio...mi piace e mi dò da fare...a 27 anni mi avevano dato per spacciato tante persone sui vari forum...eppure...sto mese alzo quasi 2000 € tra un lavoro e l'altro...
Ad un ragazzo che inizia adesso (come me perchè di fatto ho appena iniziato) consiglierei di non essere troppo negativo e mandare CV in giro, sicuramente qualcuno che risponde lo trovate...se avete esperienza 0 magari fate uno stage (possibilmente con un minimo di rimborso spese).
Se la prima esperienza di lavoro va male per qualche motivo riprovate altrove (al mio stage ho imparato molto ma mi hanno spesso alsciato completamente solo, non mi pagavano niente, avevano pretese, mi hanno proposto uno stage bis a 400 € al mese dopo avergli laorato 6 mesi gratis e mi rompevano il cazzo perchè ho i capelli lunghi...è stato frustrante sotto molti aspetti)
Intanto uno fà esperienza (e magari anche soldi)...se non va bene nella prima azienda, provate in un'altra, se va male...altra ancora...sticazzi...intanto è tutta esperienza e uno capisce anche cosa vuole fare...
Per ora dove stò mi trovo molto bene...ambiente molto diverso da quello della multinazionale dove stavo...il capo oltre a formarmi spiegandomi le cose al telefono e via mail mi motiva e quando faccio una cosa fatta bene me lo dice...non bisgona scoraggiarsi alle prime difficoltà o se le prime esperienza vanno male per qualche motivo...come detto...non mi sembra ci sia carenza di lavoro per uno come me...figuriamoci per uno che si è laureato in tempo e si ritrova nella mia condizione a 23-24 anni...ancora meglio per lui...su su mandate CV e non fatevi pippe mentali :)
e purtroppo non sbagli :(
per questo mi domandavo perchè insistono molto sul c, linguaggio ormai soppiantato...
dipende se il tuo concetto di sistema programmabile si ferma a tastiera +case + mouse + monitor
il è il linguaggio più usato nell'elettronica digitale (MCU e compagnia varia) e solo negli ultimi anni stà venendo soppiantato dal c++:D
Relativamente ai contratti, mi sono laureato in Ing. Informatica a fine Aprile alla triennale, lavoro da metà Giugno e ho un contratto a progetto (come programmatore C nell'ambito aero-spaziale) fino a Dicembre per circa 1400€ lorde mensili.
Comunque passati i 6 mesi di contratto mi hanno detto che per il successivo mi aumenteranno la paga.
Tanto per la cronaca, se uno si fa due conti la paga netta oraria è ancora bassa, ma di certo non mi posso lamentare, essendo il mio primo lavoro.
Tra l'altro il mio responsabile ha candidamente ammesso che si fa fatica a trovare programmatori C...
Ad ogni modo l'orrendo C++ purtroppo può essere un male necessario. Java dal punto di vista sintattico è decisamente una spanna sopra.
Comunque personalmente posso dire che l'unica vera mancanza di C rispetto a C++ è la gestione delle eccezioni. La mancanza del paradigma OO non si fa sentire più di tanto, se il progetto è pensato bene (IMHO in alcuni casi semplifica le cose, non l'avrei mai detto sinceramente).
banryu79
27-10-2011, 12:02
La mancanza del paradigma OO non si fa sentire più di tanto, se il progetto è pensato bene (IMHO in alcuni casi semplifica le cose, non l'avrei mai detto sinceramente).
Questa è un'osservazione interessante, ma non necessariamente una sorpresa.
Nel senso che anche il C offre un supporto alla modularizzazione, e il paradigma OO non è la panacea a tutti i mali (specie quando viene utilizzato malamente)
E' che è di moda (forse comincia un po' a passare, non saprei).
Questa è un'osservazione interessante, ma non necessariamente una sorpresa.
Nel senso che anche il C offre un supporto alla modularizzazione, e il paradigma OO non è la panacea a tutti i mali (specie quando viene utilizzato malamente)
E' che è di moda (forse comincia un po' a passare, non saprei).
vabbè non esageriamo
l'OO è comodo per parecchie cose, ma purché siano applicazioni abbastanza complesse , certo che se devi fare un programmino basilare su un micro infimo che alla fine è una quindicina di stati macchina l'OO non serve
cdimauro
27-10-2011, 13:33
Infatti la trovo comodissima quando c'è da modellare certe classi di problemi che fanno uso di "gerarchie" di dati. Il che significa spesso.
@banryu79: il C che supporta la modularizzazione proprio no, eh! :cry:
E tu su che basi puoi affermare il contrario?
Il contrario di cosa? L'onore della prova sta a chi propone nuove definizioni. :read:
Tu il C lo conosci, non puoi sapere come sarebbe la tua vita da programmatore se non conoscessi il C.
Mi pare ovvio. :p Ma se non ci fosse stato il C, ci sarebbe stato qualche altro linguaggio che ne avrebbe preso il posto. D'altra i s.o. si realizzavano lo stesso anche prima. :read:
Gira che ti rigira il C/C++ lo si incontra in un sacco di ambiti.
Spesso si trovano librerie che sono SOLO E UNICAMENTE in C/C++ e che non puoi fare a meno di usare per un motivo o per l'altro. Per usare queste librerie devi per forza sapere il C, anche se ti vuoi interfacciare ad esse attraverso un altro linguaggio (CPython, JNI o quello che vuoi).
In questo caso è sufficiente conoscere quel minimo per fruire delle API esposte.
iPhone e iPad (la moda del momento) si programmano tutti in C (Obj-C , ma è uguale al C con i messaggi, tant'è che si compila con gcc e clang) e anche MacOSX ovviamente.
E purtroppo devi pure gestirti a manina la memoria. Roba da preistoria informatica...
Se vuoi anche solo lontanamente mettere le mani su qualcosa di livello un po' più basso della Web Application/Enterprise JavaBean app/interfaccina in C# PURTROPPO bisogna sapere il C/C++, perchè è tutto scritto con quel linguaggio.
SE serve, lo si fa, per quel minimo che basta per andare avanti.
Insomma, il C è ovunque perchè esiste da sempre e gira su tutto (essendo il primo compilatore creato per molte delle nuove piattaforme che nascono) e non si può negare che se si vuole essere un programmatore flessibile che può essere rigirato su diverse competenze (che è la mia definizione di "completo" e non "fighetto che va al bar a tirarsela che sa il C" ) il C bisogna saperlo più di ogni altro linguaggio.
Io ho imparato quello che mi serve principalmente quando ne ho avuto bisogno.
Anche per il C è stata la stessa cosa: esami universitari ->imparo il C.
Fino ad allora e per parecchi anni fra BASIC, assembly, linguaggio macchina, (Turbo) Pascal e Modula-2 non ne avevo avuto bisogno, e non mi è MAI mancato.
E' ovvio poi che se uno programma Web Applications o Enterprise JavaBeans e farà quello per tutta la vita allora del C se ne può anche fregare, probabilmente non lo incontrerà mai sul suo cammino (ma anche qui non è detto ... CGI e librerie native possono sempre essere in agguato ...) ,
Appunto. Come vedi, se ne può fare benissimo a meno.
ciò nonostante non mi sento di chiamarlo un programmatore "completo" in quanto secondo me non ha tutto il bagaglio necessario per definirlo tale (bagaglio che include anche il Java, il python, il C# e un linguaggio funzionale a scelta).
Ciao
Lo sai che la definizione che poni è ampiamente opinabile. Per quanto MI riguarda un programmatore deve: saper risolvere problemi.
La "completezza", a MIO avviso, sta nell'avere sviluppato la giusta mentalità per essere in grado di farlo qualunque cosa ti presentino davanti.
insane74
27-10-2011, 13:47
...Per quanto MI riguarda un programmatore deve: saper risolvere problemi.
La "completezza", a MIO avviso, sta nell'avere sviluppato la giusta mentalità per essere in grado di farlo qualunque cosa ti presentino davanti.
quoto.
dopo 12 anni di lavoro, dopo aver visto laureati, autodidatti, espertoni, contaballe, l'unica cosa che conta davvero è sapere cosa fare quando piove merd@.
e scusate il francesismo.
c, java, python, bla bla.
tutti vanno bene e vanno male. l'importante è sapere come usare gli strumenti che si hanno a disposizione per raggiungere l'obiettivo.
perciò meglio avere una mente aperta, farsi il mazzo sui "fondamentali", e prepararsi ad imparare cose nuove (spesso direttamente con il "training on job").
vabbè non esageriamo
l'OO è comodo per parecchie cose, ma purché siano applicazioni abbastanza complesse , certo che se devi fare un programmino basilare su un micro infimo che alla fine è una quindicina di stati macchina l'OO non serve
Beh dove lavoro io ci hanno fatto un intero simulatore (per Columbus (http://en.wikipedia.org/wiki/Columbus_%28ISS_module%29)).
Ma è pure vero che stiamo lavorando su degli SPARC 500mhz :asd:
Il passaggio all'OO sarebbe sicuramente un passo avanti, però dubito che codice C++ sarebbe più pulito.
Sinceramente la sua sintassi non riesco a digerirla.
E purtroppo devi pure gestirti a manina la memoria. Roba da preistoria informatica...
Francamente visti i risultati su android, non so se considerarla una cosa negativa o positiva.
Non c'e' niente di peggio di un device embedded che ogni tanto rallenta o pausa perche' deve fare garbage collection (o killare processi...) perche' il programmatore ha deciso che tanto la gestione della memoria e' automatica e non occorre pensarci. Il mio telefono e' abbastanza scrauso, ma (a parte il browser) non sto parlando di applicazioni chissa' che complicate...
La "completezza", a MIO avviso, sta nell'avere sviluppato la giusta mentalità per essere in grado di farlo qualunque cosa ti presentino davanti.
Non basta la mentalita' per fare le cose, ci vogliono anche gli strumenti. Se uno non ha bisogno di lavorare a basso livello buon per lui, ma se ne ha bisogno un po' di conoscenza di C e dei vari ammenicoli (linker, ad esempio) e' buona cosa averla.
AnonimoVeneziano
27-10-2011, 15:51
Mi pare ovvio. :p Ma se non ci fosse stato il C, ci sarebbe stato qualche altro linguaggio che ne avrebbe preso il posto. D'altra i s.o. si realizzavano lo stesso anche prima. :read:
Certo, ci sarebbe stato un altro linguaggio, ma quel linguaggio non sarebbe stato il python, il java o un qualsiasi altro linguaggio di alto livello. Il C esiste per coprire una determinata posizione nel campo dei linguaggi, che è la programmazione di basso livello e di sistema, dove il controllo è importante...etc. Al momento non è sostituibile con nessun'altro linguaggio nel suo campo e se venisse sostituito probabilmente il suo sostituto non sarebbe molto diverso come caratteristiche dal C/C++ attuale ...
Comunque i SO si facevano anche prima ... ma se tutti i SO adesso sono scritti in C o una sua variante una ragione ci sarà e dubito che sia solo "marketing".
In questo caso è sufficiente conoscere quel minimo per fruire delle API esposte.
Se lo dici tu ... per usare JNI o CPython non credo basti conoscere "quel minimo" ... sono API che si portano dietro una certa complessità.
E purtroppo devi pure gestirti a manina la memoria. Roba da preistoria informatica...
A parte il fatto che in Objective-C con il runtime di Macosx c'è il garbage collector, mentre su iOS c'è l'ARC (Automatic Reference Counting) ... quindi non è che sei proprio lasciato a te stesso per gestire la memoria ...
Su un dispositivo portatile secondo me comunque la possibilità di gestire l'allocazione della memoria manualmente è un plus, almeno per ora. E poi anche con la garbage collection non sei al sicuro al 100% da memory leak, devi comunque fare attenzione ai tuoi oggetti.
SE serve, lo si fa, per quel minimo che basta per andare avanti.
Io ho visto tanta gente che conosce il C++ iniziare ad usare il Javascript senza neanche leggersi una guida, semplicemente guardandosi un paio di esempi già fatti e rielaborarli ed erano anche in grado . Ho visto invece gente fallire miseramente cercando di di imparare il C velocemente non conoscendolo , partendo da basi come python, java e javascript.
La gestione della memoria in C e tutte le peculiarità del linguaggio purtroppo non si possono imparare alla stessa velocità.
Io ho imparato quello che mi serve principalmente quando ne ho avuto bisogno.
Anche per il C è stata la stessa cosa: esami universitari ->imparo il C.
Fino ad allora e per parecchi anni fra BASIC, assembly, linguaggio macchina, (Turbo) Pascal e Modula-2 non ne avevo avuto bisogno, e non mi è MAI mancato.
Lungi da me l'essere contro a questo modo di vedere le cose ... le cose si imparano quando si ha necessità.
Diciamo che però se uno vuole un consiglio su che linguaggio impararsi per il futuro nel mondo del lavoro (che è pressapoco quello che è stato chiesto in questo thread), sconsigliargli di impararsi il C non mi sembra una grande idea ...
Appunto. Come vedi, se ne può fare benissimo a meno.
Ma chi ha mai detto il contrario ... se uno però vuole farsi un bagaglio di conoscenze il C è un buon candidato, perché le probabilità che lo si incontri sono alte.
Lo sai che la definizione che poni è ampiamente opinabile. Per quanto MI riguarda un programmatore deve: saper risolvere problemi.
In un thread dove uno chiede per essere flessibile nel mercato che linguaggi deve conoscere io gli rispondo che allora OGGI (e non 30 anni fa) dovrebbe concentrarsi su Java, C#, python e C++. FINE. La mia definizione di completezza era per la situazione del mercato attuale, non come definizione assoluta di programmatore, che è un concetto che non oso minimamente toccare. E' troppo complesso e sinceramente non me ne frega una fava.
Forse non sono stato molto esplicito nel mio primo post, ma sinceramente quando ho scritto il post volevo solo trasmettere l'idea che nel bagaglio di un programmatore il C è sempre buona cosa averlo e non mettermi a filosofeggiare.
tuttavia tengo a precisare che è tutta roba Italiana, all'estero (e lo so per esperienza) un buon programmatore/tecnico/analista laureato prende quasi il doppio. Lì il pezzo di carta conta ma è ovvio che se non sai fare un tubo dopo 1 settimana ti licenziano in tronco dato che la meritocrazia è molto più forte che in Italia.
Una volta una persona che lavora in una grande azienda mi ha detto che spesso nelle multinazionali la meritocrazia "non conta", ovvero per far carriera devi comunque avere qualche politico di turno come amico.
Secondo voi è vero?
cdimauro
27-10-2011, 17:24
Francamente visti i risultati su android, non so se considerarla una cosa negativa o positiva.
Non c'e' niente di peggio di un device embedded che ogni tanto rallenta o pausa perche' deve fare garbage collection (o killare processi...) perche' il programmatore ha deciso che tanto la gestione della memoria e' automatica e non occorre pensarci. Il mio telefono e' abbastanza scrauso, ma (a parte il browser) non sto parlando di applicazioni chissa' che complicate...
Mai capitato finora con Windows Phone 7, che dovrebbe essere più o meno nelle stesse condizioni (sviluppo in C# e il codice è strettamente managed & GCed).
Poi Android non è che brilli in generale. :asd:
Non basta la mentalita' per fare le cose, ci vogliono anche gli strumenti. Se uno non ha bisogno di lavorare a basso livello buon per lui, ma se ne ha bisogno un po' di conoscenza di C e dei vari ammenicoli (linker, ad esempio) e' buona cosa averla.
Se sai che devi lavorare a basso livello, ti attrezzi ovviamente. Ma questo vale per tutte le cose.
Certo, ci sarebbe stato un altro linguaggio, ma quel linguaggio non sarebbe stato il python, il java o un qualsiasi altro linguaggio di alto livello. Il C esiste per coprire una determinata posizione nel campo dei linguaggi, che è la programmazione di basso livello e di sistema, dove il controllo è importante...etc. Al momento non è sostituibile con nessun'altro linguaggio nel suo campo e se venisse sostituito probabilmente il suo sostituto non sarebbe molto diverso come caratteristiche dal C/C++ attuale ...
Comunque i SO si facevano anche prima ... ma se tutti i SO adesso sono scritti in C o una sua variante una ragione ci sarà e dubito che sia solo "marketing".
Penso proprio di sì, invece, perché il Modula-2 è stato usato per sviluppare s.o., come pure i suoi successori (Modula-3 e Oberon), che non hanno nulla da invidiare a C/C++ a riguardo.
E, se non ricordo male, le prime versioni di MacOS erano scritte in ObjectPascal.
Il C s'è diffuso grazie a Unix, e quest'ultimo ha attecchito nelle università, e da lì ha invaso il mondo.
Se lo dici tu ... per usare JNI o CPython non credo basti conoscere "quel minimo" ... sono API che si portano dietro una certa complessità.
Se vuoi scrivere funzioni richiamabili da Java tramite JNI hai bisogno di conoscere l'ABI JNI, più che il C. Esattamente come per interfacciarti con un s.o. e le sue API.
Questo perché quelle funzioni le puoi scrivere in qualunque linguaggio. L'importante è che, appunto, si rispettino le convenzioni (ABI).
Riguardo a CPython la situazione è simile, e infatti esistono wrapper per altri linguaggi che possono anche nascondere quasi del tutto alcune funzionalità di basso livello (ad esempio con C++ e BOOST si programma in maniera molto diversa rispetto a quanto faresti in C).
Non è, comunque, esclusiva di C e C++, visto che, tanto per fare un esempio a me caro, con Python for Delphi puoi decidere di "embeddare" Python in Delphi, oppure di estendere Python scrivendo codice in Delphi. E Delphi mi risulta essere LEGGERMENTE diverso da C & C++ (per fortuna :D).
A parte il fatto che in Objective-C con il runtime di Macosx c'è il garbage collector, mentre su iOS c'è l'ARC (Automatic Reference Counting) ... quindi non è che sei proprio lasciato a te stesso per gestire la memoria ...
Su OS X nulla da dire, infatti. E' su iOS che devi gestirti il rilascio delle risorse in maniera corretta, pena memory leak dietro l'angolo.
Su un dispositivo portatile secondo me comunque la possibilità di gestire l'allocazione della memoria manualmente è un plus, almeno per ora.
Su questo ho risposto a marco.r.
E poi anche con la garbage collection non sei al sicuro al 100% da memory leak, devi comunque fare attenzione ai tuoi oggetti.
Non è che siamo in presenza di memory leak veri e propri. Capita con strutture complesse che alcuni oggetti possano non essere rilasciati subito, ma dopo qualche "run" del GC in genere il problema è risolto.
Alcune volte m'è capitato, ed è andata così. Non mi è mai successo, invece, che un oggetto non sia stato distrutto dopo qualche run del GC.
Io ho visto tanta gente che conosce il C++ iniziare ad usare il Javascript senza neanche leggersi una guida, semplicemente guardandosi un paio di esempi già fatti e rielaborarli ed erano anche in grado . Ho visto invece gente fallire miseramente cercando di di imparare il C velocemente non conoscendolo , partendo da basi come python, java e javascript.
La gestione della memoria in C e tutte le peculiarità del linguaggio purtroppo non si possono imparare alla stessa velocità.
Dipende anche dalla persona.
Comunque linguaggi molto complessi come il C++ richiedono parecchio tempo per essere assimilati e per sviluppare la giusta mentalità. Ed è il motivo per cui il C++ non ha mai soppiantato del tutto il C: lo scotto da pagare è molto elevato.
E' chiaro che uno che s'è smazzato per bene il C++ avrà vita più facile per linguaggi meno complessi, ma perché ha già perso parecchio tempo della sua vita.
Tempo che non è detto che sia utile. Dipende, al solito, dal campo in cui si opererà.
Lungi da me l'essere contro a questo modo di vedere le cose ... le cose si imparano quando si ha necessità.
Diciamo che però se uno vuole un consiglio su che linguaggio impararsi per il futuro nel mondo del lavoro (che è pressapoco quello che è stato chiesto in questo thread), sconsigliargli di impararsi il C non mi sembra una grande idea ...
Beh, se vai a vedere le offerte di lavoro, non è che quelle relative al C abbondino. I linguaggi che vanno per la maggiore al momento sono C# e Java. Di certo non il C, se non in specifici ambiti d'utilizzo.
Ma chi ha mai detto il contrario ... se uno però vuole farsi un bagaglio di conoscenze il C è un buon candidato, perché le probabilità che lo si incontri sono alte.
Come detto, per lavoro penso che non sia così facile, invece.
Se smanetti, è molto più probabile.
In un thread dove uno chiede per essere flessibile nel mercato che linguaggi deve conoscere io gli rispondo che allora OGGI (e non 30 anni fa) dovrebbe concentrarsi su Java, C#, python e C++. FINE. La mia definizione di completezza era per la situazione del mercato attuale, non come definizione assoluta di programmatore, che è un concetto che non oso minimamente toccare. E' troppo complesso e sinceramente non me ne frega una fava.
Forse non sono stato molto esplicito nel mio primo post, ma sinceramente quando ho scritto il post volevo solo trasmettere l'idea che nel bagaglio di un programmatore il C è sempre buona cosa averlo e non mettermi a filosofeggiare.
Il C non fa parte dei 4 linguaggi che hai citato. Ci sarà qualche motivo per questo... ;)
Il passaggio all'OO sarebbe sicuramente un passo avanti, però dubito che codice C++ sarebbe più pulito.
Sinceramente la sua sintassi non riesco a digerirla.
Penso di comprendere cosa intendi.
Il "peccato originale" di C++ è che include buona parte della sintassi e della semantica del C e poi ci ha aggiunto sopra gli stream, le classi, i template e varie altre cosucce con preferenze semantiche, sintattiche e stilistiche differenti. :ncomment:
Io ancora adesso provo repulsione per la sintassi dei template. :Puke:
cdimauro
27-10-2011, 18:45
Concordo. Trovo veramente orribile (e criptica) la sintassi del C++, specialmente a causa dei template (e purtroppo BOOST è per lo più costituita da template :muro:).
Concordo. Trovo veramente orribile (e criptica) la sintassi del C++, specialmente a causa dei template (e purtroppo BOOST è per lo più costituita da template :muro:).
io la adoro:)
ma ciò non toglie che a volte sia (quasi) incomprensibile
cdimauro
27-10-2011, 19:12
Non metto in dubbio le funzionalità, ma preferirei leggere frasi "in inglese" piuttosto che cercare di decodificare un ammasso di simboli. :stordita:
Non metto in dubbio le funzionalità, ma preferirei leggere frasi "in inglese" piuttosto che cercare di decodificare un ammasso di simboli. :stordita:
gusti
io preferisco un serie di acronimi e simboli piuttosto che dover scrivere mezza riga per ogni banale operazione alla fine ho una memoria molto schematica
poi sono gusti :D
Quanto astio contro il C... affermare che il C non è poi così importante dicendo che "se non ci fosse stato il C, ci sarebbe stato un altro linguaggio" lascia il tempo che trova... un po' come dire "se non ci fosse stata l'acqua sulla Terra, forse la vita sarebbe nata dal silicio" (una sparata come altre che possono inventarmi sul momento) :asd:
Cmq se il C è tra i primissimi linguaggi per diffusione un motivo ci sarà pure... probabilmente, anzi, quasi sicuramente, non viene usato nelle software house di piccola-media dimensione (in italia molto diffuse), ma solo perchè non è necessario in quell'ambito (che nella stragrande maggioranza dei casi è web design, piccole applicazioni, data server, app per smartphone...). In moltissimi altri ambiti il C è molto più adatto, per esempio sviluppo di firmware o programmazione di sistemi integrati, oppure nello sviluppo di librerie ad alte performance (ma in genere la stragrande maggioranza delle librerie di altri linguaggi è compilata in C). Oppure ancora nello sviluppo di algoritmi e via dicendo...
Più volte ho letto "l'importante è saper risolvere i problemi"... beh ma certo!!! sennò puoi anche andare a zappare la terra. Puoi conoscere il C, il C++, il Java, il python, tutti i dialetti dei vari linguaggi di programmazione ma se non sai risolvere un banale problema è inutile.
Su questo penso che nessuno abbia da ridire, tuttavia, oltre a saper risolvere un problema, bisogna saperlo risolvere bene e in relazione agli ambiti di utilizzo, anche in modo "ottimale". Se per esempio devo creare un plugin audio che mi applica un filtro di chorus in real-time o qualsiasi altra boiata (magari su un sistema embedded che ha potenza di calcolo limitata), non vado ad utilizzare linguaggi ad altissimo livello...
Cmq l'autore della discussione chiedeva quale fosse il linguaggio più utilizzato dalle aziende (italiane suppongo). Secondo me il primo è il java, seguito dal tipico gruppo di script e linguaggi per il web e piccole app (php, NET, ASP, C#), poi C e C++ (soprattutto come programmatori di firmware e cnc).
E' comunque sufficiente fare delle ricerche nelle bacheche di lavoro online per farsi una idea di massima
tecno789
27-10-2011, 19:48
Più volte ho letto "l'importante è saper risolvere i problemi"... beh ma certo!!! sennò puoi anche andare a zappare la terra. Puoi conoscere il C, il C++, il Java, il python, tutti i dialetti dei vari linguaggi di programmazione ma se non sai risolvere un banale problema è inutile.
Su questo penso che nessuno abbia da ridire, tuttavia, oltre a saper risolvere un problema, bisogna saperlo risolvere bene e in relazione agli ambiti di utilizzo, anche in modo "ottimale". Se per esempio devo creare un plugin audio che mi applica un filtro di chorus in real-time o qualsiasi altra boiata (magari su un sistema embedded che ha potenza di calcolo limitata), non vado ad utilizzare linguaggi ad altissimo livello...
si concordo, infatti il difficile per i programmatori è elaborare l'algoritmo ideale per far funzionare un programma alla massima efficienza invece imparare la sintassi solamente lo possono fare tutti.
comunque uno dei primissimi usati nelle aziende è proprio java, ma l'autore del thread potrebbe anche costatarlo facendo una breve ricerca online e sui siti che "offrono" lavoro.
Non metto in dubbio le funzionalità, ma preferirei leggere frasi "in inglese" piuttosto che cercare di decodificare un ammasso di simboli. :stordita:
E che te lo ordina il dottore di usare Boost? :asd:
Il bello del C++ è che te lo giri come vuoi, fai conto che nei miei giochi non ho NESSUNA classe template eccetto la stl. E no, non mi privo di nessun pattern utile, e la mia vita è molto più piacevole :D
gusti
io preferisco un serie di acronimi e simboli piuttosto che dover scrivere mezza riga per ogni banale operazione alla fine ho una memoria molto schematica
Il linguaggio dovrebbe idealmente permetterti di esprimere l'algoritmo nel modo piu' vicino possibile alla "lingua" del modello che stai implementando.
Che sembri inglese scritto ha una importanza relativa, soprattutto se quello che vuoi esprimere non e' inglese.
Per cui tanto meglio poter scrivere x =+ k*A*y piuttosto che x = A.times(k).times(y).plus(x), soprattutto quando mi e' possible trasformare la prima senza costo a runtime in una singola chiamata alle librerie tipo blas e analoghi.
Mai capitato finora con Windows Phone 7, che dovrebbe essere più o meno nelle stesse condizioni (sviluppo in C# e il codice è strettamente managed & GCed).
Poi Android non è che brilli in generale. :asd:
Non ho esperienza Windows Phone 7, magari li' la situazione e' piu' rosea, di certo mi accorgo sotto windows quando mi propinano un programma .NET (e quelli Java... beh, non spariamo sulla croce rossa) dalla sola reattivita' del programma. :eh:
Penso proprio di sì, invece, perché il Modula-2 è stato usato per sviluppare s.o., come pure i suoi successori (Modula-3 e Oberon), che non hanno nulla da invidiare a C/C++ a riguardo.
E, se non ricordo male, le prime versioni di MacOS erano scritte in ObjectPascal.
Chiaro che non esistono solo C e C++, ma se prima dici che C non occorre impararlo perche' per a parte in alcuni contesti non si usa, poi non tirarmi fuori Modula-2, Oberon e ObjectPascal :D
Beh, se vai a vedere le offerte di lavoro, non è che quelle relative al C abbondino. I linguaggi che vanno per la maggiore al momento sono C# e Java. Di certo non il C, se non in specifici ambiti d'utilizzo.
Francamente, penso che sia abbastanza irrilevante, e ne approfitto per riagganciarmi al discorso iniziale dell'autore.
Non ha molto senso star li' a chiedere quali sono i linguaggi piu' richiesti per poi decidere che studiare. Innanzi tutto perche' al piu' bisognerebbe tenere conto non della sola offerta, ma del rapporto offerta/domanda. Ma soprattutto perche' non tiene conto della diversa qualita' che ci possono essere tra i vari lavori.
Vi immaginate se invece di programmazione l'autore del thread fosse interessato alle auto ? Avrebbe aperto un thread nella sezione motori e chiesto "Mi piacerebbe imparare a guidare. Quali sono i veicoli piu' usati nel mondo del lavoro?" e tutti giu' a consigliare di farsi la patente C per guidare uno degli n-mila camion che girano per le strade nostrane, discussioni del fatto che ormai non e' piu' necessario sapere usare il cambio manuale, e che il parcheggio in retro ormai te lo fa la macchina etc., salvo che magari in realta' all'autore piacerebbe di piu' partecipare alle corse , e converrebbe consigliargli di prendere la (lunga e costosa) via del kart :p
cdimauro
28-10-2011, 05:00
gusti
io preferisco un serie di acronimi e simboli piuttosto che dover scrivere mezza riga per ogni banale operazione alla fine ho una memoria molto schematica
poi sono gusti :D
Vabbé, mica sto chiedendo di programmare in Cobol, eh! :asd:
Quanto astio contro il C... affermare che il C non è poi così importante dicendo che "se non ci fosse stato il C, ci sarebbe stato un altro linguaggio" lascia il tempo che trova... un po' come dire "se non ci fosse stata l'acqua sulla Terra, forse la vita sarebbe nata dal silicio" (una sparata come altre che possono inventarmi sul momento) :asd:
Non stiamo discutendo di "unità carbonio" o "unità silicio" (questa la capiranno in pochi e, soprattutto, di una certa età :D).
Il dominio è sempre lo stesso: programmazione di sistema. Esisteva e si faceva già senza il C, come già detto. Lo stesso C è figlio del BCPL, già usato allo scopo (e gli amighisti lo ricorderanno perché fu usato per scrivere AmigaDOS).
Cmq se il C è tra i primissimi linguaggi per diffusione un motivo ci sarà pure... probabilmente, anzi, quasi sicuramente, non viene usato nelle software house di piccola-media dimensione (in italia molto diffuse), ma solo perchè non è necessario in quell'ambito (che nella stragrande maggioranza dei casi è web design, piccole applicazioni, data server, app per smartphone...).
Se il C ha perso da tempo la corona di linguaggio più diffuso, più di un motivo ci sarà. Basti andare a vedere chi ne ha preso il posto e qual è la tendenza, e le conclusioni arrivano da sole...
In moltissimi altri ambiti il C è molto più adatto, per esempio sviluppo di firmware o programmazione di sistemi integrati, oppure nello sviluppo di librerie ad alte performance (ma in genere la stragrande maggioranza delle librerie di altri linguaggi è compilata in C).
Chi l'ha negato questo?
Oppure ancora nello sviluppo di algoritmi e via dicendo...
In quest'ambito è di gran lunga meglio affidarsi a linguaggi che facilitano la prototipazione. Quindi roba MOLTO lontana dal C.
Più volte ho letto "l'importante è saper risolvere i problemi"... beh ma certo!!! sennò puoi anche andare a zappare la terra. Puoi conoscere il C, il C++, il Java, il python, tutti i dialetti dei vari linguaggi di programmazione ma se non sai risolvere un banale problema è inutile.
Su questo penso che nessuno abbia da ridire, tuttavia, oltre a saper risolvere un problema, bisogna saperlo risolvere bene e in relazione agli ambiti di utilizzo, anche in modo "ottimale".
Anche ottimale proprio no.
In generale la soluzione deve rappresentare il "miglior compromesso" per quel particolare problema, perché, ad esempio, il tempo di sviluppo non è illimitato.
Se per esempio devo creare un plugin audio che mi applica un filtro di chorus in real-time o qualsiasi altra boiata (magari su un sistema embedded che ha potenza di calcolo limitata), non vado ad utilizzare linguaggi ad altissimo livello...
Dipende tutto dai vincoli del problema. Se realizzo l'algoritmo in Python e vedo che è sufficientemente veloce per come e dove verrà usato, lo lascio così.
Cmq l'autore della discussione chiedeva quale fosse il linguaggio più utilizzato dalle aziende (italiane suppongo). Secondo me il primo è il java, seguito dal tipico gruppo di script e linguaggi per il web e piccole app (php, NET, ASP, C#), poi C e C++ (soprattutto come programmatori di firmware e cnc).
E' comunque sufficiente fare delle ricerche nelle bacheche di lavoro online per farsi una idea di massima
Concordo. Un po' alla volta sta prendendo piede anche Python, ma più che altro per "osmosi" lavorando con l'estero, dove comincia a essere diffuso e richiesto.
si concordo, infatti il difficile per i programmatori è elaborare l'algoritmo ideale per far funzionare un programma alla massima efficienza invece imparare la sintassi solamente lo possono fare tutti.
Assolutamente in disaccordo. L'obiettivo di un programmatore non è la massima efficienza, ma il miglior compromesso in base ai requisiti del problema.
La massima efficienza è il classico vessillo di chi soffre di ansia da prestazione.
comunque uno dei primissimi usati nelle aziende è proprio java, ma l'autore del thread potrebbe anche costatarlo facendo una breve ricerca online e sui siti che "offrono" lavoro.
In Italia sì, sicuramente. Anche se C# è in continua avanzata.
E che te lo ordina il dottore di usare Boost? :asd:
Purtroppo è, di fatto, la libreria standard del C++. Ci trovi tutto e tutti la usano. Se non ricordo male era stata candidata a essere integrata nel nuovo standard C++0x, ma non mi pare di aver letto altre notizie in merito.
Il bello del C++ è che te lo giri come vuoi, fai conto che nei miei giochi non ho NESSUNA classe template eccetto la stl. E no, non mi privo di nessun pattern utile, e la mia vita è molto più piacevole :D
Mah. La STL non mi piace proprio. Trovo discutibili certe scelte che sono state fatte.
Il linguaggio dovrebbe idealmente permetterti di esprimere l'algoritmo nel modo piu' vicino possibile alla "lingua" del modello che stai implementando.
Che sembri inglese scritto ha una importanza relativa, soprattutto se quello che vuoi esprimere non e' inglese.
Per cui tanto meglio poter scrivere x =+ k*A*y piuttosto che x = A.times(k).times(y).plus(x), soprattutto quando mi e' possible trasformare la prima senza costo a runtime in una singola chiamata alle librerie tipo blas e analoghi.
Su questo concordo, e devo dire che l'operator overloading, se usato come si deve, fa un ottimo lavoro.
Se usato male, non vorrei essere nei panni di chi deve sbrogliare la matassa. :asd:
Non ho esperienza Windows Phone 7, magari li' la situazione e' piu' rosea, di certo mi accorgo sotto windows quando mi propinano un programma .NET (e quelli Java... beh, non spariamo sulla croce rossa) dalla sola reattivita' del programma. :eh:
Hum. Ti dirò: sul mio sub-notebook con AMD C50 trovo qualche difficoltà a lavorare con IronPython, perché il tempo di start-up dell'applicazione è di circa 12 secondi per la versione a 32 bit e 20 per quella a 64 bit. E' un problema noto di IronPython a cui stanno lavorando da tempo, ma non credo riusciranno a risolverlo del tutto. Comunque su macchine "normali" impiega 1-2 secondi per partire, quindi non mi faccio tutti questi problemi. In compenso IronPython mi permette di fare "cose turche", per cui non mi lamento più di tanto. :cool:
Non ho mai provato invece con C#. Quando installerò VisualStudio farò qualche prova, ma a naso non credo che impiegherà tutto quel tempo.
Chiaro che non esistono solo C e C++, ma se prima dici che C non occorre impararlo perche' per a parte in alcuni contesti non si usa, poi non tirarmi fuori Modula-2, Oberon e ObjectPascal :D
Quella era solo una precisazione, per dire che sono esistiti ed esistono strumenti equivalenti. :stordita:
Io non ho detto che non occorre impararlo, ma soltanto di farne a meno fino a quando non servirà.
Francamente, penso che sia abbastanza irrilevante, e ne approfitto per riagganciarmi al discorso iniziale dell'autore.
Non ha molto senso star li' a chiedere quali sono i linguaggi piu' richiesti per poi decidere che studiare. Innanzi tutto perche' al piu' bisognerebbe tenere conto non della sola offerta, ma del rapporto offerta/domanda. Ma soprattutto perche' non tiene conto della diversa qualita' che ci possono essere tra i vari lavori.
Vi immaginate se invece di programmazione l'autore del thread fosse interessato alle auto ? Avrebbe aperto un thread nella sezione motori e chiesto "Mi piacerebbe imparare a guidare. Quali sono i veicoli piu' usati nel mondo del lavoro?" e tutti giu' a consigliare di farsi la patente C per guidare uno degli n-mila camion che girano per le strade nostrane, discussioni del fatto che ormai non e' piu' necessario sapere usare il cambio manuale, e che il parcheggio in retro ormai te lo fa la macchina etc., salvo che magari in realta' all'autore piacerebbe di piu' partecipare alle corse , e converrebbe consigliargli di prendere la (lunga e costosa) via del kart :p
ROFL. Direi che non fa una piega.
Mah. La STL non mi piace proprio. Trovo discutibili certe scelte che sono state fatte.
Tipo?
@cdimauro: se usi Boost capisco benissimo il tuo astio verso il C++... il metaprogramming lo rende un linguaggio bloated, inaffidabile, verboso, incomprensibile.
Perchè è un dato di fatto che le features su cui Boost si poggia, tipo templates, rtti ed eccezioni, in C++ sono implementate da fare schifo.
Una delle mie regole fondamentali della programmazione in C++ è "se ti serve Boost, il tuo design è sbagliato" :asd:
In C++ tutto sta nel trovare il proprio "dialetto"; e se parti dall'idea di usare il C++ come un "C a oggetti" è tutto più pulito :D
PS: si parlava di integrare gli smart pointers e un paio di altre cose di Boost, non tutta la libreria. gli SM sono una estensione header-only ed una delle poche cose che si salvano perchè davvero necessari in alcuni casi (anche se a conti fatti, provare ad usarli a me ha causato un aumento dei bug).
PPS: per gli stessi motivi la STL piace poco anche a me, ma il suo lavoro lo fa e prima dell'eleganza viene non rifare lavoro già fatto, ho reimplementato solo vector.
Tommo hai mai pensato di usare le Qt come librerie principali?
Tommo hai mai pensato di usare le Qt come librerie principali?
Non vedo come una lib che oltre a essere colossale e ridefinire qualsiasi cosa fino a String, e necessita pure un'installazione sui client, possa essere più leggera :D
Come libreria uso le STL (sono "gratis" su qualsiasi piattaforma), da sole con le lib di sistema.
Oppure affiancate a POCO C++ (http://pocoproject.org/) con cui finora mi sto trovando piuttosto bene :D
1 mb e qualcosa di lib statica e finisce lì... in più è molto "sana di mente" come lib, è compatibile con la STL, e anche senza uno straccio di docs (purtroppo...) non ho mai avuto problemi a usarla. La consiglio :read:
cdimauro
28-10-2011, 19:24
Tipo?
In primis gli iteratori: usarli così mi fa stare male. Sogno un costrutto alla foreach per intenderci, al limite "emulato" con qualcosa di simile magari tramite il while:
while (Item = Collection.Next())
cout << Item;
Poi trovo allucinante il casino che bisogna fare per controllare se un elemento appartiene o meno a un insieme o una mappa. Ma dico, aggiungere un metodo tipo Set/Map.Contains(Key) che ritorna un booleano, no? Bah.
E poi set e map, se non ricordo male, richiedono un tempo O(log(n)) per andare a caccia di un particolare elemento. Roba che pure Python per certi algoritmi con uso intensivo di queste funzionalità potrebbe essere più veloce (richiedono entrambi O(1)).
Queste sono le cose che mi sono rimaste più impresse da quando ho lavorato col C++ con l'STL, ma sono sicuro che se tornassi a lavorarci ne salterebbero fuori altre.
@cdimauro: se usi Boost capisco benissimo il tuo astio verso il C++... il metaprogramming lo rende un linguaggio bloated, inaffidabile, verboso, incomprensibile.
Perchè è un dato di fatto che le features su cui Boost si poggia, tipo templates, rtti ed eccezioni, in C++ sono implementate da fare schifo.
Ah, bene. Pensavo fosse una questione personale di antipatia endemica, e che quindi fossi io il problema. :p
Una delle mie regole fondamentali della programmazione in C++ è "se ti serve Boost, il tuo design è sbagliato" :asd:
Ma LOL. E due. :D
In C++ tutto sta nel trovare il proprio "dialetto"; e se parti dall'idea di usare il C++ come un "C a oggetti" è tutto più pulito :D
Beh, è così che lo usavo. Ho una forte tendenza alla programmazione a oggetti, quando ravvedo una qualche gerarchia nei dati (con una particolare predilezione per le classi astratte).
Però uso molto anche la programmazione funzionale: colpa dei decoratori di Python a cui sono assuefatto, ma che è impossibile emulare in linguaggi staticamente tipati. Anche in C#, che è un signor linguaggio, ho difficoltà ad applicare certi pattern; per fortuna ci sono i delegate che alleviano la fatica, ma non è la stessa cosa.
PS: si parlava di integrare gli smart pointers e un paio di altre cose di Boost, non tutta la libreria. gli SM sono una estensione header-only ed una delle poche cose che si salvano perchè davvero necessari in alcuni casi (anche se a conti fatti, provare ad usarli a me ha causato un aumento dei bug).
Concordo sugli smart pointer, meno sui bug che causano: è strano che addirittura aumentino. Comunque non lavorandoci non ho esperienza in merito, per cui mi astengo dal giudizio.
PPS: per gli stessi motivi la STL piace poco anche a me, ma il suo lavoro lo fa e prima dell'eleganza viene non rifare lavoro già fatto, ho reimplementato solo vector.
Beh, anch'io cerco di non reinventare per la milionesima volta la ruota. In genere l'STL è la prima cosa che controllo per vedere se c'è qualcosa che mi possa servire per risolvere un particolare problema. Dopo, semmai abbia a disposizione qualche altra libreria (anche BOOST, se qualcuno l'ha inglobata nel progetto :D), guardo anche altrove.
Come libreria uso le STL (sono "gratis" su qualsiasi piattaforma), da sole con le lib di sistema.
Concordo. Non ti credere che in ogni progetto abbia piazzato le BOOST, eh! Io le ho sempre trovate già inserite, altrimenti ne avrei fatto a meno. :stordita:
Una volta le ho dovute installare perché un parser ASN.1 per il C++ le usava, ma è stato un incubo. Poi sono pesantissime: più di 1GB di spazio occupato da migliaia di file. E questo 4 o 5 anni fa: non oso immaginare che stazza abbiano adesso.
Ci sono miei colleghi, invece, che vanno pazzi per le BOOST. Mah. :stordita:
Oppure affiancate a POCO C++ (http://pocoproject.org/) con cui finora mi sto trovando piuttosto bene :D
1 mb e qualcosa di lib statica e finisce lì... in più è molto "sana di mente" come lib, è compatibile con la STL, e anche senza uno straccio di docs (purtroppo...) non ho mai avuto problemi a usarla. La consiglio :read:
Ne avevo già sentito parlare. Dovesse mai capitarmi (spero MAI :asd:) me la segno.
Non vedo come una lib che oltre a essere colossale e ridefinire qualsiasi cosa fino a String, e necessita pure un'installazione sui client, possa essere più leggera :D
Non sei obbligato ad usare tutta Qt, è modulare. :)
Inoltre per installarla sul client basta copiare le dll sulla stessa cartella dell'eseguibile.
DioBrando
29-10-2011, 11:05
non c'entra una mazza ma...perché si continua a chiamare i linguaggi con l'uso dell'articolo determinativo davanti?
"il C", "il Java" non si possono sentire :O
Voi quando vi riferite ad una persona lo chiamate "il Paolo", "il Marco"? :D
tecno789
29-10-2011, 11:21
non c'entra una mazza ma...perché si continua a chiamare i linguaggi con l'uso dell'articolo determinativo davanti?
"il C", "il Java" non si possono sentire :O
Voi quando vi riferite ad una persona lo chiamate "il Paolo", "il Marco"? :D
beh è riferito al "linguaggio", quindi il C, non si può dire programmo c, è più giusto programmo il C, altrimenti ti prendono per pazzo no?? :D
Però uso molto anche la programmazione funzionale: colpa dei decoratori di Python a cui sono assuefatto, ma che è impossibile emulare in linguaggi staticamente tipati. Anche in C#, che è un signor linguaggio, ho difficoltà ad applicare certi pattern; per fortuna ci sono i delegate che alleviano la fatica, ma non è la stessa cosa.
Per quello, noi tutti speriamo in C++11 :D
Dovrebbe rendere possibili diverse cose "moderne" che ora sono o impossibili o veramente scomode (lambda expressions, auto, etc) e migliorare enormemente la STL.
Concordo sugli smart pointer, meno sui bug che causano: è strano che addirittura aumentino. Comunque non lavorandoci non ho esperienza in merito, per cui mi astengo dal giudizio.
Prova solo ad usarli in multithread, dato che non sono thread safe :D
E non puoi nemmeno fare una versione thread safe, perchè sennò diventerebbe più lento di Java e rischi deadlock sparsi.
E c'è anche che se un oggetto ha anche solo uno smart pointer non puoi più usare un raw pointer se non temporaneo: il pointer potrebbe diventare garbage in ogni momento e non puoi saperlo, perchè è difficilissimo prevedere esattamente da quale release sarà cancellato l'oggetto (pensa solo se la release sta in diversi distruttori polimorfici).
E poi ci sono i memory leak, tipo le isole. Al contrario di un GC vero, se A -> B e B -> A, questi due oggetti non verranno mai cancellati... e questo ti obbliga a dover prima pensare a chi "possiede" chi; quindi usi uno smart ptr da A a B, e un weak ptr da B ad A.
Quello che ho concluso è che decidere usare gli smart pointer per non gestire la memoria è da cog***i :asd:
Gli smart ptr non ti liberano affatto dalla responsabilità di pensare a come verrà cancellato l'oggetto... al massimo ti evitano il leak in quel caso, ma se non hai fatto i tuoi conti è probabile che succederà qualcosa di molto peggiore di un leak :asd:
La memoria la gestisci eccome, solo in un modo diverso. e finora non l'ho trovato vantaggioso rispetto a una gestione manuale fatta bene.
Concordo. Non ti credere che in ogni progetto abbia piazzato le BOOST, eh! Io le ho sempre trovate già inserite, altrimenti ne avrei fatto a meno. :stordita:
Ci sono miei colleghi, invece, che vanno pazzi per le BOOST. Mah. :stordita:
Purtroppo la gente che va pazza per le cosiddette "soluzioni enterprise" (leggasi: roba enorme, lenta e complessa per nessun motivo) esiste sempre :asd:
A volte pare che la gente usi templates e patterns (sintomo eccellente è l'esistenza di classi che finiscono per Manager, magari che sono Singleton) per il gusto di sentirsi più pro, e lo so perchè l'ho fatto :D
@LMCH non lo so, quando ho visto un programma che mi chiedeva di installarla per partire l'ho messa nella lista delle "cose brutte e sbagliate" :asd:
Non ci ho mai guardato perchè comunque nei giochi sono cose che servono relativamente, se mi dovesse servire ci darò un'occhiata :D
starfred
29-10-2011, 11:34
non c'entra una mazza ma...perché si continua a chiamare i linguaggi con l'uso dell'articolo determinativo davanti?
"il C", "il Java" non si possono sentire :O
Voi quando vi riferite ad una persona lo chiamate "il Paolo", "il Marco"? :D
Il Bunga Bunga !
Visto che ormai il thread e' deragliato su una discussione sul C++, aggiungo qualche precisazione anche io.
Iteratori del C++: si' fanno schifo, ma e' stata una scelta dettata dall'"eredita'" lasciata dal C: era l'unico modo per rendere i puntatori (ad array) del C automaticamente degli iteratori.
Un po' di tempo fa c'era un bell'articolo di Alexandrescu che girava per la rete intitolato "STL iterators must die", e spiegava bene il problema. Fontamentalmente che sono degli iteratori "a meta'", ovvero hanno un inizio, ma non hanno una fine. Un vero iteratore dovrebbe essere una coppia inizio fine. Se uno non ha bisogno di operare sugli array, e lavora su container interi, e li usa spesso (si', una bella catena di 'se'), ci mette poco a wrappare alcuni algoritmi della libreria standard per usarli in modo piu' conciso, soprattutto col C++11 grazie alle lambda expressions.
Ad esempio invece di scrivere
vector<int> v;
// fill v
for ( i=0 ; i< v.size(); ++i )
{
v[i] += 1;
}
Uno puo' farsi una funzione di comodo
template <typename T, typename Fun>
void each(T& t,Fun f)
{
for_each(t.begin(), t.end(), f);
}
e poi scrivere
each(v, [](int& x) { x+= 1; });
Non e' particolarmente piu' leggibile della versione precedente, ma molto piu' generica (se v fosse un set<> o una list<> non cambierebbe nulla).
Prova solo ad usarli in multithread, dato che non sono thread safe :D
E non puoi nemmeno fare una versione thread safe, perchè sennò diventerebbe più lento di Java e rischi deadlock sparsi.
E c'è anche che se un oggetto ha anche solo uno smart pointer non puoi più usare un raw pointer se non temporaneo: il pointer potrebbe diventare garbage in ogni momento e non puoi saperlo, perchè è difficilissimo prevedere esattamente da quale release sarà cancellato l'oggetto (pensa solo se la release sta in diversi distruttori polimorfici).
gli smart pointers non sono pensati per una gestione completamente automatica della memoria, ma per facilitarti la vita. Se vuoi un garbage collector, usa un garbage collector :D.
Se uno tiene a mente questo puo' sfruttarli per scrivere meno codice in modo piu' efficace.
Ad esempio usandoli per gli attributi di una classe uno evita di dover ricordarsi di eliminarli nel distruttore e fa meno fatica ad implementare i vari operatori di copia/assegnamento.
Per quel che riguarda il problema di passare l'argomento come puntatore ad altre funzioni, hai lo stesso problema anche senza smart pointer.
La sostanza e' che comunque devi "circoscrivere" l'ambito di vita dell'oggetto puntato.
Fatto questo la gestione della vita degli oggetti non causa alcun problema neanche in ambito multithreaded. Detto questo, se lo trovate, consiglio la lettura di "Shared Mutable Memory Must Die" (purtroppo non riesco a trovarlo online :( ) dove spiega perche' usare memoria condivisa tra thread (e quindi in particolare puntatori e riferimenti ad oggetti) e' "il male". La vita diventa molto piu' semplice se si riesce ad adottare un approccio message-based (oppure con software transactional memory, ma allora ci vuole un linguaggio con basso uso di mutabilita'), senza per questo che le performance ne risentano.
Purtroppo la gente che va pazza per le cosiddette "soluzioni enterprise" (leggasi: roba enorme, lenta e complessa per nessun motivo) esiste sempre :asd:
A volte pare che la gente usi templates e patterns (sintomo eccellente è l'esistenza di classi che finiscono per Manager, magari che sono Singleton) per il gusto di sentirsi più pro, e lo so perchè l'ho fatto :D
boost non mi sembra "enterprise": usi solo quello che ti serve e non ti porti dietro altro. Semmai ha il difetto che la qualita' delle varie componenti e' abbastanza variabile, e in alcuni casi manca della documentazione ragionevole su come usarle (soprattutto quelle basate pesantemente su template, perche' in quel caso guardare la documentazione di riferimento aiuta poco).
Se uno usa template per fare il figo e' un problema suo :D, ma ci sono degli usi in cui diventa effettivamente comodo. Servono non tanto per lo sviluppatore di un programma, quanto per uno sviluppatore di una libreria, in quanto aiuta a dare maggiore genericita' alla stessa (in altri termini rendono piu' difficile la vita allo sviluppatore della libreria per renderla piu' facile all'utilizzatore).
Un esempio canonico e' quello che fa Stroustroup nel suo libro, dove mostra, usando i template, come trasformare una espressione tipo y += A*b+c in una singola chiamata di libreria ottimizzata. Senza i template dovrei scegliere se avere una notazione chiara (ma inefficiente) oppure una efficiente (ma poco chiara).
e purtroppo non sbagli :(
per questo mi domandavo perchè insistono molto sul c, linguaggio ormai soppiantato...
soppiantato?
Non mi risulta.
tecno789
29-10-2011, 19:51
soppiantato?
Non mi risulta.
lo pensavo..visto che tutti richiedono il java, voi invece avete affermato che non così ed ora mi sembrano molto più chiare le ragioni.
lo pensavo..visto che tutti richiedono il java, voi invece avete affermato che non così ed ora mi sembrano molto più chiare le ragioni.
ti assicuro che è vivo e vegeto visto che ci sto sviluppando un progettone in azienda.
Anche java e php ovviamente non sono da scartare visto che mi serviranno anche questi due linguaggi a suo tempo, ma come ben sai, se necessiti di un certo tipo di prestazioni il C le garantisce.
IMHO è un linguaggio che non tramonterà mai e sempre IMHO, è un linguaggio per il quale ne vale sempre la pena spenderci del tempo per studiarlo e approfondirlo.
non c'entra una mazza ma...perché si continua a chiamare i linguaggi con l'uso dell'articolo determinativo davanti?
"il C", "il Java" non si possono sentire :O
Voi quando vi riferite ad una persona lo chiamate "il Paolo", "il Marco"? :D
Concordissimo :D
Il Bunga Bunga !
LOL, ci voleva. Troppo serio e complicato sto thread meglio sdrammatizzare un pò. :D :D
ti assicuro che è vivo e vegeto visto che ci sto sviluppando un progettone in azienda.
Anche java e php ovviamente non sono da scartare visto che mi serviranno anche questi due linguaggi a suo tempo, ma come ben sai, se necessiti di un certo tipo di prestazioni il C le garantisce.
IMHO è un linguaggio che non tramonterà mai e sempre IMHO, è un linguaggio per il quale ne vale sempre la pena spenderci del tempo per studiarlo e approfondirlo.
Esatto, io stesso ho sviluppato il progetto per la mia tesi (in pratica un software per il face detection) riadattando codice C di un'altra applicazione. Se lo avessi fatto in java sarebbe stato sicuramente più semplice ma non avrebbe MAI avuto le stesse prestazioni.
tecno789
29-10-2011, 23:53
Assolutamente in disaccordo. L'obiettivo di un programmatore non è la massima efficienza, ma il miglior compromesso in base ai requisiti del problema.
La massima efficienza è il classico vessillo di chi soffre di ansia da prestazione.
a me sinceramente ad ingegneria è la prima cosa che mi hanno insegnato prima di sapere cos'e' un pc :D
eh sinceramente vuoi dirmi che programmare un semplice programmino con 200 righe di codice e si pò fare con 30 è meglio?? il tuo ragionamento è valido su programmini semplici e corti, ma su software piu grandi l'efficienza e i tempi di esecuzione sono l'obiettivo dei programmatori, vallo a dire alla Apple che è 10 anni che investe sulla velocità del sistema operativo :)
ti assicuro che è vivo e vegeto visto che ci sto sviluppando un progettone in azienda.
Anche java e php ovviamente non sono da scartare visto che mi serviranno anche questi due linguaggi a suo tempo, ma come ben sai, se necessiti di un certo tipo di prestazioni il C le garantisce.
IMHO è un linguaggio che non tramonterà mai e sempre IMHO, è un linguaggio per il quale ne vale sempre la pena spenderci del tempo per studiarlo e approfondirlo.
ritiro cio' che ho detto infatti, semplicemente vedo nella mia zona poche aziende che lo richiedono :(
cdimauro
30-10-2011, 05:04
@Tommo & marco.r: grazie per le utilissime spiegazioni. :)
non c'entra una mazza ma...perché si continua a chiamare i linguaggi con l'uso dell'articolo determinativo davanti?
"il C", "il Java" non si possono sentire :O
Voi quando vi riferite ad una persona lo chiamate "il Paolo", "il Marco"? :D
Nel mio caso quando uso la forma "il xyz" è per abbreviare e non ripetere la parola "linguaggio". In altri contesti faccio a meno anche dell'articolo. In altri ancora uso IN. :fagiano:
beh è riferito al "linguaggio", quindi il C, non si può dire programmo c, è più giusto programmo il C, altrimenti ti prendono per pazzo no?? :D
Veramente si dice programmo IN C.
Esatto, io stesso ho sviluppato il progetto per la mia tesi (in pratica un software per il face detection) riadattando codice C di un'altra applicazione. Se lo avessi fatto in java sarebbe stato sicuramente più semplice ma non avrebbe MAI avuto le stesse prestazioni.
Questo è un altro mito duro a morire. Dipende tutto dal tipo di applicazione, perché le prestazioni di Java si avvicinano molto a quelle del C, e in alcuni casi le superano pure. Eresia? No, dati alla mano:
Single core a 64 bit. (http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=java&lang2=gcc)
Quad core a 64 bit. (http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=java&lang2=gcc)
Single core a 32 bit. (http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=java&lang2=gcc)
Quad core a 32 bit. (http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=java&lang2=gcc)
a me sinceramente ad ingegneria è la prima cosa che mi hanno insegnato prima di sapere cos'e' un pc :D
Detto così ti potrei rispondere: t'hanno insegnato male. Molto male. Perché l'ingegnere è la "figura" tipica che ti risolve i problemi.
Poi se il contesto era diverso, altamente specifico, ci può anche stare.
eh sinceramente vuoi dirmi che programmare un semplice programmino con 200 righe di codice e si pò fare con 30 è meglio??
Se risolve il tuo problema, e lo fa col miglior compromesso (come già detto), sì, decisamente.
il tuo ragionamento è valido su programmini semplici e corti, ma su software piu grandi l'efficienza e i tempi di esecuzione sono l'obiettivo dei programmatori,
Continui a riportare informazioni false. Ho scritto diversi server in Python, che si smazzano carichi di lavoro non indifferenti, e sono lì a girare da anni.
Come programmatore devi ancora imparare la cosa più importante: capire se la tua soluzione risolve il tuo problema col compromesso migliore.
vallo a dire alla Apple che è 10 anni che investe sulla velocità del sistema operativo :)
Citi proprio Apple che non ha certo una buona reputazione nel campo delle ottimizzazioni (http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/14).
Certo, da un po' di tempo si dà da fare (vedi anche CLang/LLVM), ma non prendiamolo come simbolo di ricerca estrema dell'ottimizzazione.
ritiro cio' che ho detto infatti, semplicemente vedo nella mia zona poche aziende che lo richiedono :(
Ed è normale che sia così: il C viene usato in soluzione legacy e nel settore embedded / di sistema, per cui è molto più difficile che un green project (che non ricada in queste categorie) sia scritto in C rispetto agli altri linguaggi già citati.
Questo è un altro mito duro a morire. Dipende tutto dal tipo di applicazione, perché le prestazioni di Java si avvicinano molto a quelle del C, e in alcuni casi le superano pure. Eresia? No, dati alla mano:
Single core a 64 bit. (http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=java&lang2=gcc)
Quad core a 64 bit. (http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=java&lang2=gcc)
Single core a 32 bit. (http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=java&lang2=gcc)
Quad core a 32 bit. (http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=java&lang2=gcc)
esatto, dipende tutto dal tipo di applicazione e aggiungerei dal tipo di problema che devi affrontare. Infatti ho scritto di aver riadattato codice C già esistente, inoltre ho discusso per un giorno intero con il prof. e il responsabile del laboratorio su quale linguaggio utilizzare per ottimizzare al max. il risultato e alla fine abbiamo optato ovviamente per C, in quel particolare caso le prestazioni ottenute utiizzando C erano assolutamente impareggiabili (dati alla mano).
Per altri progetti che ho sviluppato all'uni. (ma anche per conto mio) ho scelto a seconda: Java, servlet o php. E' ovvio che in base al problema tento di scegliere il linguaggio, le metodologie o le librerie più adatte.
Il motto che seguo sempre è: non reinventare la ruota :D
tomminno
30-10-2011, 09:08
Questo è un altro mito duro a morire. Dipende tutto dal tipo di applicazione, perché le prestazioni di Java si avvicinano molto a quelle del C, e in alcuni casi le superano pure. Eresia? No, dati alla mano:
Single core a 64 bit. (http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=java&lang2=gcc)
Quad core a 64 bit. (http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=java&lang2=gcc)
Single core a 32 bit. (http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=java&lang2=gcc)
Quad core a 32 bit. (http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=java&lang2=gcc)
Veramente stando a quei benchmark mi pare che ci sia al massimo un solo test in cui Java risulta più veloce, a scapito di una occupazione di memoria doppia. Occupazione di memoria che arriva nel caso peggiore ad essere 54 volte quella del C.
Dopotutto non si spiegherebbe come mai avviare un programma Java risulti sempre un supplizio...
Java ha un enorme vantaggio che è quello di poter girare indistintamente su più piattaforme,ma stranamente questo vantaggio non è stato concretizzato per quanto riguarada le RIA. Se devi offrire un servizio avanzato su internet l'unica strada possibile è Java, ma praticamente nessuno lo utilizza.
cdimauro
30-10-2011, 09:11
Si parlava di prestazioni, non di occupazione di memoria né di tempo di start-up. :read:
Sul resto concordo.
IMHO il problema maggiore di Java, prestazionalmente parlando, è dovuto alle librerie grafiche non proprio eccelse... in tal senso mi sono sembrate migliori le prestazioni di C# (probabilmente fanno uso di una implementazione nativa).
@tommino: il problema del primo avvio è così rilevante? Se i meccanismi di caching del sistema operativo fanno il loro dovere, essendo le librerie sempre quelle, i successivi avvii delle applicazioni saranno molto più rapidi (potresti non notare la differenza con un programma nativo).
A me sinceramente i tempi di avvio delle applicazioni .NET non sono sembrati così intollerabili, certo molto dipende dalle applicazioni e da come sono state scritte.
tecno789
30-10-2011, 09:35
Detto così ti potrei rispondere: t'hanno insegnato male. Molto male. Perché l'ingegnere è la "figura" tipica che ti risolve i problemi.
Poi se il contesto era diverso, altamente specifico, ci può anche stare.
Se risolve il tuo problema, e lo fa col miglior compromesso (come già detto), sì, decisamente.
Continui a riportare informazioni false. Ho scritto diversi server in Python, che si smazzano carichi di lavoro non indifferenti, e sono lì a girare da anni.
Come programmatore devi ancora imparare la cosa più importante: capire se la tua soluzione risolve il tuo problema col compromesso migliore.
Citi proprio Apple che non ha certo una buona reputazione nel campo delle ottimizzazioni (http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/14).
Certo, da un po' di tempo si dà da fare (vedi anche CLang/LLVM), ma non prendiamolo come simbolo di ricerca estrema dell'ottimizzazione.
Ed è normale che sia così: il C viene usato in soluzione legacy e nel settore embedded / di sistema, per cui è molto più difficile che un green project (che non ricada in queste categorie) sia scritto in C rispetto agli altri linguaggi già citati.
beh ma continuo a non seguirti cioè sul discorso dell'efficienza, i tempi di esecuzione secondo me sono la cosa a cui si punta più facilmente. Nel senso te tra un programma che ci mette 10 anni a caricare ed uno che ci mette 10 sec, quale preferiresti???
hai ragione sul fatto dell'Apple, ho sbagliato esempio...:mad:
Comunque a me hanno insegnato sempre in quel modo, infatti dopo aver fatto una prima stesura di un programma, cerco in tutti i modi di migliorarlo e credimi, molte meno righe di codice di solito si traducono in un'esecuzione molto più veloce.
p.s: sicuramente hai molta più esperienza di me in ambito della programmazione, ma magari programmare in python è diverso da programmare in C.
beh ma continuo a non seguirti cioè sul discorso dell'efficienza, i tempi di esecuzione secondo me sono la cosa a cui si punta più facilmente. Nel senso te tra un programma che ci mette 10 anni a caricare ed uno che ci mette 10 sec, quale preferiresti???
hai ragione sul fatto dell'Apple, ho sbagliato esempio...:mad:
Comunque a me hanno insegnato sempre in quel modo, infatti dopo aver fatto una prima stesura di un programma, cerco in tutti i modi di migliorarlo e credimi, molte meno righe di codice di solito si traducono in un'esecuzione molto più veloce.
p.s: sicuramente hai molta più esperienza di me in ambito della programmazione, ma magari programmare in python è diverso da programmare in C.
Il punto è che se una cosa funziona, e se non c'è tempo per migliorarla, l'ingegnere deve essere in grado di trovare il compromesso tra l'efficienza e i costi - perchè l'efficienza si paga sempre :read:
Ed essere realistici è qualcosa che non insegnano all'università :asd:
tecno789
30-10-2011, 11:06
Il punto è che se una cosa funziona, e se non c'è tempo per migliorarla, l'ingegnere deve essere in grado di trovare il compromesso tra l'efficienza e i costi - perchè l'efficienza si paga sempre :read:
Ed essere realistici è qualcosa che non insegnano all'università :asd:
ehehheh lo sapevo :D
Il punto è che se una cosa funziona, e se non c'è tempo per migliorarla, l'ingegnere deve essere in grado di trovare il compromesso tra l'efficienza e i costi - perchè l'efficienza si paga sempre :read:
Ed essere realistici è qualcosa che non insegnano all'università :asd:
A me l'hanno insegnata :O
Comunque parlando di prestazioni, in media è normale che il java sia leggermente più lento del C, ma vuoi mettere il tempo di sviluppo di una applicazione, anche banale tra linguaggi come java e C?
Il calo di prestazioni paga una semplificazione di sviluppo non indifferente. Poi se volessi creare una app che mi scrive a monitor i numeri da 1 a 10, perchè farla in C creando una variabile in memoria ram che deve essere ripetutamente presa e incrementata? Scrivo l'app in assembly, con un MOV e qualche ADD risolvo il problema in ancora meno tempo... ma chi me lo fa fare? xD
Il java occupa più memoria e ha uno start-up più lento perchè fondamentalmente carica molte librerie che non usa ed esegue varie diagnostiche di ottimizzazione, ma gran parte dipende anche da come il programmatore ha scritto il codice.
Tuttavia il Garbage collector riesce a tenere sotto controllo l'eventuale esplosione di utilizzo di memoria da parte di programmatori superficiali o in caso di applicazioni molto "allegre", e questo toglie un grande peso al programmatore che invece in C deve ricordarsi sempre di deallocare quello che non usa più.
Il Java poi grazie al JIT ibrido riesce ad avere buone prestazioni in ambiti in cui degli algoritmi vengono ripetuti ciclicamente, ma non eccelle in applicazioni più varie.
Il Java non è il più adatto a sviluppare applicazioni che "durano" poco perchè carica tanto per usare poco e per poco (è solo un concetto di ottimizzazione, di fatto se ti piace fare un contatore da 1 a 10, poi farlo anche in java, nessuno ti dice niente...)
Il Java lavora male sui numeri: se si vogliono utilizzare molto delle strutture dati contenenti solo valori (es numeri complessi) Java ha bisogno di oggetti veri e propri, causando rallentamenti nel codice e una maggior necessità di memoria.
Non è poi consigliabile usare Java quando devi sviluppare applicazioni che richiedono (o gioverebbero molto) l'accesso diretto alle risorse hardware.
Nei calcoli in doppia virgola mobile, Java non rispetta lo standard IEEE754/854 ed è lento nei confronti.
e bla bla bla (fonte: il corso di ingegneria del software che frequento)
ps: minkia se siamo OT :asd:
tecno789
30-10-2011, 11:15
A me l'hanno insegnata :O
Comunque parlando di prestazioni, in media è normale che il java sia leggermente più lento del C, ma vuoi mettere il tempo di sviluppo di una applicazione, anche banale tra linguaggi come java e C?
Il calo di prestazioni paga una semplificazione di sviluppo non indifferente. Poi se volessi creare una app che mi scrive a monitor i numeri da 1 a 10, perchè farla in C creando una variabile in memoria ram che deve essere ripetutamente presa e incrementata? Scrivo l'app in assembly, con un MOV e qualche ADD risolvo il problema in ancora meno tempo... ma chi me lo fa fare? xD
Il java occupa più memoria e ha uno start-up più lento perchè fondamentalmente carica molte librerie che non usa ed esegue varie diagnostiche di ottimizzazione, ma gran parte dipende anche da come il programmatore ha scritto il codice.
Tuttavia il Garbage collector riesce a tenere sotto controllo l'eventuale esplosione di utilizzo di memoria da parte di programmatori superficiali o in caso di applicazioni molto "allegre", e questo toglie un grande peso al programmatore che invece in C deve ricordarsi sempre di deallocare quello che non usa più.
Il Java poi grazie al JIT ibrido riesce ad avere buone prestazioni in ambiti in cui degli algoritmi vengono ripetuti ciclicamente, ma non eccelle in applicazioni più varie.
Il Java non è il più adatto a sviluppare applicazioni che "durano" poco perchè carica tanto per usare poco e per poco (è solo un concetto di ottimizzazione, di fatto se ti piace fare un contatore da 1 a 10, poi farlo anche in java, nessuno ti dice niente...)
Il Java lavora male sui numeri: se si vogliono utilizzare molto delle strutture dati contenenti solo valori (es numeri complessi) Java ha bisogno di oggetti veri e propri, causando rallentamenti nel codice e una maggior necessità di memoria.
Non è poi consigliabile usare Java quando devi sviluppare applicazioni che richiedono (o gioverebbero molto) l'accesso diretto alle risorse hardware.
Nei calcoli in doppia virgola mobile, Java non rispetta lo standard IEEE754/854 ed è lento nei confronti.
e bla bla bla (fonte: il corso di ingegneria del software che frequento)
ps: minkia se siamo OT :asd:
ma tu studi anche il java in università?? ot di nuovo :)
comunque vero che le prime cose che ti dicono è che l'importante non è saper risolvere un problema ma COME lo si risolve??
tomminno
30-10-2011, 11:49
IMHO il problema maggiore di Java, prestazionalmente parlando, è dovuto alle librerie grafiche non proprio eccelse... in tal senso mi sono sembrate migliori le prestazioni di C# (probabilmente fanno uso di una implementazione nativa).
Essendo mono piattaforma le prestazioni grafiche di C# sono ovviamente migliori, tutto si bassa sulle Win32.
@tommino: il problema del primo avvio è così rilevante? Se i meccanismi di caching del sistema operativo fanno il loro dovere, essendo le librerie sempre quelle, i successivi avvii delle applicazioni saranno molto più rapidi (potresti non notare la differenza con un programma nativo).
Siceramente non ho mai notato miglioramenti nel caricamento multiplo dello stesso applicativo, sia esso Visual Studio o una delle tanti incarnazioni di Eclipse. Sarà che con bestioni da 5/600 mb di ram a vuoto c'è poco di che cachare...
A me sinceramente i tempi di avvio delle applicazioni .NET non sono sembrati così intollerabili, certo molto dipende dalle applicazioni e da come sono state scritte.
Infatti parlavo di Java. .Net sembra avere prestazioni superiori, ma dopotutto è solo un mega wrapper sulle Win32...
beh ma continuo a non seguirti cioè sul discorso dell'efficienza, i tempi di esecuzione secondo me sono la cosa a cui si punta più facilmente. Nel senso te tra un programma che ci mette 10 anni a caricare ed uno che ci mette 10 sec, quale preferiresti???
hai ragione sul fatto dell'Apple, ho sbagliato esempio...:mad:
Comunque a me hanno insegnato sempre in quel modo, infatti dopo aver fatto una prima stesura di un programma, cerco in tutti i modi di migliorarlo e credimi, molte meno righe di codice di solito si traducono in un'esecuzione molto più veloce.
p.s: sicuramente hai molta più esperienza di me in ambito della programmazione, ma magari programmare in python è diverso da programmare in C.
In un programma di centinaia di migliaia di righe di codice conta essere il più chiari possibile.
Primo per semplificare il debug (che nei programmi C/C++ può essere non così banale) e secondo per migliorare la vita di colui che viene dopo di te e dovrà leggersi (e magari debuggare) il tuo codice.
La maggior parte delle volte è sufficiente usare una struttura dati adeguata allo scopo, piuttosto che stare lì ad "ottimizzare" il codice vero e proprio.
Anche perché molto spesso il compilatore ottimizza il codice decisamente meglio di qualsiasi altro programmatore sulla faccia della terra, che ottimizzando a manina rischia addirittura di rovinare tutto ciò che di buono fa il compilatore.
In particolare uno dei vantaggi di una VM è quello di poter ottimizzare a run-time l'esecuzione del codice, e questo in alcuni casi può essere auspicabile.
Comunque l'ottimizzazione va fatta con criterio, su parti di codice che vengono eseguite spesso e/o che sono onerose e che costituiscono effettivamente il vero collo di bottiglia della tua applicazione.
La scelta di una algoritmo adeguato può fare la differenza, come ricordava Cesare, ad esempio C++ usa per le map un albero red-black, e non una tabella di hash, anche se le ultime versioni dello standard le hanno introdotte.
Ovviamente questo ha dei pro e dei contro, ti troverai sempre a dover scegliere tra l'ottimizzare il tempo di esecuzione o l'uso della memoria.
Tipicamente l'utente medio (ma anche quello che si crede più esperto) tende a prendere in considerazione l'utilizzo di memoria, come se questo fosse l'unico parametro per giudicare le performance di una applicazione.
Vivendo in un mondo in cui 4gb di ram è ormai la dotazione standard di molti PC, direi che si potrebbe lavorare sul tempo di esecuzione piuttosto che stare lì a sindacare su ogni byte utilizzato.
[..]
Siceramente non ho mai notato miglioramenti nel caricamento multiplo dello stesso applicativo, sia esso Visual Studio o una delle tanti incarnazioni di Eclipse. Sarà che con bestioni da 5/600 mb di ram a vuoto c'è poco di che cachare...
Boh, ho appena aperto Visual Studio e mi prende meno di 60mb di ram.
Per cachare intendo le librerie (.NET), non il programma in se.
Edit: stando a process explorer Visual Studio non sembra essere un programma .NET.
Vivendo in un mondo in cui 4gb di ram è ormai la dotazione standard di molti PC, direi che si potrebbe lavorare sul tempo di esecuzione piuttosto che stare lì a sindacare su ogni byte utilizzato.
Il fatto è proprio questo. Oggi rispetto a qualche anno fa i programmi hanno molta meno necessità di essere fortemente ottimizzati.
Ed è perciò che in molti ambiti il Java è la scelta migliore (prestazioni/tempi di sviluppo).
Ovviamente questo non vale nel 100% dei casi, ma oggi rispetto a ieri la percentuale è sicuramente molto più alta :sofico:
tecno789
30-10-2011, 12:36
Il fatto è proprio questo. Oggi rispetto a qualche anno fa i programmi hanno molta meno necessità di essere fortemente ottimizzati.
Ed è perciò che in molti ambiti il Java è la scelta migliore (prestazioni/tempi di sviluppo).
Ovviamente questo non vale nel 100% dei casi, ma oggi rispetto a ieri la percentuale è sicuramente molto più alta :sofico:
beh mica tanto, io vedo per esempio "norton antivirus" che è un ottimo programma ma impiega tante di quelle risorse che rallenta tutto il sistema, mentre altri antivirus riescono meglio ad organizzare il lavoro. Secondo me norton è un ottimo programma ma scarsamente ottimizzato, è un esempio palese :)
Prima di tutto torno a ringraziare tutti per le risposte!
Non pensavo di tirare su un polverone del genere con la mia domanda :)
Prima di tutto torno a ringraziare tutti per le risposte!
Non pensavo di tirare su un polverone del genere con la mia domanda :)
polverone? Tu hai scatenato una guerra di religione!!! :D :D :D
@cdimauro
ho appena ri-ttrovato il codice e gli algoritmi che usavo nelle esercitazione C e Java. Avevo infatti scritto un algoritmo (non so quanto efficiente ma di sicuro efficace) per testare se un numero è primo o no e quindi un for e un if niente librerie strane caricate ecc. ecc. Sostanzialmente quindi identico (come codice sorgente intendo) anche in java ma in C ovviamente era mooolto più veloce (almeno 5-6 volte più veloce non ricordo con precisione).
Stesso problema, stesso codice sorgente, pochissime righe di codice e una differenza abissale in termini di throughput, io l'ho verificato di persona. Nulla togliendo però che ad ogni problema il suo linguaggio e il suo metodo di programmazione adatto. Di sicuro però in determinate situazioni C non ha paragoni.
per esempio "norton antivirus" che è un ottimo programma
:D :D :D
beh mica tanto, io vedo per esempio "norton antivirus" che è un ottimo programma ma impiega tante di quelle risorse che rallenta tutto il sistema, mentre altri antivirus riescono meglio ad organizzare il lavoro. Secondo me norton è un ottimo programma ma scarsamente ottimizzato, è un esempio palese :)
Veramente gli ultimi Norton sono al top delle performance... ma anche lì bisogna chiedersi qual è l'obiettivo che ci si prefigge da un programma di quel tipo.
In questo senso tutto è un compromesso.
ma tu studi anche il java in università?? ot di nuovo :)
"purtroppo" studio praticamente solo il java (anzi di fatto non lo studiamo, però ci fanno lavorare con quello, il che è ancora peggio visto che non ci sono esami dedicati alla pura programmazione)... tornando indietro forse farei scienze informatiche anzichè ingegneria, così sarei stato introdotto meglio al c++ (che di fatto mi tocca impararlo da autodidatta) e avrei avuto esami di programmazione pura. Mentre il C lo conoscevo già dalle superiori e l'ho usato in un esame di elettronica (non di informatica...)
In un programma di centinaia di migliaia di righe di codice conta essere il più chiari possibile.
Primo per semplificare il debug (che nei programmi C/C++ può essere non così banale) e secondo per migliorare la vita di colui che viene dopo di te e dovrà leggersi (e magari debuggare) il tuo codice.
La maggior parte delle volte è sufficiente usare una struttura dati adeguata allo scopo, piuttosto che stare lì ad "ottimizzare" il codice vero e proprio.
Anche perché molto spesso il compilatore ottimizza il codice decisamente meglio di qualsiasi altro programmatore sulla faccia della terra, che ottimizzando a manina rischia addirittura di rovinare tutto ciò che di buono fa il compilatore.
In un programma di centinaia di migliaia di righe, il debug tipicamente è l'ultima spiaggia in caso di problemi. Per questo è si importante scrivere in modo ordinato, identato e chiaro il codice, ma anche modulare. Ovvero suddividerlo in metodi (o funzioni) che possono essere testati mediante la tecnica delle routine di test. Questo lo facciamo nel progetto universitario a cui lavoriamo ( http://paduaresearch.cab.unipd.it/2972/ ).
Poi in Java, la modularità porta solo vantaggi visto che, come detto sopra, la java vm tende a compilare in codice macchina i blocchi di istruzioni eseguiti più frequentemente.
tecno789
30-10-2011, 14:31
Veramente gli ultimi Norton sono al top delle performance... ma anche lì bisogna chiedersi qual è l'obiettivo che ci si prefigge da un programma di quel tipo.
In questo senso tutto è un compromesso.
beh mica tanto sul sistema che vedi in firma va da dio, ma se dovessi installarlo sul netbook?? non girerebbe nessun altro programma :(
"purtroppo" studio praticamente solo il java (anzi di fatto non lo studiamo, però ci fanno lavorare con quello, il che è ancora peggio visto che non ci sono esami dedicati alla pura programmazione)... tornando indietro forse farei scienze informatiche anzichè ingegneria, così sarei stato introdotto meglio al c++ (che di fatto mi tocca impararlo da autodidatta) e avrei avuto esami di programmazione pura. Mentre il C lo conoscevo già dalle superiori e l'ho usato in un esame di elettronica (non di informatica...)
ah capisco. Si infatti, in ingegneria non c'è tantissima programmazione come informatica pura, se volevi solo programmare allora hai sbagliato facoltà :doh:
Invece noi il C lo usiamo molto e un altro linguaggio che ci fanno studiare è proprio il bruttissimo assembly :muro:
strano che fai java, per quello ho chiesto....
Boh, ho appena aperto Visual Studio e mi prende meno di 60mb di ram.
Per cachare intendo le librerie (.NET), non il programma in se.
Edit: stando a process explorer Visual Studio non sembra essere un programma .NET.
VS2010 e' stato fatto in WPF, quindi .NET
tornando indietro forse farei scienze informatiche anzichè ingegneria, così sarei stato introdotto meglio al c++ (che di fatto mi tocca impararlo da autodidatta) e avrei avuto esami di programmazione pura.
Il mio ordinamento (Laurea Triennale in Scienze Informatiche) ha previsto l'introduzione del Java solo al 3° anno, fino ad allora si è lavorato solamente in C/C++
ah capisco. Si infatti, in ingegneria non c'è tantissima programmazione come informatica pura, se volevi solo programmare allora hai sbagliato facoltà :doh:
Invece noi il C lo usiamo molto e un altro linguaggio che ci fanno studiare è proprio il bruttissimo assembly :muro:
strano che fai java, per quello ho chiesto....
Su con la vita. Da quello che leggo mi pare di capire che la situazione sia migliorata e di moto ad ingegneria. Quando frequentavo non c'era niente di informatica. Dovetti dare quattro esami di economia ed organizzazione aziendale e mai nessuno che parlasse di algoritmi e strutture dati. So fare un bilancio ma non ho la più pallida idea di cosa sia un albero od un grafo. Sorvolo sul corso di sistemi operativi in cui abbiamo fatto scripting bash o sul fatto che il fossile che insegnava ingegneria del software fosse convinto che UML+Waterfall fossero il futuro. :asd:
starfred
30-10-2011, 19:31
Su con la vita. Da quello che leggo mi pare di capire che la situazione sia migliorata e di moto ad ingegneria. Quando frequentavo non c'era niente di informatica. Dovetti dare quattro esami di economia ed organizzazione aziendale e mai nessuno che parlasse di algoritmi e strutture dati. So fare un bilancio ma non ho la più pallida idea di cosa sia un albero od un grafo. Sorvolo sul corso di sistemi operativi in cui abbiamo fatto scripting bash o sul fatto che il fossile che insegnava ingegneria del software fosse convinto che UML+Waterfall fossero il futuro. :asd:
Per non parlare di tutta la meccanica, fisica, tecnica delle costruzioni, etc. etc. che ti propinavano :D
tecno789
30-10-2011, 20:07
Su con la vita. Da quello che leggo mi pare di capire che la situazione sia migliorata e di moto ad ingegneria. Quando frequentavo non c'era niente di informatica. Dovetti dare quattro esami di economia ed organizzazione aziendale e mai nessuno che parlasse di algoritmi e strutture dati. So fare un bilancio ma non ho la più pallida idea di cosa sia un albero od un grafo. Sorvolo sul corso di sistemi operativi in cui abbiamo fatto scripting bash o sul fatto che il fossile che insegnava ingegneria del software fosse convinto che UML+Waterfall fossero il futuro. :asd:
Per non parlare di tutta la meccanica, fisica, tecnica delle costruzioni, etc. etc. che ti propinavano :D
4???
ora ne abbiamo solo uno ma non è migliorata molto la situazione, ci sono troppi esami che sono troppo dispersivi, a mio parere dovrebbero essere più mirati verso l'indirizzo che si sceglie!
DioBrando
30-10-2011, 23:05
beh è riferito al "linguaggio", quindi il C, non si può dire programmo c, è più giusto programmo il C, altrimenti ti prendono per pazzo no?? :D
In effetti se tu mi dici "programmo il C" ti prendo abbastanza per pazzo.
Perché, in italiano, mi stai dicendo che stai riscrivendo il linguaggio, piattaforma e quant'altro.
Semmai, tu dovresti scrivere "programmo IN C" che è tutt'altra storia.
Significa che usi una determinata tecnologia per fare qualcosa.
Usi un mezzo per arrivare ad uno scopo.
Prima l'ho buttata sul ridere. Ma esprimersi correttamente necessita di un uso adeguato della logica (costruzione della frase), grammatica e conoscenza della semantica (il significato delle parole).
Difficilmente si può essere degli ottimi sviluppatori se non si è in grado di esprimersi nella propria lingua.
Scrivere "il linguaggio C" è corretto, perché un linguaggio, in ambito IT ma non solo, può essere associato a più di un soggetto.
Viceversa, se identifichi direttamente quella tecnologia, non c'è nessun bisogno dell'articolo perché il suo nome lo identifica già.
Non esiste più di un C#, al massimo fai riferimento alla versione del framework, ma morta lì.
Non troverai mai scritto nei siti stranieri "The Java". Non avrebbe alcun senso.
Tutt'al più, sì potrai leggere "The Java platform", ma questo è logico perché piattaforma è un concetto agnostico alla tecnologia e devi specificare.
Fateci caso.
Questa è una delle ragioni per cui i testi ITC andrebbero letti in inglese e mai fruiti tradotti. Non si sbaglia praticamente mai.
Chiuso l'OT, il resto della discussione non mi appassiona sinceramente.
L'indicatore TIOBE fa piuttosto ridere ed andrebbe ignorato quasi del tutto; si fa prima a prendere i siti online delle varie società che si occupano di inserimento nel mondo del lavoro e fare una ricerca incrociata per valutare quali sono, numericamente parlando, le tecnologie più richieste.
Per il momento, in Italia e all'estero Java e C# dominano ma nel giro di breve tempo il mobile si prenderà una bella fetta dell'intero mercato.
Non troverai mai scritto nei siti stranieri "The Java". Non avrebbe alcun senso.
Tutt'al più, sì potrai leggere "The Java platform", ma questo è logico perché piattaforma è un concetto agnostico alla tecnologia e devi specificare.
Ma italiano e inglese sono due lingue diverse. Non ha senso dire che in italiano si fa in un modo perche' si fa cosi' in inglese.
Non trovo sbagliato dire "il C" soprattutto in quei casi in cui non c'e' altro che l'ellissi di "linguaggio" (i.e. "il (linguaggio) C")
Questa è una delle ragioni per cui i testi ITC andrebbero letti in inglese e mai fruiti tradotti. Non si sbaglia praticamente mai.
Piu' che altro un testo non tradotto non ha errori di traduzione e, soprattutto in ambito informatico, meta' dei termini , essendo tecnici, stanno bene non tradotti.
Con questa discussione sull'uso degli articoli l'inutilità delle discussioni sul sesso dei linguaggi (semicit.) di questo forum ha raggiunto tutto un'altro livello :D
Bar sport FTW!
ingframin
31-10-2011, 21:58
già che ci siamo vogliamo commentare la Juventus? :asd:
Io direi che la vedo trugola capire quale è il linguaggio più usato dalle aziende, anche partendo dalle offerte di lavoro. Considerate che chi scrive le offerte di lavoro mediamente non ne capisce una beneamata mazza. Ti dicono "mi raccomando ripeti bene VHDL e studia elettronica digitale per il colloquio!" poi ti siedi e la prima domanda è "Bene, parliamo di filtri attivi e di amplificatori per strumetnazione..." :stordita:
Idem per i linguaggi di programmazione... ad un mio amico "mi raccomando preparati bene su python..." e poi al colloquio vero e proprio "ah ma noi qui usiamo solo Perl..." :muro:
La strategia migliore sembrerebbe essere avere nel cv:
1) Un linguaggio tipo C con oggetti (Java, C#, C++)
2) ANSI C e Python, per il mondo embedded (strano a dirsi ma python è usatissimo in laboratori di elettronica e similari!)
3) Un linguaggio per il web (PHP, Java o Python/Perl)
Chi può mettere nel cv almeno un elemento per queste 3 categorie ha ottime probabilità di trovare lavoro.
Poi ultimamente vanno di moda Objective C per iCosi e Javascript per il web ma sono due linguaggi abbastanza facili da padroneggiare se si conosce almeno un linguaggio della prima categoria.
Che poi avere il nome di un linguaggio sul cv serve solo per non far scartare il tuo cv da chi fa la prima scrematura (che ripeto, di solito non capisce una fava di linguaggi), chi fa la selezione vera poi normalmente non ha alcun interesse in che linguaggio conosci ma ti farà un terzo grado su tutta la tua esperienza pregressa e cercherà di valutare se sai ragionare e se gli stai abbastanza simpatico per lavorare insieme.
E dopo tutto sto smazzamento ti ritrovi un co.co.pro. a 600€ al mese a Milano centro e come benefit una stretta di mano al giorno :doh: :cry:
AnonimoVeneziano
31-10-2011, 22:31
già che ci siamo vogliamo commentare la Juventus? :asd:
Io direi che la vedo trugola capire quale è il linguaggio più usato dalle aziende, anche partendo dalle offerte di lavoro. Considerate che chi scrive le offerte di lavoro mediamente non ne capisce una beneamata mazza. Ti dicono "mi raccomando ripeti bene VHDL e studia elettronica digitale per il colloquio!" poi ti siedi e la prima domanda è "Bene, parliamo di filtri attivi e di amplificatori per strumetnazione..." :stordita:
Idem per i linguaggi di programmazione... ad un mio amico "mi raccomando preparati bene su python..." e poi al colloquio vero e proprio "ah ma noi qui usiamo solo Perl..." :muro:
La strategia migliore sembrerebbe essere avere nel cv:
1) Un linguaggio tipo C con oggetti (Java, C#, C++)
2) ANSI C e Python, per il mondo embedded (strano a dirsi ma python è usatissimo in laboratori di elettronica e similari!)
3) Un linguaggio per il web (PHP, Java o Python/Perl)
Chi può mettere nel cv almeno un elemento per queste 3 categorie ha ottime probabilità di trovare lavoro.
Poi ultimamente vanno di moda Objective C per iCosi e Javascript per il web ma sono due linguaggi abbastanza facili da padroneggiare se si conosce almeno un linguaggio della prima categoria.
Che poi avere il nome di un linguaggio sul cv serve solo per non far scartare il tuo cv da chi fa la prima scrematura (che ripeto, di solito non capisce una fava di linguaggi), chi fa la selezione vera poi normalmente non ha alcun interesse in che linguaggio conosci ma ti farà un terzo grado su tutta la tua esperienza pregressa e cercherà di valutare se sai ragionare e se gli stai abbastanza simpatico per lavorare insieme.
E dopo tutto sto smazzamento ti ritrovi un co.co.pro. a 600€ al mese a Milano centro e come benefit una stretta di mano al giorno :doh: :cry:
E' bene o male quello che intendevo io fin dall'inizio.
Beh si, avete ragione. La cosa che più mi fa arrabbiare è che c'è una certa ignoranza anche nello scrivere gli annunci....voglio dire, spesso leggo roba del genere: "Cercasi tecnico informatico, richiesta esperienza in PERL e PHP" (questo è SOLO per fare un esempio, non prendete le parole alla lettera).
Ora, io per il termine "tecnico informatico" intendo magari una persona che assembla i PC e che fa assistenza. Se cerco una figura che programma scriverò "Cercasi programmatore".
Poi lasciamo stare che ci sono annunci che cercano periti max. 23 anni con esperienza quadriennale nella programmazione in PHP (anche queste parole sono sarcastiche intendiamoci!).
E infine...in si scrive "programmo C" o "programmo il C", perchè esprimendosi così capirei "sviluppo il linguaggio C".
Insomma, si scrive "Programmi IN C" :)
Beh si, avete ragione. La cosa che più mi fa arrabbiare è che c'è una certa ignoranza anche nello scrivere gli annunci....voglio dire, spesso leggo roba del genere: "Cercasi tecnico informatico, richiesta esperienza in PERL e PHP" (questo è SOLO per fare un esempio, non prendete le parole alla lettera).
Ora, io per il termine "tecnico informatico" intendo magari una persona che assembla i PC e che fa assistenza. Se cerco una figura che programma scriverò "Cercasi programmatore".
Poi lasciamo stare che ci sono annunci che cercano periti max. 23 anni con esperienza quadriennale nella programmazione in PHP (anche queste parole sono sarcastiche intendiamoci!).
Il motivo è che spesso chi gestisce il personale non ne capisce un ca..volo di cose tecniche e spesso cercano non la persona più adatta ma "quello che gli costa meno e che in qualche modo faccia il lavoro".
Per loro tecnico < perito < ingegnere, quindi scrivono tecnico.
Non parliamo poi di quello che succede in ambito industriale, dove non è infrequente che in un azienda abbiano ben chiaro "cosa gli serve" a livello di personale,pianificazione e risorse per la parte meccanica ed elettrico/elettronica ma quando poi si arriva al software ... :muro:
La strategia migliore sembrerebbe essere avere nel cv:
1) Un linguaggio tipo C con oggetti (Java, C#, C++)
2) ANSI C e Python, per il mondo embedded (strano a dirsi ma python è usatissimo in laboratori di elettronica e similari!)
3) Un linguaggio per il web (PHP, Java o Python/Perl)
Sono d'accordo. Andare oltre il paio è inutile anche perché dire che si conoscono bene 10 o più linguaggi è una cavolata. Lo sai te quando lo scrivi e lo sanno loro quando lo leggono.
Piuttosto se in passato si è collaborato con progetti di qualsiasi tipo quello si che bisogna buttarlo tra le esperienze passate. Durante i colloqui sono sempre stati più interessati a quello avevo da dire sul kernel linux o Diamond Crush piuttosto che sul type erasure di java.
cdimauro
01-11-2011, 08:21
Durante i colloqui sono sempre stati più interessati a quello avevo da dire sul kernel linux o Diamond Crush piuttosto che sul type erasure di java.
:eek: Anche Diamond Crush? Ottimo, lo terrò presente per i prossimi colloqui, grazie. :)
banryu79
01-11-2011, 12:13
:eek: Anche Diamond Crush? Ottimo, lo terrò presente per i prossimi colloqui, grazie. :)
Ma, se non ricordo male per l'utente Ufo13 citare di aver lavorato a quel progetto è stato molto utile (non era finito a lavorare per Codemaster? Su Operation Flashpoint Dragon Rising? Non vorrei dire cavolate, ma ho questo ricordo...)
DioBrando
01-11-2011, 12:19
Ma, se non ricordo male per l'utente Ufo13 citare di aver lavorato a quel progetto è stato molto utile (non era finito a lavorare per Codemaster? Su Operation Flashpoint Dragon Rising? Non vorrei dire cavolate, ma ho questo ricordo...)
Sì :)
e poi mi sembrava fosse finito in Crytek con fek
DioBrando
01-11-2011, 12:24
Ma italiano e inglese sono due lingue diverse. Non ha senso dire che in italiano si fa in un modo perche' si fa cosi' in inglese.
Non trovo sbagliato dire "il C" soprattutto in quei casi in cui non c'e' altro che l'ellissi di "linguaggio" (i.e. "il (linguaggio) C")
E' corretto invece, perché rispondono alla medesima regola grammaticale.
Piu' che altro un testo non tradotto non ha errori di traduzione e, soprattutto in ambito informatico, meta' dei termini , essendo tecnici, stanno bene non tradotti.
Perché l'Informatica nasce come scienza di fatto nel mondo anglosassone e l'inglese ne è la sua lingua espressiva.
Meno filtri in mezzo e meno, appunto, rischi di sbagliare ;)
DioBrando
01-11-2011, 12:27
Con questa discussione sull'uso degli articoli l'inutilità delle discussioni sul sesso dei linguaggi (semicit.) di questo forum ha raggiunto tutto un'altro livello :D
Bar sport FTW!
beh, vedila in questo modo, almeno tirare dentro la lingua con cui ci si esprime è un po' più originale che vedere le cicliche discussioni da "il mio linguaggio di programmazione è più lungo del tuo" :D
già che ci siamo vogliamo commentare la Juventus? :asd:
Io direi che la vedo trugola capire quale è il linguaggio più usato dalle aziende, anche partendo dalle offerte di lavoro. Considerate che chi scrive le offerte di lavoro mediamente non ne capisce una beneamata mazza. Ti dicono "mi raccomando ripeti bene VHDL e studia elettronica digitale per il colloquio!" poi ti siedi e la prima domanda è "Bene, parliamo di filtri attivi e di amplificatori per strumetnazione..." :stordita:
Idem per i linguaggi di programmazione... ad un mio amico "mi raccomando preparati bene su python..." e poi al colloquio vero e proprio "ah ma noi qui usiamo solo Perl..." :muro:
La strategia migliore sembrerebbe essere avere nel cv:
1) Un linguaggio tipo C con oggetti (Java, C#, C++)
2) ANSI C e Python, per il mondo embedded (strano a dirsi ma python è usatissimo in laboratori di elettronica e similari!)
3) Un linguaggio per il web (PHP, Java o Python/Perl)
Perl nel web non lo chiedono più dai tempi delle CGI :mbe:
E dopo tutto sto smazzamento ti ritrovi un co.co.pro. a 600€ al mese a Milano centro e come benefit una stretta di mano al giorno :doh: :cry:
Già :(
beh, vedila in questo modo, almeno tirare dentro la lingua con cui ci si esprime è un po' più originale che vedere le cicliche discussioni da "il mio linguaggio di programmazione è più lungo del tuo" :D
Ma vediamola così dai :asd:
PS: la discussione non va da nessuna parte perchè la domanda è troppo generica, presuppone che "le aziende" siano questo blob indistinto con gli stessi requisiti e le stesse fissazioni...
quando anche all'interno di una stessa azienda ci sono diversi posti che richiedono diverse qualifiche.
Ad esempio, se uno volesse fare giochi, i test sono tutti su C e dire che conosci Java provoca grasse risate.
Se l'azienda è web PHP e JS e HTML5 contano enormemente, se usa Python serve Python, etc.
Una domanda più sensata potrebbe essere "qual'è il linguaggio più utilizzato dalle aziende del settore che mi interessa?" :read:
Se poi uno si vuole buttare a peso morto e fare l'informatico generico da azienda generica di finanza generica (stile Dilbert (http://www.dilbert.com/), per intenderci), direi Java EE + AJAX + qualsiasi altra buzzword faccia figo al momento, tanto ti pagano uguale 600€ per aggiustare i computer :asd:
DioBrando
01-11-2011, 14:29
Ma vediamola così dai :asd:
PS: la discussione non va da nessuna parte perchè la domanda è troppo generica, presuppone che "le aziende" siano questo blob indistinto con gli stessi requisiti e le stesse fissazioni...
quando anche all'interno di una stessa azienda ci sono diversi posti che richiedono diverse qualifiche.
Ad esempio, se uno volesse fare giochi, i test sono tutti su C e dire che conosci Java provoca grasse risate.
Se l'azienda è web PHP e JS e HTML5 contano enormemente, se usa Python serve Python, etc.
Una domanda più sensata potrebbe essere "qual'è il linguaggio più utilizzato dalle aziende del settore che mi interessa?" :read:
Se poi uno si vuole buttare a peso morto e fare l'informatico generico da azienda generica di finanza generica (stile Dilbert (http://www.dilbert.com/), per intenderci), direi Java EE + AJAX + qualsiasi altra buzzword faccia figo al momento, tanto ti pagano uguale 600€ per aggiustare i computer :asd:
Sono d'accordo anche perché il lavoro dello sviluppatore è talmente generico che prima di cominciare sarebbe meglio almeno capire l'ambito in cui si vorrebbe provare ad entrare (poi non è detto ci si riesca o non si debba cominciare con altro).
La domanda però secondo me non è tutto sommato sbagliata.
Si può fare una ricerca incrociata sulla base della tecnologia richiesta ed in questo caso i risultati sono cross perché si basano su tutte le offerte di lavoro delle aziende che le pubblicano.
.NET e Java sono le piattaforme più richieste ora come ora anche perché presenti pure nel mondo mobile, indubitalmente il più dinamico ed in crescita tra tutti i vari settori ITC.
E' corretto invece, perché rispondono alla medesima regola grammaticale.
Quale ?
Noi italiani abbiamo la tendenza, soprattutto nel linguaggio colloquiale, di aggiungere spesso l'articolo davanti.
In inglese dico Juventus is a football team, in italiano dico LA Juventus e' una squadra di calcio.
Curiosamente, wikipedia usa entrambe le forme, parlando di "Il C" come linguaggio da una parte e di semplice "Java" dall'altra
tecno789
01-11-2011, 21:38
Quale ?
Noi italiani abbiamo la tendenza, soprattutto nel linguaggio colloquiale, di aggiungere spesso l'articolo davanti.
In inglese dico Juventus is a football team, in italiano dico LA Juventus e' una squadra di calcio.
Curiosamente, wikipedia usa entrambe le forme, parlando di "Il C" come linguaggio da una parte e di semplice "Java" dall'altra
massi non soffermiamoci su come si dice o no, l'importante è saperlo programmare :D
il che non è molto facile :)
Comunque imho hanno aggiunto l'articolo perchè solo C stava male :D
AnonimoVeneziano
02-11-2011, 10:39
Sono d'accordo. Andare oltre il paio è inutile anche perché dire che si conoscono bene 10 o più linguaggi è una cavolata. Lo sai te quando lo scrivi e lo sanno loro quando lo leggono.
Piuttosto se in passato si è collaborato con progetti di qualsiasi tipo quello si che bisogna buttarlo tra le esperienze passate. Durante i colloqui sono sempre stati più interessati a quello avevo da dire sul kernel linux o Diamond Crush piuttosto che sul type erasure di java.
Gli hai parlato anche di diamond crush? :O
Interessante, allora anch'io tirerò l'argomento al prossimo colloquio tirando in ballo anche il pair programming che avevo fatto con fek sul sound manager :asd:
A proposito di Diamond crush.. A quando si replica con qualcosa del genere?? Io ero troppo giovine e inesperto allora. Adesso forse potrei partecipare :stordita:
banryu79
02-11-2011, 12:39
A proposito di Diamond crush.. A quando si replica con qualcosa del genere?? Io ero troppo giovine e inesperto allora. Adesso forse potrei partecipare :stordita:
Se hai un fek a portata di mano che voglia fare da coach è fatta...
In bocca al lupo :O
Ecco, no. Ma perchè? Cosa deve fare/sapere il coach? Cos'ha fek che gli utenti più esperti qui non hanno?
banryu79
02-11-2011, 13:30
Ecco, no. Ma perchè? Cosa deve fare/sapere il coach? Cos'ha fek che gli utenti più esperti qui non hanno?
Credo la solida esperienza di lavoro in un team professionale che sviluppi videogames con metodologie agili (se la tua idea era proprio di replicare l'esperienza di Diamond Crush: TDD + pair programming).
Comunque, pesantissimo OT :D
Ecco, no. Ma perchè? Cosa deve fare/sapere il coach? Cos'ha fek che gli utenti più esperti qui non hanno?
Beh, con una decina d'anni di esperienza come lead technical director prima in Lionhead e poi Crytek (se ricordo bene), direi che passa allegramente sopra a tutti gli "utenti esperti" del forum :asd:
Però flammava, tanto.
Ecco, no. Ma perchè? Cosa deve fare/sapere il coach? Cos'ha fek che gli utenti più esperti qui non hanno?
Il coach dirigeva lo sviluppo dell'intero sistema. Si partiva col decidere che particolare funzione implementare, user story, che poi doveva essere divisa in vari task più piccoli che venivano poi assegnati ai vari programmatori. Poi c'era anche il controllo della qualità del codice. Controllando i vari test e codice che venivano committati sul server. Per un progetto come diamonds già una persona non bastava. Di fatto eravamo io e fek che facevamo solo quello.
Beh, con una decina d'anni di esperienza come lead technical director prima in Lionhead e poi Crytek (se ricordo bene), direi che passa allegramente sopra a tutti gli "utenti esperti" del forum :asd:
Non e' detto che serva tutta la sua esperienza (e comunque alcuni semplicemente non parlano tanto del proprio lavoro sul forum).
Il coach dirigeva lo sviluppo dell'intero sistema. Si partiva col decidere che particolare funzione implementare, user story, che poi doveva essere divisa in vari task più piccoli che venivano poi assegnati ai vari programmatori. Poi c'era anche il controllo della qualità del codice. Controllando i vari test e codice che venivano committati sul server. Per un progetto come diamonds già una persona non bastava. Di fatto eravamo io e fek che facevamo solo quello.
Non e' detto che serva tutta la sua esperienza (e comunque alcuni semplicemente non parlano tanto del proprio lavoro sul forum).
Abbiamo due volontari! Quando si inizia? :D
banryu79
02-11-2011, 19:05
Abbiamo due volontari! Quando si inizia? :D
Eh ma quello è il meno :O
Bisogna decidere (aka: mettersi d'accordo) circa il prodotto (servono dei committenti), il linguaggio e la metodologia da adottare.
In particolare per gli ultimi due punti prevedo un tre-quattro thread alla settimana con una media di sessanta messaggi, flame rate di 1 ogni cinque messaggi circa per un totale di quattro mesi di discussione prima di arrivare a una conclusione condivisa che all'85% circa si concretizza in un "non si fa più niente" e solo nel 15% in un "noi si va" :read:
Pessimista? :D
Abbiamo due volontari! Quando si inizia? :D
Io ho tempo zero. Non potrei assolutamente seguire.
E vabbè scusate, non fa niente. E' che a me piacerebbe tanto :cry:
Perchè non raccontate ai nuovi di cosa si trattava? :)
banryu79
04-11-2011, 08:19
Perchè non raccontate ai nuovi di cosa si trattava? :)
Al progetto Diamond Crush era stata dedicata una sotto-sezione.
Se ti interessa recuperare alcuni thread per vedere le comunicazioni dei partecipanti leggi qua:
http://www.hwupgrade.it/forum/showthread.php?t=2298389
Però sappi che per comprendere un minimo il filo del discorso è bene se prima ti leggi qualcosa sul TDD (test driven development) e sul Pair Programming.
Se a qualcuno poi interessa giocarci posso buttare su da qualche parte i sorgenti.
Se a qualcuno poi interessa giocarci posso buttare su da qualche parte i sorgenti.
No! Qua vogliamo pastrugnare con il codice, altro che giocare :(
tecno789
04-11-2011, 19:10
è un gioco che avete progettato qua sul forum??
No! Qua vogliamo pastrugnare con il codice, altro che giocare :(
Intendevo giocare col codice. :P
è un gioco che avete progettato qua sul forum??
Sì, un progetto portato avanti da parecchi utenti attivi qui sul forum.
Intendevo giocare col codice. :P
Va bene :)
Edit: come si fa pair programming via internet? Usavate qualche tool particolare?
http://dl.dropbox.com/u/35475/diamond-crush.zip
Per il pair ci arrangiavamo con msn.
Vuoi lavorare? Impara allora:
C#
Html
Css
Javascript (e jquery)
Aspx
Php
Java
Li ho scritti in ordine sparso.
Comunque attualmente la tendenza che va per la maggiore sono le web application.
Vuoi lavorare? Impara allora:
C#
Html
Css
Javascript (e jquery)
Aspx
Php
Java
Li ho scritti in ordine sparso.
Comunque attualmente la tendenza che va per la maggiore sono le web application.
Visto che l'hai nominato,
qualcuno conosce un buon tutorial per jQuery?
Anche in italiano se ve ne sono
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.