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:
- Programação Shell,
- Ferramentas de programação Unix,
- 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
- algo mais.
programming
unix-philosophy
Brandt
fonte
fonte
Respostas:
"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".
fonte