PDA

View Full Version : Chi sviluppa i driver?


nico88desmo
20-07-2007, 16:22
E' una domanda a cui non ho mai avuto una risposta esatta;
chi su occupa dello sviluppo di driver per una periferica? (sk.video, audio, ecc...)
Un ingegnere elettronico, un ing. informatico o un laureato in informatica??

andbin
20-07-2007, 16:37
chi su occupa dello sviluppo di driver per una periferica? (sk.video, audio, ecc...)
Un ingegnere elettronico, un ing. informatico o un laureato in informatica??Direi ... chi ha le p.... per farlo. :p Considerando appunto che non è una cosa così banale ....

PGI-Bis
20-07-2007, 19:00
Oddio, una volta che hai le specifiche della periferica e una certa dimestichezza col sistema operativo non credo che la questione sia poi così ultraterrena.


[disclaimer]
Personalmente non saprei neanche da dove cominciare. :D

cionci
20-07-2007, 20:48
E' una domanda a cui non ho mai avuto una risposta esatta;
chi su occupa dello sviluppo di driver per una periferica? (sk.video, audio, ecc...)
Un ingegnere elettronico, un ing. informatico o un laureato in informatica??
L'ingegnere elettronico come preparazione generica dovrebbe essere il meno indicato, poi per carità non c'è niente che glielo impedisce.

nico88desmo
21-07-2007, 09:59
Quindi in teoria l'ing. informatico è più consono a farli.

dupa
21-07-2007, 10:05
E' una domanda a cui non ho mai avuto una risposta esatta;
chi su occupa dello sviluppo di driver per una periferica? (sk.video, audio, ecc...)
Un ingegnere elettronico, un ing. informatico o un laureato in informatica??

io conoscevo un ragazzo, noto per esser stato il miglior "esperto italiano in protezioni" software e tra i numeri uno anche a livello mondiale, che ora si occupa appunto di programmazione driver.

cmq come ha detto qcuno, nel momento in cui si hanno le specifiche della periferica, non credo sia nulla di così impossibile

cionci
21-07-2007, 10:46
Quindi in teoria l'ing. informatico è più consono a farli.
Diciamo che probabilmente è quello con la preparazione di base migliore per farlo.

nico88desmo
21-07-2007, 11:07
Capito.
Perchè, penso si sia capito, devo decidere che facoltà scegliere all'università, e a me intriga parecchio saper programmare l'hardware.
a questo punto sono più orientato ad ingegneria inf.

vizzz
21-07-2007, 13:02
Capito.
Perchè, penso si sia capito, devo decidere che facoltà scegliere all'università, e a me intriga parecchio saper programmare l'hardware.
a questo punto sono più orientato ad ingegneria inf.

ora scateno un mezzo flame ma io sconsiglierei ingegneria (come l'ho vista io nella facoltà che frequentai) per qualcuno che desidera veramente approfondire la programmazione come lo vuoi fare tu lavorando anche sull'hardware, quindi ad un basso livello.

nico88desmo
21-07-2007, 13:08
ora scateno un mezzo flame ma io sconsiglierei ingegneria (come l'ho vista io nella facoltà che frequentai) per qualcuno che desidera veramente approfondire la programmazione come lo vuoi fare tu lavorando anche sull'hardware, quindi ad un basso livello.

Cosa mi consiglieresti?
Ho visto scienze informatiche, però di hardware non c'è nulla...ing.elettronica la escludo a priori.
Ho pensato di fare ingegneria perchè, è vero che si fà poca programmazione, ma è anche vero che ti dà delle basi solide per vari argomenti, dall'hardware al software. Poi ho pensato che per imparare a programmare bene "basta" fare un pò di esperienza nel mondo lavorativo;
Tra l'altro di programmazione, proveniendo dalle scuole superiori un cui ho fatto informatica, non ho molti problemi e le basi le ho già.

71104
21-07-2007, 16:21
Oddio, una volta che hai le specifiche della periferica e una certa dimestichezza col sistema operativo non credo che la questione sia poi così ultraterrena. per Windows lo è. una delle (pochissime) cose per cui il cosiddetto WDM (Windows Driver Model) è stato criticato è che ha una learning curve praticamente verticale e anche piuttosto liscia; cioè così --> :mc:

:D

ricordo di aver letto tempo fa su un forum (forse CodeProject) di uno che è arrivato e ha chiesto come sviluppare un driver che facesse questo questo e quest'altro; tra parentesi, il tipo di driver che voleva fare lui era il più complesso in assoluto perché doveva emulare un filesystem. ricordo che gli hanno suggerito di imbarcarsi nell'impresa calcolando di avere almeno un anno o due solamente di tempo da dedicare alla didattica, ed essendoci passato pure io (anche se non sono arrivato ai livelli dei filesystems) non posso che concordare.

dupa
21-07-2007, 16:24
Cosa mi consiglieresti?
Ho visto scienze informatiche, però di hardware non c'è nulla...ing.elettronica la escludo a priori.
Ho pensato di fare ingegneria perchè, è vero che si fà poca programmazione, ma è anche vero che ti dà delle basi solide per vari argomenti, dall'hardware al software. Poi ho pensato che per imparare a programmare bene "basta" fare un pò di esperienza nel mondo lavorativo;
Tra l'altro di programmazione, proveniendo dalle scuole superiori un cui ho fatto informatica, non ho molti problemi e le basi le ho già.

se ti piace programmare a basso livello, potresti far un corso di ingegneria informatica o informatica e seguire un percorso con molti esami relativi ai sistemi operativi e aspetti di informatica industriale.

secondo me ti conviene prendere un sistema operativo opensource (linux o freebsd ad esempio) e iniziare a cercare di capire qualcosa del codice sorgente dei driver che fanno funzionare qualche pezzo del tuo pc (ad esempio la scheda di rete... o periferiche usb ecc.) e eventualmente provare a far qualche modifica al codice e scoprire cosa succede.

71104
21-07-2007, 16:25
Quindi in teoria l'ing. informatico è più consono a farli. secondo me no... già ad ingegneria informatica, AFAIK, fanno molta meno programmazione (a livello pratico) di noi informatici (dico "noi" perché io sto a Informatica :p), e ti assicuro che, almeno per quanto riguarda Windows, se devi sviluppare un kernel driver di "programmazione a livello pratico" devi averne fatta molta :asd:

secondo me il tipo di laureato italiano più adatto a sviluppare device drivers è l'informatico specializzato in sistemi e sicurezza (quello che alla specialistica segue il corso di Sistemi Operativi III, per intenderci: tant'è vero che mi pare che a quel corso qui alla Sapienza si sviluppi anche un driver per Linux, ma niente a che vedere con l'inferno che subiresti su Windows).

71104
21-07-2007, 16:27
ora scateno un mezzo flame ma io sconsiglierei ingegneria (come l'ho vista io nella facoltà che frequentai) per qualcuno che desidera veramente approfondire la programmazione come lo vuoi fare tu lavorando anche sull'hardware, quindi ad un basso livello. quoto :read:

71104
21-07-2007, 16:31
Capito.
Perchè, penso si sia capito, devo decidere che facoltà scegliere all'università, e a me intriga parecchio saper programmare l'hardware. quello che devi tenere ben presente è che c'è sistema operativo e sistema operativo. a te piace "programmare l'hardware" perché tu hai una determinata visione di tale attività, nella quale probabilmente predomina lo stretto contatto tra il software e l'hardware e la manipolazione dei registri della periferica, delle sue memory ranges e delle sue interrupt. su Linux potrà anche essere così, ma su Windows se lo è lo è solo al 50%: il resto è lottare col WDM :mc: :D
poi vabbè, in teoria ci sarebbe anche il discorso minidrivers.

a questo punto sono più orientato ad ingegneria inf. in base a quel poco che so io della figura di ingegnere informatico, te lo SCONSIGLIO caldamente. un ingegnere informatico è prima di tutto un ingegnere, e quindi per definizione uno che nei primi due anni deve buttare via la sua vita su materie di tipo matematico/fisico che ben poco hanno a che vedere con la programmazione dell'hardware.

cionci
21-07-2007, 16:35
Ma ti interessa anche progettare dispositivi hardware o solamente programmare driver ?

cionci
21-07-2007, 16:39
in base a quel poco che so io della figura di ingegnere informatico, te lo SCONSIGLIO caldamente. un ingegnere informatico è prima di tutto un ingegnere, e quindi per definizione uno che nei primi due anni deve buttare via la sua vita su materie di tipo matematico/fisico che ben poco hanno a che vedere con la programmazione dell'hardware.
Elettronica, elettrotecnica, reti logiche, calcolatori elettronici...che magari hanno poco a che fare con il software (anche se a calcolatori elettronici abbiamo praticamente scritto tutti i driver in assembler per un calcolatore a 32 bit), ma molto con l'hardware. Dipende da dove si ferma la sua "voglia" di hardware.

nico88desmo
21-07-2007, 18:56
Programmare driver mi basta e avanza.
Sicuramente non progetterò mai un dispositivo...mai dire mai per quello, però non è uno dei miei obiettivi principali.
A me piace molto sapere come viene "comandata" una periferica, ma progettarla non molto.

Per quanto riguarda la programmazione, ho pensato che potrei approfondirla per conto mio in modo autonomo...(curiosità: C linguaggio principe per queste cose vero?)

71104
21-07-2007, 19:04
(curiosità: C linguaggio principe per queste cose vero?) attualmente si, ma si spera (almeno io spero :D) che in futuro la cosa cambi. come dice giustamente PGI-Bis, nulla vieta la programmazione di drivers sotto piattaforme managed, come Java e .NET. dicono che il futuro di Windows è interamente .NET: speriamo che sia così anche in kernel-land, nulla vieta che i drivers attuali possano continuare ad essere supportati in retrocompatibilità con poca o nessuna perdita di performance.

nico88desmo
21-07-2007, 19:07
attualmente si, ma si spera (almeno io spero :D) che in futuro la cosa cambi. come dice giustamente PGI-Bis, nulla vieta la programmazione di drivers sotto piattaforme managed, come Java e .NET. dicono che il futuro di Windows è interamente .NET: speriamo che sia così anche in kernel-land, nulla vieta che i drivers attuali possano continuare ad essere supportati in retrocompatibilità con poca o nessuna perdita di performance.

Perchè speri? In teoria con una piattaforma managed non si avranno mai le stesse prestazioni di un C puro...forse per la compatibilità?

71104
21-07-2007, 19:09
Perchè speri? In teoria con una piattaforma managed non si avranno mai le stesse prestazioni di un C puro... falso mito :O
via, lo sanno tutti che Java ha il JIT :D

EDIT - e poi comunque sia il tempo-uomo vale molto di più del tempo-macchina. non è solo la mia esperienza personale a mostrare che in una piattaforma managed la produttività aumenta a dismisura. programmare con un garbage collector e con tutte le altre comodità è semplicemente più facile. perché rinunciarvi? qualcuno ha forse dimostrato che, solo perché il processore si trova ad un diverso livello di protezione (kernel mode), allora è impossibile per il sistema operativo implementare un garbage collector?

nico88desmo
21-07-2007, 19:20
Concordo che è meglio tener conto del tempo-uomo piuttosto che del tempo-macchina. :O
Però anche su questo non bisogna esagerare imho, si rischia di non ottimizzare al meglio li driver che si sta scrivendo.

Per linux, presumo che lo usi spesso, che software ci sono simile al strafamoso Visual studio di windows?

mindwings
21-07-2007, 19:53
un ingegnere è senza dubbio una persona qualificata a risolvere
problemi di qualsiasi genere :) premesso questo , secondo me
anche un buon ingegnere è in grado di :O (sviluppare un driver);

Dico questo perchè per laurearsi ad ingegneria ci vogliono
gli attributi ci sono esami molto difficili come analisi fisica
elettronica e tanti altri , pochi riescono a laurearsi nel tempo
giusto e molti abbandonano...
A bari mi pare che sono una decina forse 11 esami l'anno
tutti tosti.:rolleyes:

L'informatico è senza dubbio avvantaggiato perchè
si trova a studiare materie "pratiche" che lo mettono
direttamente a contatto con la materia per eccellenza(programmazione)
Ha una preparazione pratica migliore di un ingegnere
ma non è detto che l'ingegnere non posso acquisire questa
"tecnica" .Io sono del parere che ci vogliono anni prima
di definirsi programmatori quindi un vantaggio effettivo non ce lo vedo:fagiano:

Inzomm per diventari "tosti" bisogna programmare
sempre sempre sempre .


Io ho scelto informatica:D e non me ne pento

71104
21-07-2007, 21:58
Però anche su questo non bisogna esagerare imho, si rischia di non ottimizzare al meglio li driver che si sta scrivendo. ti ripeto che è un falso mito. le piattaforme managed come performance sono svantaggiate rispetto ai binari nativi solo perché i programmi sono in bytecode, ma dal momento in cui, al caricamento, il programma viene tradotto da bytecode ad assembly nativo non esiste più alcuna differenza di performance. sempre che quella che esisteva prima abbia mai contato qualcosa, con l'hardware di oggi.

ancora non ci credi? non sai che Jake (il port Java di Quake II) è più veloce dell'originale? :asd:

Per linux, presumo che lo usi spesso, che software ci sono simile al strafamoso Visual studio di windows? a dire il vero no :p Linux lo uso il meno possibile (come si evince dalla mia firma :asd: ), più lo evito meglio è. incuriosito dal tuo citare Visual Studio aggiungo che se ti interessa la programmazione di device drivers in ambiente Windows non è di quello che hai bisogno, ma piuttosto del DDK.

71104
21-07-2007, 22:02
un ingegnere è senza dubbio una persona qualificata a risolvere
problemi di qualsiasi genere :) premesso questo , secondo me
anche un buon ingegnere è in grado di :O (sviluppare un driver); ma, ammesso che non l'abbia mai fatto, ad imparare ci mette molto di più che un informatico specializzato in sistemi e sicurezza (lo stesso di prima, quello che ha programmato il driver per Linux al corso di Sistemi Operativi III :p).

Dico questo perchè per laurearsi ad ingegneria ci vogliono
gli attributi ci sono esami molto difficili come analisi fisica
elettronica e tanti altri , pochi riescono a laurearsi nel tempo
giusto e molti abbandonano...
A bari mi pare che sono una decina forse 11 esami l'anno
tutti tosti.:rolleyes: embe? :mbe: pure noi...

Io ho scelto informatica:D e non me ne pento in che città e quanti esami hai all'anno, per curiosità?

mindwings
21-07-2007, 22:17
ma, ammesso che non l'abbia mai fatto, ad imparare ci mette molto di più che un informatico specializzato in sistemi e sicurezza (lo stesso di prima, quello che ha programmato il driver per Linux al corso di Sistemi Operativi III :p).

embe? :mbe: pure noi...

in che città e quanti esami hai all'anno, per curiosità?

città bari
corso : informatica e tps
spè che linko , questo è il programma dei 3 anni senza specialistica

al primo anno (che ho frequentato)
materie come programmazione e linguaggi di programmazione
hanno come prova di valutazione anche un progetto software

http://informatica.uniba.it/laurea_produzione3/manifesto_0708.htm

mindwings
21-07-2007, 22:19
ma, ammesso che non l'abbia mai fatto, ad imparare ci mette molto di più che un informatico specializzato in sistemi e sicurezza (lo stesso di prima, quello che ha programmato il driver per Linux al corso di Sistemi Operativi III :p).

embe? :mbe: pure noi...

in che città e quanti esami hai all'anno, per curiosità?

imho la difficoltà è uguale :D
una persona che deve scrivere un driver deve studiare molto sull'argomento
specifico , che sia ingegnere o informatico:rolleyes:

quello che voglio dire
in sintesi si può riassumere in questo:

Con esperienza Zero in ambito lavortativo (per entrambi) Ingegnere Inf > Informatico

Se poi un informatico acquisisce una certa esperienza
è chiaro che ha una marcia in più rispetto all'ingegnere (tutto imho).

71104
21-07-2007, 23:18
città bari
corso : informatica e tps
spè che linko , questo è il programma dei 3 anni senza specialistica

al primo anno (che ho frequentato)
materie come programmazione e linguaggi di programmazione
hanno come prova di valutazione anche un progetto software

http://informatica.uniba.it/laurea_produzione3/manifesto_0708.htm leggendo i nomi degli esami mi pare di capire che siano si meno di numero, ma doppi come dimensione. da noi ad esempio al primo anno ci sono 3 corsi di programmazione: programmazione 1, 2, e laboratorio; da voi invece un corso solo con anche il laboratorio. analogamente, noi abbiamo due corsi di analisi (calcolo differenziale e calcolo integrale) mentre voi ne avete solo uno, e abbiamo due corsi di architettura degli elaboratori uno dei quali include anche una prova di assembly (ah, il PowerPC, questo odiosissimo -.- ).
non ti credere che ingegneria sia più difficile solo per il numero di esami: semplicemente loro, come noi di Informatica a Roma, avranno esami semestrali anziché annuali :D

71104
21-07-2007, 23:23
imho la difficoltà è uguale :D
una persona che deve scrivere un driver deve studiare molto sull'argomento
specifico , che sia ingegnere o informatico:rolleyes: provo a scriverlo in altri termini...
in certe specializzazioni di Informatica gli studenti imparano già all'università a scrivere drivers. non sarà una cosa infernale come per Windows, ma non sarà neanche una passeggiata.
capito? :rolleyes:

Con esperienza Zero in ambito lavortativo (per entrambi) Ingegnere Inf > Informatico per quanto detto sopra, il paragone che fai non ha senso. certo se poi confronti un inegnere informatico con un informatico specializzato in Interazione Uomo-Macchina... -.-'

AnonimoVeneziano
21-07-2007, 23:38
Ingegneria informatica è decisamente la facoltà migliore .

Perchè?

Ma che domande! Perchè ci sono io :D

Ciao

cionci
22-07-2007, 00:12
provo a scriverlo in altri termini...
in certe specializzazioni di Informatica gli studenti imparano già all'università a scrivere drivers. non sarà una cosa infernale come per Windows, ma non sarà neanche una passeggiata.
capito? :rolleyes:
Perché credi che ad ingegneria informatica non lo facciamo ? Mi sembra che tu abbia un po' una visione distorta di quello che facciamo ad ingegneria.
Giusto per farti un esempio (che avevo citato anche prima) a calcolatori elettronici ci insegnano a scrivere driver su interrupt in assembly per diverse periferiche.
Poi è successo a molti miei amici di dover scrivere driver per veri sistemi operativi (generalmente Linux), per tesi o anche solo per progetti (alcuni esempi che mi ricordo: per riconoscitori di impronte digitali oppure per il controllo di un sistema a levitazione magnetica).
Una delle tesi che ha avuto più successo negli anni passati era la scrittura di un SO distribuito...anche se poi è fallito (diventato negli anni obsoleto) non mi sembra un cosa così banale.
Attualmente vanno molto le tesi sui sistemi operativi real-time (che mi immagino ad informatica trattiate solo in maniera marginale) per i quali vengono sviluppati driver, sistemi di controllo ed addirittura algoritmi di scheduling innovativi (è successo anche questo).
Ma il networking a che livello lo fate ? Routing ? Sicurezza ? Corsi CCNA e CCNP nell'università li fate (valgono anche crediti) ?
Ad esempio, persone che conosco stanno sviluppando un sistema di guida automatica per un aereo e per un "triciclo". Il "triciclo" autonomamente (tramite acquisizione video) evita gli ostacoli e si accorge di trovarsi in un percorso chiuso e torna indietro, ti sembra che ci sia poca informatica qui ?
La mia prof. di Ingegneria della conoscenza ad esempio ha passato molti anni a fare lo studio di un sistema per il riconoscimento della scrittura manuale. Ti sembra che ci sia poca informatica ?
Io sto facendo una tesi con un professore che è anni che sviluppa per un sistema operativo per Grid computing. Ti sembra che ci sia poca informatica ?
Un mio professore partecipa alla stesura dei draft all'IETF e ha scritto innumerevoli driver e servizi per BSD. Microsoft ha copiato del suo codice è l'ha incluso in Windows XP, non ci credi ?
Altri ricercatori stanno lavorando ad un sistema di verificatore sintattico di bytecode. Ti sembra che ci sia poca informatica ?
Un mio amico che ora lavora in un centro di ricerca Telecom ha creato un algoritmo di gestione della coda di un router completamente innovativo che impedisce la saturazione del buffer del router.
Un mia amica ha lavorato alla dimostrazione teorica di una ipotesi sul routing. Un anno intero a lavorare sulla teoria delle code.
Quindi non è che gli argomenti strettamente informatici innovativi vengano trattati solo dagli infromatici, l'unica differenza è che a voi ve li insegnano, mentre noi ce li studiamo da soli con l'obiettivo di applicarli ad un progetto.

AnonimoVeneziano
22-07-2007, 00:57
Sicuramente credo che se pigli un informatico e lo metti a lavorare su un controllore automatico di qualsiasi genere (come se ne usano parecchi oggi giorno) sicuramente si trova in crisi non sapendo nulla di automatica ad esempio.

Sono facoltà che si orientano verso priorità diverse, ma non per questo una deve essere migliore dell'altra.

Personalmente ho scelto ingegneria anche pensando che un giorno mi piacerebbe lavorare dove l'informatica si usa a livello pratico per risolvere problemi a livello ingegneristico, non che un informatico non se sia in grado, ma il fatto che la formazione di ingegneria si basa proprio su quello (risolvere problemi tramite l'informatica) un ing è sicuramente + preparato sotto quest'aspetto.

Tutto ovviamente IMHO , visto che so poco della facoltà di informatica, a parte il piano del corso di studi ;)

Ciao

jappilas
22-07-2007, 03:28
<...>
Giusto per farti un esempio (che avevo citato anche prima) a calcolatori elettronici ci insegnano a scrivere driver su interrupt in assembly per diverse periferiche.
<...>nonchè a sintetizzare (in linguaggi HW - descriptive) e simulare direttamente le periferiche ... :stordita:

cionci
22-07-2007, 07:19
nonchè a sintetizzare (in linguaggi HW - descriptive) e simulare direttamente le periferiche ... :stordita:
Quello ad altre materie...infatti abbiamo studiato sia Verilog (abbiamo realizzato anche un processore X86 compatibile) che VHDL.

dupa
22-07-2007, 09:12
Quello ad altre materie...infatti abbiamo studiato sia Verilog (abbiamo realizzato anche un processore X86 compatibile) che VHDL.

Io, sempre a ingegneria avevo visto anche SystemC
http://en.wikipedia.org/wiki/Systemc

71104
22-07-2007, 09:17
@cionci: meicojoni :huh:

però su una cosa vi freghiamo :asd:
noi anziché il triciclo realizziamo un biciclo che cammina reggendosi in equilibrio dinamico; LEGO Mindstorms :Prrr:

nico88desmo
22-07-2007, 10:03
Interessanti tutti i commenti! :D
Comunque, a quanto pare, le differenze tra un corso di studi e l'altro non è così marcata tutto sommato;
ieri, per quanto concerne l'università di padova, ho confrontato il piano di studi di entrambe le facoltà e mi è parso questo:

ing. inf = più elettronica e automazione;
inf = più programmazione;

Tra l'altro, nelle 2 facoltà c'erano 26 corsi in comune!!! (considerando triennale più specialistica).

Nel mondo lavorativo poi ho pensato, le persone con queste lauree si troveranno a collaborare, quindi una compenserà l'altra nelle zone in cui si è più carenti.

Interessante e affascinante lo sviluppo di un OS :). Non oso immaginare quanto lavoro ci sia dietro!

ps per gli informatici: ma di programmazione cosa insegnano? Un pò in generale vorrei sapere..

mindwings
22-07-2007, 10:07
leggendo i nomi degli esami mi pare di capire che siano si meno di numero, ma doppi come dimensione. da noi ad esempio al primo anno ci sono 3 corsi di programmazione: programmazione 1, 2, e laboratorio; da voi invece un corso solo con anche il laboratorio. analogamente, noi abbiamo due corsi di analisi (calcolo differenziale e calcolo integrale) mentre voi ne avete solo uno, e abbiamo due corsi di architettura degli elaboratori uno dei quali include anche una prova di assembly (ah, il PowerPC, questo odiosissimo -.- ).
non ti credere che ingegneria sia più difficile solo per il numero di esami: semplicemente loro, come noi di Informatica a Roma, avranno esami semestrali anziché annuali :D

:fagiano: effettivamente noi abbiamo fatto la prova di assembly
(mitico 8086) insieme all'esame di architettura , all inclusive:mad:
cosi come programmazione ed analisi...

71104
22-07-2007, 10:13
ps per gli informatici: ma di programmazione cosa insegnano? Un pò in generale vorrei sapere.. un po' di tutto, o almeno ci provano, ma il problema di molte università è che non riescono a stare al passo coi tempi. a Programmazione 1 insegnano ancora C, a Grafica 3D insegnano ancora OpenGL, e ho persino avuto un professore che ha avuto l'ardire di insegnare C++ a Programmazione a Oggetti :cry: 70% del tempo del corso sprecato ad insegnare praticamente il C :asd:

cionci
22-07-2007, 10:15
:fagiano: effettivamente noi abbiamo fatto la prova di assembly
(mitico 8086) insieme all'esame di architettura , all inclusive:mad:
cosi come programmazione ed analisi...
Noi abbiamo fatto 2 esami sull'assembly...in uno bisogna convertire codice C++ (classi molto semplici) in assembly rispettando le convenzioni di chiamata, in modo che la classe fosse richiamabile da altro codice C++ e linkabile a questo.

mindwings
22-07-2007, 10:17
cut cut cut
ps per gli informatici: ma di programmazione cosa insegnano? Un pò in generale vorrei sapere..

Io sono al primo anno di info. e fino ad ora ho avuto a che fare con la programmazione in 3 esami

Architettura ---> linguaggio assemblativo:D (una goduria di overflows)

Programmazione---> basi di programmazione in ambito OOP (Java)
con lo sviluppo di un piccolo progetto comprensivo
di documentazione

Linguaggi di Programmazione---> sviluppo di una grammatica per un linguaggio dove un tool (JavaCC) genera le classi relative ad uno scanner ed un parser per la parserizzazione della grammatica sviluppata. (+gestione degli errori in fase di parserizzazione)


La mia facoltà garantisce delle solide basi di programmazione
ma poi sta a me studiare studiare studiare / programmare programmare programmare
per diventare un buon developer ( I Hope ) :D

cionci
22-07-2007, 10:18
un po' di tutto, o almeno ci provano, ma il problema di molte università è che non riescono a stare al passo coi tempi. a Programmazione 1 insegnano ancora C, a Grafica 3D insegnano ancora OpenGL, e ho persino avuto un professore che ha avuto l'ardire di insegnare C++ a Programmazione a Oggetti :cry: 70% del tempo del corso sprecato ad insegnare praticamente il C :asd:
Noi abbiamo sempre fatto C++ (ora anche Java), tranne che per un esame in cui si doveva usare il C per fare i progetti (un codificatore/decodificatore di Hoffman e la modifica di un programma OpenSource a scelta). Il C però lo hanno dato per scontato :D

mindwings
22-07-2007, 10:29
Noi abbiamo sempre fatto C++ (ora anche Java), tranne che per un esame in cui si doveva usare il C per fare i progetti (un codificatore/decodificatore di Hoffman e la modifica di un programma OpenSource a scelta). Il C però lo hanno dato per scontato :D


L'informatico qualche vantaggio imho ce l'ha:Perfido:
in primis chi esce da ingegneria di solito

1) E' preso dal delirio di onnipotenza crede di saper fare tutto :O
proprio nel campo dell'inf. in generale è impossibile conoscere
tutto di tutto !

2) Rischia di uscire logorato da una facoltà di ing. a causa del massacro
a cui è sottoposto:D

al contrario un informatico
1) dovrebbe essere più fresco:) e pronto ad accrescere le proprie skills
in tempi più o meno brevi (nell'immediato)

2) Potrebbe entrare direttamente nel mondo dell 'IT in tempi brevissimi
un settore che in italia è in continua crescita

cionci
22-07-2007, 10:53
1) E' preso dal delirio di onnipotenza crede di saper fare tutto :O
proprio nel campo dell'inf. in generale è impossibile conoscere
tutto di tutto !
Almeno dalle nostre parti non credo proprio...siamo ben consci di sapere poco e male di qualcosa :D

mindwings
22-07-2007, 11:00
Almeno dalle nostre parti non credo proprio...siamo ben consci di sapere poco e male di qualcosa :D

io invece dico di si :D
cmq dalle vostre parti fate un programma di studio ottimo:)
poi ovviamente dipende dai docenti , se sono in gamba riescono
a trasmettere molto (anche la passione):O

Unrue
22-07-2007, 18:54
in base a quel poco che so io della figura di ingegnere informatico, te lo SCONSIGLIO caldamente. un ingegnere informatico è prima di tutto un ingegnere, e quindi per definizione uno che nei primi due anni deve buttare via la sua vita su materie di tipo matematico/fisico che ben poco hanno a che vedere con la programmazione dell'hardware.

Buttare via?:mbe:

Io faccio Ingegneria Informatica, Laurea Specialistica, ma di hardware non ho visto molto. Programmazione di basso livello può esserci, nel senso che dipende dalla Facoltà. Ad esempio, su molti progetti, potreste essere voi stessi che spingete per fare programmi di basso livello. In diversi esami può essere richiesto ( Calcolatori Elettronici I e II ad esempio). Però ripeto: dipende dalla Facoltà, non tanto da Ingegneria Informatica in senso generale.

Ho letto prima che per alcuni l'Ingegnere Elettronico è il meno adatto per programmazione di basso livello.. ma scusate: uno che progetta hardware secondo voi non lo sa programmare ?

cionci
22-07-2007, 18:59
Ho letto prima che per alcuni l'Ingegnere Elettronico è il meno adatto per programmazione di basso livello.. ma scusate: uno che progetta hardware secondo voi non lo sa programmare ?
Un conto è programmazione/progettazione di hardware, un conto è la scrittura di un driver. Io ho detto solo che come preparazione base (fornitagli dalla facoltà) l'ingegnere elettronico è il meno adatto a programmare un driver per un sistema operativo moderno.

71104
22-07-2007, 19:49
Buttare via?:mbe: partiamo dal presupposto che il primo biennio di Ingegneria è difficile :D tant'è vero che non è quasi mai un biennio in senso stretto :asd:
posto questo, l'espressione "buttare via" non potrebbe trovare alternativa migliore, dal momento che, anche se non l'ho provato di persona ma mi sono limitato ad osservare alcuni miei ex compagni di liceo, per fare Ingegneria tocca rinunciare a molte cose in favore dello studio.

Ho letto prima che per alcuni l'Ingegnere Elettronico è il meno adatto per programmazione di basso livello.. ma scusate: uno che progetta hardware secondo voi non lo sa programmare ? i device drivers non devono andare a contatto solo con l'hardware, ma anche col software, e si tratta anche di un software estremamente complesso (il sistema operativo). non ho il minimo dubbio che un ingegnere elettronico sappia quale codice assembly va eseguito per far fare questo o quello alla periferica che lui stesso ha progettato.

Unrue
22-07-2007, 20:32
partiamo dal presupposto che il primo biennio di Ingegneria è difficile :D tant'è vero che non è quasi mai un biennio in senso stretto :asd:

A parte che è un triennio e non un biennio. Ma non ho capito, stai dicendo che la Laurea triennale di Ingegneria è semplice?


posto questo, l'espressione "buttare via" non potrebbe trovare alternativa migliore, dal momento che, anche se non l'ho provato di persona ma mi sono limitato ad osservare alcuni miei ex compagni di liceo, per fare Ingegneria tocca rinunciare a molte cose in favore dello studio.



Continuo a non capire cosa vuoi dire..


i device drivers non devono andare a contatto solo con l'hardware, ma anche col software, e si tratta anche di un software estremamente complesso (il sistema operativo). non ho il minimo dubbio che un ingegnere elettronico sappia quale codice assembly va eseguito per far fare questo o quello alla periferica che lui stesso ha progettato.

Diciamo che molto spesso le "professioni" si confondono. In fondo, a livello di programmazione, non è che ci sia grandissima differenza tra Ingegnere Elettronico, Ingegnere Informatico, o Informatico. Tutti e tre potenzialmente sono in grado di programmare a basso livello.

Unrue
22-07-2007, 20:38
Un conto è programmazione/progettazione di hardware, un conto è la scrittura di un driver. Io ho detto solo che come preparazione base (fornitagli dalla facoltà) l'ingegnere elettronico è il meno adatto a programmare un driver per un sistema operativo moderno.

Non sono d'accordo. Anzi, colui che lo ha progettato è in grado di sfruttare appieno le potenzialità dell' hardware. Cosa che magari un'altro , leggendo il manuale delle specifiche, non riesce a fare immediatamente.

cionci
22-07-2007, 20:59
Non sono d'accordo. Anzi, colui che lo ha progettato è in grado di sfruttare appieno le potenzialità dell' hardware. Cosa che magari un'altro , leggendo il manuale delle specifiche, non riesce a fare immediatamente.
Ripeto che io parlo di preparazione universitaria, non di preparazione acquisita in proprio.
Difficile che sappia dove mettere le mani se il programma più complesso che ha fatto durante l'università riguarda input-ouput su file in C ;)
Quindi saprebbe sicuramente sfruttare a pieno le potenzialità dell'hardware che ha progettato, ma non avrebbe gli strumenti adatti per svilupparlo. Sfrutterebbe magari anche l'hardware al 100%, ma perderebbe il 90% in errori di programmazione ed in problemi di sincronizzazione.

Ribadisco che se uno studia e fa pratica non ci sono problemi, tant'è che un mio amico ing. elettronico programma proprio driver, ma bene o male ha sempre programmato per hobby.
Imho non ci si inventa programmatori in un giorno, ma ci vuole molto tempo, trovandosi a risolvere giorno per giorno i problemi più comuni che più o meno tutti abbiamo avuto. Per questo continuo a pensare che il meno adatto dei tre sia l'ing. elettronico.

nico88desmo
22-07-2007, 21:35
Quindi la programmazione che si fà all'università dà le basi per un lavoro da sviluppatore in futuro; tuttavia è compito proprio approfondire la programmazione ed allenarsi, giusto?

Poi tra l'altro, dipende dal prof. che si incontra: come in tutte le cose, ci sono diversi modi per spiegare la stessa cosa.
Se poi, come detto precedentemente, in un corso di programmazione ad oggetti in C++ si sfrutta il 70% del tempo ad imparare il C..:confused:

A me programmare piace...apre la mente. :D
Però, provenendo da 3 anni di spec. Informatica (superiori, diplomato da poco :D), dove ho programmato C, Java...le basi penso di averle già: io non so quanto si approfondisca all'università di programmazione, sicuramente di più di quanto ho fatto io, però non so se vale la pena fare ulteriori corsi di cose che quasi sicuramente ho già fatto. Che dite?

nico88desmo
23-07-2007, 18:37
up

tomminno
24-07-2007, 08:37
ora scateno un mezzo flame ma io sconsiglierei ingegneria (come l'ho vista io nella facoltà che frequentai) per qualcuno che desidera veramente approfondire la programmazione come lo vuoi fare tu lavorando anche sull'hardware, quindi ad un basso livello.

Da quotare specialmente perchè Ingegneria Informatica non sforna programmatori ma ingegneri :D

AnonimoVeneziano
24-07-2007, 09:03
Beh, un programmatore è una mera macchinetta che scrive codice, non ci vuole una facoltà per prepararne uno :p

Lo scopo delle facolta di Info e Ing Info va ben oltre la preparazione di meri programmatori ...

recoil
24-07-2007, 09:11
parlando nel nostro piccolo (il team a Milano è di ben 2 persone) posso dire che ci occupiamo di embedded, inteso sia come scrittura di driver che di applicazioni, io (informatica 3+2) e un ing. elettronico.
prima, come terzo membro del team, c'era un ing. telecomunicazioni e prima ancora un altro, stesso corso di laurea. per ora ancora nessun ingegnere informatico anche se qualcuno è convinto che io lo sia e mi chiama ing :asd:

non c'è una laurea specifica per lavorare in sto campo

mindwings
24-07-2007, 10:14
Beh, un programmatore è una mera macchinetta che scrive codice, non ci vuole una facoltà per prepararne uno :p

Lo scopo delle facolta di Info e Ing Info va ben oltre la preparazione di meri programmatori ...
concordo :)

up

fai quello che ti riesce meglio e fallo al massimo :D

akyra
24-07-2007, 10:25
è una cosa ciclica, ste discussioni sull'eterna faida tra ingegneria informatica ed informatica nascono e muoiono di continuo.... :)

non si arriverà mai da nessuna parte, per il semplice motivo che ENTRAMBE sono difficili....io faccio informatica, e devo dire che mi sto facendo un culo grande come una casa (scusate il francesismo), e di esami facili ne ho visti ben ben ben pochissimi....basti pensare che a Calcolo 2 ci siam presentati in un centinaio al primo appello, e nell'arco di 1 anno abbiamo passato l'esame sì e no in 15....abbastanza indicativo visto che è un corso del primo anno....se dovevano atterrire la gente ci sono riusciti alla grande!

per non parlare del prof di matematica discreta, che se la gode ad ogni sessione ad appendere in bacheca il suo lindo foglietto bianco con su scritto "dei 100 che si sono presentati nessuno è risultato sufficiente"

all'esame di analisi e progetto di algoritmi, tenuto dal presidente di facoltà, oltre che allo scritto, m'ha fatto pure fare un orale di un'ora e un quarto....chi conosce la materia sa cosa vuol dire far dimostrazioni per più di un'ora alla lavagna, ricordandosi tutti gli algoritmi con relative prove di correttezza e calcoli della complessità, cercando al contempo di non dire mai cazzate che non si possono sostenere....beh dopo più di un'ora di orale con quel pazzo sono uscito che mi sembrava di essere gandhi (nell'aspetto)

sarà...ma sinceramente parlare di difficoltà o facilità tra queste due facoltà mi sembra assai assurdo....non me ne voglia chi le fa, ma se allora confrontassimo ingegneria con scienze della comunicazione o scienze politiche (senza offesa), allora sì che sottolineerei la difficoltà della prima dei confronti delle seconde....opinione personale...

cionci
24-07-2007, 10:43
sarà...ma sinceramente parlare di difficoltà o facilità tra queste due facoltà mi sembra assai assurdo....non me ne vogliano chi le fa, ma se allora confrontassimo ingegneria con scienze della comunicazione o scienze politiche (senza offesa), allora sì che sottolineerei la difficoltà della prima dei confronti delle seconde....opinione personale...
Io concordo on te...ma diglielo a 71104, si vede che pensa che la sua facoltà sia facile, visto che fa informatica :asd:

nico88desmo
24-07-2007, 11:19
fai quello che ti riesce meglio e fallo al massimo :D

Ok! :D
Comunque data la somiglianza delle 2 facoltà, a questo punto sono quasi sicuro che le possibilità di lavoro siano simili.
Dato che a me piace programmare, però vorrei conoscere anche un minimo di funzionamento hardware, penso di scegliere ingegneria. Per la programmazione, o farò da autodidatta o imparerò lavorando in un team di sviluppo se avrò la fortuna di trovare un lavoro simile.

71104
24-07-2007, 11:23
si vede che pensa che la sua facoltà sia facile, visto che fa informatica :asd: :wtf:

cionci
24-07-2007, 11:26
:wtf:
Sei stato te il primo, e forse unico, a dire che ingegneria è più difficile di informatica ;)

vizzz
24-07-2007, 11:31
Ok! :D
Comunque data la somiglianza delle 2 facoltà, a questo punto sono quasi sicuro che le possibilità di lavoro siano simili.
Dato che a me piace programmare, però vorrei conoscere anche un minimo di funzionamento hardware, penso di scegliere ingegneria. Per la programmazione, o farò da autodidatta o imparerò lavorando in un team di sviluppo se avrò la fortuna di trovare un lavoro simile.

ti do un consiglio...non dimenticare tutti gli esami collaterali che dovrai obbligatoriamente fare in un corso di ingegneria: chimica, fisica e altre cose di cui te ne fregherà meno di zero e probabilmente non ti serviranno mai.
cerca i due piani di studio e confrontali, vedi tu dove pensi di poter apprendere il massimo e quello che veramente ti interessa.
ciao

71104
24-07-2007, 11:31
Sei stato te il primo, e forse unico, a dire che ingegneria è più difficile di informatica ;) non più difficile di Informatica, ma difficile in generale per uno che si aspetta di programmare perché include corsi poco attinenti...

recoil
24-07-2007, 11:32
Sei stato te il primo, e forse unico, a dire che ingegneria è più difficile di informatica ;)

io l'ho sempre pensato, almeno sulla carta vedendo le materie, poi non so
magari a 70 anni quando non avrò un cazzo da fare proverò a iscrivermi a ingegneria per vedere com'è :asd:

comunque non credo sia possibile stabilire a priori quale sia la più difficile.
ing mi ha sempre dato l'idea di essere più pesante come orari e come cose da studiare, ma per quanto ne so può darsi che la preparazione sia migliore e che quindi passare gli esami sia meno difficile.
l'impressione, a informatica, era che certi esami fossero un terno al lotto invece

71104
24-07-2007, 11:32
ti do un consiglio...non dimenticare tutti gli esami collaterali che dovrai obbligatoriamente fare in un corso di ingegneria: chimica, fisica e altre cose di cui te ne fregherà meno di zero e probabilmente non ti serviranno mai. bingo

71104
24-07-2007, 11:33
l'impressione, a informatica, era che certi esami fossero un terno al lotto invece l'hai detto :cry:

nico88desmo
24-07-2007, 11:42
ti do un consiglio...non dimenticare tutti gli esami collaterali che dovrai obbligatoriamente fare in un corso di ingegneria: chimica, fisica e altre cose di cui te ne fregherà meno di zero e probabilmente non ti serviranno mai.
cerca i due piani di studio e confrontali, vedi tu dove pensi di poter apprendere il massimo e quello che veramente ti interessa.
ciao

Ho dato un'occhiata...per fortuna chimica non è presente nel piano di studi.
Fisica si, però non mi dispiace come materia tutto sommato, anche se non mi sarà utile sicuramente per il futuro.
In pratica il primo anno è solo matematica e fisica, qualcosa sui circuiti logici e fondamenti di informatica.

http://www.ing.unipd.it/index.php?page=OrTri
(andare nella sez. ing. informatica e ci sono divisi in 3 anni e i 3 trimestri di ogni anno)

Questo è il link per i corsi di ing.inf. dello scorso anno.

cionci
24-07-2007, 11:54
comunque non credo sia possibile stabilire a priori quale sia la più difficile.
Diciamo che la cosa cambia da facoltà a facoltà. Ci sta che a Firenze (giusto per fare un esempio), informatica sia più difficile di ingegneria.
Poi è chiaro che se non ti piacciono le materie non informatiche ti sembrerà più difficile ingegneria ;)

akyra
24-07-2007, 14:03
non dimenticare tutti gli esami collaterali che dovrai obbligatoriamente fare in un corso di ingegneria: chimica, fisica e altre cose di cui te ne fregherà meno di zero e probabilmente non ti serviranno mai.
cerca i due piani di studio e confrontali, vedi tu dove pensi di poter apprendere il massimo e quello che veramente ti interessa.
ciao
quest'uomo ha colto nel segno

bisogna stare attenti a quali sono i corsi da lama nei polsi, quelli in cui alla prima lezione ti devi sedere per terra da quanto sono affollati e guardandoti intorno ti ripeti "di queste 150 persone, farò mai io parte di quel 10% che lo passerà?:( "

devi guardare all'università con occhi abbastanza disillusi....non come me, che quando mi sono iscritto, a suo tempo, mi ripetevo "beh, alla fine non ci sono molti esami prettamente matematici....".......no, certo, infatti informatica l'hanno messa sotto la facoltà di matematica perchè in corsi come matematica discreta insegnano una matematica che è a tua discrezione se studiarla o no, oppure all'esame di calcolo prende 30 chi si riesce a ricordare come cazzo si faceva la prova del 9...

sono proprio quei corsi dove ti troverai ad affrontare quei professori,giovanotti di 50 anni, che hanno passato gli ultimi 25 ad aspettare quel giorno in cui sarebbe arrivato un cojone come voi ( ovviamente sarcastico, concedetemelo :) ) che all'appello gli dica "ma professore, senza dubbio da quello che ho capito risulta evidente che P=NP!!!", e per rifarsi di tutti i torti che la vita gli ha riservato vi congederà con un emblematico "ci rivediamo al prossimo appello" condito con ghigno perverso mentre chiudete la porta del suo studio e vi preparate ad un'estate da gobba sui libri invece che da mojito in spiaggia...

....alla fine non è così terribile dai :asd:

@nico88desmo:
ho visto che l'ingegneria di cui parli è padova per cui deduco che sei delle mie zone.
A Padova c'è sia questl'ultima che informatica, ma se decidessi di fare informatica invece che ingegneria, io andrei a farla a Venezia invece che Padova, almeno perchè a Venezia hai una bella struttura con un bel polo unversitario con laboratori ecc....io avevo iniziato informatica a Padova, dopo che ho visto le lezioni nelle aule da 20 persone con una media di 1000 studenti, e dopo aver visto i PC del laboratorio con 1 commodore 64 ogni 3 studenti, me ne sono andato a Venezia....anche se dopo gli sviluppi degli ultimi anni (diffcoltà aumentata in certi corsi chiave) alcuni hanno pensato bene di fare la migrazione inversa

vizzz
24-07-2007, 15:01
quest'uomo ha colto nel segno



è mi è bastato un solo semestre per capirlo! :Prrr:
ho incominciato a lavorare e ne sono felice (però dove facevo io ing. praticamente era ing. gestionale con qualche esame di info)

tomminno
24-07-2007, 21:30
ti do un consiglio...non dimenticare tutti gli esami collaterali che dovrai obbligatoriamente fare in un corso di ingegneria: chimica, fisica e altre cose di cui te ne fregherà meno di zero e probabilmente non ti serviranno mai.


Almeno finchè non andrai a lavorare per un'azienda chimica a sviluppare un controllo dei processi produttivi :D

Se l'obiettivo lavorativo della vita è fare il programmatore andare ad ingegneria è tempo perso, se come lavoro intendi aspirare a qualcosa di diverso allora è la scelta giusta.

Ma sono l'unico a cui ad Ingegneria hanno ripetuto fino alla nausea che un ingegnere non è un programmatore?
Dando naturalmente per scontato che chi vi si iscrive deve saper programmare per scienza infusa: della serie date printf e scanf creare un riconoscitore di cartelli stradali a partire da foto e da filmati mpeg.

nico88desmo
24-07-2007, 22:14
Almeno finchè non andrai a lavorare per un'azienda chimica a sviluppare un controllo dei processi produttivi :D

Se l'obiettivo lavorativo della vita è fare il programmatore andare ad ingegneria è tempo perso, se come lavoro intendi aspirare a qualcosa di diverso allora è la scelta giusta.

Ma sono l'unico a cui ad Ingegneria hanno ripetuto fino alla nausea che un ingegnere non è un programmatore?
Dando naturalmente per scontato che chi vi si iscrive deve saper programmare per scienza infusa: della serie date printf e scanf creare un riconoscitore di cartelli stradali a partire da foto e da filmati mpeg.

Tu sei un ingegnere?

tomminno
25-07-2007, 08:56
Tu sei un ingegnere?

Purtroppo si e alla fine faccio il programmatore di mestiere, perchè in Italia di lavori per ingegnere ce ne sono pochi (e certamente sono meglio pagati del programmatore)

nico88desmo
25-07-2007, 10:54
Purtroppo si e alla fine faccio il programmatore di mestiere, perchè in Italia di lavori per ingegnere ce ne sono pochi (e certamente sono meglio pagati del programmatore)

Perchè purtroppo? Perchè c'è poco lavoro o perchè a te piace programmare?