c++ - para - ncurses en c
Cómo iniciar la Programación de Linux (11)
- gcc / g ++
- entender conceptos básicos de shell: probablemente bash (generalmente el valor predeterminado)
- make (no tiene que ser un experto, ni siquiera usarlo en su propio trabajo, pero debe entenderlo)
- un lenguaje de scripting (bash, ruby, python, tcl, perl; tú eliges)
- utilidades básicas de línea de comandos de Unix (ls, cd, etc ....)
- un editor: vi o emacs son las opciones más populares.
- linux su distribución en particular (ubuntu es popular, es posible que desee comenzar allí). sepa cómo manipular su entorno y cómo arreglarlo cuando se rompa.
El resto depende de lo que quieras hacer.
No necesita ser un experto en nada de esto; aprenderás con el tiempo
Estoy trabajando en C ++ y COM / ATL en Windows en los últimos años. Ahora quiero cambiar a la Programación de Linux. Conozco la arquitectura básica de Linux. Hice algunos de los proyectos que usan ncurses, sockets y audio libraries (aplicaciones de terminal). En qué herramienta debería estar familiarizado para comenzar con los proyectos. En Windows comencé con la Programación de Win32 y luego pasé a COM y ATL. La Programación Win32 me dio las ideas de Windows.
¿Me puede dar los pasos para comenzar con la Programación de Linux?
Depende de lo que estás tratando de hacer ...
¿Vas a estar haciendo aplicaciones GUI? Aprende Qt o GTK o wxWidgets. ¿Vas a hacer el desarrollo del controlador de dispositivo? Aprende C directamente, no solo C ++. Gran parte del emocionante desarrollo de software bajo Linux ocurre en Python y Perl (y en otros lenguajes dinámicos en menor medida), por lo que seguramente deberías aprender uno de esos.
La respuesta pragmática
Entiendo por qué hace su pregunta de esta manera, pero Linux no es Windows, por lo que realmente no hay una respuesta directa. En realidad, estamos hablando de GNU / linux + de todo el ecosistema de software libre, por lo que lo que tienes que aprender depende en gran medida de lo que quieras hacer.
Si está más interesado en la programación del sistema, verá el kernel de Linux y tendrá que trabajar en sus habilidades en C.
Si desea codificar utilidades, los lenguajes de scripting (especialmente ruby y python) serán sus herramientas preferidas, y tendrá que elegir un marco de GUI además de eso (GTK, QT y wxWidget muestran el camino).
Si se trata más de programación web y de red: python, ruby, php o java pueden hacerlo.
Las buenas noticias
En el entorno de Linux, tiene la opción porque mucha gente usa muchas herramientas diferentes. Puede parecer complicado, y a menudo lo es, pero no funciona tan mal.
Así que deja de pensar en lo que debes aprender y concéntrate en 2 preguntas:
- ¿Quiero unirme a un proyecto? Entonces el techno será elegido por el proyecto al que te unes. Por lo tanto, elija un proyecto utilizando una tecnología QUE QUIERE aprender.
- ¿Quiero comenzar mi propio proyecto? Luego, el techno será elegido por la herramienta existente en la que confiará. La mayoría de las veces, tendrá la posibilidad de elegir, así que disfrute de su nueva libertad y aprenda la tecnología QUE DESEE.
Gratis, como compañero de libertad, significa que puedes elegir.
Aproveche su conocimiento ya ganado de COM y aprenda algo como TAO . Obviamente, no hay ATL o WTL en el mundo de Unix ... por lo que tendrá que invertir tiempo para aprender el STL. La buena noticia es que también existe STL en Windows. Boost te ayudará a pasar de una plataforma a otra significativamente más fácil, por lo que debes aprender eso también.
Más allá de eso, realmente depende de lo que quieras hacer.
Cuando desarrollo para Linux, tiendo a seguir con lo básico: vim, gcc, gdb (desde la línea de comandos, sin interfaces), svn, cscope, Valgrind, make (no es que yo sea un gran admirador de la marca, lo admito). Existen varias interfaces gráficas, e incluso IDEs, pero no me gustan ninguno de ellos.
También te recomiendo que aprendas STL y Boost; este último es especialmente útil cuando escribes aplicaciones C ++ en Linux, ya que obtienes bibliotecas para enhebrar, sistema de archivos, expresiones regulares, etc. Además, el código puede transferirse a Windows si es necesario. Así es como comencé en Linux: tomé un proyecto de Windows y lo convertí para usar el STL / Boost y agregué una interfaz de usuario basada en navegador. Una vez que comenzó a funcionar en Windows, pero sin detalles específicos de Windows en el código, me puse a aprender los conceptos básicos de Linux (gcc, make, etc.) y lo puse a trabajar muy rápido.
Te recomendaría que comiences usando Gentoo, debería ser difícil las primeras semanas, pero después de un tiempo (digamos 2 meses y menos si entiendes linux básico) podrás usar cada distribución y sabrás exactamente lo que Sucede y cómo en su sistema cuando presiona / digita algo, creo que se le volverá a pagar por este tiempo (aprender gentoo es un poco más difícil que otras distros) gastado en Gentoo. Y esto creo que será útil cuando programes para Linux.
Sugiero aprender CMake: es una gran herramienta de compilación multiplataforma que es mucho más fácil de usar que make / autotools.
¿Podría explicarnos el tipo de cosas que espera hacer, en lo que respecta a la programación de Linux? Esto podría tener la mayor parte de lo que esperas atravesar, independientemente.
Comienza a leer el libro Advanced Linux Programming, que también está disponible como PDF gratuito.
No temas a la palabra clave avanzada . De los detalles de su publicación (ncurses, sockets) ya está "avanzado".
También puede consultar más adelante la biblioteca glib (componente estándar de GTK + / GNOME, pero también se utiliza en aplicaciones de línea de comandos).
Si tiene que programar en C ++, lea toda la documentación de QT y estará listo.
Esto te ayudará a entender por qué las cosas se hacen como están en un sistema * basado en Unix.