Quiero diseñar un software de gestión de aula en Linux. ¿Qué idiomas necesito usar?

Eso depende completamente de cómo espera que se use.

Si se supone que es un software de escritorio independiente, iría con lo que sea que esté familiarizado o quiera aprender. No es probable que tenga una base de clientes, ya que la mayoría de los maestros no van a ser un escritorio Linux, por lo que también puede disfrutar.

Si se supone que es una aplicación web, tendrá que aprender HTML y CSS y casi seguramente Javascript para el lado del navegador. También tendrá que aprender sobre servidores web. Apache HTTPD (y NGINX, creo) tienen soporte para programas CGI, así como lenguajes incrustados: Perl, PHP, Python (e incluso Ruby, creo). Si prefieres usar Java, también deberías aprender sobre Tomcat y lo que requiere de los applets de Java. (Y de todos modos, probablemente terminará en la interfaz de Tomcat con Apache HTTPD para administrarlo correctamente. Tomcat es un servidor web marginal).

Dentro de la aplicación web, probablemente también tendrá que elegir lo que usará como tienda persistente. Los archivos simplemente no funcionan muy bien cuando varias personas pueden escribir en el mismo archivo al mismo tiempo, es por eso que se utilizan bases de datos. La mayoría de las bases de datos SQL ahora son compatibles (o están a punto de ser compatibles) en Linux. Dado que el usuario final son profesores, no tienen mucho dinero, por lo que Oracle y Enterprise MySQL están fuera, aunque MySQL de la comunidad está bien, al igual que la bifurcación de MySQL (MariaDB).

Existen diferencias sutiles entre los diferentes servidores de bases de datos SQL, principalmente en la forma en que se administran, pero algunos incluyen tipos de datos y otras sintaxis.

Probablemente desee proporcionar algún soporte de administración de bases de datos en su aplicación.

Probablemente también necesite tener un código de limpieza en el lado del servidor, para mantener todo esto en funcionamiento. Eso será / bin / sh (shell bourne – hay múltiples implementaciones), / bin / bash (bash, o Bourne Again Shell – hay diferencias con respecto al shell bourne original), Perl (Perl 5, no Perl 6 – no uno usa Perl 6 en serio todavía), o Python (pero ten cuidado con las diferencias entre Python 2.6, 2.7 y 3.x)

Creo que puede ignorar con seguridad el uso de FORTRAN, PL / 1, ALGOL, Assembler (de cualquier tipo), C, C ++, Objective C, Rust o Swift. En realidad, la lista de idiomas que puede ignorar es enorme, pero solo porque muchos son muy oscuros.

Probablemente necesitará aprender algunas secuencias de comandos de algún tipo para su proceso BUILD. Las herramientas automáticas son muy antiguas (y muy inestables, pero estoy familiarizado con ellas). Si utiliza las herramientas automáticas, definitivamente necesitará aprender M4 y posiblemente varios aspectos de las secuencias de comandos de shell Bourne.

También necesitará aprender una buena herramienta de control de versiones, aunque ese no es un lenguaje (per se.) “Git” es muy popular. “Svn” está luchando por mantenerse al día. “Cvs” es muy vieja escuela. “Rcs” está ahí, apenas.

Depende de la cantidad de detalles que desee incluir y de si necesita incluir … seguridad … funcionalidad … informes …

Calcule lo que su paquete va a hacer … y lo que realmente requiere.

Haga una lista de entradas estándar … cualquier cálculo derivado … e informes resultantes.

Si solo está buscando hojas de tiempo y similares … use una hoja de cálculo con una restricción de contraseña … lo siento … no hay nada que hacer.

Para saber qué tan complejo y qué recomendar … Tendría que saber a qué estás acostumbrado … permitiendo un tiempo mínimo para aprender el paquete …

Visual Basic familiar? Prueba algo como Xojo.

¿Estás acostumbrado a hackear tu propio camino? Pruebe algo como KDevelop … es limpio pero nada visual … tiene un buen sistema de soporte y manuales de referencia.

Capaz de escribir en C #? Entonces, probablemente, algo como MONO, que debe ser compatible con .Net.

Creo que casi he escrito esto en orden de complejidad … en cada nivel tu competencia debe aumentar … y tu habilidad.

La respuesta obvia es “La que conoces”. Dicho esto, parece que estás buscando recomendaciones subjetivas.

Probablemente elegiría C ++ usando las bibliotecas QT o Python usando TKInter. Elijo estos porque tienen un gran soporte en Linux y si alguna vez quieres mover tu aplicación a otra plataforma, ambas opciones son, con un poco de esfuerzo, portátiles para esas otras plataformas.