Найти в Дзене

Насколько сложен код для Microsoft Windows?

📊 ZEL-Услуги ➡ Инфоблок ➡ Статьи Чтобы разобраться в этом вопросе, мы обратились к одному из разработчиков команды Windows NT в компании Microsoft — Кену Греггу (Ken Gregg). 💬 Кен Грегг (Ken Gregg), разработчик в составе группы Windows NT «Могу сказать вам, что у меня был доступ к исходному коду, когда я был в команде Windows NT (NT является основой для всех настольных версий Windows начиная с XP), во время проектов разработки NT 3.1 и NT 3.5. Всё было в рамках стандартов кодирования NT Workbook — эдакой «библии» для всей проектной команды...
...Хотя я и не читал каждую строку кода, но то, с чем мне пришлось работать, было очень:
• чётким,
• модульным,
• многоуровневым,
• обслуживаемым».
Нужно исходить из того, что именно понимается под сложностью кода. Это понимание сугубо субъективное, ведь так? Вместе с тем, существует множество различных метрик, используемых и комбинируемых для измерения сложности программного обеспечения в тех или иных ситуациях (та же самая модульность,
Оглавление

📊 ZEL-Услуги Инфоблок Статьи

Чтобы разобраться в этом вопросе, мы обратились к одному из разработчиков команды Windows NT в компании MicrosoftКену Греггу (Ken Gregg).

💬 Кен Грегг (Ken Gregg), разработчик в составе группы Windows NT

«Могу сказать вам, что у меня был доступ к исходному коду, когда я был в команде Windows NT (NT является основой для всех настольных версий Windows начиная с XP), во время проектов разработки NT 3.1 и NT 3.5. Всё было в рамках стандартов кодирования NT Workbook — эдакой «библии» для всей проектной команды...
...Хотя я и не читал каждую строку кода, но то, с чем мне пришлось работать, было очень:
• чётким,
• модульным,
• многоуровневым,
• обслуживаемым
».


Нужно исходить из того, что именно понимается под сложностью кода. Это понимание сугубо субъективное, ведь так?

Вместе с тем, существует множество различных метрик, используемых и комбинируемых для измерения сложности программного обеспечения в тех или иных ситуациях (та же самая модульность, многоуровневость и обслуживаемость).

-2

Насколько сложна Windows в плане кода

Конечно, чтобы прочитать и понять код, вам нужно было бы иметь представление об общей архитектуре Windows NT.

💡 Вероятно, лучшим источником информации о внутренностях Windows сегодня являются книги Windows Internals 6th Edition (в двух томах).

Некоторые люди просто приравнивают сложность кода к размеру. У этого сравнения тоже есть метрика — строки кода (LOC).

Измерение LOC зависит от используемых инструментов и критериев. Их выбирают для точного определения строк кода на каждом языке программирования.

-3

💬 Кен Грегг (Ken Gregg)

«Существует много споров о методах, используемых для подсчета строк кода (LOC). Если использовать одни и те же критерии от одного выпуска к следующему, то получится относительное изменение размера базы кода.
Сравнивать эти числа с цифрами другой ОС, которая использовала другой метод подсчета строк кода, всё равно что сравнивать яблоки с апельсинами. То есть это некорректный подход».
-4

Изменения Windows по размеру кода

Здесь приводятся некоторые лакомые кусочки, дающие представление о размерах современной кодовой базы Windows. Строки кода здесь являются приблизительными и неофициальными, но основаны на достаточно надёжных источниках, о которых говорит Кен Грегг.

Как база кода Windows NT развивалась с 1993 года

MLOC — это количество миллионов строк исходного кода. По ним можно определить относительную сложность операционной системы, если опираться на размеры кода (LOC-методика).

  • Windows NT 3.1 (1993) - 5,6 MLOC
  • Windows NT 3.5 (1994) - 8,4 MLOC
  • Windows NT 3.51 (1995) - 10,2 MLOC
  • Windows NT 4.0 (1996) - 16 MLOC
  • Windows 2000 (2000) - 29 MLOC
  • Windows XP (2001) - 35 MLOC
  • Windows Vista (2007) - 45 MLOC
  • Windows 7 (2009) - 42 MLOC
  • Windows 8 (2012) - 50 MLOC
  • Windows 10 (2015) - 55 MLOC

⚠ Исходный код Windows состоит в основном из C и C++, а также небольшого количества кода на ассемблере.

Некоторые из утилит пользовательского режима и другие подобные службы пишутся на Си Шарп, но это относительно небольшой процент от общей базы кода.

-5

💬 Кен Грегг (Ken Gregg)

«Я намеренно не включил в список 16-битные версии ОС, выпущенные с 1985 по 2000 годы. Windows NT была основой для всех современных 32-бит и 64-бит версий Windows. Количество строк кода в серверных версиях было таким же, как и в несерверных версиях, выпущенных в том же году (то есть они имели одинаковую базу исходного кода)».
-6

Несколько слов про ядро Windows NT

По словам Кена, работа над ядром NT началась в 1988 году. Ядро было создано с нуля в качестве 32-разрядной упреждающей многозадачной ОС.

Ядро NT впервые загрузилось в июле 1989 года на процессоре Intel i860 RISC. С самого начала был сильный толчок к тому, чтобы новая ОС была совместимой с различными архитектурами центральных процессоров и не была привязана только к архитектуре Intel x86 (IA-32).

⚠ NT в конечном итоге работал на MIPS, DEC Alpha, PowerPC, Itanium и, конечно, Intel x86 и x64.

Некоторая сложность была добавлена ​​в базу кода на уровне абстрагирования оборудования (HAL). Это было нужно для поддержки неинтеловских архитектур.

-7

Как вы оцениваете перспективы Windows в плане кода?

Нужна ли кардинальная смена ядра Windows 10, чтобы стать воистину удобной и надёжной операционной системой? Или лучше окончательно инвестировать в Mac и Linux? Напишите в комментарии ваши мысли.