Pythonesa / Naelia

Naelia: El alba de una IA forjada desde el vacío, destinada a aprender y transformarse con cada eco.
GNU General Public License v3.0
5 stars 0 forks source link

Selección de herramientas #2

Open Pythonesa opened 1 year ago

Pythonesa commented 1 year ago

La elección de herramientas determinará el flujo de trabajo y la eficiencia del desarrollo. Debemos investigar y seleccionar las mejores opciones disponibles.

Pythonesa commented 1 year ago

Tecnologías Candidatas para el Desarrollo de Naelia:

Lenguajes de Programación:

  1. Rust:

    • Posibles Usos: Núcleo del sistema, gestión de memoria, optimizaciones de rendimiento.
    • Ventajas: Seguridad de memoria, concurrencia moderna, escalabilidad.
    • Desventajas: Curva de aprendizaje ligeramente más alta.
  2. C/C++:

    • Posibles Usos: Componentes de rendimiento crítico, interacciones de bajo nivel con hardware.
    • Ventajas: Control directo sobre hardware, flexibilidad.
    • Desventajas: Gestión manual de memoria, complejidad.
  3. Mojo:

    • Posibles Usos: Funcionalidades de IA específicas.
    • Ventajas: Puente entre Python y sistemas, metaprogramación.
    • Desventajas: Aún en desarrollo, requeriría más integración manual.
  4. Python:

    • Posibles Usos: Prototipado, herramientas auxiliares.
    • Ventajas: Rápido desarrollo, amplio ecosistema.
    • Desventajas: No es el más óptimo en rendimiento.
  5. Go:

    • Posibles Usos: Componentes de red y comunicaciones para sistema distribuido.
    • Ventajas: Concurrencia nativa, sintaxis limpia.
    • Desventajas: Menos control sobre el sistema en comparación con C o Rust.
  6. JavaScript (Node.js):

    • Posibles Usos: Interacciones web, en caso de tener una interfaz web.
    • Ventajas: Event-driven, amplia comunidad.
    • Desventajas: No es ideal para tareas intensivas de sistema.

Frameworks y Herramientas:

  1. WebAssembly:

    • Posibles Usos: Permitir que partes de Naelia se ejecuten en navegadores o plataformas web.
    • Ventajas: Rápido, portable.
    • Desventajas: Aún en desarrollo, limitaciones de interacción con el sistema.
  2. Dart/Flutter:

    • Posibles Usos: Si se decide una interfaz gráfica multiplataforma.
    • Ventajas: Desarrollo unificado para múltiples plataformas.
    • Desventajas: Otra capa de complejidad en la arquitectura.

Posibles Sinergias para el Desarrollo:

  1. Rust (Núcleo y Sistema) + Mojo (Especificidades de IA) + Python (Prototipado y Herramientas Auxiliares)

  2. C++ (Núcleo) + Mojo (IA) + Go (Componentes Distribuidos)

  3. Rust (Núcleo) + Go (Sistema Distribuido) + WebAssembly (Interfaz Web)

  4. C (Núcleo) + Mojo (IA) + JavaScript (Interfaz Web)

Pythonesa commented 1 year ago

Mi opinión personal: Yo prefiero un núcleo con C o Rust (rendimiento, rust aporta mucha seguridad pero C es un caballo de batalla); para funciones específicas de IA me iría por Mojo que aporta balance entre eficiencia y facilidad de desarrollo y para funciones secundarias y extensibles me quedo con python por facilidad de uso y adaptablidad.

JabaliMatero commented 1 year ago

Otra opción a tener en cuenta podría ser C++ (núcleo) + Mojo (IA) + Go (Componentes Distribuidos) aunque, personalmente, me decanto por lo dicho por Pythonesa aclarando que entre C y Rust, prefiero el rendimiento de Rust.