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:
- Programowanie powłoki,
- Narzędzia programistyczne w systemie Unix,
- 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
- coś innego.
programming
unix-philosophy
Brandt
źródło
źródło
Odpowiedzi:
„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”.
źródło