Co dokładnie oznacza programowanie w Uniksie? [Zamknięte]


10

Myślałem, że rozumiem, co oznacza termin Programowanie w Uniksie , ale teraz, po przeczytaniu o nim w kontekście programowania jądra / C, czuję, że muszę wyjaśnić znaczenie tego terminu.

Nie jest dla mnie jasne, czy oznacza to:

  1. Programowanie powłoki,
  2. Narzędzia programistyczne w systemie Unix,
  3. szczególny sposób / wzór programowania narzędzi wiersza polecenia systemu Unix (np. w celu uzgodnienia z potokowym sposobem „programowania powłoki w systemie Unix”) lub
  4. coś innego.

2
Musisz podać trochę kontekstu. Gdzie przeczytałeś to wyrażenie? Poza kontekstem powiedziałbym, że oznacza to programowanie dla systemu operacyjnego Unix.
lgeorget

6
To pytanie wydaje się być nie na temat, ponieważ dotyczy podstawowego języka angielskiego.
Gilles „SO- przestań być zły”,

1
@Gilles Och, więc teraz jest to ogranicznik: P
goldilocks

@Igeorget, Taoup.
Pacerier

@Goldilocks, co oznacza?
Pacerier

Odpowiedzi:


14

„Programowanie w Uniksie” odnosi się do programowania bezpośrednio dla środowiska uniksowego. Obejmuje to programowanie powłok zgodnych z odpowiednim standardem (takim jak POSIX ). Obejmowałoby to jednak także programowanie w dowolnym języku, z wyraźnym wykorzystaniem interfejsów systemowych i zasobów, które są podobnie znormalizowane, zakładając, że są one specyficzne dla świata * nix.

Na przykład programowanie sieciowe bez biblioteki stron trzecich w C lub C ++ nie jest przenośne, ponieważ żaden standard nic o tym nie mówi. Praca w sieci w C / C ++ odbywa się za pomocą interfejsu podyktowanego przez system operacyjny, a chociaż w systemach * nix-ish jest to mniej więcej uniwersalne, nie można przenieść tego kodu w niezmienionej postaci (np.) Do systemu Windows i odwrotnie. Stąd robienie rzeczy sieciowych w C lub C ++ oznacza korzystanie z przenośnej biblioteki lub celowanie w platformę, a Unix jest jedną z możliwości w późniejszym przypadku, stąd jest to „programowanie unixowe” (i programowanie C lub C ++ oraz programowanie sieciowe). 1

Jednak programowanie sieciowe w wielu językach wyższego poziomu, takich jak perl, python lub java, jest przenośne; języki te są na ogół zaimplementowane w C, ale chociaż szczegóły implementacji różnią się w zależności od platformy, interfejs nie. Dlatego możesz napisać kod sieciowy w perlu, który powinien działać na dowolnym systemie, na którym działa perl; w systemie Unix jest to tłumaczone przez implementację interpretera na odpowiednie natywne wywołania, a w systemie Windows będzie tłumaczone inaczej. Ponieważ twój rzeczywisty kod perla nie jest specyficzny dla niczego oprócz perla, nie jest to programowanie unixowe. To programowanie sieciowe i programowanie w Perlu, ale nie programowanie w Uniksie.


1. Ze względu na bliskie historyczne relacje między C i Unixem, fakt, że C jest językiem najczęściej używanym do pisania systemów operacyjnych, a także charakter tego, czym jest „system operacyjny”, w kategorii „jest wiele rzeczy” Programowanie C specyficzne dla systemu operacyjnego ”- innym codziennym przykładem oprócz sieci są rzeczy zorientowane na system plików, takie jak statystyka plików i czytanie katalogów. W związku z tym istnieją różne książki typu „Programowanie uniksowe w języku C”, ponieważ podstawowe programowanie w języku C nieuchronnie obejmuje wiele elementów specyficznych dla systemu operacyjnego. Nie dotyczy to bardziej przenośnych języków, takich jak perl lub java; w tym przypadku tematem książki będzie prawdopodobnie „ Programowanie systemów w Perlu” lub, co bardziej prawdopodobne, zwykłe „Programowanie w Perlu”.


1
Prof Goldilocks uderza ponownie!
mikeserv

@Goldilocks, skoro Linux zabił Uniksa, czy masz na myśli, że prawie nikt nie robi teraz „programowania Unixa”?
Pacerier

1
Systemy Solaris i BSD są szeroko rozpowszechnione (nawet jeśli przeciętny użytkownik komputera nie ma pojęcia, czym są), a technicznie OSX jest oficjalnie zatwierdzony jako zgodny z UNIX (wygląda na to, że nazwa zmieniła się z powrotem na „macOS”, więc będę musiał nie
zgadzaj się
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.