Что конкретно означает программирование в Unix? [закрыто]

10

Я думал, что понял, что означает термин Unix-программирование , но теперь, прочитав об этом в контексте программирования на ядре / C, я чувствую, что мне нужно уточнить значение этого термина.

Мне не ясно, означает ли это:

  1. Программирование оболочки,
  2. Инструменты программирования Unix,
  3. конкретный способ / шаблон программирования инструментов командной строки Unix (например, чтобы согласиться с конвейерным способом "программирования оболочки Unix"), или
  4. что-то другое.
Brandt
источник
2
Вам придется дать немного контекста. Где вы прочитали это выражение? Вне контекста я бы сказал, что это означает программирование для ОС Unix.
lgeorget
6
Этот вопрос, кажется, не по теме, потому что он о базовом английском.
Жиль
1
@ Жиль Да, теперь это разделитель: P
Златовласка
@Igeorget, Тауп.
Pacerier
@goldilocks, смысл?
Pacerier

Ответы:

14

«Программирование 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».

лютик золотистый
источник
1
Проф златовласка бьет снова!
mikeserv
@goldilocks, Так как linux убил Unix, ты имеешь в виду, что вряд ли кто-нибудь занимается "программированием Unix" сейчас?
Pacerier
1
Solaris и BSD широко используются (даже если среднестатистический потребитель ПК понятия не имеет, что они собой представляют), и технически OSX официально санкционирована как совместимая с UNIX (похоже, имя вернулось к «macOS», поэтому мне придется не согласен с вашей предпосылкой.
Златовласка