Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 1 decennio fa

indirizzo di un file?

ciao,

l'indirizzo di un file termina con il nome della cartella che lo contiene oppure con il nome stesso del file,tipo nome cartella/file.txt ?

La seconda domanda e' questa: i linguaggi di programmazione devono essere scritti in maniera tale che siano tradotti in linguaggio macchina in maniera adeguata.

Le lettere e le parole contenute in un programma sono tradotte in sequenze di 1 e 0 ,lettera per lettera dando origini ad impulsi?

2 risposte

Classificazione
  • 1 decennio fa
    Risposta preferita

    le tue domande sono sempre piene di confusione estrema, che indica profonde lacune del mondo "informatico"... a tutto c'è rimedio ovvio ma come avrai notato per afferrare meglio i concetti è necessario spiegare parecchie cose. volendo essere sintetici si rischia di comunicare qualcosa che non è esattamente giusto...

    i file non hanno indirizzi. per i file su un harddisk o altro dispositivo che abbia un filesystem gerarchico si parla di "percorso" (path in inglese). in questo caso, ovviamente l'ultima parte del path è proprio il file.

    se con indirizzo intendi un "indirizzo internet", va specificato che un URL (Uniform Resource Locator) identifica una risorsa in senso generico e nessuno ci dice che dietro la richiesta mandata al server ci sia un filesystem gerarchico e dunque non è garantita la corrispondenza tra URL e una "risorsa file" specifica. naturalmente è possibile (spesso è così) che un certo URL porti a un file specifico sul server... ma non è detto (nemmeno dopo i giochetti di un rewrite engine ecc. di cui abbiamo già parlato in precedenti domande).

    inoltre tale identificativo deve essere unico; una cartella per definizione contiene più file e dunque per poterli "localizzare" tramite un URL è necessario specificare quale vogliam esattamente. abbiamo già visto che nel caso ipotetico in cui si faccia una richiesta al server che non corrisponde (in qualche modo) a un file ma a una cartell, il server "pesca" un file di default.

    la seconda domanda ha due parti scorrelate.

    la prima parte è una affermazione, che per quanto ci si possa discutere su (specie su cosa intendi veramente), possiamo dire che sì, un linguaggio di programmazione "è scritto" (ma qui bisogna vedere che intendi per "è scritto"... parliamo di codice sorgente? di specifiche generiche del linguaggio?) per essere "tradotto" in linguaggio macchina... ma non c'è un "modo speciale"... non ci vogliono accortezze speciali... bisogna solo scrivere il programma che "converte" (compila)...

    un codice sorgente è tipicamente codificato in ascii o affine; ovvero una convenzione che associa a dei codici (byte) una forma grafica che per noi è una lettera. a sua volta ogni byte è formato da 8 bit... ma il parser di un compilatore non vede le cose a così basso livello: piuttosto elabora il "testo" (identifica "token" [parole se vuoi... ma anche simboli ecc., dipende] costituiti da byte) e siccome questo segue una rigida sintassi diciamo che "capisce" come convertire quel codice sorgente (testo) in una serie di istruzioni comprensibili al processore. ma non c'è nessuna corrispondenza diretta e identificabile tra il codice prodotto e singole parole o lettere del sorgente, al punto che, dato un eseguibile, non è possibile tornare al sorgente da cui è stato generato, nemmeno sapendo quale è il linguaggio e il compilatore di partenza!

    gli "impulsi" entrano in gioco molto a basso livello. l'elettronica digitale funziona tutta cn "impulsi", due livelli di differenza di potenziale che possono essere interpretati ad alto livello come "1" e "0" o come Vero o Falso ...

    i byte del codice sorgente già sono "una manciata" di "0" e "1" su un harddisk o in memoria (e in questo caso quello che è interpretable come "0" e "1" deriva da altri fenomeni fisici, per es. magnetizzazione nel caso dell'hd), non c'è bisogno di convertirli in sequenze di alcunché tutto quello che "è" in un computer è già in qualche modo una "sequenza di 0 e 1" ... per capirne meglio il senso andrebbe studiata un po' di elettronica digitale e dunque comprendere come corrispondono tra loro i "fenomeni di basso livello" con quello che vediamo e di cui abbiamo esperienza diretta (lo schermo, il fatto che premo p e vedo p ecc....)

    il seguente frammento di codice è un modo umanamente comprensibile di scrivere del codice per un processore (mmix), seguendo comunque una certa "sintassi" (il processore non sa niente di questa sintassi, capisce solo "codici", cfr.dopo)

    SETL $0,10

    SETL $1,20

    ADD $1,$0,$1

    XOR $0,$0,$0

    TRAP 0,Halt,0

    il codice mostrato non fa niente di visibile, fa solo lavorare un po' il processore: mette in due registri i numeri 10 e 20 e li somma, poi azzera il registro $0 e chiama un "interrupt" di sistema che corrisponde a terminare il programma.

    se assembliamo queste istruzioni otteniamo i seguenti byte (rappresentati in esadecimale) [mostro solo le prime 4 istruzioni perché non ricordo a memoria quanto vale Halt, che è una costante simbolica cioè corrisponde a un numero ... :D]

    EB 00 00 0A

    EB 01 00 14

    20 01 00 01

    CE 00 00 00

    bene, questi byte dati in pasto al processore fanno quello che ci aspettiamo. il "testo" è ninte altro che la rappresentazione di tali istruzioni, umanamente comprensibile, e in questo caso c'è una corrispondenza 1-a-1, cioè dai codici su scritti si torna (fatta eccezioni per costanti numeriche come Halt) al "sorgente". ma non c'è una corrispondenza tra singole lettere o singole parole nemmeno in questo caso visto che ci

  • 1 decennio fa

    c penso io

Altre domande? Fai una domanda e ottieni le risposte che cerchi.