linguaggio primo unix

Il ritrovo della comunità dove confrontarsi e discutere sulle notizie dal mondo dell'informatica, di Ubuntu e di tutto quello che la riguarda, novità, pettegolezzi e quant'altro.
silencedark
Prode Principiante
Messaggi: 141
Iscrizione: venerdì 25 novembre 2016, 19:34
Sesso: Maschile

linguaggio primo unix

Messaggio da silencedark »

Una curiosità storica, con che linguaggio di programmazione fu' scritto il primo unix? assembler ( o altro linguaggio macchina) o c? e i successivi?
Avatar utente
jackynet92
Moderatore Globale
Moderatore Globale
Messaggi: 13413
Iscrizione: sabato 3 settembre 2011, 1:41
Desktop: Mate
Distribuzione: Ubuntu 16.04 64bit
Sesso: Maschile
Località: Torino

Re: linguaggio primo unix

Messaggio da jackynet92 »

Non essendoci alcuna richiesta di supporto sposto al bar
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2933
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: linguaggio primo unix

Messaggio da DoctorStrange »

I sistemi operativi, tutti quanti, sono scritti in un amalgama di linguaggi di programmazione, quindi non si può dire che linux, unix, macos, o windows siano stati scritti in un unico linguaggio, anche nelle versioni precedenti.
Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 396
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: linguaggio primo unix

Messaggio da runblade »

History of Unix
Sembrerebbe che la prima stesura sia stata fatta con l'assembler DEC sul PDP-7 per poi essere riscritto dal 1972 in avanti, in C sul PDP-11.
-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza
Avatar utente
Darren
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 402
Iscrizione: giovedì 30 ottobre 2008, 10:08
Desktop: KDE Plasma
Distribuzione: Arch Linux
Sesso: Maschile
Località: Alessandria

Re: linguaggio primo unix

Messaggio da Darren »

silencedark [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941650#p4941650][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Una curiosità storica, con che linguaggio di programmazione fu' scritto il primo unix? assembler ( o altro linguaggio macchina) o c? e i successivi?
io ho chiesto piu volte una cosa simile, cioè del primo linguaggio usato in generale (non solo per unix), ma nessuno mi ha mai dato una risposta completa.

io ci riprovo...
sappiamo che Assembly è il linguaggio che piu si avvicina al linguaggio macchina.
ma QUALCUNO deve pur aver "programmato" questo Assembly, e cosa è stato usato??
le stesse istruzioni dei microprocessori, come sono state "programmate" ??
oppure basta fondere della "sabbia" per fare una CPU che questa poi capisce già da sola l'Assembly??

spero di aver spiegato bene la mia domanda.
skype: live:.cid.298cc9477050507b
telegram: @shutter1sland
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2933
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: linguaggio primo unix

Messaggio da DoctorStrange »

L'assembler non è un vero e proprio linguaggio come siamo abituati a concepirli.

Ad ogni istruzione assembly corrisponde in pratica una costante numerica: l'OPcode.

Se io sostituissi ogni singola istruzione assembler, con la sua rispettiva costante numerica, il risultato finale sarebbe perfettamente lo stesso.

Questo signica che, volendo io potrei sviluppare un codice assembly anche scrivendo una lunghissima fila di uni e di zeri, ai fini del programma ultimo non cambierebbe assolutamente nulla, ma ad ognuno di noi rimane più semplice imparare a memoria istruzioni ed artifatti piuttosto che codici numerici.

L'assemblatore quindi non fà altro che prendere tutte queste istruzioni mnemoniche, convertirle nelle relative costanti, e passarle al processore.

I linguaggi di più alto livello invece sono diversi, perchè sono soggetti ad una interpretazione, da parte del compilatore che, per esempio prende un ciclo for e lo espande fino ad ottenere in codice assembler, ciò che, in un ciclo for non è altro che una ripetizione costante.

Il processore memorizza nella sua memoria ROM il codice corrispondendte al nostro programma e, leggendo in sequenza tutte le istruzioni sà che, ad ognuno di quei codici corrisponde un'azione unica e distinta, ad esempio: "Prendi questa costante numerica e mettila nel registro 3, poi prendi ciò che c'è nel registro 3 e spostalo nel tuo registro interno numero 12"... e così via.
Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 396
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: linguaggio primo unix

Messaggio da runblade »

Un microprocessore altro non è che una macchina a stati che legge una sequenza di bit e a seconda di come sono stati codificati al suo interno esegue la rispettiva istruzione macchina a cui corrisponde il codice dei bit.
Ora le prime macchine venivano programmate settando i singoli bit in memoria corrispondenti all'istruzione che si voleva eseguire: esempio se il codice binario 10101010 per un core di un processore generico, significa somma i 2 byte nei registri AH e BH, mediante una sequenza di pulsanti (otto) si impostava il valore 10101010 e mediante un'altro la si metteva nella locazione di memoria voluta e nella successiva locazione il codice che identificava i 2 registri.
Oppure mediante schede perforate o quant'altro riproducesse una sequenza di bit da mettere in memoria.
Il team di sviluppo di quel core decideva che quella istruzione si chiamasse ADD AH,BH in Assembly.
Il passo successivo con macchine più evolute fu generare un listato con le istruzione mnemoniche e un Assemblatore/Compilatore che leggesse queste sequenza di ADD, MOV etc e le trasformasse in sequenze di 0101.. da mettere direttamente in memoria...
I vari compilatori C , Pascal etc. trasformano i listati in sequenze di codici Assembly->Macchina.

Disclaimer: la trattazione è volutamente semplicistica e grossolana per dare una idea a neofiti di comprendere la cosa, pertanto non intendo ritornare/chiarire su eventuali grossolanità dette :devilmad:
-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza
Avatar utente
Darren
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 402
Iscrizione: giovedì 30 ottobre 2008, 10:08
Desktop: KDE Plasma
Distribuzione: Arch Linux
Sesso: Maschile
Località: Alessandria

Re: linguaggio primo unix

Messaggio da Darren »

non voglio sembrare polemico, ma la mia domanda non ha ugualmente ricevuto una RISPOSTA.
forse serve un esempio.

un bambino, DA SOLO, vede un Tavolo ma non sa che quello è un Tavolo nè che si chiama Tavolo.
qualcuno, di solito i genitori, gli "insegnano" che quello è un Tavolo.
ma i genitori a loro volta lo hanno imparato da altri, e così via a salire fino a quando QUALCUNO ha deciso che quello era un Tavolo.

ora, con la programmazione, a grandi (ma veramente grandi) linee penso sia la stessa cosa.
un componente hardware DA SOLO, appena "nato" non può sapere che la parola MOV corrisponde al suo 001010, e che con 001010 deve fare una determinata cosa se NESSUNO glielo dice.

quindi, per creare un linguaggio di programmazione, anche il più simile a quello macchina, ci vorrà un qualcosa per crearlo???

ma veramente non riesco a spiegare questa domanda???? :muro:
skype: live:.cid.298cc9477050507b
telegram: @shutter1sland
silencedark
Prode Principiante
Messaggi: 141
Iscrizione: venerdì 25 novembre 2016, 19:34
Sesso: Maschile

Re: linguaggio primo unix

Messaggio da silencedark »

Darren [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941719#p4941719][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:non voglio sembrare polemico, ma la mia domanda non ha ugualmente ricevuto una RISPOSTA.
forse serve un esempio.

un bambino, DA SOLO, vede un Tavolo ma non sa che quello è un Tavolo nè che si chiama Tavolo.
qualcuno, di solito i genitori, gli "insegnano" che quello è un Tavolo.
ma i genitori a loro volta lo hanno imparato da altri, e così via a salire fino a quando QUALCUNO ha deciso che quello era un Tavolo.

ora, con la programmazione, a grandi (ma veramente grandi) linee penso sia la stessa cosa.
un componente hardware DA SOLO, appena "nato" non può sapere che la parola MOV corrisponde al suo 001010, e che con 001010 deve fare una determinata cosa se NESSUNO glielo dice.

quindi, per creare un linguaggio di programmazione, anche il più simile a quello macchina, ci vorrà un qualcosa per crearlo???

ma veramente non riesco a spiegare questa domanda???? :muro:

Penso che tutto sia stato fatto attraverso un linguaggio macchina precedente all' assembler, non c' era però probabilmente un linguaggio standardizzato, tutte le istruzioni sono memorizzate attraverso la memoria, compresi i pixel dello schermo, e ogni lettera corrisponde a una serie di 1 e 0, le parole poi vengono combinate ad altri codici, quello che non ho capito però è come si fa' a dividere in griglie e caselle lo schermo nel momento tu digiti un carattere
Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 396
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: linguaggio primo unix

Messaggio da runblade »

runblade [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941714#p4941714][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Il team di sviluppo di quel core decideva che quella istruzione si chiamasse ADD AH,BH in Assembly.
Non esite un assembly standard, ogni core ha il suo (o meglio delle istruzioni mnemoniche proprie).
Non troverai mai una pubblicazione ANSI su Assembly ma ogni costruttore (INTEL, ARM, MIPS, AVR, etc.) farà il suo manuale assembly (instruction set ) per la sua architettura.
Prova a scaricarti gli instruction set dello Z80 e dello M6502 (micro 8 bit ) e vedrai da te che i mnemonici (ovvero le varie diciture delle istruzioni) si assomigliano per le stessa tipologia di operazione (tipicamente ADD per somma PUSH, POP operazioni su stack etc.) ma ripeto sono diverse e scelte da chi progetta/fabbrica il core.

E comunque il programma assemblatore (specifico per ogni piattaforma/core) prende questa sequenza di ADD, POP, MUL, DIV scritte su un file di testo e fa questa associazione: POP->100100ddddd1111 (dove ddddd è sempre un numero binario che indica il registo di riferimento r0..r31) e lo scrive sul file generato per la programmazione del micro.
Questa è la conversione che fa il programma AVRASM2 per la piattaforma AVR AVR assembler
-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza
silencedark
Prode Principiante
Messaggi: 141
Iscrizione: venerdì 25 novembre 2016, 19:34
Sesso: Maschile

Re: linguaggio primo unix

Messaggio da silencedark »

runblade [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941734#p4941734][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
runblade [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941714#p4941714][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Il team di sviluppo di quel core decideva che quella istruzione si chiamasse ADD AH,BH in Assembly.
Non esite un assembly standard, ogni core ha il suo (o meglio delle istruzioni mnemoniche proprie).
Non troverai mai una pubblicazione ANSI su Assembly ma ogni costruttore (INTEL, ARM, MIPS, AVR, etc.) farà il suo manuale assembly (instruction set ) per la sua architettura.
Prova a scaricarti gli instruction set dello Z80 e dello M6502 (micro 8 bit ) e vedrai da te che i mnemonici (ovvero le varie diciture delle istruzioni) si assomigliano per le stessa tipologia di operazione (tipicamente ADD per somma PUSH, POP operazioni su stack etc.) ma ripeto sono diverse e scelte da chi progetta/fabbrica il core.

E comunque il programma assemblatore (specifico per ogni piattaforma/core) prende questa sequenza di ADD, POP, MUL, DIV scritte su un file di testo e fa questa associazione: POP->100100ddddd1111 (dove ddddd è sempre un numero binario che indica il registo di riferimento r0..r31) e lo scrive sul file generato per la programmazione del micro.
Questa è la conversione che fa il programma AVRASM2 per la piattaforma AVR AVR assembler
però come ci si è arrivati al file di testo? forse è questo il problema principale anche perchè non basta tradurre degli 1 e 0 ma devo anche dire che il carattere va' scritto in un certo punto dello schermo
Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 396
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: linguaggio primo unix

Messaggio da runblade »

Hanno definito uno standard per rappresentare dei caratteri (ASCII) e poi li scrivono in una zona di memoria interna in sequenza.
Per scriverli sullo schermo si usava un terminale tipo VT100 e li si trasferiva dalla memoria allo schermo mediante linea seriale tipo RS-232.
Cosa pensate che sia la porta usb togliendo tutte le astrazioni OSI/ISO?

PS: un pò di studio delle piattaforme hardware anni 60-70 non farebbe male. :D
-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

Re: linguaggio primo unix

Messaggio da ubuntumate »

In Assembly, non in assembler, per l'amore di tutti i poveri Alpha DEC scomparsi!
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
Avatar utente
jeremie2
Gruppo Documentazione
Gruppo Documentazione
Messaggi: 3559
Iscrizione: giovedì 1 giugno 2006, 16:39
Distribuzione: Ubuntu 24.04
Località: Casciana Terme
Contatti:

Re: linguaggio primo unix

Messaggio da jeremie2 »

Darren [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941719#p4941719][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:un componente hardware DA SOLO, appena "nato" non può sapere che la parola MOV corrisponde al suo 001010, e che con 001010 deve fare una determinata cosa se NESSUNO glielo dice.
Non lo deve sapere, i transistor incanalano i segnali elettrici in modo automatico.
C'è un bellissimo filmato che spiega le cose in maniera molto semplice https://www.youtube.com/watch?v=VBDoT8o4q00

Suppongo che le cose siano sempre andate di pari passo. Per ogni nuovo hardware è stato preparato un sistema per fare in modo che i dati potessero essere processati e memorizzati.
Sai come funziona? ...scrivilo tu stesso nella Documentazione WiKi di Ubuntu-it
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: linguaggio primo unix

Messaggio da Claudio_F »

Darren ha scritto:un componente hardware DA SOLO, appena "nato" non può sapere che la parola MOV corrisponde al suo 001010
Il componente è progettato per eseguire una certa operazione in presenza di una certa configurazione binaria.

Se non esiste un assemblatore (perché siamo agli albori dell'informatica) queste configurazioni vengono caricate in memoria manualmente tramite interruttori (vedi il computer Altair su cui Bill Gates ha iniziato la sua carriera).

Un programma caricato in questo modo può funzionare da assemblatore, e accettare codici mnemonici convenzionali come MOV convertendoli nelle corrispondenti sequenze binarie (quindi è chi scrive l'assemblatore che associa la parola MOV allo 001010, proprio come è il progettista dei circuiti logici della CPU che associa 001010 alla funzione da svolgere).

Da qui la strada diventa più facile, con un assemblatore si può scrivere un compilatore per un linguaggio di più alto livello che permette di scrivere programmi in modo più semplice e ulteriori assemblatori o compilatori più evoluti.

Dagli interruttori si è passati alle schede perforate, dalle schede ai nastri magnetici, ai dischi, alle memorie allo stato solido, ma lo start sono circuiti logici, interruttori, e manine umane ;)
Ultima modifica di Claudio_F il martedì 13 dicembre 2016, 19:48, modificato 2 volte in totale.
silencedark
Prode Principiante
Messaggi: 141
Iscrizione: venerdì 25 novembre 2016, 19:34
Sesso: Maschile

Re: linguaggio primo unix

Messaggio da silencedark »

Claudio_F [url=http://forum.ubuntu-it.org/viewtopic.php?p=4941861#p4941861][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Darren ha scritto:un componente hardware DA SOLO, appena "nato" non può sapere che la parola MOV corrisponde al suo 001010

Dagli interruttori si è passati alle schede perforate, dalle schede ai nastri magnetici, ai dischi, alle memorie allo stato solido, ma lo start sono circuiti logici, interruttori, e manine umane ;)
le schede i nastri si utilizzavano per i grandi mainframe anni 60 o c' erano già le memorie a stato solido?
Avatar utente
Claudio_F
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1463
Iscrizione: lunedì 28 maggio 2012, 18:49
Desktop: Mate/Gnome
Distribuzione: Ubu22.04

Re: linguaggio primo unix

Messaggio da Claudio_F »

Bisogna vedere se si sta parlando di memoria di massa o di memoria di lavoro. Le differenze tra le due e le sovrapposizioni di tecnologie in varie epoche sono così varie che conviene cercare qualche documento sulla loro storia. Per certo in alcuni ambiti industriali i nastri sono andati avanti fino ad oltre il 2000, le schede forse si sono usate per tutti gli anni 70, ho anche conosciuto qualcuno che ha lavorato con i file "di cartoncino bucherellato", ma queste sono appunto memorie di massa.

La memoria di lavoro è stata probabilmente la prima cosa a diventare allo stato solido, con transistor singoli prima, e alta integrazione di transistor all'interno di chip poi (siamo a metà degli anni 70, insomma, l'Apollo11 è arrivato sulla luna che il microprocessore non era ancora stato inventato, usava nuclei magnetici intessuti a mano come perline, e non si è schiantato grazie all'ottimo software scritto da sconosciute programmatrici).


Però.... vorrei sapere da Darren se il suo dubbio è dissipato :lol:
silencedark
Prode Principiante
Messaggi: 141
Iscrizione: venerdì 25 novembre 2016, 19:34
Sesso: Maschile

Re: linguaggio primo unix

Messaggio da silencedark »

Claudio_F [url=http://forum.ubuntu-it.org/viewtopic.php?p=4942051#p4942051][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Bisogna vedere se si sta parlando di memoria di massa o di memoria di lavoro. Le differenze tra le due e le sovrapposizioni di tecnologie in varie epoche sono così varie che conviene cercare qualche documento sulla loro storia. Per certo in alcuni ambiti industriali i nastri sono andati avanti fino ad oltre il 2000, le schede forse si sono usate per tutti gli anni 70, ho anche conosciuto qualcuno che ha lavorato con i file "di cartoncino bucherellato", ma queste sono appunto memorie di massa.

La memoria di lavoro è stata probabilmente la prima cosa a diventare allo stato solido, con transistor singoli prima, e alta integrazione di transistor all'interno di chip poi (siamo a metà degli anni 70, insomma, l'Apollo11 è arrivato sulla luna che il microprocessore non era ancora stato inventato, usava nuclei magnetici intessuti a mano come perline, e non si è schiantato grazie all'ottimo software scritto da sconosciute programmatrici).


Però.... vorrei sapere da Darren se il suo dubbio è dissipato :lol:

Il viaggio sulla luna è stato un aspetto decisivo per il progresso dell' informatica ( nel senso che l' ha accelerata anche perchè fino agli anni 60 usa e urss erano allo steso livello nell' informatica) o arebbe avvenuta lo stesso? ( sono molto interessato agli apetti economici delle nuove tecnologie)
silencedark
Prode Principiante
Messaggi: 141
Iscrizione: venerdì 25 novembre 2016, 19:34
Sesso: Maschile

Re: linguaggio primo unix

Messaggio da silencedark »

comunque il primo computer a oli transitor è nato in italia

https://it.wikipedia.org/wiki/Olivetti_Elea_9003
Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 396
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: linguaggio primo unix

Messaggio da runblade »

Si vocifera che in realtà il primo computer a transistors fu il MIT TX 0 :sisi:
Ciò non toglie nulla alla lungimiranza di Adriano Olivetti...Purtroppo eravamo e siamo " stati liberati nella WWII...." :D
-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza
Scrivi risposta

Ritorna a “Bar Ubuntu”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti