¿Es posible implementar algoritmos de aprendizaje automático en lenguaje ensamblador?

Si.

Es posible programar cualquier cosa en lenguaje ensamblador que pueda programar en cualquier lenguaje de alto nivel.

Tenga en cuenta que, en última instancia, todo lo que hace la computadora implica ejecutar instrucciones de la máquina. Cuando compila y vincula su programa de lenguaje de alto nivel en un programa ejecutable nativo, ese programa ejecutable nativo contiene instrucciones de la máquina. Si su compilador genera bytecode (o algún otro código intermedio), entonces el entorno de tiempo de ejecución que interpreta ese código también está compuesto por instrucciones de máquina nativas.

El lenguaje ensamblador es solo un mapeo de instrucciones mnemotécnicas legibles a instrucciones de máquina binarias.

Las desventajas de escribir en lenguaje ensamblador son:

  • El lenguaje ensamblador generalmente requiere más tiempo, esfuerzo y atención al detalle.
  • El resultado no es fácil de transportar a otra arquitectura de CPU, por lo que tendría que volver a escribir el código para una familia de CPU diferente.

Dicho esto, a lo largo de los años se ha escrito un gran software en lenguaje ensamblador.

Los algoritmos de aprendizaje automático no tienen nada de mágico que impidan su implementación en lenguaje ensamblador.

Ciertamente. Todo se puede escribir en ensamblador, aunque cuanto más grande sea el programa, más difícil será. Muchos, muchos programas grandes, incluidos los sistemas operativos completos, se han escrito en el pasado en puro ensamblaje. Esta era la norma cuando comencé las computadoras, ya que incluso los compiladores de C eran bastante raros. Escribimos todo en asamblea. Se requirió disciplina y documentación y organización serias para hacer grandes programas en asamblea. En general, los equipos más pequeños trabajaron más tiempo para producir el código, pero dado que el desarrollo se realizó en ensamblador, la mayoría de los codificadores en ese momento eran lo que llamarían “codificadores alfa” o “codificadores de nivel 1”. La codificación tuvo una comprensión tan grande del sistema que los desarrolladores generalmente eran muy hábiles.

Algo así como el sistema operativo T1000 sería muy difícil de ensamblar, especialmente para el 6502B que usa Atari XL / XE (VTOC es la tabla de contenido de volumen, trk es la pista, VTOC se almacena en la pista 11 sectores 0–3 en el Atari de 8 bits con una disquetera). Pero bueno, de todos modos no fue escrito por un humano, y tampoco habría código fuente, ya que estoy seguro de que una IA simplemente escribiría en código de máquina puro sin el requisito de un sistema de mnemotecnia.

El aprendizaje automático es principalmente álgebra lineal. Eso es matemática bastante fácil, simplemente repetitiva, y puede hacer uso de SIMD y GPU que no siempre son fáciles de hacer en idiomas de alto nivel de todos modos. Las bibliotecas y herramientas como TensorFLow y OpenCV han hecho el trabajo duro de mover muchos de los cálculos necesarios para ML en una biblioteca que convierte a ML en una herramienta para un “usuario de la herramienta” en lugar de un “constructor”. Otras bibliotecas como LAPACK o ATLAS ya han hecho mucho trabajo para realizar cálculos rápidos de LA, por lo que no hay muchas razones para usar el ensamblaje para el trabajo de ML.

Por supuesto que podrías.

¿Pero por qué? ¿Por qué el interés en el lenguaje ensamblador? Los lenguajes de alto nivel se desarrollaron por una razón …

No querrás construir un edificio con ganancias de arena, cuando podrías usar ladrillos.

More Interesting

¿Cuáles son algunos algoritmos de detección de edad y género que usan OpenCV?

¿Qué debo aprender en línea si quiero obtener un trabajo bien remunerado en TI en India? ¿Debería ser algo así como algoritmos de estructura de datos o un lenguaje como Python o R o algo así como un desarrollador de aplicaciones de Android o algo más?

¿Cuál es la implementación más rápida del árbol de búsqueda binario? (auto-equilibrio)

¿Puedo aprender el algoritmo yo mismo?

¿Qué temas matemáticos necesito aprender antes de comenzar a aprender inducción, recursión y programación dinámica?

¿Qué es un algoritmo para emparejar 18 personas en los 816 grupos posibles de 3 con 6 grupos a la vez?

¿Qué significa: = significa en algoritmos?

Programación competitiva: dado un polígono y tres cuadrados congruentes alineados con el eje, ¿puede determinar en tiempo polinómico si el polígono puede cubrirse por completo de manera que los tres cuadrados, que pueden superponerse, cubran una cantidad igual de área en el polígono?

Cómo fusionar dos arreglos ordenados

Un problema importante con los algoritmos de programación prioritarios es el bloqueo indefinido o la inanición. ¿Puede explicar el concepto de inanición y cómo a menudo se resuelve en la programación de prioridades?

¿Hay alguna estructura de datos que pueda realizar las funciones de inserción, búsqueda y eliminación en O (log n)?

¿Cuál es el mejor libro para aprender algoritmos?

¿Qué algoritmo de aprendizaje automático es mejor para agrupar pequeños cuerpos de texto por tema / categoría?

¿Cuál es el algoritmo hash más popular para almacenar contraseñas?

¿Cuáles son las consideraciones más importantes para convertir un algoritmo en codificación?