¿Introducción al nuevo libro del profesor Zhou Ligong "Programación para interfaces y marcos AMetal (Parte 1)"?
Prólogo del libro
El costo de la lista de materiales del producto es muy bajo y el beneficio bruto es muy alto. ¿Por qué muchas empresas que cotizan en bolsa no pueden permitirse comprar una casa con su dinero? ganancias anuales? ¿Quién compró la casa? ¡Esta pregunta merece nuestra reflexión!
1. Especulación audaz
La búsqueda de la reutilización del código y la multiplataforma es el objetivo soñado de los desarrolladores, pero la realidad es cruel y es casi imposible convertirse en realidad. ¿Por qué? Las MCU incluyen núcleos M0, M4, M7, ARM9, A5, A7, A8, DSP... Algunos proyectos no requieren un sistema operativo, algunos proyectos pueden elegir FreeRTOS o μC/OS-II o sysBIOS, y otros proyectos pueden elegir Linux o Windows, porque diferentes empresas de semiconductores admiten diferentes plataformas.
Basándonos en esto, bien podríamos hacer una suposición audaz. Aunque PCF85063, RX8025T y DS1302 provienen de diferentes compañías de semiconductores, todos son chips de reloj de calendario en tiempo real RTC, que pueden ser muy abstractos y usar la misma interfaz de controlador, y sus diferencias se solucionan mediante interfaces de controlador especiales. Aunque FreeRTOS o μC/OS-II o sysBIOS, Linux y Windows son diferentes, todos son sistemas operativos con subprocesos múltiples, semáforos, mensajes, buzones de correo, colas, etc. Obviamente, QT y emWin son iguales. ser altamente abstraído en un marco GUI. En otras palabras, no importa qué MCU o si se utiliza un sistema operativo, siempre que se modifique el archivo de encabezado correspondiente, el código de la aplicación se puede reutilizar. Este es el prototipo de la plataforma.
2. Dominios centrales y dominios no centrales
De hecho, un sistema de software encapsula el conocimiento en varios campos, uno de los cuales representa la competitividad central del sistema. "Dominio principal", otros dominios se denominan "dominios no principales". Aunque los términos más coloquiales son "negocios" y "tecnología", es más riguroso utilizar "dominios principales" y "dominios no principales".
Los dominios no centrales son dominios de otras personas, como controladores, sistemas operativos y componentes subyacentes. Incluso si tienes algunas ventajas, son temporales y los competidores también pueden obtenerlas a través de otros canales. Aunque las mejoras en los dominios no centrales son necesarias pero no suficientes, aún necesitamos profundizar en los dominios centrales para que los competidores no puedan obtenerlos fácilmente de terceros. Porque profundizar en el dominio central y lograr la reutilización basada en el dominio central es el medio fundamental para ganar y mantener la competitividad.
Para lograr la reutilización basada en dominios principales, es necesario considerar los dominios principales y los dominios no principales por separado. Porque mezclar prematuramente conocimientos de varios campos agregará una carga innecesaria, lo que dejará a los desarrolladores incapaces de liberar sus cerebros para pensar en problemas más profundos en el dominio central. Dado que la escala del problema a resolver aumenta y la capacidad y el poder de computación del cerebro humano son limitados, debe dividirse y conquistarse, porque el conocimiento del dominio central y el dominio no central son independientes.
3. Las diferencias de pensamiento determinan las ganancias
En el libro "Diseño estructurado", Yourdon y Constantine consideran la economía como la fuerza impulsora subyacente del diseño de software que debe esforzarse por reducirlo en general. costo. Se ha descubierto que el mantenimiento del software cuesta mucho más que su coste inicial porque comprender el código existente lleva tiempo y es propenso a errores. Al mismo tiempo, una vez realizados los cambios, se deben realizar pruebas e implementación. La razón clave por la que Apple se ha convertido en la empresa de telefonía móvil más rentable del mundo es que el rendimiento de sus productos supera las expectativas de los usuarios y, debido a la gran cantidad de conocimiento del dominio central reutilizable, el costo general se ha alcanzado al extremo.
Más a menudo, los programadores no codifican, sino que leen programas. Debido a que leer un programa requiere una comprensión conceptual y detallada, la inversión en modificar el programa será mucho mayor que la inversión en la programación inicial. A partir de este conocimiento es necesario pensar y resumir constantemente una serie de cosas que nos preocupan para hacerlas reutilizables. Este es el origen de la metodología.
A través del análisis de datos financieros, debido a errores tempranos en la toma de decisiones y la falta de métodos científicos de ingeniería de software, desarrollamos algunos productos con ciclos largos, altas dificultades técnicas y retornos extremadamente bajos. No solo el software. Es difícil de reutilizar, pero también es difícil de expandir y expandir. El mantenimiento es difícil, lo que genera altos costos de desarrollo.
Obviamente, desde la perspectiva del desarrollo de software, la ingeniería de software y la informática son dos campos de conocimiento completamente diferentes. La principal diferencia son las personas, ya que el desarrollo de software es un proceso centrado en las personas. Si se considera el factor humano, la ingeniería de software está más cerca de la economía que de la informática. Sin cambiar su forma de pensar, será difícil desarrollar un producto que sea fácil de vender y de bajo costo.
Aunque la mayoría de los desarrolladores son muy diligentes, su objetivo no es maximizar las ganancias corporativas y personales, sino aprender tecnologías básicas por diversión, rara vez se comunican con el personal y los usuarios del mercado y no prestan atención a la mejora personal. La creatividad de aprovechar las necesidades del usuario, pero gastar energía en el lugar equivocado, es un problema profundo del que muchas personas no se han dado cuenta en toda su vida. Simplemente se lamenta superficialmente de que no han sido reconocidos por sus talentos, e incluso elude la responsabilidad de sus fracasos sobre los demás. Se puede ver que la diferencia entre las personas no radica en el conocimiento y la experiencia, sino que la diferencia de pensamiento determina el futuro de todos.
4. Solución
La calidad del código no solo determina directamente la calidad del software, sino que también afecta directamente el costo del software. Los costos de software se componen de costos de desarrollo y costos de mantenimiento, y los costos de mantenimiento son mucho más altos que los costos de desarrollo. El fenómeno del desarrollo por fuerza bruta abunda. Una gran cantidad de fondos ganados con tanto esfuerzo se absorben silenciosamente y toda la sociedad se desperdicia gravemente. recursos. .
¿Por qué no hacer que la tecnología compleja sea altamente abstracta? Si se puede realizar, puede permitir que los profesionales hagan cosas profesionales. AWorks nació con este trasfondo. Debido a que se incorporan más métodos de tecnología de ingeniería de software, los programadores pueden liberarse por completo de los dominios no centrales para centrarse en la competitividad central.
No importa qué chip y sistema operativo elijas, como Linux y cualquier otro RTOS, siempre que AWorks lo admita, puedes ejecutar multiplataforma en la placa de destino. Porque no importa qué sistema operativo, es solo un componente de AWorks. AWorks proporcionará los adaptadores correspondientes para diferentes sistemas operativos, por lo que todos los componentes se pueden reemplazar según sea necesario.
Dado que AWorks ha formulado especificaciones de interfaz unificadas y ha abstraído en gran medida los componentes funcionales integrados y los dispositivos periféricos de varios microprocesadores, ya sea que elija ARM o DSP, a través de un software de controlador de periféricos "personalizado" bajo demanda y otros relacionados. Los componentes se basan en principios de diseño de software altamente reutilizables y la idea de programar solo para interfaces, de modo que el software de aplicación pueda lograr "programación única, uso de por vida y multiplataforma". En base a esto, el alcance de uso de AWorks se ha ampliado aún más y se ha desarrollado AMetal con un código más pequeño. El mayor valor que AWorks puede aportarle es que no es necesario reinventar la rueda.
5. Introducción a la serie de libros
"Programación para AMetal Framework and Interfaces (Parte 1)" es el primer y segundo libro de la "Serie de prácticas y métodos de ingeniería de software integrados". , la serie contiene cuatro conjuntos:
El primer conjunto
"Programación y estructuras de datos"
"Programación para AMetal Framework e interfaces" ((Parte 1)
"Análisis y diseño orientado a objetos"
Segundo conjunto
"Programación para el marco y la interfaz de AWorks" (aplicable a varias MCU)
"Análisis y diseño orientado a objetos"
El tercer conjunto
"Programación para el marco y las interfaces de AWorks: basado en Linux" (aplicable al kernel ARM9 y superior)
"Análisis y diseño orientado a objetos"
El cuarto conjunto
"Programación moderna en C"
"Para la programación de marcos e interfaces en AWorks - Basado en C》 (aplicable a núcleos ARM9 y superiores)
《Análisis y diseño orientado a objetos》
Los contenidos aún en desarrollo incluyen pruebas e integración continua, todos los libros están compilados por El equipo de Zhou Ligong desde la esencia del conocimiento teórico hasta la aplicación práctica, nos reuniremos con usted uno tras otro para aprender y discutir juntos.