Що саме означає програмування Unix? [зачинено]


10

Я думав, що зрозумів, що означає термін програмування Unix , але зараз, прочитавши про це в контексті програмування ядра / С, я відчуваю, що мені потрібно уточнити значення цього терміна.

Мені не зрозуміло, чи означає це:

  1. Програмування оболонки,
  2. Інструменти програмування Unix,
  3. конкретний спосіб / зразок програмування інструментів командного рядка Unix (наприклад, узгодження з конвеєрним способом "програмування оболонки Unix") або
  4. щось ще.

2
Вам доведеться дати трохи контексту. Де ви читали цей вираз? Я не можу сказати, що це означає програмування для Unix OS.
lgeorget

6
Це питання видається поза темою, оскільки йдеться про основну англійську мову.
Жил 'ТАК - перестань бути злим'

1
@Gilles О, тож тепер це роздільник: P
goldilocks

@Igeorget, Taoup.
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 була мовою, якою найбільше користуються для написання операційних систем, і характер того, що таке "операційна система", в категорії є багато речей " Програмування на ОС на C "- ще один повсякденний приклад, окрім мереж, - це файлові системи, орієнтовані на файли, такі як статинг файлів та читання каталогів. Отже, існують різні книги "Програмування Unix в С", тому що базове програмування на С неминуче включає багато специфічних елементів ОС. Це не стосується більш портативних мов, таких як perl або java; у цьому випадку предметом книги буде, ймовірно, " Системи програмування в Perl", або, скоріше, просто "Програмування з Perl".


1
Проф золотинок знову вражає!
mikeserv

@goldilocks, Оскільки Linux вбив Unix, ти маєш на увазі, що навряд чи хтось зараз «програмує Unix»?
Pacerier

1
Solaris і BSD широко використовуються (навіть якщо пересічний споживач ПК не має уявлення про те, що вони є), а технічно OSX офіційно санкціонований як сумісний з UNIX (схоже, що ім'я перейшло на "macOS", тому мені доведеться не згоден з вашою умовою.
goldilocks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.