Cómo un programador lee el origen de las especies de Darwin

Durante la lectura de El origen de las especies por selección natural de Charles Darwin, tuve un déjà vu persistente. Más tarde, me di cuenta de que los mecanismos descritos en el libro se correlacionan fuertemente con los mecanismos de desarrollo empresarial en las grandes empresas. Donde los requisitos comerciales y los programadores en constante cambio actúan como condiciones ambientales y codifican como organismos.





Para demostrar mejor esta idea, tomé un párrafo del libro de Darwin y reemplacé términos biológicos con términos del mundo del desarrollo . Las propuestas mismas siguieron siendo originales. El lenguaje es un poco específico, pero en general, creo que es comprensible.



Capítulo V. Las leyes de la variación. Breve reseña



Nuestra ignorancia de las leyes de variación es profunda. En ninguno de los 100 casos, podemos determinar la razón por la cual esta o aquella función ha cambiado. Pero en todos los casos en los que tenemos los medios de comparación, resulta que la formación de diferencias menores entre las variedades del mismo componente es causada por la acción de las mismas leyes que las grandes diferencias entre los componentes de la misma biblioteca. Los cambios en las condiciones generalmente producen solo una variabilidad fluctuante, pero a veces conducen a resultados directos y definidos: y estos resultados pueden volverse más pronunciados con el tiempo, aunque todavía no hay suficiente evidencia para respaldar esto. El hábito - en la formación de características constitucionales, el uso - en la mejora de la función y el no uso - en su degradación y reducción en muchos casos parece poderoso en su acción.



Las partes homólogas tienden a variar de la misma manera, así como a unirse entre sí. La modificación de partes de la interfaz actúa sobre partes de la estructura interna. Cuando una parte en particular se desarrolla fuertemente, puede desviar los recursos de desarrollo de sus partes adyacentes, y cualquier parte de la estructura de la aplicación que pueda eliminarse sin daño será eliminada. Los cambios estructurales a una edad temprana pueden afectar las partes que se desarrollan más tarde; indudablemente existen numerosos casos de variación correlativa, cuya naturaleza no podemos comprender. Las partes que son repetitivas son variables tanto en número como en estructura, y esto probablemente se deba a la falta de especialización estricta de dichas partes para una función particular, de modo que la selección natural no impidió su modificación.Una consecuencia de la misma razón, quizás, es el hecho de que los productos de software en las etapas inferiores de madurez del producto de software son más cambiantes que los de nivel superior, cuya estructura de aplicación completa es más especializada. Las funciones son rudimentarias, inútiles, no sujetas a la selección natural y, por tanto, modificables. Atributos de los componentes, es decir los rasgos por los cuales los componentes de una biblioteca comenzaron a diferir del momento en que se ramificaron de un ancestro común son más variables que los rasgos de biblioteca, es decir, aquellos que se han heredado durante mucho tiempo y para los cuales no han surgido diferencias durante el período especificado. En estas observaciones, nos hemos ocupado de funciones o partes especiales, pero no obstante modificables, porque han variado más recientemente y como resultado se han vuelto diferentes; pero en el capitulo II vimosque el mismo principio se aplica al proyecto en su conjunto.



Nos aseguramos de que en el área que contiene muchos componentes de esta biblioteca, es decir, donde recientemente ha habido un cambio y diferenciación significativos, o donde la producción de nuevas formas de componentes ha estado avanzando activamente, en tal área y en tales componentes todavía encontremos, en promedio, el mayor número variedades. Las firmas de funciones son muy volátiles; difieren mucho entre los componentes del mismo grupo. La mutabilidad de las mismas partes de la estructura de la aplicación solía ser útil tanto para generar firmas de funciones entre dos protocolos de comunicación del mismo componente como para formar diferencias de componentes entre componentes de la misma biblioteca. Cualquier parte o función que se desarrolle excesiva o exclusivamente en comparación con la misma parte o función en componentes relacionados,debe haber sufrido modificaciones en proporciones extraordinarias desde el inicio de esta biblioteca; de esto entendemos por qué todavía son a menudo modificables en un grado mucho mayor que otras partes, ya que la variación es un proceso lento y duradero y la selección natural en tales casos aún no ha tenido tiempo suficiente para dominar la tendencia hacia una mayor variabilidad e inversión a un estado menos modificado. Pero cuando un componente con una función inusualmente desarrollada se convirtió en el antepasado de numerosos descendientes modificados, lo que, en mi opinión, debería ser un proceso extremadamente lento que requiere un gran período de tiempo, entonces, en tal caso, la selección natural ya ha logrado impartir características constantes a esta función, a pesar del desarrollo inusual de la misma. ComponentesAquellos que heredaron casi la misma constitución de su antepasado común y estuvieron expuestos a condiciones similares naturalmente tienden a dar variaciones similares o, a veces, regresan a algunas de las características de sus antepasados ​​lejanos. Aunque, debido a la inversión y variación similar, no pueden surgir modificaciones nuevas e importantes, tales modificaciones se sumarán a la hermosa y armoniosa variedad de desarrollo.



Cualquiera que sea la razón, quizás, para cada sutil diferencia entre las versiones de la biblioteca, y debe haber una razón para cada una de ellas, tenemos razones para creer que la acumulación constante de diferencias favorables ha causado todas las modificaciones estructurales más importantes debido al ciclo de vida de cada componente.



Términos que reemplacé en el párrafo original



  • género -> biblioteca
  • ver -> componente
  • órgano -> función
  • individual -> proyecto
  • descendencia y sus padres -> versiones de biblioteca
  • nutrientes -> recursos de desarrollo
  • seres orgánicos -> productos de software
  • escalera orgánica -> madurez del producto de software
  • características sexuales secundarias -> firmas de funciones
  • género -> protocolo de comunicación
  • fortalecimiento, debilitamiento -> mejora, degradación
  • sólida y externa -> interfaz externa
  • suave e interno -> estructura interna
  • naturaleza -> desarrollo


También reemplacé términos que se verían extraños en este contexto:



  • uso -> uso (ya que la palabra parece un poco desactualizada)
  • organización -> estructura de la aplicación (por lo que el significado es correcto)
  • estilo de vida -> ciclo de vida


También sugiero que se familiarice con el párrafo original, lo escondí debajo del spoiler.



Leer el párrafo original del libro.
. 100 , . , , , , . , : , . – , – – . , . . - , , , , , , . , ; , , . , , , , , , - , . , , , , , , , . , , . , . . , , , , , . . , . , , ; II , . , , , . . , . ; . , . , , ; , , , , . , , , , , , . , , , . , - , , .



, , – , – , .






Una pequeña explicación



Después de un reemplazo completo, noté que es muy difícil leer el texto (¿quién lo hubiera pensado?). Hay muchas razones para esto. Uno de los más importantes es el párrafo seleccionado. El caso es que este párrafo incluye un breve recuento de todo lo que se describió en el propio capítulo, por lo que el texto es muy sucinto y conciso. Lamentablemente, no pude encontrar otro párrafo adecuado en el que fuera posible reemplazar los términos con gestos tan mínimos.



Para que el texto no parezca del todo loco, ampliaré un par de frases con un poco más de detalle.



Ejemplo 1



Original:

Cuando una parte se desarrolla fuertemente, puede estar desviando nutrientes de sus partes adyacentes, y cualquier parte de la organización que pueda eliminarse sin daño será eliminada.


Explicación de esta idea en el capítulo V:

, , ; , , , , , . , , , , , . , , – , .




Cuando una parte en particular se desarrolla fuertemente, puede desviar recursos de desarrollo de sus partes adyacentes, y cualquier parte de la estructura de la aplicación que pueda eliminarse sin daño será eliminada.


Un ejemplo de la vida: los íconos en el perfil de Habr ahora parecen solo divas con un borde, y una vez fueron hermosos íconos. Obviamente, no se asignan recursos para apoyar y desarrollar estos iconos. Sin embargo, leer y navegar por los comentarios es mucho más conveniente ahora que en los viejos tiempos. Aparentemente, el desarrollo de comentarios quita algunos de los recursos del desarrollo de iconos.



Ejemplo 2



Original

Los rasgos de especie, es decir, los rasgos con los que las especies del mismo género comenzaron a diferir desde el momento en que se ramificaron de un ancestro común, son más variables que los rasgos genéricos, es decir, aquellos que se han heredado durante mucho tiempo y para los cuales durante el período especificado no lo hicieron. surgieron diferencias.



Explicación de esta idea en el capítulo V:

Expliquemos esto con un ejemplo simple: si, en un género más grande de plantas, algunas especies tuvieran flores azules y otras, rojas, entonces el color sería solo una característica específica, y no sorprendería a nadie si una de las especies azules cambiara a rojo, o viceversa. ; pero si todas las especies tuvieran flores azules, entonces el color sería un signo genérico y su cambio parecería un fenómeno más extraordinario.


Después de reemplazar los términos:

Atributos de los componentes, es decir Los rasgos por los cuales los componentes de una biblioteca comenzaron a diferir del momento en que se ramificaron de un ancestro común son más variables que los rasgos de biblioteca, es decir, aquellos que se han heredado durante mucho tiempo y para los cuales no han surgido diferencias durante el período especificado.


Ejemplo de la vida real



Si utiliza botones del marco CSS Bootstrap en un proyecto, por ejemplo, es obvio que el contenido de las clases .btn o .btn-primary cambiará con más frecuencia que cambiar el nombre de estas clases a algo como .g-button o g -botón-primero



Conclusión



Aunque el artículo resultó ser tan, semi serio, pero en cualquier caso, creo que podemos sacar mucho del proceso evolutivo natural y trasladarlo al desarrollo.



PD: Muchas gracias a mis amigos y compañeros. No tenían idea de por qué me decían los términos.



All Articles