Co to jest programowanie systemu?
Wszyscy programiści piszą kod wykonywalny dla komputerów, ale to, co odróżnia programistów systemowych od programistów aplikacji, jest celem pisanego przez nich oprogramowania. Programowanie aplikacji tworzy oprogramowanie, które sprawia, że sprzęt komputerowy generuje coś dla użytkownika, czy to arkusz kalkulacyjny, czy grafika do gry. Programowanie systemowe tworzy oprogramowanie, które uzyskuje dostęp i kontroluje wewnętrzne działanie sprzętu komputerowego i systemu operacyjnego.
Programowanie aplikacji zazwyczaj polega na wydawaniu poleceń systemowych w celu wykorzystania podstawowych funkcji sprzętu i systemu operacyjnego komputera, takich jak przechowywanie określonego fragmentu danych w pamięci fizycznej komputera lub pliku na dysku twardym. Tego rodzaju programy nie zajmują się szczegółami działania dysku twardego lub pamięci fizycznej. I na odwrót, programiści systemu zajmują się szczegółami działania systemu operacyjnego i komponentów sprzętowych. Pozwala im to zbudować oprogramowanie, które defragmentuje dyski twarde i sprawdza integralność pamięci fizycznej komputera.
Oprócz zdolności do budowania takich narzędzi, programiści systemów są zwykle ekspertami w zakresie podstawowego funkcjonowania systemów operacyjnych. Wszyscy programiści znają wywołania systemowe, zarządzanie wątkami oraz obsługę wejść / wyjść, ale programowanie systemu wymaga od inżyniera oprogramowania możliwości manipulowania mechanizmami systemu operacyjnego. Umożliwia to programistom systemowym wykonywanie specjalistycznych instalacji i automatyzację zadań związanych z konserwacją systemu.
Znajomość rdzenia systemu operacyjnego jest również konieczna w celu maksymalizacji wydajności aplikacji na określonej konfiguracji sprzętowej. Na przykład bardzo zajęci sprzedawcy internetowi potrzebują swoich stron internetowych i systemów przetwarzania transakcji, aby działały tak wydajnie i niezawodnie, jak to możliwe. Korzystając ze swojej wiedzy na temat wewnętrznej mechaniki systemów operacyjnych i komponentów sprzętowych, np. Jak zoptymalizować obsługę określonego wątku w danym systemie operacyjnym lub które algorytmy działają najszybciej na których komponentach sprzętowych, programista systemu może pomóc w dostrojeniu wydajności aplikacji.
Ten szczegółowy dostęp do wewnętrznych funkcji sprzętu i komponentów systemu operacyjnego wymaga programowania systemu w języku, który umożliwia tego rodzaju dostęp do sprzętu na niskim poziomie. Języki takie jak Java®, Python ™ lub Ruby on Rails® są tym, co programiści nazywają językami wysokiego poziomu. Oznacza to, że ułatwiają programowanie aplikacji, nie zmuszając programisty do obsługi drobiazgowych szczegółów zarządzania sprzętem. Programowanie systemu wymaga dokładnie tego rodzaju dostępu, dlatego programiści używają języka niskiego poziomu, takiego jak C lub C ++.