Inicio en la programacion [Dudas] - Algoritmos

Iniciado por Deasle, 5 Agosto 2016, 06:34 AM

0 Miembros y 1 Visitante están viendo este tema.

Deasle

Hola a todos.

Soy un nuevo usuario, ya había leído anteriormente temas de este foro y algunos me llamaron mucho la atención. En fin, hace apenas unas horas me registré con ciertos objetivos, pero el más importante fue unirme a una comunidad para apoyar mis estudios de programación con ayuda de otros, y claro, también ayudar a los demás en lo que pueda.

Desde pequeño me ha interesado el mundo de la tecnología, toda mi infancia y hasta hace un par de años mis pasatiempos estuvieron dedicados en gran medida a los videojuegos, ahora no es igual pero aún sigo metido en el mundo gamer. Además, tengo facilidad para manejar sistemas operativos básicos como Windows, iOS y Android.

Hace unos meses me entró la idea de aprender a programar, pero realmente no sé si he tomado un buen camino para empezar (un problema bastante común). He investigado en este foro y en otras páginas web y he leído respuestas como "Muchos empezamos por programar en C, si lo dominas entiendes con menor dificultad los demás lenguajes" "Phyton es buena opción para empezar" "Aprende teoría" "Te recomiendo aprender un lenguaje como..." pero estas respuestas (excepto la tercera) no me convencen, ya que me suenan como si alguien preguntara:

- Quiero adentrarme al mundo de las matemáticas desde cero para llegar a comprender ramas como cálculo.
+ ¡Claro! Deberías empezar por álgebra y geometría analítica.

Lo cual me parece algo incorrecto, porque desde mi punto de vista, la mejor recomendación es aprender aritmética, después de todo, pone las bases para el entendimiento del álgebra y las demás ramas avanzadas. Tal como dijo Gauss "La matemática es la reina de las ciencias y la aritmética es la reina de las matemáticas" Mi inquietud es saber cual es esa reina en el mundo de la programación, para poder iniciar de la mejor manera posible.

Al final, tomé la decisión de leer artículos en wikipedia, ver vídeos, conocer como funciona la conexión a internet (IP, puertos, servidores, DNS, etc.) y los procesos lógicos de los programas. Casi todo me llevó a una palabra bastante importante; algoritmo. Así que comencé a buscar libros y me enteré de uno que posiblemente les suene, es "Introduction to Algorithms" de Charles E. Leiserson, Clifford Stein, Ronald Rivest y Thomas H. Cormen.

Me puse manos a la obra y he comenzado a leerlo. Me resulta un tanto difícil de comprender (principalmente las partes donde muestra pseudocódigo) pero logro librarlo.

Después de toda esta explicación, aquí vienen mis dudas:

- ¿Recomiendan aprender primeramente acerca de algoritmos?
- ¿Qué otras cosas debería comenzar a aprender al mismo tiempo que aprendo sobre algoritmos?
- ¿Realmente es una buena idea aprender un lenguaje de programación cuando intentas comenzar desde cero?

Me gustaría que me dieran algunos consejos respecto al tema del pseudocodigo para entenderlo mejor. También que me cuenten sus experiencias de cuando iniciaron en la programación.

Gracias por su tiempo y se agradece mucho sus respuestas.

Orubatosu

El aprender algún lenguaje te permitirá aplicar esos algoritmos. Una cosa es leer y entender el pseudocódigo, pero la aplicación practica, aunque sea en ejemplos sin ninguna utilidad real es también muy importante para "ver por ti mismo" como funcionan. Además te permite trastear con ellos, hacer variaciones, equivocarte mucho (que también cuenta), etc.

El único "pero" sería el tipo de programación o el paradigma como se suele decir ahora mismo. Muchos lenguajes, la mayoría son imperativos hasta cierto punto. Despiezas el problema grande en pequeños, crear rutinas, etc. Luego está la POO (Programación orientada a objetos) que es muy potente pero donde "meterse" implica a menudo mucha, pero mucha teoría antes de la practica. O tomar muchas de sus proposiones como "dogmas de fé" que aplicas sin saber realmente porque hasta que los aprendes.

Y claro, no existe el lenguaje mágico perfecto. Todos tienen sus puntos fuertes y sus puntos débiles. Campos donde son ideales y campos donde su aplicación es farragosa y posiblemente poco practica, etc.

Lo de Phyton no es mala idea porque empiezas con algo "sencillo" dentro de lo que cabe, y no tienes que complicarte de entrada las cosas con conceptos que no se verán hasta mas adelante. Solo necesitas un interpreta, es multiplataforma, es una opción ideal.

Y encima es útil ¿que mas quieres?
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

Poyoncio

#2
Bienvenido a la comunidad!
Lo que yo te recomiendo es que sigas leyendo articulos sobre cosas generales de la informatica como estabas haciendo sobre aplicaciones cliente/servidor, protocolos de red, alguna cosilla de criptografia (solo entender los conceptos basicos).
A la vez que compaginas esto, puedes aprender algun lenguaje de programacion, el lenguaje de programacion depende de lo que quieras hacer, tienes diversos sectores robotica, programacion para windows, programacion para linux, aplicaciones multiplataforma, hacking general, diseño de malware... Especifica que quieres aprender y te contestaremos el lenguaje.
Siguiendo con tu comentario sobre algoritmos, creo que tienes un concepto muy distorsionado de los algoritmos aplicados en informatica. Un algoritmo no es mas que un conjunto de procesos que dependen de diversas condiciones. Por ejemplo un algoritmo se puede aplicar a cosas cotidianas. Ejemplo:

Si llueve:
   Coger paraguas
Si no llueve:
   No coger paraguas

Esto seria un ejemplo de un algoritmo en pseudocodigo (Es decir un lenguaje entendible para un humano que no sea programador). Este ejemplo de algoritmo se podria transformar a cualquier lenguaje de programacion. Seguramente la obra que estas leyendo no te sera util para programacion porque como ya has visto no tiene nada que ver y no es para nada complejo.

Aqui te dejo un mini ejemplo de algoritmo en python tambien muy sencillo:
Te explico que significa cada parte del codigo en gris:
Código (python) [Seleccionar]
a=1    #Asignamos a la variable a el numero 1

if a<0:   #Si la variable a es mas pequeña que 0 ejecutara el codigo que viene a continuacion  
   print "La variable a es mas pequeño que 0"   #SI la condicion de arriba es verdadera imprimira por pantalla "La variable es mas pequeña que 0".
else:    #Si no se cumple la condicion del codigo de arriba se ejecutara el codigo que viene a continuacion
   print "La variable a es mas grande que 0"   #Si la condicion de arriba se cumple se imprimira por pantalla "La variable es mas grande que 0



if equivale al pseudocodigo Si condicional
else equivale al pseudocodigo Sino condicional

Este ejemplo es en python y como ves es muy facil
Es decir, no hace falta qe lo hayas entendido todo pues eso ya te lo enseñaran en los libros o videos de programacion, pero como te digo es realmente facil y no hace falta ser un genio en matematicas, es mas para programar solo necesitas saber sumar,restar y multiplicar.

--------------------------------------------------------------------------------------------------------------------
Vale orobatsu has respondido y ya lo tenia escrito yo tambien, pero es igual lo publico igual :silbar:
Curso de ensamblador desde cero

Contradriver

Cita de: Poyoncio en  5 Agosto 2016, 12:06 PM
Bienvenido a la comunidad!
Lo que yo te recomiendo es que sigas leyendo articulos sobre cosas generales de la informatica como estabas haciendo sobre aplicaciones cliente/servidor, protocolos de red, alguna cosilla de criptografia (solo entender los conceptos basicos).
A la vez que compaginas esto, puedes aprender algun lenguaje de programacion, el lenguaje de programacion depende de lo que quieras hacer, tienes diversos sectores robotica, programacion para windows, programacion para linux, aplicaciones multiplataforma, hacking general, diseño de malware... Especifica que quieres aprender y te contestaremos el lenguaje.
Siguiendo con tu comentario sobre algoritmos, creo que tienes un concepto muy distorsionado de los algoritmos aplicados en informatica. Un algoritmo no es mas que un conjunto de procesos que dependen de diversas condiciones. Por ejemplo un algoritmo se puede aplicar a cosas cotidianas. Ejemplo:

Si llueve:
   Coger paraguas
Si no llueve:
   No coger paraguas

Esto seria un ejemplo de un algoritmo en pseudocodigo (Es decir un lenguaje entendible para un humano que no sea programador). Este ejemplo de algoritmo se podria transformar a cualquier lenguaje de programacion. Seguramente la obra que estas leyendo no te sera util para programacion porque como ya has visto no tiene nada que ver y no es para nada complejo.

Aqui te dejo un mini ejemplo de algoritmo en python tambien muy sencillo:
Te explico que significa cada parte del codigo en gris:
Código (python) [Seleccionar]
a=1    #Asignamos a la variable a el numero 1

if a<0:   #Si la variable a es mas pequeña que 0 ejecutara el codigo que viene a continuacion  
   print "La variable a es mas pequeño que 0"   #SI la condicion de arriba es verdadera imprimira por pantalla "La variable es mas pequeña que 0".
else:    #Si no se cumple la condicion del codigo de arriba se ejecutara el codigo que viene a continuacion
   print "La variable a es mas grande que 0"   #Si la condicion de arriba se cumple se imprimira por pantalla "La variable es mas grande que 0



if equivale al pseudocodigo Si condicional
else equivale al pseudocodigo Sino condicional

Este ejemplo es en python y como ves es muy facil
Es decir, no hace falta qe lo hayas entendido todo pues eso ya te lo enseñaran en los libros o videos de programacion, pero como te digo es realmente facil y no hace falta ser un genio en matematicas, es mas para programar solo necesitas saber sumar,restar y multiplicar.

--------------------------------------------------------------------------------------------------------------------
Vale orobatsu has respondido y ya lo tenia escrito yo tambien, pero es igual lo publico igual :silbar:

¿Y para el hacking general por que lenguaje de programación debería empezar?