¿Qué cantidad de código original queda en los productos de software modernos? [cerrado]

32

Muchos de ustedes trabajan para grandes empresas que envían software conocido. Me preguntaba, ¿qué parte del código original (básicamente, el código que era el lanzamiento "v1.0") queda en las aplicaciones masivas modernas, como, por ejemplo, Firefox, Photoshop, Windows, Linux, etc. Realmente preferiría la experiencia de primera mano y las historias de guerra del mundo real.

Gracias por satisfacer mi curiosidad.

EDITAR

Resulta que hay un cierto malentendido. Lo que busco es básicamente lo siguiente: cuando culpas / anotas el código fuente, ¿hay partes o incluso archivos enteros sin tocar desde la versión inicial 1.0.

Anton Gogolev
fuente
37
Un río fluye por una montaña. El agua se evapora y penetra en el suelo. Llega agua nueva de otras corrientes. Cuando el río llega al mar, ¿es el mismo río? Como puedes saber ¿Qué pasa si ninguna molécula sola hace todo el viaje desde la cima de la montaña hasta el mar? Si ninguna molécula es igual, ¿cómo podemos decir que es el mismo río? ¿Y cómo es esta pregunta más significativa que la tonta historia sobre el río?
S.Lott
44
La pregunta comienza bien, pero esta frase "Realmente preferiría la experiencia de primera mano y las historias de guerra del mundo real". solo está invitando a una lista de respuestas que dice "todavía tenemos X% del código original" donde X varía de 0 a 100.
ChrisF
10
@ Anton Gogolev: El punto es este. ¿Por qué preguntar? Mi experiencia en el mundo real incluye dos productos con 80% lo mismo que 1.0 y 0% lo mismo que 1.0. Esa es mi experiencia. ¿Qué sabes ahora que no sabías antes? ¿Qué problema tienes resuelto? Cómo te ayuda esto?
S.Lott
44
@ S.Lott Estoy perdido aquí ... ¿Curiosidad? ¿No es fascinante saber que esta cosa de Windows 7 Ultimate que algunos de nosotros estamos ejecutando todavía tiene código que se remonta a Windows 3.1?
Anton Gogolev
66
@Anton Gogolev: "¿Curiosidad?" Lo siento, eso tiene poco sentido para mí. Si la respuesta fue del 17%, ¿entonces qué? ¿Qué se desprende de esa observación?
S.Lott

Respuestas:

36

Más de lo que esperabas y mucho más viejo de lo que esperabas. Incluso con "reescrituras totales" y grandes refactores hay muchos módulos que permanecen intactos.

Péter sugiere que, por ejemplo, no encontrará el viejo código Netscape en Firefox. Lo que está mal, si busca a través del código fuente encontrará bastantes archivos con descargo de responsabilidad como:

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

Por ejemplo, en los encabezados del kernel de Linux puede encontrar cosas como:

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
fuente
1
Firefox está lleno de código de una década, en serio.
kizzx2
1
Hola, todavía funciona (probablemente)
Callum Rogers
1
@Callum Rogers: Funciona, pero no está bien, y es lento ... Una pena cómo Firefox ha caído así.
Hasta
2
El MPL requiere que se agregue el elemento "Desarrollador inicial", pero no significa que fue la última vez que se tocó el archivo. Firefox tiene un montón de código antiguo, pero no si es lento; el código que es lo suficientemente lento para que cualquiera lo note se reescribe.
Paul Biggar
3
@ kizzx2 el código no se oxida ..
27

No sé cuánto, pero el código antiguo definitivamente está allí, pero se elimina lentamente. Por ejemplo, en Windows 2008 o Vista, vaya a c: \ windows \ fonts usando el explorador, haga clic derecho en el panel izquierdo y elija "instalar nueva fuente". El cuadro de diálogo que se muestra es de Windows 3.1 días (ver captura de pantalla). Si ve lo mismo en Windows 7, ahora es un panel de control mucho mejor como la interfaz de usuario.

Cuadro de diálogo Instalar nuevas fuentes

softveda
fuente
+100 En realidad, encontré esto yo mismo hace unos años
Nicolai Reuschling
Sí, eso es ... msoOldStyleDialog (?) Muy bien, todavía es compatible con los programas heredados que están terminados y, por lo tanto, se han mantenido en 1.0.x. Como un simple selector de archivos. Aunque en este caso es solo una cuestión de diálogo que se perdieron durante la revisión de la GUI.
Henrik Erlandsson
6

No puedo decir qué edad tiene el código en el trabajo. Solo puedo volver a cuando se puso en Subversion, y hay muchas cosas que se remontan hasta ahora.

Sin embargo, tengo un amigo que ha trabajado en el código de Microsoft Office. Hace unos años, me dijo que había eliminado algunas llamadas de SaveA5World. Esa llamada tenía un propósito en los viejos Macintoshes con procesadores M680? 0, y no ha servido para nada desde que Apple acudió a los PowerPC Macs a principios de los 90.

En mis observaciones, cualquier poderoso sistema de software en el que se basa una empresa se creó con tecnología que nadie quiere usar nunca más.

David Thornley
fuente
2

"Si hicieron su trabajo extremadamente bien desde el principio, una gran parte, de lo contrario una pequeña parte".

Los idiomas estrictos muestran este rasgo. Muy poco ha tenido que cambiar en los idiomas de Nicklaus Wirth, porque fueron planeados con precisión. (Esto realmente ha cambiado últimamente para Delphi, y cambiará más con la próxima versión de implementación universal).

También hay un lado negativo de esto, por supuesto. Decidir que el código original es lo suficientemente bueno, como en el caso de Microsoft Windows, o aplicaciones encantadoras como ACDSee, editores de texto o las conocidas aplicaciones de línea de comandos "espíritu de Linux".

Aunque estas aplicaciones pueden parecer torpes para aquellos que quizás no las amaron en primer lugar, muestran un rasgo bien planificado y un conjunto de características bien definido; incluso si no tienen campanas y silbatos, eso puede ser preferible; hacen lo que está en la lata, la compatibilidad con versiones anteriores es excelente y es probable que sigan funcionando bien en el futuro.

Photoshop tendría el 90% del mismo código desde 5.0, si utiliza el conjunto de características. ; P ¿Lo hace? ¿No porque? Venta de actualizaciones. Realmente no puedes hacer más con eso hoy.

El conjunto de características de un administrador de archivos, hasta el punto en que quiere hacer FTP, web y en la nube, es en gran medida el mismo para cualquier plataforma por décadas. La única razón por la que una aplicación de este tipo todavía no está en 1.0 se debe a una mala planificación, capricho, la necesidad de actualizar, y al menos en pequeña medida, el mundo cambia alrededor de la aplicación.

La respuesta es que algunas gemas permanecen en 1.0 o 1.0.x porque el desarrollador ha decidido sobre el conjunto de características, ha completado un programa libre de errores y no se beneficia al agregar cosas sin parar y corregir los errores en las cosas agregadas, o se ha movido para desarrollar más gemas.

Es poco probable que todo lo demás se quede cerca del código en 1.0. ¿Y por qué no debería reescribir la aplicación si tiene una gran idea? ¡Deberías, es divertido codificar! :) Excepto que eso no es lo que ha sucedido en muchos productos de software modernos. El cambio por el bien del cambio (ventas) y no motivado por el conjunto de características, y en menor medida la actualización para cumplir con las plataformas cambiantes, está a la orden del día.

Y en esta sopa de piezas interactivas de actualización constante de software, pocas bases de código escapan a las revisiones. Algunos aún mantienen el sueño de las bases y la modularización (y no la liberación prematura), pero la gran mayoría está atrapada en el ciclo de lanzamiento-reparación-actualización.

Henrik Erlandsson
fuente
-2

Incluso los sistemas aparentemente 'de vanguardia' utilizados para juegos, como iD Tech y Unreal, aún tendrían un poco de código 1.0 en ellos.

Alan B
fuente