Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Aprendiendo a programar

gonzotba's Diary
Por gonzotba
departamento Esta es la buena , Sección Diarios
Puesto a las Tue Jul 20th, 2004 at 02:32:47 PM CET
Cada dos por tres siento el impulso de aprender a programar. Cuando los veranos eran largos yo hacía mis pinitos en Basic, pero de aquello ya ha llovido. En la universidad hice algunas prácticas con C, pero también ha llovido otro tanto y aquello ni siquiera me acabó de gustar.

Parece que lo de aprender a programar algo útil es algo recursivo en mi vida, y a pesar de que me digo que ya tengo bastantes aficiones y que maldita la falta que me hace una más, no hay manera de quitarse la mosca de detrás de la oreja.

 


Así pues, lo que a mí me gustaría es, hemos quedado, aprender a programar. Digo aprender porque poco sé de esctructura seria de programación y hace mucho tiempo que no hago un programa que haga algo, quitando algún scriptillo de bash.

Como soy cauto y me gusta ir poco a poco, lo perfecto sería coger un lenguaje de programación sencillo y resultón y luego, si veo que me vicio y quiero más, ya meterme con otras cosas. Pero sobre todo despacio. No quiero empachos.

Lo que yo busco en un lenguaje de programación es:

  • Que sea grato: Es decir, que con las menos líneas posibles los resultados sean ya aparentes.
  • Que luzca: No tiene necesariamente que ver con el punto anterior, pero puede. Es decir, que pueda hacer algo que abra ventanas de KDE y que quede resultón. Y todo con el menor número de líneas posible.

Ya sé que estoy pidiendo peras al olmo, pero oiga, para eso estamos ;)

Llevo un par de intentos con python. Python me parece limpio, sencillo (a mi limitado alcance), y por lo visto es bastante potente a pesar de que yo nunca haya llegado a hacer nada serio con él. Sé que tiene cosas para trabajar con QT y, en resumidas cuentas, me parece un lenguaje (si es que se le puede llamar así) bastante potente y resultón para mí.

Hace poco le eché un ojo a Gambas con motivo de un anuncio en Barrapunto, y la verdad es que me parece que tiene buena pinta. Todo parece bastante visual, luce mucho y el lenguaje es "similar" al Basic de mis tiempos. Sin embargo la documentación está algo más limitada que en el caso de Python y el entorno está algo verde, aunque yo también lo estoy.

Ya sé que todos los que andáis por aquí sois frikis del código y os será difícil poneros en mi lugar (conocimientos nulos y requerimientos altos) pero, ¿cuál sería vuestro consejo para un polluelo como yo? ¿Qué debería utilizar alguien que sólo quiere aficionarse a esto y que no pretende programar drivers para meter en el kelmer?

< Un vistazo a PHP5 (I) (8 comments) | Lenguajes de Desarrollo Libre y Puestos de Trabajo (14 comments) >
Enlaces Relacionados
· Gambas
· More on gonzotba's Diary
· Also by gonzotba

Encuesta
Lo que tú necesitas es...
· Un par de hostias a ver si se te pasa la tontería... 33%
· Python 34%
· Gambas 14%
· Visual Basic, para que te enteres... 7%
· Lazarus 0%
· Perl 9%

Votos: 63
Resultados | Otras Encuestas

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Aprendiendo a programar | 37 comentarios (37 temáticos, editoriales, 0 ocultos)
Sobre Gambas (4.50 / 2) (#15)
por jorginius ("jorginius" en Google Mail) a las Fri Jul 23rd, 2004 at 02:27:52 AM CET
(Información Usuario) http://www.rodriguezmoreno.com

Hace poco le eché un ojo a Gambas con motivo de un anuncio en Barrapunto, y la verdad es que me parece que tiene buena pinta.

Pues yo sólo conocía Gambas de oídas pero lo he instalado esta tarde, después de leer esta entrada en el diario, he trasteado un poco con él y es muy majete.

El lenguaje, a pesar de ser muy sencillote, incluye su declaració de eventos, su tipado estático, sus excepciones para manejar los errores, orientación a objetos "leve" (ojo con la herencia, que el comportamiento de los constructores es un tanto extraño) y un montón de azucar sintáctico en general.

El IDE cumple bastante bien: tienes un editor con realzado de sintaxis, corrector de estilo y despliegue de listas de métodos y propiedades a los IntelliSense, un depurador, una herramienta para la traducción de nuestro aplicación (todo en Gambas es UTF-8 internamente), un generador de formularios muy resultón que mantiene separado los forms del código y que incluye en el editor la declaración de los eventos de cada control con un solo click.

El despliegue de las aplicaciones de Gambas es bastante cómodo. El runtime es pequeño (no pasa de 300 KB) y el "compilador" genera binarios autocontenidos, uniendo código "objeto" y todos los recursos que necesite la aplicación (imágenes, archivos de texto, iconos, traducciones, etc) en un sólo archivo. Por si fuera poco, desde el propio IDE hay un asistente para crear directamente los paquetes RPM y DEB de nuestro proyecto, para cuatro distribuciones de Linux.

El API de los componentes "básicos" (gb, gb.qt*) más simple que el mecanismo de un chupete y el aspecto es bastante bueno: Qt pero podemos también usar los diálogos y algunos controles de KDE (como una vista HTML vía KHTML). Como curiosidad, lo único que queda raro son los menús que no usa los controles de Qt sino que Gambas los dibuja por su cuenta.

Fuera de esos componentes, las API andan un poco verdes:

La parte de conexión a base de datos patina porque hay que escribir las querys a mano, lo cual no es precisamente sencillo y no pega con la simplicidad del lenguaje. Tampoco se pueden leer bases de datos SQLITE dentro de los binarios autocontenidos que genera Gambas.

Las expresiones regulares brillan por su ausencia. En realidad haberlas haylas pero o muy limitadas, en el propio lenguaje usando LIKE, o a través de una interfaz con libpcre bastante farragosa que tampoco pega con Gambas.

El tema de la red, a nivel de socket (INET y UNIX), tiene mejor pinta: con soporte genérico para servidores y clientes y protocolos de aplicación como FTP, HTTP y TELNET pero no incluye nada específico para CGI (aunque se pueden hacer aplicaciones para consola), ni nada de SOAP. Una carencia gorda es que no hay un componente para trabajar con XML.

Falta también el soporte multihilo y la multiprogramación en general está algo limitada. Hay una clase para servir peticiones de red de forma concurrente, instrucciones para leer un ejecutable del disco, crear el proceso y leer/escribir en él, pero no parece que haya nada como un fork(). En fin, para que no se bloqueen nuestras aplicaciones habrá que echar mano de un Timer.

Sobre la documentación, no es pésima o al menos no lo es el según el estandar del software libre. La tienes siempre en línea en el IDE y en la web del proyecto se va completando en el Wiki. Hay funciones sin documentar, ejemplos que no funcionan porque han ido cambiado cosas del lenguaje y algunas mentiras desperdigadas como que MoveNext devuelve TRUE cuando no hay más campos en el resultado de la query, pero en líneas generales no está tan mal.

La conclusión es que Python y cía seguramente le dan mil vueltas por sus impresionantes bibliotecas de clases de todo tipo, por las propias funcionalidades de cada lenguaje y por la documentación, pero Python y cía no tienen un IDE tan chulo como éste, ni un depurador que funcione también en las aplicaciones en modo gráfico que usen wxPython, PyGtk o PyQt (Boa Constructor debería ser la caña pero la última vez que lo probé se moría cada dos por tres y el depurador no chutaba dentro de las callback), ni tipado estático. Por otra parte, a pesar de todas sus carencias Gambas da bastante de si: el gambas-ide está escrito a su vez en Gambas y el gambas-database-manager también y ambas aplicaciones son razonablemente complicadas y bastante resultonas. Es muy prometedor.



 
La 'P' de LAMP (4.00 / 1) (#9)
por suy (suy21.existe-en.lycos.es) a las Thu Jul 22nd, 2004 at 01:24:17 AM CET
(Información Usuario) http://lacurva.net/

Si quieres hacer algo resultón, en lo que estarás bien apoyado por la comunidad, creo que cualquiera de Python, Perl o PHP son buenas opciones. PHP igual es demasiado orientado a la web (aunque se pueden hacer GUIs), pero es muy, pero que muy fácil de usar.

Si sabes hacer algo en bash, y alguna vez has tocado algo de awk, Perl creo que es un paso bastante natural. Si quieres hacer cosas resultonas, perl puede hacer algunas. Así se hace el grep:
$exp = shift;
while (<>) {
    print if (/$exp/);
}


Que conste que lo he copiado de un mensaje; no sé Perl, aunque me he leído algo, lo suficiente como para entender algo de código, y entretenerme un rato.

De Perl también sé que es una barbaridad la cantidad de módulos que hay para Perl. Carlos Escribano me comentó que había tanto código en el CPAN, que no entraba en un CD.

De Python he hecho menos aún que Perl, sólo me leí un libro (no recuerdo si es el que han citado antes), que trata de introducción a la programación, en un curso de primero, y que enseña tanto C como Python. El enfoque parecía interesante, y si te interesa hacer GUIs, PyQt parece popular. (Aunque como siempre, todo es relativo; si sólo quieres hacer GUIs, yo miraría directamente kjsembed, en que escribes en javascript, más fácil imposible.)


Esto será mi vida, porque es lo único importante en ella.
Y, si fracaso, moriré, porque para mí no existe nada más.

Raistlin Majere


 
Ruby (none / 0) (#1)
por davinci (davinci at ecol org) a las Tue Jul 20th, 2004 at 03:17:20 PM CET
(Información Usuario)

Por no hacer míos las palabras ni el concepto, citaré las frases introductorias del libro Programming Ruby, que resumen a la perfección un hecho que comparto plenamente:

This book is a tutorial and reference for the Ruby programming language. Use Ruby, ad you'll write better code, be more productive, and enjoy programming more.

These are bold claims, but we think that after reading this book you'll agree with them. And we have the experience to back up this belief.

El libro está al completo en el enlace apuntado. No estaría de más que le echases un vistazo antes de tomar tu decisión definitiva.


¡Es la guerrrrrrra!


 
Kommander (none / 0) (#2)
por melenas a las Tue Jul 20th, 2004 at 09:05:39 PM CET
(Información Usuario)

Usa Kommander y aprende a hacer programas gráficos con shell scripts :-)


FDO. ER_MELENAS No te preguntes sólo que puede hacer el S.L. por ti sino también que puedes hacer tú por él.


 
Difícil elección (none / 0) (#3)
por atopos a las Tue Jul 20th, 2004 at 11:17:36 PM CET
(Información Usuario) http://los-pajaros-de-hogano.blogspot.com

Desde mi limitida, pero que muy limitada experiencia, todo depende de cuál sea tu objetivo en eso de "aprender a programar".

Si se trata de conocer los entresijos de la programación, quizá lo mejor sea Ensamblador o C. Respecto de este último, siempre hay que recordar su relación con Unix (estamos pues en casa), así como el hecho de que quizá uno de los mejores libros sobre programación jamás escritos sea el superclásico The C Programming Language (lo cito en inglés, porque la traducción castellana no me gusta nada).

Si se trata de adentrarse en el mundo de la programación de un modo menos "duro", creo que Python puede ser una buena elección. Como dices, hay documentación, y también hay proyectos de formación básica interesantes como:

Ahora mismo yo estoy aprendiendo Python ---curiosa coincidencia---, y la prueba de que lo básico de Python es sencillo es que después de dos o tres días leyendo el Tutorial de Guido van Rossum, ya he empezado a hacer un pequeño programa para una amiga (y tratándose de mí ---que soy un lerdo para estas cosas---, tiene que ser muy fácil).

Si se trata de escribir con las menos líneas posibles, uno de los reyes es Perl, pero a costa de que puede llegar a ser muy, pero que muy "ofuscado".

Otros planteamientos de aprendizaje clásicos prefieren elegir lenguajes funcionales como Scheme (una variante de Lisp). Por ejemplo, un texto muy utilizado para el aprendizaje de la programación es Structure and Interpretation of Computer Programs

En fin, que hay donde elegir para todos los gustos.

Desde aquí te animo a que continúes. Y te lo digo yo que soy un principiante continuo en todos los lenguajes que acabo de citar. Justo el hecho de que tus aficiones sean tantas y tan dispares, puede ser una buena razón para que surjan programas también excepcionales. Que tal, por ejemplo, un programa de inteligencia artificial con Bilo y Nano como protagonistas ;-)

Esperemos a ver qué opinan los que saben :)



 
Jejeje... (none / 0) (#4)
por advocatux a las Tue Jul 20th, 2004 at 11:26:29 PM CET
(Información Usuario)

GonzoTBA, no tengo ni idea de si serás bueno programando pero si me atrevo a vaticinar que los comentarios en el código serán para descoj^H^Htroncharse :)
--
- Por una Europa libre de Patentes de Software - EuropeSwPatentFree


 
Python (none / 0) (#5)
por porras a las Wed Jul 21st, 2004 at 11:28:42 AM CET
(Información Usuario) http://www.lacoctelera.com/porras

En el Congreso Hispalinux de Móstoles (donde conocí a algunos de vosotros, si alguien se acuerda), asistí a una ponencia de unos profesores de primero de Informática (programación, claro) que presentaban un libro, en el cual habían cometido la osadía de sustituir C por Python. Aunque sólo lo he ojeado, me gustó bastante porque no se trata de un libro de Python donde se enseñen los intríngulis de Python, sino un libro sobre los conceptos básicos de la programación, con los ejemplos en Python, con la legibilidad que ello significa. Recuerdo que pensé quién lo hubiera pillado hace unos añitos, antes de ponerme a tirar estupi-código, empezando la casa por el tejado. El libro en cuestión está aquí.

--
Con las cosas que no sé, se podrían escribir 10.000 Enciclopedias Británicas.


 
Perl, por dar color (none / 0) (#6)
por pbenavent a las Wed Jul 21st, 2004 at 11:46:21 AM CET
(Información Usuario) http://www.benavent.org

Parece que tus intenciones están más decantadas y Python es una opción tal y como la planteas.

Aunque solo sea por darle vida al asunto: Perl. Y ahí van mis razones:
  • lenguaje con abundantisima documentación [Perldoc]
  • es maduro, lo que significa que tienes resuelto desde hace tiempo muchas cosas: acceso a BD's, CGI's, acceso a funciones POSIX, [CPAN] entorno gráfico TK [por ejemplo esta introduccion a TK]
  • realmente portable, puedes hacer un script para extraer informacione de Apache (algo muy típico para Perl) y se ejecutará en Linux, Solaris, Hasefroch 2003 Server...
Es falso -a pesar de tu buenísima tira- que Perl sea oscuro. Oscuro es el desarrollador que sabe mucho Perl, escribe rápido para resolver un problema sin documentar, sin comentarios y luego ni él mismo sabe que leches a hecho. (para escribir bien man perlstyle)

ATENCIÓN, si Orcero lee esto acude en auxilio de un recién llegado a perl! 8-)

Saludos


--
"El hombre es la medida de todas las cosas"
Protágoras


 
Ommmm... (none / 0) (#7)
por d Orb a las Wed Jul 21st, 2004 at 03:45:29 PM CET
(Información Usuario) http://skint.shef.ac.uk/

Yo creo que lo de programar es algo que puede ser util para muchos que nos ganamos la vida programando (en Fortran95, tambien para dar sabor :D). Cuando yo empece la carrera, teniamos una asignatura de Modula2 (en otros sitios era Pascal), en la que te ensenhaban los fundamentos de programacion. Yo habia hecho BASIC y algun pinito en C que deje por imposible. Todo dios se quejaba de que el Modula2 no lo pedian en ningun lado, que habia que aprender C++ y tal. Y el profesor solto que lo importante era entender la metodologia, no el lenguaje. Creo que tenia razon. He tenido que programar en varios lenguajes, y siempre he podido mas o menos salir adelante sin demasiado esfuerzo (excepcion hecha de IDL!).

Volviendo a la pregunta, Python es una buena opcion. Primero, porque bastante gente cree que es un buen lenguaje de programacion para introducir a la gente al tema (alguien ha dado toda una serie de enlaces antes). Otra ventaja es que gran cantidad de librerias y demas que estan adaptadas para trabajar con ellas de Python. Y realmente, se hacen cosas rapidamente (mira este tutorial, p. ej. :D).

Lo dicho en el parrafo anterior es casi todo aplicable a perl, aunque a mi me sigue gustando mas python. Principalmente por scipy y por f2py.
Skint resources <http://skint.shef.ac.uk>


 
Java no (none / 0) (#8)
por man ls a las Thu Jul 22nd, 2004 at 01:08:27 AM CET
(Información Usuario)

Es curioso lo de las modas en programación, hace unos años mucha gente te habría recomendado aprender Java. Ahora la gente se ha dado cuenta de la terrible realidad: aunque sea una especie de C++ simplificado, Java sigue siendo complicado.

Tras cuatro años ganándome la vida en eso, yo ya estoy harto de programar en Java. Así que voy a aprender Lisp, ¡hale! Y por dar la nota, te lo recomiendo también.

De regalo, un enlace interesante sobre los problemas de la ingeniería del software, en inglés. Confío en vuestro fino sentido del humor.



Tu veras lo que quieres hacer (none / 0) (#11)
por thuban a las Thu Jul 22nd, 2004 at 10:07:03 AM CET
(Información Usuario)

A mi me parece que con el bash vas (redundante) que chutas, porque te sirve para lo que necesitas, que es la gracia de programar.

Pero si quieres aprender a programar, lo que se dice programar, dejate de mariconadas, instalate un compilador de pascal (bueeeeeno, modula2 tambien puede servir) y compar un libro titulado "Programacion Metodica", olvidate de las Qt, las Gtk, los graficos y demas mariconadas con puntillas y aplicate a los punteros ("flechitas").

Con eso aprenderas a PROGRAMAR.

Despues, si quieres aprender programacion orientada a objetos, compra uno de Herbert Schildt de C++, que te enseñara C (el *autentico* lenguaje de programacion), C++ y programacion orientada a objetos.

Despues, tardaras una semana en defenderte en cualquier lenguaje, seras productivo en tres semanas y un guru en dos meses, porque sabras PROGRAMAR.

Pero sera un camino largo al final del cual *solo* sabras programar. Despues, para hacer cositas aparentes, tendras que aprender a usar las librerias graficas que mas te gusten (que en Linux son unas cuantas), las librerias de comunicaciones que prefieras (que en Linux son unas cuantas mas), las de... Pero sabras PROGRAMAR.

La alternativa es aprender Java (y solo Java), Python (y solo Python), PHP (y solo PHP), C (y solo C) o el lenguaje que mas te guste (y solo ese).

Pero aprenderas con las limitaciones del lenguaje que uses (unos no tienen punteros, en otros te despreocupas de lo que gastas porque un mago llamado GC se encarga de todo...) y te costara mas pasar de un lenguaje a otro. Y segun lo que elijas, podras seguir aprendiendo o no. Por ejemplo, si te decides por Java (que es muy bueno y me gusta mucho) olvidate del paso siguiente que es aprender algoritmos, porque la mayoria de los algoritmos de verdad usan punteros, que java no tiene.

Ya sabes, el reverso tenebroso de la fuerza es mas rapido, mas comodo, pero no mas poderoso.

¿Aun tienes ganas?



sugerencias de un (casi) ingeniero en informática (none / 0) (#38)
por fortran a las Tue Jul 27th, 2004 at 10:18:33 PM CET
(Información Usuario)

Buenas, Gonzo, he hecho el esfuerzo de registrarme y todo para darte algún consejillo, al menos sobre algunos de los lenguajes que conozco.
  • Java: es mi lenguaje "nativo" y como la cabra tira al monte, pues es lo que te recomendaría...
    • pros: gestión automática de memoria, impide hacer ciertas chapuzas, tipado estático fuerte (algunos dirán que no es un pro), fantásticos entornos de programación disponibles (eclipse y netbeans por poner 2 ejemplos), un API muy completa y muy bien documentada (árboles, listas, tablas hash, algoritmos de búsqueda, manejo de strings y expresiones regulares, acceso a bases de datos, etc.), solución universal: desde la web hasta sistemas empotrados...
    • contras: swing y awt dan un poquito de asco... pero se puede llegar a vivir con ellos. la eficiencia no creo que sea un problema, ya que las jvm's actuales son realmente rápidas.
  • C/C++: pues eso, que si no vas a programar el kelmer, no te los recomiendo... demasiados quebraderos de cabeza extra para un supuesto incremento del rendimiento que al final dependerá de tu habilidad como programador. por desgracia, las cosas chulas como el 3d (OpenGL, DirectX) están pensadas principalmente para usarse desde C y C++.
  • Python: es bastante cuco y resultón, he hecho algunas chapuzas con él y creo que su mayor ventaja es el manejo de estructuras dinámicas como listas de una forma muy flexible.
  • Lisp: es un lenguaje majete, pero lo veo innecesario para hacer guarrerías... si te sales de la programación funcional el código se hace bastante poco legible. eso sí, si quieres hacer algoritmos genéticos es la opción.
  • Fortran: juassssssss... aunque es mi nick, no lo recomiendo. no hay compiladores libres decentes y se trata de una reliquia un tanto forzada para los tiempos de hoy. la sintaxis es fea y la posible ganancia en eficiencia se basa en todas las optimizaciones estáticas que puede hacer el compilador.
  • Pascal: los buenos viejos tiempos... algunos dirán que es para que los niños aprendan, pero es un lenguaje bastante capaz y elegante. por otra parte, es demasiado parecido a C en cuanto a funcionalidad, aunque Lazarus es una baza interesante.
  • Prolog: pues aunque ya recuerdo poco de éste, si te gusta escribir pocas líneas de código es la opción. eso sí, hay que pensar antes de ponerse a escribirlas. ah, de las ventanitas olvídate, si las quieres, tendrás que mezclarlo con algo.
  • TCL/TK: para hacer bocetos rápidos de aplicaciones está bastante bien, pero la sintáxis era bastante rebuscada (parecido al bash, es otro intérprete de comandos).
  • ...
(Mi) conclusión: Aprende Python, que es lo más facilón, y para cuando se te quede corto, prueba con Java y Jython, así podrás usar un lenguaje de más peso y reutilizar todo el código que ya tuvieses... por otra parte, también hay versiones de Prolog (y de Ruby, de Lisp...) que funcionan sobre la Máquina Virtual de Java, así que piensa seriamente en Java como lenguaje de integración.



 
Aprendiendo a programar | 37 comentarios (37 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda