2010-05-21 15 views
6

Quería entrar en la programación de sistemas para Linux y quería saber cómo abordar eso y dónde comenzar. Vengo de un fondo de desarrollo web (Python, PHP) pero también conozco C y C++.Programación de sistema Linux

Esencialmente, me gustaría saber:

  1. qué idioma (s) para aprender y llevar a cabo (pienso sobre todo C y C++)?
  2. ¿Cómo/dónde aprender esos idiomas específicos para la programación de sistemas? Libros, sitios web, blogs, tutoriales, etc.
  3. ¿Hay algún otro buen lugar en el que pueda comenzar con los principios básicos?
  4. ¿Alguna buena biblioteca para comenzar?
  5. ¿Qué configuración de entorno (o aproximadamente) necesito? Suponiendo que Linux tiene que estar allí, pero tengo un cuadro de Linux que rara vez inicie sesión con la GUI (siempre uso SSH). ¿La GUI es mucho más útil o el editor VI es suficiente? (Por favor, hágamelo saber si esta parte de la pregunta debería ir a serverfault.com)

PD: Solo para aclarar, mediante la programación de sistemas me refiero a cosas como escribir controladores de dispositivos, herramientas del sistema, escribir aplicaciones nativas que no están presentes en la plataforma Linux, pero están en otros, juega con el kernel de Linux, etc.

+0

Wiki de la comunidad ...? – Betamoo

+2

Esto es apropiado, pero si realmente quiere unirse al futuro, aprenda Go. –

+0

@Tom: ¿La programación multinúcleo está disponible con Go? También estaba pensando, ya que estos son los tiempos en que los procesadores tienen más de un núcleo, uno podría aprovechar el uso de esos. ¿derecho? –

Respuesta

6

Si está jugando con el kernel, debe usar C. Hay varios libros, como Essential Linux Device Drivers, que le dan los conceptos básicos de las estructuras, dónde ejecutar su código, etc.

En general, muchos servidores están escritos en C, y algunas veces en C++. Las bibliotecas populares incluyen Glib, libevent, boost (para C++).

Puede hacer todo desde la línea de comandos en su editor de elección; no hay una clara victoria aquí, elija lo que quiera.

+0

Entonces, básicamente no hay necesidad de un IDE como Eclipse? –

+0

Absolutamente no, la mayoría de los desarrolladores de kernel no se acercarían a Eclipse. –

+1

+1 de un pirata informático del kernel que aún no ha encontrado un IDE con el que no me encuentre luchando. –

2

Para entrar realmente en la programación del sistema de Linux, digo ensamblado C y x86.

Para aplicaciones, Linux admite una gran cantidad de idiomas, python, C++, fortran, perl, etc., así que elija cuál quiere usar.

+0

Me gustaría ir a Python. –

1

Nano es mi editor favorito de lejos. Vi también es agradable. No me he tomado el tiempo para aprenderlo, pero ambos pueden ayudarme en sus experiencias de programación. Onces se reduce a los errores difíciles en el código, monta la unidad SSH y luego abre los archivos de forma remota con tu programa GUI favorito.

+0

Me gusta la idea de montar la unidad SSH. –

+0

Eso presenta problemas 'interesantes' cuando las conexiones se detienen. ¿Supongo que te refieres a SSHFS? –

+0

Sí señor. Lo uso todo el tiempo. Está bien hasta que pierdas wifi o lo que sea. He usado expandrive y sshfs en Ubuntu, y vivo editando casi todo. Todavía tengo que perder algo. ¡El manejo de errores para una conexión defectuosa no está realmente en Gedit, pero solo me sucedió una vez! –

3

Su pregunta es bastante amplia. "Las aplicaciones nativas que no están presentes en Linux" cubren cosas como las suites ofimáticas, que no considero la programación del sistema. Me centraría en una cosa (por ejemplo, controladores de dispositivos) al mismo tiempo. Hay muchas preguntas sobre esto, como Linux Programming Book, What IDE would be good for linux kernel driver development, Are there recommended tutorials for writing drivers for Gnu/Linux? y Ubuntu Linux, what programming languages should I learn?.

Para aprender C89, definitivamente profundizaría en The C Programming Language (2nd Edition).

+0

Gracias. Ya protagonizó esos hilos y tengo el libro de Kernighan y Ritchie. Es dulce, mi primer amor. :) –

0

La mayor parte de la programación del sistema se realiza en C, como ya se ha mencionado aquí. Algunos de los buenos libros que necesita para entender la mentalidad, y la manera justa de hacer unix/Linux sería "The Art of Unix programming" de Eric Raymond, y "Advanced Programming in the Unix environment" de Richard Stevens.hay algunos libros nuevos en el mercado como Robert Love Book "Programación de sistema Linux" así como "la interfaz de programación de Linux", son up2date, sin embargo, no discuten los principios y pensamientos originales como los que mencioné anteriormente.

Cuestiones relacionadas