 
View Full Version : ASSEMBLER
SAIRUS77
27-04-2006, 22:20
Ciao a tutti,
è il primo post in questo forum così bello e ricco di info.
Vorrei,subito,porre un mio dubbio:
il lavoro del Programmatore è ancora richiesto? O meglio è difficile trovare "come professionalità specifica" il programmatore Assembler?
Ho letto qualcosa di questo potente (e complicato) linguaggio di programmazione e vorrei investirci qualcosa del mio tempo ma avrei un riscontro lavorativo dopo?
ciao
tomminno
27-04-2006, 23:49
Ciao a tutti,
è il primo post in questo forum così bello e ricco di info.
Vorrei,subito,porre un mio dubbio:
il lavoro del Programmatore è ancora richiesto? O meglio è difficile trovare "come professionalità specifica" il programmatore Assembler?
Ho letto qualcosa di questo potente (e complicato) linguaggio di programmazione e vorrei investirci qualcosa del mio tempo ma avrei un riscontro lavorativo dopo?
ciao
Ogni famiglia di CPU ha il suo assembler, quindi non ce n'è uno solo ma migliaia. 
Se pensi ad imparare l'assembly della famiglia x86, per scopi lavorativi faresti meglio a rivolgere le tue attenzioni altrove.
Per applicazioni scientifiche può risultare utile per scrivere qualche routine che sfrutti direttamente le estensioni tipo SSE, ma generalmente queste vengono incluse all'interno di codice C/C++ e non costituiscono certo una parte fondamentale per il programma.
Con le CPU ad esecuzione specualtiva è molto più facile che il compilatore di un qualunque linguaggio di alto livello riesca a scrivere codice più performante.
Inoltre l'assembly, per sua natura, tende ad interfacciarsi direttamente con l'hardware mentre i moderni OS tendono a nasconderlo attravero interfacce appropriate.
So che in alcuni posti programmano ancora in assembly dei microcontrollori per scopi specifici (l'ho visto alla Pignone di Firenze per sistemi periferici dedicati al controllo ferroviario), ma il motivo è che in quegli ambiti anche una chiamata a funzione risulterebbe troppo lenta a causa delle ristrettezze di risorse, in questo caso conoscere l'assembly x86 ti servirebbe a poco.
Sono anni ormai che anche i micro da pochi MIPS si programmano in C.
Ciao a tutti,
è il primo post in questo forum così bello e ricco di info.
Vorrei,subito,porre un mio dubbio:
il lavoro del Programmatore è ancora richiesto? O meglio è difficile trovare "come professionalità specifica" il programmatore Assembler?
Ho letto qualcosa di questo potente (e complicato) linguaggio di programmazione e vorrei investirci qualcosa del mio tempo ma avrei un riscontro lavorativo dopo?
ciao molto difficilmente, e sicuramente non in Italia; ma soprattutto non dovrebbe essere la tua unica conoscenza in fatto di linguaggi di programmazione. se vuoi imparare il funzionamento di un computer a basso livello per pura sete di cultura personale allora è tutto un altro discorso e sei giustificatissimo. ma chiaramente dipende dal tempo che hai a disposizione.
SAIRUS77
28-04-2006, 20:23
ciao,
quindi sarebbe opportuno o esclusivo imparare direttamente in C++?
La cosa che non capisco (scusate l'ignoranza)come fare ad interffacciare un programma scritto in C++ con l'hardware di un pc??
Forse avrò scritto una stupidaggine e me ne scuso.
ciao
tramite il compilatore...è questo il vantaggio dei linguaggi ad alto livello...che appunto no dipendono direttamente dall'hw. io, essendo ancora 1studente, non so dirti se sul mercato sono richiesti programmatori di assemlbler.
tornando al c++...tu scrivi il tuo programma poi sarà il compilatore a trasformarlo in linguaggio binario adeguato al tipo di processore (e sistema operativo) sul quale desideri far girare il tuo sw.
ciao,
quindi sarebbe opportuno o esclusivo imparare direttamente in C++? la discussione su quale linguaggio imparare per primo è senza fine; nella maggior parte dei casi la risposta univoca è: "dipende moltissimo da cosa devi fare e quali obiettivi culturali vuoi raggiungere". la mia versione personale è che se devi imparare a programmare per un immediato scopo preciso allora devi scegliere il linguaggio più adatto allo scopo, altrimenti puoi iniziare da qualsiasi linguaggio; basta che inizi, poi se vuoi diventare un vero programmatore sicuramente continuerai a studiare altri linguaggi. io ad esempio molto approfonditamente ne conosco in tutto 6 (QBASIC, Object Pascal, C, C++, Java, Assembly x86) e ho una vaga infarinatura di qualcun altro (C#, PHP, JavaScript...).
per completare il quadro aggiungi che per un programmatore d'oggi una buona conoscenza del C e del C++ (anche solo a titolo puramente culturale per così dire) secondo me non è opzionale.
La cosa che non capisco (scusate l'ignoranza)come fare ad interffacciare un programma scritto in C++ con l'hardware di un pc??
Forse avrò scritto una stupidaggine e me ne scuso. nessuna stupidaggine, non si nasce "imparati" :)
in qualsiasi sistema operativo esiste il concetto di API (Application Program Interface). prendiamo Windows per esempio: le DLL di sistema di Windows (kernel32.dll, user32.dll, gdi32.dll, eccetera eccetera) esportano numerose funzioni API che vengono poi usate dalle applicazioni per usufruire dei servizi offerti dal sistema operativo; questi servizi tra l'altro includono per es. accesso a determinate porzioni del monitor (le finestre insomma :p), grafica nativa per i controlli (tasti, check boxes, radio buttons, ecc.) ricezione eventi della tastiera e del mouse, multitasking e multithreading, gestione files, e via dicendo. tutto rigorosamente controllato dal sistema operativo e sottoposto ad un rigido sistema di sicurezza (che però la maggior parte degli utonti d'oggi lascia completamente scoperto sprecandone così le enormi potenzialità e dovendo poi andare a riparare con software anti-malware, but this is another story).
i software non accedono direttamente all'hardware per disegnare sullo schermo, leggere dal disco, ricevere eventi dalla tastiera, ecc.: devono necessariamente usufruire dei servizi offerti dal sistema operativo (le istrzuioni IN e OUT sui kernel NT hanno l'unico effetto di mandare in crash il programma che le chiama con un "Privileged Instruction"; sono finiti i tempi del kernel 9x e dei suoi BSOD :)).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.