Я думал, что понял, что означает термин Unix-программирование , но теперь, прочитав об этом в контексте программирования на ядре / C, я чувствую, что мне нужно уточнить значение этого термина.
Мне не ясно, означает ли это:
- Программирование оболочки,
- Инструменты программирования Unix,
- конкретный способ / шаблон программирования инструментов командной строки Unix (например, чтобы согласиться с конвейерным способом "программирования оболочки Unix"), или
- что-то другое.
programming
unix-philosophy
Brandt
источник
источник
Ответы:
«Программирование Unix» относится к программированию явно для среды Unix. Это может включать программирование оболочек, соответствующих соответствующему стандарту (например, POSIX ). Тем не менее, он также включает программирование на любом языке, в то же время явно используя системные интерфейсы и ресурсы, которые аналогичным образом стандартизированы, при условии, что они относятся к миру * nix.
Например, сетевое программирование без сторонней библиотеки на C или C ++ не является переносимым, потому что ни один из стандартов ничего не говорит об этом. Работа в сети в C / C ++ реализована с использованием интерфейса, определяемого операционной системой, и в то время как в системах * nix-ish это более или менее универсально, вы не можете перенести этот код без изменений (например, в Windows) и наоборот. Следовательно, работа с сетью в C или C ++ означает использование переносимой библиотеки или нацеливание на платформу, и Unix является одной из возможностей в более позднем случае, следовательно, это «программирование Unix» (и программирование на C или C ++, и сетевое программирование). 1
Однако сетевое программирование на многих языках более высокого уровня, таких как perl, python или java , переносимо; эти языки обычно реализуются в C, но, хотя детали реализации различаются для разных платформ, интерфейс - нет. Поэтому вы можете написать сетевой код на Perl, который должен работать в любой системе, на которой работает Perl; в системе Unix это переводится реализацией интерпретатора в соответствующие нативные вызовы, а в системе Windows - по-другому. Поскольку ваш настоящий код на perl не относится ни к чему, кроме perl, это не программирование в Unix. Это сетевое программирование и программирование на Perl, но не программирование на Unix.
1. Из-за тесной исторической связи между C и Unix, того факта, что C был языком, наиболее широко используемым для написания операционных систем в целом, и характера того, что такое «операционная система», в этой категории есть много вещей ». Специфическое для ОС программирование на С "- еще один пример, помимо работы в сети, это такие вещи, ориентированные на файловую систему, как проверка файлов и чтение каталогов. Следовательно, существуют различные книги типа «Программирование Unix на C», потому что базовое программирование на C неизбежно включает в себя множество специфических для ОС элементов. Это не относится к более переносимым языкам, таким как perl или java; в этом случае предметом книги, скорее всего, будет « Системное программирование на Perl» или, скорее, просто «Программирование на Perl».
источник