[HILO OFICIAL?]Programación en linux.

Buenas a todos, como actualmente me he pasado a linux para desarrollar y estoy encantado, he buscado por aquí algún hilo relacionado y no he visto nada de este tema. En general en PC se habla bastante sobre la programación de muchos lenguajes y no he visto ningún hilo indicado para ello. Si alguien sabe de alguno que lo diga para cerrar este y no hacer duplicados.

El fin de este hilo es que compartamos que herramientas utilizamos y para que lenguajes, también si os parece bien podemos debatir y ayudar a las personas que lo necesiten.

Si os parece bien a todos, me currare mi primer hilo oficial para dar un empujón a todos los que empiezan a programar o a programar sobre linux como yo.
Doy apoyo a esto, desde hace un rato he querido entrar a la programación, pero no se aun como encajar las piezas.
Pues doy mi aporte en C++.

Para el tema de las aplicaciones gráficas en Linux, tenemos varias alternativas (la mayoría multiplataforma, también funcionan en windows). Yo tengo dos favoritas.

Para desarrollo de juegos y aplicaciones multimedia: SFML

Para desarrollo de interfaces gráficas: wxWidgets.
Si te atreves a organizar un hilo oficial (wiki, soluciones, ofrecera alternativas, enlaces, faz en el hilo oficial, etc). Mientras no vulneres normas y asegures algo de continuidad y soporte puedes ponerte a ello.

Gedit, kate, netbeans, eclipse, android studio, brackets, sublimetext...

En 3D algo mas limitado por librerias y cosillas así pero incluso en Steam tienes herramientas para desarrollo 2D y 3D. Sino, blender hace maravillas =D. No sera puramente de programacion, pero es lo que mas nos puede limitar de cosas habituales a tratar.

Para generar gráficos, lo tipico, gimp, inkscape, etc.

Sinceramente hoy día no programo mucho, es mas, incluso ahora si hago algo uso la nube y programo, compilo y ejecuto en ella básicamente XD. Así realizo tareas independientemente de la plataforma en la que me halle y para cosas complejas ya usare un IDE mas robusto en local.

Tampoco debe olvidarse de los repositores de codigo, que es algo bastante compejo :/
Recomiendo el curso de lenguaje C de Nacho Cabanes (lo tiene en un PDF, colgado en su web), muy bien explicado y con muchos ejercicios, es un buen comienzo en programación (también tiene uno de C++, pero creo que le cuesta explicarlo y a veces se hace confuso). Trae un apartado para iniciarse en el mundo de los videojuegos con SDL.

http://www.nachocabanes.com/c/curso/
Para SFML existe un libro de referencia en la pagina oficial:

http://www.packtpub.com/sfml-game-development/book

Pero no es gratuito vale unos 18 - 35 Euros versión e-book o papel.
Ese libro lo pillé yo, y la verdad es que me parece un poco mojón. Demasiado básico todo.

Al que le guste Java, el de LibGDX parece, a priori, mucho más completo.

http://www.packtpub.com/learning-libgdx ... pment/book

Lo malo es que acaba de salir la versión 1.0, y esa edición del libro creo que trabaja con la 0.98. A ver si editan pronto una nueva.
josemurcia escribió:Ese libro lo pillé yo, y la verdad es que me parece un poco mojón. Demasiado básico todo.

Al que le guste Java, el de LibGDX parece, a priori, mucho más completo.

http://www.packtpub.com/learning-libgdx ... pment/book

Lo malo es que acaba de salir la versión 1.0, y esa edición del libro creo que trabaja con la 0.98. A ver si editan pronto una nueva.


Mira eso no lo sabia yo. Esta bien saberlo. Aunque con lo abandonada que tengo la programación tendria que empezar de cero.
Qué veis mejor, Python o C?
Din-A4 escribió:Qué veis mejor, Python o C?

Ninguno. Depende muchiiiiiisimo de quien y para que XD
Din-A4 escribió:Qué veis mejor, Python o C?


Es como preguntar que es mejor para hacer deporte, un balón o una raqueta.

Yo personalmente he elegido Python, aunque de momento lo tengo bastante apartado porque estoy con otras cosas. Me parece uno de los mejores lenguajes para desarrollo web, que es a lo que me dedico.
nevat escribió:Recomiendo el curso de lenguaje C de Nacho Cabanes (lo tiene en un PDF, colgado en su web), muy bien explicado y con muchos ejercicios, es un buen comienzo en programación (también tiene uno de C++, pero creo que le cuesta explicarlo y a veces se hace confuso). Trae un apartado para iniciarse en el mundo de los videojuegos con SDL.

http://www.nachocabanes.com/c/curso/


Escogí esta opción por ahora, me ha gustado mucho el libro de este señor.
Gracias por darlo a conocer.
Para mí C/C++ es un "debes saber" si quieres dedicarte a la programación. No lo recomiendo para empezar, pues es bastante complejo y las explicaciones del compilador no ayudan mucho, pero tarde o temprano debería estar en el repertorio de lenguajes conocidos.

Yo apoyo el QT, me parece un framework muy completo para la programación multiplataforma, no solo a nivel de librerías interfaces gráficas, si no que es un compendio completo de librerías (ficheros, red, XML, webservices, threads...). Además QML tiene una pinta brutal. Parece casi un lenguaje propio más que un framework.

En cuanto a IDEs... Depende mucho de lo que vaya a desarrollar, principalmente uso Eclipse, pero Android Studio y SublimeText suelen tener hueco entre mis desarrollos. Qt y Dart Editor cuanto solo con los correspondientes lenguajes.

Solo hecho en falta Unity3D... Sé que no es libre, al igual que Sublime o AS, pero bueno.
elchicosinhada escribió:Para mí C/C++ es un "debes saber" si quieres dedicarte a la programación. No lo recomiendo para empezar, pues es bastante complejo y las explicaciones del compilador no ayudan mucho, pero tarde o temprano debería estar en el repertorio de lenguajes conocidos.

Yo apoyo el QT, me parece un framework muy completo para la programación multiplataforma, no solo a nivel de librerías interfaces gráficas, si no que es un compendio completo de librerías (ficheros, red, XML, webservices, threads...). Además QML tiene una pinta brutal. Parece casi un lenguaje propio más que un framework.

En cuanto a IDEs... Depende mucho de lo que vaya a desarrollar, principalmente uso Eclipse, pero Android Studio y SublimeText suelen tener hueco entre mis desarrollos. Qt y Dart Editor cuanto solo con los correspondientes lenguajes.

Solo hecho en falta Unity3D... Sé que no es libre, al igual que Sublime o AS, pero bueno.


Pues yo creo que la mejor manera de empezar actualmente es aprendiendo bien aprendido C, es un lenguaje prácticamente secuencial y permite aprender todo lo básico (Como hacer funcionar los bucles, que es una función, paso por parámetro o referencia, gestión de memoria, etc. ) y después seguir con C++ no te cambia mucho y tienes una perfecta introducción al mundo de la programación orientada a objetos. Sin duda lo que encuentro un error es querer empezar por el camino fácil con lenguajes como java o python y después no ser capaz de entender que estos también están gestionando la memoria con apuntadores, reservas y demás.
A día de hoy hacer una aplicación digamos un juego pequeño o algo multimedia en Linux veis mejor Java que C++ por ejemplo?
Din-A4 escribió:A día de hoy hacer una aplicación digamos un juego pequeño o algo multimedia en Linux veis mejor Java que C++ por ejemplo?

Ugh, ni de coña. Requerir la VM es... ugh. Y estar a merced de los caprichos de Oracle con dicha VM (porque al final, con las VM alternativas hay cosas que acaban cambiando), es... mas ugh.

C/C++ FTW.
Din-A4 escribió:A día de hoy hacer una aplicación digamos un juego pequeño o algo multimedia en Linux veis mejor Java que C++ por ejemplo?


Python + Pygame. Hay una gran comunidad detrás que lo respaldan.

http://www.pygame.org/news.html
Yo me gano la vida como ingeniero de software desde hace 10 añitos, y siempre con Ubuntu como SSOO único. He programado sobre todo en Java con Eclipse y Netbeans, aunque ultimamente con PHP y PHPStorm. Todo perfecto. Hacer "apt-get install" no tiene precio.
Yo siempre he preferido Linux para trabajar, de hecho tampoco se trata de una elección pues en el curro el 95% de los equipos y servidores llevan Linux. En mi caso para desarrollo uso:

- Eclipse/PyDev para proyectos grandes en Python y Django
- SublimeText 3 para HTML5, junto con herramientas y generadores basados en Node.js

Como distribución Archlinux con Gnome Shell. Rendimiento, estabilidad y casi cualquier libreria o paquete a través de sus respositorios y AUR.
Buenas a todos.

elchicosinhada escribió:Para mí C/C++ es un "debes saber" si quieres dedicarte a la programación. No lo recomiendo para empezar, pues es bastante complejo y las explicaciones del compilador no ayudan mucho, pero tarde o temprano debería estar en el repertorio de lenguajes conocidos.

Yo apoyo el QT, me parece un framework muy completo para la programación multiplataforma, no solo a nivel de librerías interfaces gráficas, si no que es un compendio completo de librerías (ficheros, red, XML, webservices, threads...). Además QML tiene una pinta brutal. Parece casi un lenguaje propio más que un framework.

En cuanto a IDEs... Depende mucho de lo que vaya a desarrollar, principalmente uso Eclipse, pero Android Studio y SublimeText suelen tener hueco entre mis desarrollos. Qt y Dart Editor cuanto solo con los correspondientes lenguajes.

Solo hecho en falta Unity3D... Sé que no es libre, al igual que Sublime o AS, pero bueno.


+1 [oki] y sobre todo: QTCreator, para C/C++ con QT es, según mi humilde opinión, de lo mejor que haya probado. Además, si queréis hacer programas para consola también os vale. Es posible que consuma un poco de recursos, pero es muy potente. Y encima multiplataforma. :)
Sólo le falta que le metan soporte para PyQT y PyKDE, traduzcan al español el programa (las primeras versiones traían español) y la documentación (que es muy completa), y entonces ya sería la repera limonera (igual pido demasiado). XD

Suelo usar mucho Kate y Vim como editores de texto, sobre todo para hacer scripts de Perl, Bash o Python.

Python lo veo un lenguaje muy bueno para aprender a programar: es sencillo, legible, y ya desde el principio te obliga a escribir código limpio. Sin embargo no obliga a declarar variables, lo que puede confundir y/o dar algunas malas prácticas a más de uno al pasarse, por ejemplo, a C/C++.
En ese ámbito, opino que Pascal (más de uno se me echará al cuello) XD puede ser un buen complemento o lenguaje para iniciarse: es también legible y sencillo, y lo más importante, tiene una sintaxis estricta que obliga un poco a hacer las cosas bien, como declarar las variables con su tipo correcto o estructurar el código. Aparte de que tiene cierto parecido al pseudocódigo.
Luego ya se puede pasar a otros lenguajes más potentes como C/C++ sin sustos, XD o hacer pinitos en Python o Perl.

Hablando de Pascal, tenéis Lazarus (similar a Delphi y posibilidad de importar los proyectos de este), que usa el excelente compilador FreePascal. Tanto Lazarus como FreePascal son multiplataforma.
FreePascal trae además un IDE para consola, que para los que hayáis programado con TurboPascal os resultará muy familiar. :) De hecho, es compatible con la sintaxis de TurboPascal.

Y para Basic: Gambas, casi me olvido de las gambas. XD Es similar a Visual Basic, pero mejor hecho y más potente. La pega es que de momento, solamente está disponible para GNU/Linux y FreeBSD.
Hay por ahí intentos de portarlo a Mac OS X y Windows, pero de momento nada que sea minimamente usable.

De Basic hay otro compilador que está también muy bien: FreeBasic. Es multiplataforma y compatible con la sintaxis de los Basic de MSDOS (QBasic, PowerBasic, ...).

En GNU/Linux hay muchas opciones y, quizás lo mejor, la gran cantidad de librerías y recursos para facilitar el desarrollo (Git, GDB, make, ...) que el sistema suele traer por defecto. Y si nos falta algo, un simple apt-get install (o el gestor de paquetes de nuestra distro), y santas pascuas. XD

Saludos. :)
JanKusanagi escribió:Qt! [sonrisa]

me interesaria colabarar en este foro tengo concocimientos de c c++ perl python java java scripts y algo de asambly en sintaxis at&t y muy poco con la sintaxis intel todo para multiplataforma excepto asambly por obvias rasones .. la mayorias de las herramientas ya vienen instaladas por defecto en las distros de linux ... me gutaria prponer la realizacion de un juego basico en lenguaje c++ o c con las librerias sdl y opengl . las herramientas necesarias serian gcc (gnome collection compiller) que viene por defecto en la mayoria de los linux o cualquier compilador de c y c++ para los OS gimp o photo shop para editar las imagenes y blender para hacer los modelos de los personajes objetos y escenario
ganeux escribió:
JanKusanagi escribió:Qt! [sonrisa]

me interesaria colabarar en este foro tengo concocimientos de c c++ perl python java java scripts y algo de asambly en sintaxis at&t y muy poco con la sintaxis intel todo para multiplataforma excepto asambly por obvias rasones .. la mayorias de las herramientas ya vienen instaladas por defecto en las distros de linux ... me gutaria prponer la realizacion de un juego basico en lenguaje c++ o c con las librerias sdl y opengl . las herramientas necesarias serian gcc (gnome collection compiller) que viene por defecto en la mayoria de los linux o cualquier compilador de c y c++ para los OS gimp o photo shop para editar las imagenes y blender para hacer los modelos de los personajes objetos y escenario


http://gcc.gnu.org/wiki = "GNU Compiler Collection" O.o (no se si saldrás vivo de esta XD).
Bienvenido al foro, cuidado con lo que escribes (sobre todo cuando se hablan de temas de programación donde un error puede suponer dias perdidos XD), realizar un juego "básico" en c... no es cosa de cualquiera, por muy básico que sea aviso así que te recomendaría enfocarlo de alguna manera mas viable.
Recomendaría usar un framework temas así y falta de experiencia en lo cual desarrollar juegos android, plugins, apps webs o colaborar en proyectos existentes podría ser algo bastante grato e interesante.
Para programar ( lenguaje C) utilizo editor de texto + consola ( para compilar).Estamos dando modularidad pero el profesor utiliza un IDE.

¿Alguien puede explicarme como hacer el make y eso? he estado buscando info pero viene muy confusa.
Gringo Alpha escribió:Para programar ( lenguaje C) utilizo editor de texto + consola ( para compilar).Estamos dando modularidad pero el profesor utiliza un IDE.

¿Alguien puede explicarme como hacer el make y eso? he estado buscando info pero viene muy confusa.


Hola. Bienvenido.
Para make, necesitas crear un fichero llamado "Makefile", que es el que se lee cuando ejecutas el comando make.

Hay algunos IDEs, como QTCreator, que te generan un Makefile con el que puedes compilar tu proyecto en otro pc sin necesidad de tener el IDE instalado, o compilar en un pc sin el entorno gráfico.

Para proyectos grandes, hay herramientas que te generan los Makefiles, como las GNU Autotools. Aquí te dejo un tutorial en inglés de como funciona, aunque si ya has tenido que compilar algún programa en GNU/Linux, te sonará bastante (el famoso ./configure). XD

Hay varios más, como por ejemplo CMake (te dejo un tutorial en español) o QMake. Este último se usan en proyectos con QT y son los que genera QTCreator antes de compilar.

Si son proyectos pequeños o son pocos ficheros, o prefieres el "hágalo usted mismo", puedes escribir el Makefile a mano con tu editor de textos: http://www.elgeneralfailure.com/2013/08/como-crear-un-makefile-basico.html

En Google hay muchos tutoriales, aunque es verdad que en algunos meten makefiles de ejemplo algo largos que pueden confundir un poco, en vez de ir desglosando poco a poco lo que es cada cosa con ejemplos cortos. Aún así espero haberte ayudado. :)

Saludos. ;)
Muchas gracias el "hagalo usted mismo" es el que busco.El caso es que todos los que encuentro son como el último que has puesto, que te vienen a decir, "haz esto,pon esto" sin explayarse mucho.Y lo peor es que en cada sitio viene de forma diferente.

De todas formas me sirve para contrastar información, gracias de nuevo compañero.
Después de estar haciendo cosas con python-gtk ahora me está empezando a llamar la atención eso del node-webkit.

Puede ser algo rebuscado a veces si estás creando aplicaciones de escritorio, pero es MUY sencillo para empezar a hacer cosas y ver resultados rápido.
Para quien esté empezando a programar y no tenga más pretensiones que hacerse sus cositas en casa (sin quitar que sea potente para hacer cosas más avanzadas) es una opción bastante buena, y si encima has hecho algo de diseño web y programación con javascript entonces te sentirás como en casa.

Obviamente tiene sus inconvenientes, como que las aplicaciones no tendrán ni de coña un look&feel nativo o que hasta que te empapes un poco todo el tema de las funciones asíncronas con callbacks suena un poco WTF, pero así y todo está bastante chulo.
kornshell escribió:Después de estar haciendo cosas con python-gtk ahora me está empezando a llamar la atención eso del node-webkit.

Puede ser algo rebuscado a veces si estás creando aplicaciones de escritorio, pero es MUY sencillo para empezar a hacer cosas y ver resultados rápido.
Para quien esté empezando a programar y no tenga más pretensiones que hacerse sus cositas en casa (sin quitar que sea potente para hacer cosas más avanzadas) es una opción bastante buena, y si encima has hecho algo de diseño web y programación con javascript entonces te sentirás como en casa.

Obviamente tiene sus inconvenientes, como que las aplicaciones no tendrán ni de coña un look&feel nativo o que hasta que te empapes un poco todo el tema de las funciones asíncronas con callbacks suena un poco WTF, pero así y todo está bastante chulo.


Por si a alguien le interesa, el editor Atom es un ejemplo de esto: https://atom.io/
27 respuestas