Cosa significa esattamente programmazione Unix? [chiuso]


10

Pensavo di aver capito cosa significasse il termine programmazione Unix , ma ora, dopo averlo letto in un contesto di programmazione kernel / C, sento di dover chiarire il significato di questo termine.

Non mi è chiaro se ciò significhi:

  1. Programmazione Shell,
  2. Strumenti di programmazione Unix,
  3. un modo / modello particolare di programmazione degli strumenti da riga di comando Unix (ad es. per concordare con la modalità di "programmazione della shell Unix"), oppure
  4. qualcos'altro.

2
Dovrai dare un po 'di contesto. Dove hai letto questa espressione? Fuori dal contesto, direi che significa programmare per un sistema operativo Unix.
lgeorget,

6
Questa domanda sembra fuori tema perché riguarda l'inglese di base.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles Oh, quindi ora è un delimitatore: P
goldilocks

@Igeorget, Taoup.
Pacerier

@goldilocks, significato?
Pacerier

Risposte:


14

"Programmazione Unix" si riferisce alla programmazione esplicita per un ambiente unix. Ciò include la programmazione di shell conformi a uno standard pertinente (come POSIX ). Tuttavia, includerebbe anche la programmazione in qualsiasi linguaggio, mentre si fa esplicito uso di interfacce di sistema e risorse che sono similmente standardizzate, presumendo che siano specifiche per il mondo * nix.

Ad esempio, la programmazione di rete senza una libreria di terze parti in C o C ++ non è portatile, poiché nessuno degli standard dice nulla al riguardo. Il networking in C / C ++ è implementato usando un'interfaccia dettata dal sistema operativo, e mentre su sistemi * nix-ish questo è più o meno universale, non è possibile eseguire il porting di quel codice invariato a (es.) Windows, e viceversa. Quindi, fare cose di rete in C o C ++ significa usare una libreria portatile o prendere di mira una piattaforma, e Unix è una possibilità nel caso successivo, quindi quella è "programmazione unix" (e programmazione C o C ++ e programmazione di rete). 1

Tuttavia, la programmazione in rete in molti linguaggi di livello superiore come perl o python o java è portatile; questi linguaggi sono generalmente implementati in C, ma mentre i dettagli dell'implementazione differiscono da piattaforma a piattaforma, l'interfaccia no. Pertanto è possibile scrivere codice di rete in perl che dovrebbe essere eseguito su qualsiasi sistema su cui viene eseguito perl; su un sistema Unix, questo viene tradotto dall'implementazione dell'interprete nelle chiamate native appropriate e su un sistema Windows, verrà tradotto in modo diverso. Poiché il tuo vero codice perl non è specifico di nulla ma perl, non è una programmazione unix. È la programmazione di rete e la programmazione perl, ma non la programmazione unix.


1. A causa dell'intima relazione storica tra C e Unix, il fatto che C sia stato il linguaggio più utilizzato per scrivere i sistemi operativi in ​​generale e la natura di cosa sia un "sistema operativo", ci sono molte cose nella categoria " Programmazione C specifica del sistema operativo "- un altro esempio quotidiano oltre alla rete è roba orientata al filesystem, come la formattazione di file e la lettura di directory. Quindi, ci sono vari libri di tipo "Programmazione Unix in C" in giro, perché la programmazione di base in C comporta inevitabilmente molti elementi specifici del sistema operativo. Questo non è il caso di linguaggi più portatili come perl o java; in questo caso, l'oggetto del libro sarà probabilmente " Programmazione di sistemi in Perl", o più probabilmente, semplicemente "Programmazione con Perl".


1
il prof goldilocks colpisce ancora!
Mikeserv,

@goldilocks, Dal momento che Linux ha ucciso Unix, vuoi dire che quasi nessuno fa "programmazione Unix" ora?
Pacerier

1
Solaris e BSD sono ampiamente utilizzati (anche se il consumatore medio di PC non ha idea di cosa siano) e tecnicamente OSX è ufficialmente sanzionato come conforme UNIX (sembra che il nome sia tornato a "macOS", quindi dovrò non sono d'accordo con la tua premessa.
Riccioli d'oro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.