O que significa programação Unix, exatamente? [fechadas]

10

Eu pensei que tinha entendido o que o termo programação Unix significava, mas agora, depois de ler sobre isso em um contexto de programação kernel / C, sinto que preciso esclarecer o significado desse termo.

Não está claro para mim se isso significa:

  1. Programação Shell,
  2. Ferramentas de programação Unix,
  3. uma maneira / padrão específico de programação das ferramentas de linha de comando Unix (por exemplo, para concordar com a maneira de pipeline da "programação shell Unix") ou
  4. algo mais.
Brandt
fonte
2
Você terá que dar um pouco de contexto. Onde você leu essa expressão? Fora de contexto, eu diria que significa programação para um sistema operacional Unix.
Lgeorget 31/07
6
Esta pergunta parece estar fora de tópico, porque se trata de inglês básico.
Gilles 'SO- stop be evil'
1
@Gilles Oh de modo que é um delimitador de agora: P
Goldilocks
@Igeorget, Taoup.
Pacerier
@goldilocks, o que significa?
Pacerier

Respostas:

14

"Programação Unix" refere-se à programação explícita para um ambiente unix. Isso inclui a programação de shells que estão em conformidade com um padrão relevante (como POSIX ). No entanto, também incluiria programação em qualquer idioma, enquanto fazia uso explícito de interfaces e recursos do sistema igualmente padronizados, presumindo que eles sejam específicos para o mundo * nix.

Por exemplo, a programação de rede sem uma biblioteca de terceiros em C ou C ++ não é portátil, porque nenhum padrão diz nada sobre isso. A rede em C / C ++ é implementada usando uma interface ditada pelo sistema operacional e, enquanto nos sistemas * nix-ish, isso é mais ou menos universal, você não pode portar esse código inalterado para (por exemplo) Windows e vice-versa. Portanto, fazer coisas de rede em C ou C ++ significa usar uma biblioteca portátil ou direcionar uma plataforma, e o Unix é uma possibilidade no caso posterior; portanto, é "programação unix" (e programação C ou C ++ e programação de rede). 1

No entanto, a programação de rede em muitas linguagens de nível superior, como perl, python ou java, é portátil; esses idiomas geralmente são implementados em C, mas, embora os detalhes da implementação sejam diferentes de plataforma para plataforma, a interface não. Portanto, você pode escrever o código de rede em perl que deve ser executado em qualquer sistema em que o perl seja executado; em um sistema Unix, isso é traduzido pela implementação do intérprete nas chamadas nativas apropriadas e, em um sistema Windows, será traduzido de maneira diferente. Como seu código perl atual não é específico a nada, mas perl, não é uma programação unix. É programação de rede e programação perl, mas não é programação unix.


1. Devido à íntima relação histórica entre C e Unix, o fato de C ter sido o idioma mais usado para escrever sistemas operacionais em geral e a natureza do que é um "sistema operacional", há muitas coisas na categoria " Programação C específica do SO "- outro exemplo cotidiano, além da rede, é o material orientado ao sistema de arquivos, como especificar arquivos e ler diretórios. Portanto, existem vários livros do tipo "Programação Unix em C", porque a programação básica em C envolve inevitavelmente muitos elementos específicos do SO. Este não é o caso de linguagens mais portáteis, como perl ou java; Nesse caso, o assunto do livro provavelmente será " Programação de sistemas em Perl" ou, mais provavelmente, simplesmente "Programação com Perl".

Cachinhos Dourados
fonte
1
prof goldilocks ataca novamente!
mikeserv
@ goldilocks, Como o linux matou o Unix, você quer dizer que quase ninguém faz "programação em Unix" agora?
Pacerier
1
Solaris e BSD são amplamente utilizados (mesmo que o consumidor médio de PC não tenha idéia do que são), e tecnicamente o OSX é oficialmente sancionado como compatível com UNIX (parece que o nome voltou para "macOS", então vou ter que em desacordo com a sua premissa.
Goldilocks