Pensé que entendía lo que significaba el término programación Unix , pero ahora, después de leerlo en un contexto de programación kernel / C, siento que necesito aclarar el significado de este término.
No me queda claro si significa:
- Programación de Shell,
- Herramientas de programación Unix,
- una forma / patrón particular de programación de herramientas de línea de comandos de Unix (por ejemplo, para estar de acuerdo con la forma de canalización de "programación de shell Unix"), o
- algo más.
programming
unix-philosophy
Brandt
fuente
fuente
Respuestas:
La "programación de Unix" se refiere a la programación explícita para un entorno de Unix. Esto incluiría la programación de shells que se ajusten a un estándar relevante (como POSIX ). Sin embargo, también incluiría la programación en cualquier lenguaje mientras se hace uso explícito de las interfaces y recursos del sistema que están estandarizados de manera similar, suponiendo que estos sean específicos del mundo * nix.
Por ejemplo, la programación de red sin una biblioteca de terceros en C o C ++ no es portátil, porque ninguno de los estándares dice nada al respecto. Las redes en C / C ++ se implementan utilizando una interfaz dictada por el sistema operativo, y activada mientras que en los sistemas * nix-ish esto es más o menos universal, no puede portar ese código sin cambios a (por ejemplo) Windows, y viceversa. Por lo tanto, hacer cosas de red en C o C ++ significa usar una biblioteca portátil o apuntar a una plataforma, y Unix es una posibilidad en el caso posterior, por lo tanto, eso es "programación de Unix" (y programación de C o C ++ y programación de red). 1
Sin embargo, la programación de redes en muchos lenguajes de nivel superior como perl o python o java es portátil; estos lenguajes generalmente se implementan en C, pero aunque los detalles de la implementación difieren de una plataforma a otra, la interfaz no. Por lo tanto, puede escribir código de red en perl que debería ejecutarse en cualquier sistema en el que se ejecute perl; en un sistema Unix, esto se traduce por la implementación del intérprete en las llamadas nativas apropiadas, y en un sistema Windows, se traducirá de manera diferente. Dado que su código perl real no es específico de otra cosa que no sea perl, no es programación unix. Es programación en red y programación perl, pero no programación unix.
1. Debido a la relación histórica íntima entre C y Unix, el hecho de que C ha sido el lenguaje más utilizado para escribir sistemas operativos en general, y la naturaleza de lo que es un "sistema operativo", hay muchas cosas en la categoría " Programación C específica del sistema operativo ": otro ejemplo cotidiano además de las redes es el material orientado al sistema de archivos, como los archivos de estadísticas y la lectura de directorios. Por lo tanto, hay varios libros de tipo "Programación Unix en C", porque la programación básica en C inevitablemente involucra muchos elementos específicos del sistema operativo. Este no es el caso con lenguajes más portátiles como perl o java; en este caso, el tema del libro probablemente será " Programación de sistemas en Perl", o más probablemente, simplemente "Programación con Perl".
fuente