quiero aprender perl

+1
0
-1

Me he propuesto aprender perl, he visto programas, y ya tengo ganas de aprender algun lenguaje en serio.

Y es que toda la vida (de linuxero) llevo convenciendome de que voy aprender, que esta vez si, este es mi lenguaje, ..... al final nada, lo unico que me consuela es que la gente tiene que ir a la universidad para parender estos lenguajes, asi que considero normal, que yo no pueda aprenderlo asi como asi, esta muy bien eso de "yo me hice a mi mismo", autodidacta, etc,... pero siempre tienen unos conocimientos previos que fueron impartidos en algun aula.

A mi me gustaria programar, me parece apasionante, no entiendo como a la gente le aterra, es como el escultor que trabaja para que tu recrees la vista, el pintor de un fantastico cuadro, un arquitecto, es crear para ser admirardo. Ni soy arquitecto, ni escultor ni mucho menos pintor, asi que lo unico que puedo harcer, es leerme los manuales que purulan por la red e intentar crear algo que la gente reconodca.

Tal vez sean sueños de un niño, pero son bonitos.

Para empezar a progrmar, primero tenemos que tener una necesidad, y si no la tenemos pues nos la creamos. Pues hasta en esto estoy verde, no se que necesidad crearme, como puedo ser tan triste, bueno preguntare por los foros, esperando que alguien me preste su necesidad.

bufff, que agobio.

Comentarios

Imagen de ubuntu111

Buenas ruben_linux

Estoy en una pagina web donde se aprenden muchos lenguajes.

http://www.redemoon.com/atanes/gap/

Exactamente el Perl, aún no hay manuales, pero habran.

Animate y pasate ;)


Si eres programador, ya sea avanzado o novato, entra en http://www.aprendeprogramacion.net/ todo para empezar a programar.

Imagen de Carlinux025

lo bonito de la programacion no es... "se programar en ..." por que directamente te da igual en que programes, una ved sepas es igual en un lenguaje que en otro.
Te aconsejaria que aprendieras en alguno muy usado para empezar (c# java) por que asi preguntando habra mas gente que pueda ayudarte con los pequeños detalles...

Imagen de cjestrellardz

Antes de que te apresures a aprender un lenguaje, deberías aprender lo más básico de la programación, se que es aburrida la teoría y eso pero sirve demasiado.

Aprender que es la programación estructurada, la programación orientada a objetos te servirá de mucho, creeme. Además también es necesario (aunque no obligatorio) saber que son los diagramas de flujo, diagramas de entidad-relación (bases de datos) y UML, todo eso te sirve a la hora del análisis para hacer una aplicación. También te serviría de mucho aprender PSP (Personal Software Process), investiga sobre esto ultimo, es muy útil cuando programas de manera individual ya que parte desde el análisis de lo que quieres hacer hasta la implementación de tu aplicación.

Claro que lleva tiempo pero lo considero necesario para que no te surjan dudas a la hora de programar y para que te sea mas sencillo "visualizar" lo que quieres hacer.

Y tal como te dijo Carlinux, aprende un lenguaje muy usado, ahí esta Java, C#, PHP o incluso Python, no digo que Perl no sea bueno pero los antes mencionados son muy usados actualmente para casi todo, desde aplicaciones gráficas o en consola, hasta aplicaciones web. Por ejemplo, C# cuenta con una documentación excelente de Microsoft gracias al MSDN, todo muy bien explicado y con sencillos ejemplos.

Saludos..

--------------------------------------------------
(Laptop @ Ubuntu 9.10):
Intel Celeron 560M @ 2.13GHz | Intel Mobile GM965 | Hitachi 5400RPM 160GB | 1GB RAM 533Mhz | Intel Graphics X3100 @ 384MB | Intel 3945ABG WiFi

--------------------------------------------------
(Laptop @ Ubuntu 9.10):
Intel Celeron 560M @ 2.13GHz | Intel Mobile GM965 | Hitachi 5400RPM 160GB | 1GB RAM 533Mhz | Intel Graphics X3100 @ 384MB | Intel 3945ABG WiFi

Imagen de JimmyPage

Es muy sencillo, como programar en pseudocodigo, y parecido al perl yo lo uso con pygtk y con glade para hecer programas con interfaces. Estoy de acuerdo en eso de que la programacion estructurada es mas importante que saber cualquier lenguaje, cuando programas hay dos maneras de hacerlo, una orientada a procesos (lo que hacen los metodos, funciones) que es lo que suele hacer todo el mundo cuando empieza y otra orientada a datos (la mas complicada pero la mas efectiva) que es lo que se hace con sql, uml, etc. El concepto de herencia es importante para reutilizar codigo y no poner toda una ristra de codigo en el mismo metodo y luego repetir ese codigo en otro distinto. Si no sabes hacer bien clases, uml, Entidad-Relacion, etc, podras hacer programas que funcionen, pero nunca seran buenos programas.
Los lenguajes en si solo son codigo, algunos mas parecidos otros mas distintos.

Imagen de Cristobal López

Yo no soy programador, sólo matemático, me gusta programar algoritmos matemáticos, sobretodo en C++. Últimamente también en Python.
Me gusta mucho encontrar por ahí nuevas librerías que tengan que ver con los parsers, que mi nivel es muy bajo para hacerlos yo.
Yo programo por diversión, así que si quieres un motivo para programar puedes empezar por el de divertirte cuando tengas ratos libres.
Te doy un consejo, no quieras empezar a programar algo que sea muy complicado, empieza por lo más básico y poco a poco pensarás en hacer tus propios proyectos.
Ánimo tio, en Linux tienes una infinidad de lenguajes que te esperan ;-)

Linux Music 2.0

Imagen de ruben_linux

Gracias cjestrellardz, desconocia todas esas cosas. Mi intencion era empezar a leer manuales de Perl, Python, C,... y listo, a programar. Si es cierto que lei algo de pseudocodigo, pero me parecio facil y aburrido, asi que lo deje. Tambien lei sobre la programacion orientada a objetos y me parecio muy complicada y no termine de terner las cosas claras, asi que me decidi por la programa cion estructurada, que si no entiendo mal, es la de Perl, y C.

Diagramas de flujo si se lo que son, pero no se cuales son los criterios acertados para decidir usa cada uno. Diagramas de bases de datos, ni idea, tengo instaldo MySql y algun manual, he creado tablas y poco mas. UML no tengo ni idea es la primera vez que veo eso. PSP igual que UML

cuando termine este post, me pondre a descargar manuales, otra cosa es que los lea. :-))

gracias a todos.

donde todos piensan =, nadie piensa mucho
http://arealinux.blogspot.com/

Imagen de cjestrellardz

Programación orientada a objetos no tiene nada de chiste aprenderlo, lo difícil es aplicarlo...

La programación orientada a objetos consta de:

  1. Herencia: Imagina que tienes un clase llamada 'Hombre', que tiene como propiedades/atributos 'Ojos', 'Nariz', 'Boca', etc. Ahora, necesitas crear una clase llamada 'Mujer', ¿que harías?, ¿escribirías todas las propiedades que ya tiene la clase 'Hombre' de nuevo?, la respuesta es no, lo mejor y mas fácil es heredar de la clase 'Hombre' sus propiedades a la clase 'Mujer'. En algunos lenguajes se usa 'Extends' o simplemente ':' para heredar, El ejemplo aplicaría así: 'Mujer extends Hombre' o 'Mujer : Hombre', así de sencillo y sin re-escribir nada.
  2. Polimorfismo: Sigamos con la clase 'Hombre' y la clase 'Mujer'... Tienes un método llamado 'Inteligencia' en la clase 'Hombre' y la tienes heredada en la clase 'Mujer' pero, ese método esta especialmente pensado para 'Hombre' y aplicaría a 'Mujer' de otra forma (mas inteligente, menos, etc), ¿que harías?, ¿re-escribirlo? claro que no, simplemente aplicar el polimorfismo que no es mas que cambiar ciertos aspectos que aplicarían distinto para cada clase. De esta forma puedes tener en la clase 'Hombre' el método 'Inteligencia' que devuelve un valor 10 y en la clase 'Mujer' que devuelve un valor 40. El polimorfismo se aplica de distinta forma en cada lenguaje, en C# para poder sobre-escribir el método heredado se le debe declarar como 'Virtual' (clase 'Hombre') para sobre-escribirlo en la clase 'Mujer', se le debe declarar como 'Override', y listo, no devolverían el mismo valor a menos que se lo indicaras.
  3. Encapsulamiento: Esto es lo más sencillo, tiene que ver mucho con los modificadores de acceso como 'Private', 'Protected', 'Internal', etc, en cada lenguaje es un poco distinto. ¿Para que sirve?, simple, para ocultar la forma de trabajar de un método, función o incluso una clase. ¿Con que fin?, tienes un función llamada 'Logueo' que verifica si el usuario y pass son correctos y devuelve True o False, ese método es importante y no debe estar a la 'vista' de las demás clases, ¿Lo declararías como de acceso 'Público' a ese método tan importante?, claro que no, debería ser 'Privado' o 'Protegido' sin más. Esto es un ejemplo claro, no siempre podría aplicarse así, depende mucho del análisis del problema y de como resolverlo.
  4. Abstracción: Igual de sencillo que el encapsulamiento. Como el nombre lo indica, no habla mas que de 'Abstraer' y se aplica mucho al análisis a la hora de crear tus clases. Las propiedades de una clase deben ser lo más genéricas y siempre las más sobresalientes o importantes, de nada sirve que tengas la propiedad/atributo 'tamanioCicatrizManoDerecha' en la clase 'Hombre' si no todos (o ninguno) los objetos instanciados de esa clase lo van a tener.

Eso es lo más importante de la POO.

Por cierto, una clase es un conjunto de propiedades/atributos y métodos que realizan una acción. Imagina de nuevo la clase 'Hombre', tiene 2 propiedades, 'Nombre' y 'Apellido' y en el método constructor (generalmente para asignar o realizar una tarea al crearse una instancia) se le asignan esos valores que entran como parámetros, además tiene 2 propiedades que regresa los valores asignados, 'Nombre' y 'Apellido'. La instancia sería:

C#:

Hombre variable1 = new Hombre("Juanito", "Perez");

Y para ver los valores asignados, llamamos a las propiedades (Get):

Console.WriteLine("Hola " + variable1.Nombre + " " + variable1.Apellido + "!");

Esto imprime:

Hola Juanito Perez!

Esto sería el código de la clase 'Hombre':

using System;

class Hombre // nombre de la clase
{
    // Atributos o propiedades, como quieras llamarlos...
    // Son privados, no queremos que sean modificables o
    // visibles fuera de esta clase.
    private string nombre;
    private string apellido;

    // Metodo constructor, asigna, inicializa o realiza alguna
    // tarea al ser instanciada la clase. PJ: Abrir conexion a
    // base de datos, etc. Debe ser public y no debe devolver nada.
    public Hombre(string nombre, string apellido)
    {
        // La palabra reservada 'this' hace referencia a las variables globales
        // que son visibles dentro de todos los métodos de la clase en la que
        // se declaran y de esta forma hace mas legible la diferencia de 2 variables
        // con el mismo nombre.
        this.nombre = nombre
        this.apellido = apellido
    }

    // string despues de public quiere decir que devuelve un valor de tipo string.
    public string Nombre
    {
        // return como lo dice su nombre, retorna o devuelve
        get { return this.nombre; }
    }

    public string Apellido
    {
        get { return this.apellido; }
    }
}

Toda una clase te di jejeje...

Si quieres aprender POO yo te puedo pasar unos manuales muy buenos, depende de ti en que lenguaje pero te recomiendo Python o C# para empezar.

Saludos..
--------------------------------------------------
(Laptop @ Ubuntu 9.10):
Intel Celeron 560M @ 2.13GHz | Intel Mobile GM965 | Hitachi 5400RPM 160GB | 1GB RAM 533Mhz | Intel Graphics X3100 @ 384MB | Intel 3945ABG WiFi

--------------------------------------------------
(Laptop @ Ubuntu 9.10):
Intel Celeron 560M @ 2.13GHz | Intel Mobile GM965 | Hitachi 5400RPM 160GB | 1GB RAM 533Mhz | Intel Graphics X3100 @ 384MB | Intel 3945ABG WiFi

Imagen de ruben_linux

Gracias por tu ayuda cjestrellardz.

Poca gente es tan altruista. Pero por lo poco que lei de programacion, me parecieron mas faciles Perl, C, ....
Me gustaria tener mas documentacion, aun estoy en la fase de acopio de manuales y la verdad, toda ayuda es poca.

Una pregunta. para que usar un Phyton o C# si el resultado es el mismo en C o Perl???
No se llega al mismo resultado con estos lenguajes??
Lenguaje = necesidad, o da igual el lenguaje ??

P.D. en realidad eran 3 preguntas.

:-)

donde todos piensan =, nadie piensa mucho
http://arealinux.blogspot.com/

Imagen de cjestrellardz

En efecto, con ingenio podrás obtener los mismos resultados pero obtendrás menos visión para ampliar un sistema, será poco ajustable, difícil mantenimiento o incluso tardarías un poco mas de tiempo en codificar.

Imagina, terminas el sistema que te encargo un cliente, funciona como el te dijo y todo. Pasa un tiempo y te dice que quiere que haga tal función. Como tu programa esta hecho en C te tardarías un poco más que en un lenguaje como Python, C# o Java, ¿Porque?, la razón radica en el tiempo de compilación y detección de errores en tiempo real. Para hacer un sistema de software en C necesitas un buen equipo de desarrolladores experimentados ya que el mínimo error significa pérdida de tiempo valioso.

¿Que ganas con lenguajes como Python, C# o Java?, fácil: TIEMPO, en una empresa de software es vital eso, para la realización de sistemas prefieren usar lenguajes como C#, VB.NET, Java, etc ya que te evitas de problemas de compilar, lo cual requiere un buen de tiempo y buenos conocimientos en el tema. ¿Cuanto tiempo te tardas en compilar un 'Hello World' en C?

Si es por hobby pues adelante, Perl, C o cualquier lenguaje viene bien. Es más, te recomiendo que primero aprendas alguno de ellos, te servirá como base para aprender un lenguaje orientado a objetos como Python, C#, Java, etc.

Y pues como te comente, con un lenguaje orientado a objetos tienes una visión mas clara sobre lo que quieres y como implementarlo, ya que 'todo es un objeto'. Un ejemplo sencillo, el objeto 'Persona' tiene como atributos 'Nombre', 'Apellido', 'Edad', etc y cuenta con las funciones de 'Caminar', 'Hablar', 'Escuchar', 'Moverse', esa es la enorme facilidad que tiene, todo resulta mas claro a la hora de programar.

--------------------------------------------------
(Laptop @ Ubuntu 9.10):
Intel Celeron 560M @ 2.13GHz | Intel Mobile GM965 | Hitachi 5400RPM 160GB | 1GB RAM 533Mhz | Intel Graphics X3100 @ 384MB | Intel 3945ABG WiFi

--------------------------------------------------
(Laptop @ Ubuntu 9.10):
Intel Celeron 560M @ 2.13GHz | Intel Mobile GM965 | Hitachi 5400RPM 160GB | 1GB RAM 533Mhz | Intel Graphics X3100 @ 384MB | Intel 3945ABG WiFi

Imagen de ivanovichenco

Chico, yo te aconsejo iniciar con Python, con ese inicie como autodidacta y me ha hido muy bien. te recomiendo pasarte por esta pagina,http://www.aprenderpython.com/smf/ ahi di mis primeros pasos en rogramacion y pude hacer programitas sencillos y faciles muy rapidamente. registrate en el foro y sigue adelante. Ahi hay un curso con videos muy interesante aunque te recomiendo utilizar el idle de python y no la consola de python, es mas facil con el idle. Ahi tendras ayuda y colaboracion.

la conciencia no tiene precio, quien la compra o la vende no tiene. Elige bien a tus amigos y ...gobernantes

La conciencia no tiene precio. Quien la compra o la vende es porque no la tiene.

Imagen de ivanovichenco

Amigo, es mas facil aprender c++. Yo hice unos cursos en el Sena de Colombia
http://sis.senavirtual.edu.co/infocurso.php?semid=643&areaid=10
e hice el nivel uno, luego el dos y luego el tres que es el que trabaja las clases. Este ultimo tengo que repetirlo aunque lo pase a medias. Mejor dicho los voy a repetir los tres para afianzarme mas. Son muy buenos. Te los recomiendo. En senavirtual hay también unos cursos de java, por si te interesa. Son gratuitos y con certificacion valida en todo el mundo.
http://sis.senavirtual.edu.co/oferta.php?areaid=ALL
La otra alternativa facil en linux es gambas, el entorno visual basic de linux
http://www.youtube.com/watch?v=nUtdHPVmaV8

La conciencia no tiene precio. Quien la compra o la vende es porque no la tiene.