Сколько оригинального кода осталось в современных программных продуктах? [закрыто]

32

Многие из вас работают в крупных компаниях, которые поставляют известное программное обеспечение. Мне было интересно, сколько оригинального кода (в основном, кода, который был выпуском "v1.0") осталось в современных массовых приложениях, таких как, скажем, Firefox, Photoshop, Windows, Linux и т. Д.? Я бы действительно предпочел опыт из первых рук и реальные истории войны.

Спасибо за удовлетворение моего любопытства.

РЕДАКТИРОВАТЬ

Оказывается, есть степень недопонимания. Что мне нужно, так это следующее: когда вы обвиняете / комментируете исходный код, есть ли какие-либо части или даже целые файлы нетронутыми с момента первого релиза 1.0.

Антон Гоголев
источник
37
Река стекает с горы. Вода испаряется и впитывается в землю. Новая вода поступает из других потоков. Когда река достигает моря, это та же самая река? Как вы можете сказать? Что если ни одна молекула не совершит весь путь от вершины горы до моря? Если ни одна молекула не одинакова, как мы можем сказать, что это одна и та же река? И как этот вопрос может быть более значимым, чем глупая история о реке?
С.Лотт
4
Вопрос начинается хорошо, но эта фраза «Я действительно предпочел бы непосредственный опыт и реальные истории войны». просто предлагает список ответов, говорящих «у нас еще есть X% исходного кода», где X варьируется от 0 до 100.
ChrisF
10
@ Антон Гоголев: Дело в том. Зачем спрашивать? Мой реальный опыт включает в себя два продукта, на 80% равных 1,0 и 0% на 1,0. Это мой опыт. Что вы знаете сейчас, чего не знали раньше? Какая у вас проблема, которая решена? Как это поможет вам?
С.Лотт
4
@ S.Lott Я в недоумении ... Любопытство? Разве не интересно знать, что эта Windows 7 Ultimate, которую используют некоторые из нас, все еще имеет код, начиная с Windows 3.1?
Антон Гоголев
6
@ Антон Гоголев: "Любопытство?" Извините, это мало что значит для меня. Если ответ был 17%, что тогда? Что следует из этого наблюдения?
С.Лотт

Ответы:

36

Больше, чем вы ожидаете, и намного старше, чем вы ожидаете. Даже при «полном переписывании» и больших рефакторингах многие модули остаются нетронутыми.

Петер предполагает, что, например, вы не найдете старый код Netscape в Firefox. Что не так, если вы будете искать по исходному коду, вы найдете довольно много файлов с таким отказом от ответственности, как:

* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000 

Например, в заголовках ядра Linux вы можете найти такие вещи, как:

include/linux/if_ppp.h: * Copyright (c) 1989 Carnegie Mellon University.
include/linux/quota.h: * Copyright (c) 1982, 1986 Regents of the University of California. 
include/linux/coda.h:          Copyright (c) 1987-1999 Carnegie Mellon University
include/linux/mc146818rtc.h: * derived from Data Sheet, Copyright Motorola 1984 (!).
include/net/slhc_vj.h: * Copyright (c) 1989 Regents of the University of California.
Vartec
источник
1
Серьезно, Firefox полон десятилетнего кода.
kizzx2
1
Эй, это все еще работает (вероятно)
Каллум Роджерс
1
@Callum Rogers: Это работает, но не хорошо, и это медленно ... Позор, как Firefox упал так.
Anto
2
MPL требует, чтобы был добавлен элемент «Первоначальный разработчик», но это не значит, что в тот момент, когда файл последний раз был затронут. Firefox имеет много старого кода, но если он медленный - код, который достаточно медленный для того, чтобы его заметили, переписывается.
Пол Биггар
3
@ kizzx2 код не ржавеет ..
27

Я не знаю, сколько, но старый код определенно есть, но постепенно удаляется. Например, в Windows 2008 или Vista перейдите в c: \ windows \ fonts с помощью проводника, щелкните правой кнопкой мыши на левой панели и выберите «установить новый шрифт». Отображаемое диалоговое окно - из окна 3.1 дня (проверьте скриншот). Если вы видите то же самое в Windows 7, то теперь это намного лучшая панель управления, такая как UI.

Диалог установки новых шрифтов

softveda
источник
+100 Я сам нашел это несколько лет назад
Николай Рейшлинг
Да, это ... msoOldStyleDialog (?) Все в порядке, все еще поддерживается для устаревших программ, которые завершены и поэтому остались на уровне 1.0.x. Как простой селектор файлов. Хотя в этом случае это просто вопрос диалога, который они пропустили во время капитального ремонта (-ов) GUI.
Хенрик Эрландссон
6

Я не могу сказать, сколько лет код на работе. Я могу вернуться только к тому моменту, когда он был добавлен в Subversion, и многое из этого восходит к тому времени.

Однако у меня есть друг, который работал над кодом Microsoft Office. Несколько лет назад он сказал мне, что убрал с него несколько звонков SaveA5World. Этот призыв имел целью старые Macintoshes с процессорами M680? 0 и не имел смысла с тех пор, как Apple в начале 90-х перешла на Mac PowerPC.

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

Дэвид Торнли
источник
2

«Если они с самого начала выполнили свою работу очень хорошо, большую часть, в противном случае небольшую часть».

Строгие языки показывают эту черту. В языках Никла Вирта мало что изменилось, потому что они были спланированы точно. (Это на самом деле изменилось в последнее время для Delphi, и изменится с новой версией универсального развертывания.)

Конечно, в этом есть и обратная сторона. Принятие решения о том, что исходный код достаточно хорош, например, в случае Microsoft Windows или прекрасных приложений, таких как ACDSee, текстовые редакторы или хорошо известные приложения командной строки «дух Linux».

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

Photoshop будет иметь 90% того же кода, начиная с 5.0, если вы будете использовать набор функций. ; P это делает? Нет почему? Продажа обновлений. Вы не можете сделать больше с этим сегодня.

Набор функций файлового менеджера, вплоть до того момента, когда он хочет использовать FTP, Интернет и облако, практически одинаков для любой платформы на протяжении десятилетий. Единственная причина, по которой такое приложение до сих пор не достигло уровня 1.0, связана с плохим планированием, прихотью, необходимостью обновления - и хотя бы в небольшой степени изменением мира вокруг приложения.

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

Все остальное вряд ли останется где-то рядом с кодом в 1.0. И почему бы вам не переписать приложение, если у вас есть отличная идея? Вы должны, это весело, чтобы код! :) За исключением того, что произошло во многих современных программных продуктах. Изменения ради изменений (продажи), не мотивированные набором функций, и, в меньшей степени, обновления для соответствия меняющимся платформам, - это самый важный момент.

И в этом супе взаимодействующих частей постоянно обновляемого программного обеспечения немногие кодовые базы избегают пересмотров. Некоторые все еще придерживаются мечты о фондах и модульности (и не выпускают преждевременно), но подавляющее большинство застряло в цикле релиз-исправление-обновление.

Хенрик Эрландссон
источник
-2

Даже якобы «передовые» системы, используемые для игр, такие как iD Tech и Unreal, все равно содержали бы значительный код 1.0.

Алан Б
источник