Задать вопрос
@ClusterBias

Что значит понимать устройство операционных систем?

Всем привет. Часто слышу от "IT гуру", что программисту просто необходимо понимать устройство операционной системы, чтобы писать более качественный код. Но вот не могу понять, что это реально значит. В моем понимании понимать что либо, это или возможность написать это самому, либо суметь разобраться в чем-то что уже написано. То есть реально знать как конкретная реализация работает. Реально эти люди (имею ввиду тех, у кого работа непосредственно не связана с лоу левел программированием) могут разобраться например в сорсах линукса? Или когда это говорят, то имеют ввиду общие концепции операционных систем? Если второе, то в чем тогда польза?
  • Вопрос задан
  • 834 просмотра
Подписаться 3 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 8
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Чем больше программист знает, тем лучше может делать свою работу. Знание принципов работы и особенностей реализации интерпретатора/компилятора/виртуальной машины позволит разрабатывать более эффективные программы, чем просто знание языка. Знание принципов работы и особенностей реализации операционной системы позволит разрабатывать ещё более эффективные программы. Знание железа - ещё более эффективные. Вам решать, на сколько крутым специалистом вы хотите стать.
Ответ написан
Комментировать
longclaps
@longclaps
Объяснять долго, лучше реализовать bypass-решение.
ClusterBias, чтобы писать более качественный код, тебе не необходимо понимать устройство операционных систем.
Просто старайся, будь усерден и прилежен. А об устройстве операционных систем поговорим в другой раз.
Ответ написан
Комментировать
32bit_me
@32bit_me
Программист, встраиваемые системы
Как бы операционная система для того и существует, чтобы абстагироваться от железа и деталей внутренней реализации. Так что утверждение попросту неверно.
Ответ написан
ApeCoder
@ApeCoder
Люди могут разобраться даже без сорцов - Марк Руссинович разбирался в свое время по утекшим отладочным символам от винды (см. кстати, его книжку "Windows internals").

Есть "закон дырявых абстракций" по которому всегда найдется ситуация, когда возникает необходимость знать детали реализации а не только интерфейс. Например, часто такое возникает при суровых требованиях к быстродействию либо когда что-то идёт не так.
Ответ написан
Комментировать
Часто слышу от "IT гуру", что программисту просто необходимо понимать устройство операционной системы, чтобы писать более качественный код.
Критерии качества разные. Код может быть качественным, красивым, читабельным, правильным, работающим верно и стабильно, но медлееннноооооо.
Иметь представление о принципе работе ОС, на которой исполняется код - признак хорошего тона и уровня знаний. Правда высший пилотаж начинается после того, как начинаешь понимать как код выполняется ОС и как он работает на железе. Потому что на физическом уровне куча нюансов, которые могут свести на нет многие хорошие начинания.
Ответ написан
Комментировать
petermzg
@petermzg
Самый лучший программист
Для примера знать про "Вытесняющую многозадачность", что любой поток может быть прерван в любое время и по этой причине в многопоточной программе нужно позаботиться о синхронизации данных.
Знать как она реализована на уровне ОС при этом совсем не обязательно, но вот понимать, что такое есть в ОС необходимо.
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
необходимо понимать устройство операционной системы

Верно только отчасти. Говнокодеру-формошлепу не нужно понимать ничего - у него есть знания, отточенные до навыков, которые он применяет в работе. Ему их хватает, а на развитие он давно положил, потому что... (тут длинный список "почему" в который входит все что угодно от жены и ипотеки до мировой закулисы)
Программисту, который думает о саморазвитии, о том, чтобы расти, чтобы заниматься более крутыми проектами - знание того, как работает ОС - крайне желательно. Потому что существуют моменты, которые не понять без понимания того, почему так происходит.
Например - в мане расписано, как применять fork(). Но почему надо применять так и что будет если так не сделать - без некоторого понимания работы оси понимание работы вызова не наступит.
Ответ написан
Комментировать
usdglander
@usdglander
Yipee-ki-yay
Событие №1. Вы нажали кнопку "Ж" на клавиатуре.
Событие №2. В блокноте, который открыт на экране появляется буква "Ж".
Пока вы подробно не знаете что происходит между этими событиями о знании устройства операционной системы говорить рано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы