Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Iniciarse en la programación

Programación
Por amphora
departamento python para todos , Sección Desarrolladores
Puesto a las Wed Sep 4th, 2002 at 11:19:48 AM CET
Quizá uno de los problemas que se encuentran los nuevos usuarios de software libre, que quieren contribuir programando nuevo software o colaborando en proyectos existentes, es su desconocimiento de los medios utilizados o las herramientas isponibles. Además de la monumental cantidad de librerías (o bibliotecas) que existen para llevar a cabo un proyecto. Esto si bien es una gran ventaja, puede apabullar a cualquiera en sus comienzos. Después por ejemplo, nos encontramos la cantidad de tecnologías que se usan para construir rogramas de nvergadura: corba, bonobo, kparts, xml, etc.

 


Además es posible que ni siquieran sepan rogramar, o que no conozcan cualquiera de los lenguajes de uso mayoritario en el desarrollo de software libre, o les resulten demasiado complicados. Puede que no consigan asumir las toneladas de documentación existente sobre programación, aunque esto no es de preocupar, no creo que haya gente capaz de llevar una vida normal y asumir tanta información.

En definitiva, este es mi caso. Y mi error, es querer construir la casa por el tejado y codearme con los arquitectos cuando en mi vida he puesto un ladrillo y apenas sé lo que son dos líneas paralelas.

La solución es muy simple, y consiste en no querer meterse en proyectos grandes y programar para uno mismo. Si, para uno mismo. Al fin y al cabo así es como empezaron las cosas ¿no? A alguien no le gustó lo que había y se hizo otra cosa, o ni siquiera existía y tuvo que empezarla de cero. Pues nada, se coje ese pequeño problema que tenemos y que sabemos se podría resolver en una computadora y comenzamos a programar.

Ahora viene el centrarse en un lenguaje, si conoces C o C++ y tienes ganas puedes hacer cualquier cosa, pero si te pasa como a mi que tienes diez libros de C y nunca pasas del capítulo de los punteros ¿que se puede hacer? Elegir un lenguaje que sea sencillo de aprender. Y si además nos ahorra todo el proceso que conlleva la compilación, enlace y depurado normales en otros lenguajes, más tiempo que tenemos para dedicarlo a lo que ahora nos preocupa, aprender a programar. Todas las ventajas que nos ofrecen estos lenguajes compilados, desde mi punto de vista, se convierten en cargas al empezar.

Lenguajes de este tipo debe haber decenas, pero sin duda los más conocidos son perl, python y ruby Los tres son interpretados y orientados a objetos, si bien tengo entendido que perl no fué diseñado con esa característica en mente, por lo que es el que peor la implementa  Para una buena comparación entre estos lenguajes se puede seguir este enlace. Yo hice mi elección basandome en algo tan poco técnico como la sintaxis de cada uno, la de perl me pareció tan horrible que ni lo consideré y ruby no lo conocía por aquel entonces. Desde luego no pongo en duda la potencia de perl, por algo lo llaman el pegamento de internet, pero no me pareció algo que pudiera aprender facilmente.

Si decides empezar a aprender algo en python, un documento interesante es este, el cual está traducido al español aquí. Este curso es algo básico y puede que acabes con él rápido, en estos dos enlaces tienes algo más serio para continuar, como por ejemplo thinkCspy o dive into python. Si algo caracteriza a python es que hay una inmensa documentación oficial, muy bien escrita y que se está traduciendo al español también en este otro enlace, aunque con tu distribución seguramente venga más actualizada. También es bueno ver como han resuelto otras personas diferentes problemas o comprobar como se realiza algún algoritmo clásico en python, para eso nada como un libro de cocina o esta otra página. Una vez que empezamos a dominar el lenguaje, quizá nos interese empezar con las interfases gráficas algo de lo que python está ampliamente dotado, aunque no como propio del lenguaje si no a través de módulos para el mismo. Podemos optar por Tk, gtk, Qt y wxwindows cada una con sus características y propiedades. Python corre en un multitud de plataformas incluido windows.
Python es verdaderamente potente y como prueba puedes ver que un desarrollo bastante complejo como zope está desarrollado en python.

En fin, que el que no programa es por que no quiere.

< Curso de ética webloggística (9 comments) | Dudas sobre que son los informaticos. (11 comments) >
Enlaces Relacionados
· escomposlinux.org
· perl
· python
· ruby
· enlace
· horrible
· este
· aquí
· thinkCspy
· dive into python
· enlace[2]
· un libro de cocina
· esta
· Tk
· gtk
· Qt
· wxwindows
· windows
· zope
· More on Programación
· Also by amphora

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

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Iniciarse en la programación | 5 comentarios (1 temáticos, 4 editoriales, 0 ocultos)
Experiencia propia (none / 0) (#5)
por runlevel0 (exterATvullferPUNTes) a las Wed Sep 4th, 2002 at 10:52:44 PM CET
(Información Usuario) http://perso.wanadoo.es/exter

Por propia experiencia te podría recomendar TCL/TK, TK ya lo comentas y TCL es un lenguaje de script (TK son extensiones GUI de TCL).
Tcl es tan fácil como perl (o más).
La ventaja si sabes programar la shell es que puedes llamar a los programas desde los scripts TCL o programar tus propios binarios en lo que quieras (yo lo hago en C y C++) y usar TCL/TK como "pegamento" y como GUI.

Por otra parte TCL/T se aprende muy fácilmente (en unas pocas horas ya estás haciendo cosas), así que vale la pena, aunqué luego uses otros lenguajes.

Un ejemplo: un pequeño firewall que cierra los puertos que tengas abiertos leyendo de netstat con un GUI mínimo, así podrás hacerte una idea de cómo se pueden usar ejecutables externos.
Uso: Corta, pega y prueba ;)

<código>

#! /usr/bin/wish
# zenfire cutre-firewall
# EULA: "We 0wnz0r y0ur B0xorz!"

proc port args {

set list00 [ exec netstat -tupan 2> /dev/null | grep LISTEN | tr -d \[:alpha:\] ]
set list01 [ split $list00 ?:? ]
set ip_stat [ exec /sbin/ifconfig | grep inet | head -n 1 ]
set ip0 [ string trim [ string range $ip_stat 10 36 ] "inet addr:P-t"]
set max [ llength $list01 ]
set if_stat [ exec cat /proc/net/dev | grep ppp ]
set ifc [ string range $if_stat 0 5 ]

exec iptables -F
exec iptables -X

for { set i 1 } { $i < $max } { incr i } {
set rlist [ lrange $list01 $i $i ]
set list [ string range $rlist 1 5 ]
set list2 [ string trim $list ]
exec iptables -A INPUT -i $ifc -p tcp --tcp-flags SYN,RST SYN -s ! localhost -d $ip0 --dport $list2 -j REJECT
set i [ expr $i + 1 ]
}

}

label .title -text "Zen Firewall 0.1"
label .fire01 -text firewall

button .go -text GO! -command { port }
button .exit -text close -command { exit }

grid .title -col 1 -row 1
grid .fire01 -col 1 -row 2
grid .go -col 2 -row 2
grid .exit -col 3 -row 2

</código>
-- S41002


 
Iniciarse en la programación | 5 comentarios (1 temáticos, 4 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