LINUX.ORG.RU

Что такое системное программирование?

 


1

3

В описании вакансии написано «навыки системного программирования для UNIX». Я не пойму, что это значит? Знаю, бывает программирование на уровне ядра Линукс - драйверы там всякие, ну и разработка ядра. А системное программирование это что, и в чем его особенности? Написать программу с гуем - это не системное программирование?

Нужно смотреть описание вакансии целиком. Это может быть и знание POSIX на уровне подергал за сокеты, а может и что-то ядреное.

staseg ★★★★★
()

Могут подразумевать что угодно, часто хотят чтобы умел пользоваться ~ POSIX'ным API (open, close и т.д.).

mashina ★★★★★
()

навыки системного программирования для UNIX

да напиши им что компильнул gentoo, пусть завидуют

res2500
()
Ответ на: комментарий от res2500

поправочка - «установил», максимум ядро компильнул и то если генкернелу не доверят ;)

anonymous
()

Системное программирование - Святой Грааль студентов программистов. Есть мнение, что если ты, будучи студентом, не пилил свою ОС, с тобой не очем разговаривать.

tlx ★★★★★
()

Вероятно, Си или Си++. Работа с файлами и сокетами через POSIX. Всякие там select, poll, epoll вкупе с их ограничениями. Может быть, asio. TCP/IP, UDP. Еще до кучи SNMP и всякого другого хлама.

Скажем, надо реализовать сервер, работающий по такому-то протоколу. Вот и задача для системного программирования. Да тот же веб-сервер написать.

dave ★★★★★
()

Никто не уверен в границах на 100%.

Если умеешь хедеры из <sys/*> дёргать, то, наверное, системный.

Bfgeshka ★★★★★
()

это программирование систем: то есть, системная программная инженерия, любых программных систем.

хотя зачастую под этим понимают всего лишь драйвера, протоколы, системы реального времени и прочую эмбедщину.

anonymous
()

Написать программу с гуем - это не системное программирование?

не, это скорее прикладное. хотя если твоя программа с гуём написана на tcl/tk, и дёргает какой-то CAD — то тут уже ближе к системному.

вопрос в том, что именно делает эта программа. может она там в фоне компиляторы запускает.

anonymous
()

чушь это значит
набирают бодишопы, местные или для кудато
в нормальных вакансиях всегда приписывают с чем прийдется сталкиваться,
дрова писать или сетевые сервисы или гуи итд

anonymous
()

Написание дров, ядерное программирование.

Zoominger
()
Ответ на: комментарий от dave

эээ... по-моему, всё перечисленное - это просто программирование. самое обычное. бытовое, так сказать.
системное - это драйверы, допиливание ядра (правда, под UNIX сие проблематично) и около того.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Тогда как ты назовешь? К «прикладному программированию» select/poll/epoll/asio точно не относятся. Просто мне кажется, что не стоит гипертрофировать «ядерное программирование». Очень узкая ниша узкой ниши.

Впрочем, снова скатываемся в терминологический спор, а я страсть, как их не люблю)

dave ★★★★★
()
Ответ на: комментарий от Iron_Bug

А главное, что из себя представляет «допиливание ядра» в возможном более общем контексте коммерческих юниксов с закрытыми ядрами? Патчинг ядра соляриса? Рилтайм подправить или работу потоков? По-моему уже это подсказывает, что имелось в виду в исходном вопросе.

dave ★★★★★
()
Ответ на: комментарий от i-rinat

Что-то в педивикии пургу какую-то написали. Это получается, что железячники — тоже системные погромисты ☺

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от dave

К «прикладному программированию» select/poll/epoll/asio точно не относятся

Да ладно тебе! Я вот, вообще ни разу не погромист, а всякие select'ы, libusb и прочая низкоуровневщина у меня постоянно...

Eddy_Em ☆☆☆☆☆
()

Системный программист — это тот, кто занимается почти исключительно копированием из одних буферов в другие. ^__~

good_riddance
()
Ответ на: комментарий от Eddy_Em

Э неее, не каждый физик разбирается в C как ты. Мне вот одного кандидата наук на путь истинный приходится наставлять иногда.

pashazz ★★★★
()

ГОСТ 19781-90:

Системная программа (System program) - Программа, предназначенная для поддержания работоспособности системы обработки информации или повышения эффективности ее использования в процессе выполнения прикладных программ.

Хотя определение и устарело, но является базой для wiki-бреда.

Теперь это все те слои, что находятся между прикладным ПО и железом. Т.е. ядро, ОС, драйвера, ФС, дополнительные библиотеки (от zlib до Qt), СУБД, фреймвёрки, ....

Далее, что же такое «системное программирование»:

Вариант 1:

Системное программирование - процесс составления системных программ.

На данный момент это уже очень широко (см. определение системной программы).

Вариант 2:

Системное программирование - инженерная дисциплина, разрабатывающая методы построения системных программ.

Это уже более стабильно, и за последние >30 лет мало чем отличается по содержимому и припёрто из ряда «ведущих» универов мира. Причём именно рассматриваются UNIX, «кое кто» даже использует свою кошерную обрезанную версию UNIX, над которой измываются меняя способы диспечеризации потоков или выделения памяти.

ИТОГ:

Воспринимай «навыки системного программирования для UNIX» как, то что пришлось воспользоваться знаниями из соответствующего курса («системное программирование» или «операционные системы») в случае если там рассматривалось использование API UNIX/Linux для создания потоков, общей памяти, и т.д.

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.