¿Cuánto depende la arquitectura del software del idioma?

14

Al informarme sobre la arquitectura del software y los patrones de diseño, he notado que en la mayoría de los casos algunas características del lenguaje y detalles de diseño están implícitas en la explicación.

Por ejemplo, Prácticamente cualquier artículo o libro que ilustre las ideas utilizando clases e interfaces. Todo lo que uno puede encontrar fácilmente sobre este tema mencionaría objetos y conceptos de POO.

¿Qué sucede si el lenguaje en el que está escrito el sistema no tiene tales conceptos? P.ej. ¿Qué sucede si uso Python o Node, que se escriben dinámicamente y no tengo una noción de interfaz? ¿Qué sucede si uso TypeScript donde una interfaz es una construcción efímera, que no existe en tiempo de ejecución? ¿Qué pasa si estoy tratando de abarcar la programación funcional? ¿Debo ignorar por ejemplo SOLID y busca otros conceptos, ¿adecuados para mi idioma?

Si es así, ¿cuáles son esos? Desafortunadamente, todos los paradigmas bien adoptados (que yo sepa) se refieren a los conceptos y tipos de POO de alguna manera. Si no, ¿qué reglas debo seguir al adaptar la arquitectura general y los principios de diseño a mi idioma particular y caso de uso?

¿Cómo describirías la dependencia entre la arquitectura y el idioma en general?

    
pregunta Tristan Tzara 12.05.2018 - 21:01

4 respuestas

11

Una arquitectura de software es muy parecida a la arquitectura de una casa o un puente. Un puente debe sostener el peso de sí mismo y de los vehículos que pasan sobre él o las personas que caminan sobre él. Debe soportar el clima. Los materiales que utilices para construirlo deben ser fuertes y relativamente ligeros.

Hay muchos materiales que puedes usar para construir una casa. Se puede utilizar ladrillo o estuco. Se pueden utilizar vigas de madera o metálicas. Cada material tiene sus propias características, en términos de peso, resistencia, etc. Todas estas características afectan a la arquitectura.

De la misma manera, el lenguaje de programación que usas afecta la forma en que construyes tu arquitectura. Su arquitectura se verá diferente en un lenguaje de programación que tiene clases como C ++ que en un lenguaje de programación que no, como C.

Los principios de SOLID se basan principalmente en lenguajes orientados a objetos (es decir, lenguajes que tienen clases).

    
respondido por el Robert Harvey 12.05.2018 - 22:41
4

La arquitectura depende de las capacidades para cumplir sus objetivos. Las opciones de idioma pueden limitar las capacidades. Cualquier lenguaje completo de Turing tiene la capacidad de completar cualquier tarea de programación. Después de eso, se trata de cómo el lenguaje legible por humanos permite que la solución sea.

Muchos esquemas de arquitectura de software le piden que elimine todo el conocimiento de las opciones tecnológicas de las reglas de negocio del dominio central. La única opción técnica de la que nunca puede eliminar el conocimiento es el idioma en el que elige expresarlo.

Cuando los libros de Arquitectura se apegan a informarle sobre sus objetivos, el idioma no importa mientras sea capaz de alcanzar el objetivo. Cuando los libros le dicen cómo lograr estos objetivos, el lenguaje comienza a importar.

    
respondido por el candied_orange 12.05.2018 - 22:26
1

Arquitectura como un término tiene un significado muy específico que está muy relacionado con la arquitectura en el mundo físico y en su núcleo tiene que ver con el arte y la práctica de construir cosas, sobre cómo se hacen y se ponen las cosas juntas. Tomado de esa manera, cuando la arquitectura está bien hecha, creo que el lenguaje está muy ligado a la arquitectura, así como un edificio bien diseñado debe estar íntimamente informado por el material con el que está construido.

En el software, las elecciones arquitectónicas se deben hacer de una manera que sea congruente con las propiedades del lenguaje. Si está construyendo un sistema con un lenguaje orientado a objetos, entonces espero que la arquitectura del sistema también esté orientada a objetos. Si está construyendo un sistema con un lenguaje funcional, espero que la arquitectura de ese sistema también sea funcional.

¿Tiene sentido?

    
respondido por el RibaldEddie 12.05.2018 - 21:54
1

Diría, para empezar, que incluso el lenguaje en el que piensas tiene una profunda influencia en lo que puedes concebir. Hay una razón por la cual PASCAL fue creado por Niklaus Wirth y C por Brian Kernighan y Dennis Ritchie.

En un nivel superior, la capacidad de expresar ciertos conceptos (y la falta de otros) dirigirá su pensamiento y lo hará llegar a ciertas soluciones que no serían necesariamente la misma persona, con un fondo diferente, que surgiría con.

Finalmente, los conceptos que menciona pueden implementarse en cualquier lenguaje de propósito general. Es solo que pueden no tener soporte sintáctico y la implementación puede ser complicada. Puede escribir código de ensamblaje x86 orientado a objetos si está lo suficientemente comprometido (o lo suficientemente loco) como pudo con C. De hecho, las primeras implementaciones de C ++ fueron preprocesadores que compilaron su código de C ++ en C (y los nombres de símbolos destrozados depuración mucho más divertido).

    
respondido por el rbanffy 16.05.2018 - 11:06

Lea otras preguntas en las etiquetas