Domanda:
linguaggi di programmazione??!?
Ary K
2009-04-21 05:33:28 UTC
Volevo sapere delle cosette....
Da un pò di tempo mi interesso di PC...Si, mi sono chiesta sempre cosa c'era dietro ad un computer, il suo funzionamento...
Ho sentito dire che il computer è una macchina il cui funzionamento si basa su codici binari...ok fino qui tutto ok...
ma i programmi scritti in C java assembler htm....Ok...
sono i vari linguaggi macchina... ma che differenza c'è tra tutti questi?... se ne usi uno può andare bene per tutto o il C è per fare dei determinati programmi e altri no.. Che differenza c'è fra questi...??

Tnx 10 puntini al miglio!!!!
Sei risposte:
Tizio 008
2009-04-25 03:50:51 UTC
in realtà che il computer sia una macchina... è una immagine pittorica (valida, ma è meglio chiarire): non ci sono parti meccaniche (a parte l'hard disk e il cd-rom, che in un certo senso sono accessori rispetto al computer vero e proprio...); il suo funzionamento è basato sull'elettronica digitale, che usa due livelli di tensione per "funzionare", dunque due "simboli", da cui l'idea che i computer funzionino / capiscano i "codici binari".



i linguaggi C, java ecc. non sono "linguaggi macchina". il linguaggio macchina è 1 (*uno*), ed è determinato dalla "central processing unit", che è il cuore "attivo" del calcolatore, quello che "capisce" i "codici binari" e "fa accadere" delle cose (interagendo con le periferiche, comprese nel novero altre "processing unit")



l'assembly è un linguaggi che si traduce facilmente (leggi: direttamente) nel "linguaggio macchina" di cui sopra, dunque è quanto di più vicino e umanamente abbordabile ci sia alla "macchina".



i linguaggi si dividono grossolanamente in due categorie: compilati e interpretati (oggi la distinzione sfuma... i "compilati" hanno "runtime" che possono considerarsi una sorta di interpreti, e gli interpreti usano delle tecniche di compilazione JIT...)...



i linguaggi compilati vengono "tradotti" da un programma in "linguaggio macchina" (che viene "incapsulato" in un file eseguibile); per gli interpretati, c'è un programma che legge passo passo il "codice sorgente" e "agisce" di conseguenza (come detto è una semplificazione estremista e che non racconta tutta la verità)



ci sono mille altri modi di categorizzare i linguaggi, in base a diverse loro caratteristiche; per esempio ci sono linguaggi procedurali, funzionali, orientati agli oggetti... e miscugli di questi e altri paradigmi.



un'altra categorizzazione possibile è quella dello "scopo" dle linguaggio, cioè se esiste un campo per cui il linguaggi si rivela più adatto degli altri.



meno il linguaggio è astratto e lontano dall'effettivo funzionamento della "macchina" (attraverso il "linguaggio macchina"), più è evidente che le sue potenzialità sono *tutte* quelle del computer; al contrario, linguaggi più astratti (o di alto livello) tendono a specializzarsi più facilmente e rendere facili alcuni compiti, ma impossibili altri...



il C è il linguaggio "general purpose" per eccellenza: cioè ci puoi fare tutto, da scriverci un sistema operativo o un driver per un S.O., fino ai giochi o applicazioni di sistema.



il Java è a metà tra un "compilato" e un "interpretato": in effetti viene "compilato" in un "codice macchina virtuale", che necessità di una "macchina virtuale" per funzionare; di fatto questa "macchina virtuale" è un interprete (che potrebbe anche compilare in "codice macchina nativo" parti del "linguaggio macchina virtuale"). grazie a ciò, la sua portabilità è migliore (lo stesso "esguibile" gira ovunque ci sia la java virtual machine). questa idea non è originale ed è usata anche in altri linguaggi, come i linguaggi "sharp" (p.es. C#).



in java, come in C#, come in python, come in perl come in... è più immediato per esempio fare interfacce grafiche... ma non ci puoi scrivere invece driver, e inoltre non sono tanto efficienti quanto i linguaggi compilati come il C...



quanto sia facile fare una certa cosa in un certo linguaggio dipende poi dal "contorno": cioè l'insieme di librerie di funzioni o classi che "contengono" codice già pronto all'uso per fare certe cose; alcuni linguaggi sono più ricchi di altri in tal senso, ... ma in ogni caso molti linguaggi sono "estensibili", e dunque a *quasi* nessuno è preclusa alcuna possibilità (posto di trovare librerie/classi già scritte che facciano facilmente quella cosa... qui il discorso si dovrebbe aprire su come un linguaggio permette di essere "esteso", magari facendo dei "binding" con del codice scritto in un altro linguaggio... ... ... ..)



alcuni linguaggi sono nati per servire bene uno scopo, come p.es. la ricerca nell'I.A. (lisp, prolog...) e dunque risulta molto difficile fare con questi cose che in C sarebbero banali... ma è vero anche il viceversa: avanzare nello studio dell'I.A. con il C sarebbe estremamente difficile e complicato.



l'html non è esattamente un ling. di programmazione; appartiene alla categoria "linguaggi di marcatura (?... markup)"; in pratica sono linguaggi che "descrivono" qualcosa; ma con essi è impossibile "programmarci" nel vero senso della parole (non sono turing completi ....)
I don't give a fuck
2009-04-22 08:41:22 UTC
Il computer non e' altro che un calcolatore che esegue le istruzioni da lingguaggio di programmazione a bytecode, ossia il linguaggio macchina.



Senza la programmazione non faresti nulla col pc..



Ogni linguaggio di programmazione ha le sue caratteristiche cmq..



Si va da quelli interpretati a quelli compilati, in tutti e due i casi comunque devi avere un software che ti permette di gestirli, es Perl e' compilato pero devi installarti le librerie di perl sul pc.



Se vuoi programmare in C o altri linguaggi compilati devi avere il compilatore per eseguirli...



Consultati un po sui vari linguaggi, decidi quello che vuoi fare e impara i fondamenti della programmazione..
zedda_piras25
2009-04-21 06:11:54 UTC
Allora, considera che la tua domanda per essere risposta in modo esauriente richiederebbe libri e libri, puoi usare wikipedia per saperne di più. Ti do giusto qualche indizio.



I computer funzionano per astrazione e livelli.

Immagina un'automobile, quando stai seduta al volante hai i vari strumenti e quando giri la chiave non hai bisogno di pensare a mescolare la benzina con l'aria nella giusta proporzione, far girare il motorino di avviamento ecc

Gli strumenti della macchina quindi ti permettono di utilizzare la macchina.

Puoi utilizzare una macchina senza sapere cosa sta sotto ma se lo conosci è meglio perchè puoi capire se ci sono dei problemi ed eventualmente risolverli, per i pc vale la stessa cosa.



Ora immagina questa astrazione a più livelli, come il tuo cervello invia inpulsi elettrici alle braccia che a loro volta azionano gli strumenti che a loro volta fanno andare la macchina.



Il computer in se fa solo calcoli su 0 è 1, fai conto che faccia solo addizioni e sottrazioni.

Gli 0 e 1 vengono rappresentati ad esempio con voltaggi diversi di un componente elettronico.

Il processore ti fa la prima astrazione, ha un set di istruzioni per elaborare i dati binari e ad esempio quando vuoi fare una moltiplicazione m per n somma m n volte.



Al livello sopra ci sta il sistema operativo che utilizza le istruzioni di base del processore per crearne di nuove.



I linguaggi di programmazione fanno un altro livello al di sopra del sistema operativo creando altri strumenti.



In questo modo quando viene creato un processore che funziona in modo diverso qualcuno aggiornerà il sistema operativo in modo che funzioni su quel processore ma il programma che funziona su quel sistema operativo non dovrà essere cambiato.



Come se al posto di una macchina a benzina prendi una macchina elettrica, hai sempre volante e pedali e per cli la guida cambia poco.



Per questo motivo si dice che un programma funziona per windows, mac o altri sistemi operativi.



Poi esistono linguaggi di alto livello come il java.

Il java gira su una virtual machine che si installa sopra il sistema operativo, esiste una versione della virtual machine per ogni sistema operativo e in questo modo lo stesso programma in java funziona quasi ovunque.



Tutto questo sovrapporsi di livelli rende le cose molto più semplici ma rallenta anche le cose, per questo motivo per alcuni problemi devi utilizzare linguaggi di basso livello come assembly.
GESYS
2009-04-21 06:07:53 UTC
una volta k ne impari uno....gli altri saranno cazzate fidati....cmq contattami per informazioni.
stragatto
2009-04-21 05:58:22 UTC
I concetti base della programmazione sono gli stessi in tutti i linguaggi, ma non vuol dire che tutti i linguaggi di programmazione sono uguali. A seconda del compito da eseguire puo' essere preferibile un linguaggio piuttosto che un altro. Ad esempio, se si vogliono scrivere programmi che occupino poca memoria e che siano veloci si sceglie l'assembler (che è molto vicino al linguaggio macchina, ma umanamente noioso e difficile). Un ottimo linguaggio che produce eseguibili piccoli e veloci senza essere troppo astruso è il C coi suoi derivati (C++ e java) , che però si presta poco per il trattamento di testi (e di pagine web, che in fondo non sono altro che testi), campo in cui prevalgono linguaggi interpretati come il perl, il php, il python. Un linguaggio che meriterebbe maggior popolarità e' il tcl/tk, che permette di realizzare con grande facilita' piccoli e medi programmi con interfaccia grafica che funzionano senza bisogno di modifiche in tutti i sistemi operativi. Ci sono moltissimi altri linguaggi e l'elenco sarebbe lunghissimo: ma va ricordato il pascal, ottimo linguaggio che mantenendo separati alcuni elementi come selezione del tipo dei dati, costanti, variabili, procedure e funzioni obbliga a capire fin dall'inizio il significato di tali elementi, e per questo e' utilizzato anche come linguaggio didattico nell'insegnamento della programmazione
Iv@n
2009-04-21 06:05:42 UTC
bo


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...