Aprender a programar

Iniciado por llamita, 18 Abril 2017, 20:10 PM

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

llamita

Primero antes de todo me gustaría saludar y agradecer a todo aquel que este leyendo mi primer tema en este foro, por cierto, coloco este tema aquí en " Foro Libre" ya que no se si ahi algún apartado para nuevos en específico.

Una vez que ya he saludado y agradecido me gustaría exponer mi caso: Tengo 19 años y acabo de dejar mi universidad en primer año de carrera , Ingienería Química, debido a que no era nada en lo absoluto lo que me esperaba y lo estaba pasando fatal, por lo que después de discutirlo con mis padres y tomar esta dificil decisión (de dejar mis estudios de manera temporal) me hallaba en la dificil decisión de que hacer ahora. Me decidí automaticamente por buscar trabajo mientras decidía que hacer con mi vida, ya he encontrado un trabajo ultra abusivo en un BK y ahora me queda la otra parte del plan que hacer con mi futuro. Después de ver en internet un monton de charlas de Chema Alonso sobre ciberseguridad y hacking me está interasado bastante la informática y el mundo de la tacnología por lo que me he puesto aprender programación por libre.

Ya os he expuesto mi situación actual y es que lo que me gustaría preguntar es, ahora que he aprendido a utilizar los diagramas de flujo utilizando "Raptor" y comenzando ya a utilizar leguaje C en ejercicios básicos de tutoriales y cursos gratuitos que he ido encontrando por internet, que hacer. Me siento abrumado con tanta información que encuentro por internet y tantos puntos de inicio que encuentro por todas partes, así que queria pedir un poco de ayuda para saber como aprender y que pautas seguir.

De nuevo muchar gracias por haber leído este tema y espero no haberos aburrido con tanta historia :D.

Orubatosu

Programar no es algo "único", existen diferentes paradigmas como puede ser el imperativo, el orientado a objetos... igualmente no existe un lenguaje "universal" para todo. Algunos son mejores para unos propósitos, otros son mejores para otros.

Algunos te dirán que "con tal o cual lenguaje puedes hacer cualquier cosa". Bueno, al margen de que eso sea cierto o no, el poder hacerlo no quiere decir que sea practico. Es posible por ejemplo hacer un programa de control de almacen (por ejemplo) en ensamblador, o en C, pero no tiene mucho sentido cuando puedes hacerlo por ejemplo en Java de forma mucho mas simple. No tiene sentido intentar usar Java para programación a bajo nivel, ni para rutinas donde la velocidad sea crítica, ni un largo etc.

Aclarado el que no existe el "esto vale para todo", comentar que lo que si es común a la inmensa mayoría de los lenguajes son los conceptos que están en programación

Por ejemplo variables, bucles, condicionales, funciones... igualmente muchos lenguajes tienen el concepto de librerías... una vez que sabes usarlos en un lenguaje, hacerlo en otro es frecuentemente solo conocer la sintaxis de cada uno

¿En que empezar? bueno, para eso hay muchas opiniones. Algunos te dicen directamente "lo mas potente", pero creo que eso puede desanimar si te encuentras de golpe con conceptos como manejo de memoria, punteros y otras historias. No digo nada si quieres empezar a programar y se te cae encima toda la parafernalia de la programación orientada a objetos con "palabros" que hasta que los entiendes y practicas son como invocar a Cthulhu con capa negra y capucha (objetos, instancias, polimorfismo, herencia, interfaces, clases estáticas, etc...)

Quizás lo suyo sería empezar por algo sencillo, por ejemplo Phyton para "romper mano". Luego ya pensar en otros lenguajes como C++, Java o lo que se tercie (que hay muchos). Cada uno tiene sus ventajas e inconvenientes. También existen otros lenguajes o "casi lenguajes" que se usan a menudo con estos como SQL (lenguaje que se usa en gestores de bases de datos), HTML, CSS (usado con HTML), PHP y un largo etc.

C "a palo seco" puede ser quizás algo que abrume, mas cuando un error puede hacer simplemente que el programa "se cuelgue" sin mas explicaciones, empezar por algo interpretado puede ser mas llevadero diría yo
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

Poyoncio

Yo te recomiendo que no tengas prisa, no comienzes por lo más alto porque acabaras caiendo a bajo del todo como no lo hagas muy muy bien.

En mi caso me meti a C sin tener ni idea de programacion y la verdad es que no dure mucho porque no comprendia (me refiero a fondo) muchas cosas. Si lo que quieres es tener un extenso control de un determinado lenguaje tienes que comprender muy bien que hace cada cosa. En mi opinion, si no has programado nunca, te recomiendo python. Concretamente este curso:

https://www.youtube.com/watch?v=oKQMoxJR5uk&list=PLEtcGQaT56chpYflEjBWRodHJNJN8EKpO

Te parecera un autentico aburrimiento, porque concretamente este hombre explica muy muy lento, pero comprendes realmente como funciona. A mi parecer la mayoria de cursos para "aprender a programar" son para gente que ya sabe programar y solo busca migrar a otro lenguaje. Yo me mire ese curso hasta el capítulo 25 o por ahi, luego ya no vale la pena a mi parecer.


Una vez hayas comprendido la syntaxis de python y puedas defenderte en condiciones te recomiendo que programes por tu cuenta tus chorradas. Al principio te veras muy limitado, pero una de las grandes ventajas de python es que tiene librerias muy simples con las que puedes realizar tareas muy complejas con un par de líneas. Una vez hayas programado algunas cosillas te recomiendo este curso:

https://www.youtube.com/watch?v=f7ecObXca-w&list=PLbMc9DOHlK9xm2DQmDc3qS7yc2x1kZ_Qu


Es un curso de hacking con python, te servira para seguir programando y a la vez comprender protocolos y las bases de la informatica.


A partir de ahi yo creo que ya te podrías meter de lleno en C.


Mi consejo mas general es que practiques mucho y no te dediques a copiar y pegar código de los videotutoriales sin comprenderlos.  Vas a tener muchisimos errores de syntaxis al principio, no te desanimes y pregunta.


Saludos
Curso de ensamblador desde cero

Serapis

Lo primeor de todo es adquirir conocimientos independientes de todo lenguaje.

Sólo cuando tenga un conocimiento relativo es cuando conviene optar por algún lenguaje. Si ya de entrada te tiras por un lenguaje en particular, siempre tendrás lagunas grandes en muchos temas. Cuanto más logres independizar tus conocimientos de los lenguajes, tanto más fácil te será luego adaptarte a cualquiera de ellos e incluso a más de uno con bastante mejor éxito que si te centras al comienzo en éste o áquel.

De hecho, piensa en psudocódigo... ya lo traducirás al lenguaje que elijas.
Trataba de mirarte algún libro de iniciación a la programación, mirando en wikilibros, pero el que hay es bastante malo. empieza hablando de algoritmos... cuando habla de los tipos de datos, ya asume demasiadas cosas... es malo.

Lo primero para iniciarse en la programación es repasar los aspectos matemáticos primitivos en que se basa la programación. Esto es el sistema binario junto con las bases numéricas de 8 (octal), 16 (hexadeciamal)... nociones básicas de operaciones matemáticas, aparte de suma, resta multipklicación y división, módulo y las operaciones buleanas. Números con signo y sin signo, decimales, etc...

Después que se tenga claro ese tema, lo siguiente es adentrarse un poco en cómo es un ordenador, de qué partes se compone y como cooperan entre si:  La electrónica del procesador, la electrónica digital, comprender las puertas and, or, xor (ya claras las operaciones buleanas), luego la memoria (que son y como funcionan  los biestables), los puertos de entrada y salida, las señales de interconexión y sincronización: 'Chip Enabled', señales de reloj, etc...

Lo siguiente son los datos prmitivos comunes a todos los lenguajes: bit, byte... string.
Luego los datos semicomplejos: arrays, estructuras, colas, pilas y lista, árboles y grafos (esto de un modo somero, debe haber más adelante otra vuelta a lo mismo a un nivel más profundo).

Lo siguiente sería la teoría de compiladores y lenguajes, desde el ensamblador a los lenguajes de alto nivel: cómo son, qué les diferencia, etc... cómo se organiza un programa, cómo se pasa d ela edición del código al ejecutable... etc.

y así poco a poco te vas adentrando más y más...
Finalmente tras estudiar la programación orientada a objetos, y entenderlo aunque sea someramente es cuando puedes darte un baño sobre varios lenguajes, estudiar sus características y sería el momento propicio, para elegir uno y dar tus primeros pinitos programando...

Poyoncio

Cita de: NEBIRE en 18 Abril 2017, 21:37 PM
Lo primeor de todo es adquirir conocimientos independientes de todo lenguaje.

Sólo cuando tenga un conocimiento relativo es cuando conviene optar por algún lenguaje. Si ya de entrada te tiras por un lenguaje en particular, siempre tendrás lagunas grandes en muchos temas. Cuanto más logres independizar tus conocimientos de los lenguajes, tanto más fácil te será luego adaptarte a cualquiera de ellos e incluso a más de uno con bastante mejor éxito que si te centras al comienzo en éste o áquel.

De hecho, piensa en psudocódigo... ya lo traducirás al lenguaje que elijas.
Trataba de mirarte algún libro de iniciación a la programación, mirando en wikilibros, pero el que hay es bastante malo. empieza hablando de algoritmos... cuando habla de los tipos de datos, ya asume demasiadas cosas... es malo.

Lo primero para iniciarse en la programación es repasar los aspectos matemáticos primitivos en que se basa la programación. Esto es el sistema binario junto con las bases numéricas de 8 (octal), 16 (hexadeciamal)... nociones básicas de operaciones matemáticas, aparte de suma, resta multipklicación y división, módulo y las operaciones buleanas. Números con signo y sin signo, decimales, etc...

Después que se tenga claro ese tema, lo siguiente es adentrarse un poco en cómo es un ordenador, de qué partes se compone y como cooperan entre si:  La electrónica del procesador, la electrónica digital, comprender las puertas and, or, xor (ya claras las operaciones buleanas), luego la memoria (que son y como funcionan  los biestables), los puertos de entrada y salida, las señales de interconexión y sincronización: 'Chip Enabled', señales de reloj, etc...

Lo siguiente son los datos prmitivos comunes a todos los lenguajes: bit, byte... string.
Luego los datos semicomplejos: arrays, estructuras, colas, pilas y lista, árboles y grafos (esto de un modo somero, debe haber más adelante otra vuelta a lo mismo a un nivel más profundo).

Lo siguiente sería la teoría de compiladores y lenguajes, desde el ensamblador a los lenguajes de alto nivel: cómo son, qué les diferencia, etc... cómo se organiza un programa, cómo se pasa d ela edición del código al ejecutable... etc.

y así poco a poco te vas adentrando más y más...
Finalmente tras estudiar la programación orientada a objetos, y entenderlo aunque sea someramente es cuando puedes darte un baño sobre varios lenguajes, estudiar sus características y sería el momento propicio, para elegir uno y dar tus primeros pinitos programando...



Lo que has comentado es aceptable, lo que he subrayado NO TIENE prioridad a aprender el lenguaje, son cosas adicionales, que no son necesarias para aprender a programar y que se pueden aprender sobre la marcha.
Curso de ensamblador desde cero

llamita

Acabo de terminar de leer todos los comentarios y solo quiero decir que muchas gracias. No esperaba tanto apoyo y menos en tampoco en tiempo, muchisimas gracias  ;D.

Dicho esto, cro que dejare C y empezare con Phyton como me habéis recomendado al mismo tiempo que voy repasando misconocimientos de operaciones básicas, puertas, etc. y voy bicheando un poco sobre hardware y como funciona, que creo que puede ser un tema muy interesante para cuando quiera descansar un poco de siempre lo mismo.

Por último, solo me queda decir que creo que molestare mucho por aqui en el foro con mis preguntas y espero el mismo apoyo. MUCHISIMAS GRACIAS  ;-) ;-) ;-) ;-) ;-) ;-)

Orubatosu

Pyton es ideal para empezar porque es muy "liberal" en algunos aspectos y además al ser interpretado es mas sencillo acotar errores

Pero ojo, que sea "sencillo" no quiere decir "limitado". Puede hacer muchas cosas. Hoy en día nadie se aprende "todo un lenguaje".

Es decir, lo que se aprende de un lenguaje es su sintaxis, tipos, filosofía si así quieres llamarlo... el "armazón". Luego a partir de ahí empiezan las librerias o "añadidos" y te adelanto que exceptuando las mas comunes, dudo que nadie conozca todas las librerías de un lenguaje

Por ponerte un ejemplo... Librerías de Phyton:

https://github.com/vinta/awesome-python

Otros lenguajes como C++ o Java tienen literalmente MILES de clases que pertenecen a una u otra librería (y encima se heredan... de risa)

Lo que quiero decirte es que se aprende "a programar", y luego te encuentras con que tareas que parecen complejas y te van a llevar mucho trabajo implementar... resulta que alguien ya lo ha hecho, ha creado una librería y te lo ha dejado "mascado"

Eso no quiere decir que este tipo "tirado", pero hay una potencia latente en muchos lenguajes que no se aprecia hasta que no dominas lo básico y empiezas a trastear con estas cosas

Tras Phyton, yo veo dos grandes lenguajes (entre otros) con diferentes filosofías (los lenguajes Web los pongo en otra categoría)

C++ y Java

Ambos con miles de librerías. El primero compilado, con acceso a la máquina a bajo nivel en muchos aspectos. Posibilidad de programación orientada al objeto y "tradicional". Rápido y potente

Java. Pseudompilado por decir algo. Se compila, pero el código se ejecuta en una máquina virtual. Esta completamente orientado al objeto, es tremendamente estricto en muchos aspectos (no te permite por ejemplo ejecutar nada que pueda causar errores criticos sin tratar el posible error), es multiplataforma y aunque es rápido... no puede competir con C++ en muchos campos.

Pero vamos, primero métete con Phyton y vas cogiendole gusto. De hecho con Phyton (y con casi cualquier lenguaje moderno) te vas a terminar encontrando con otras tecnologías, como SQL (si, Phyton maneja bases de datos)
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

#!drvy

Puedes aprender a programar o puedes aprender a ser programador. Tu mismo. Desarrolladores hay muchos, programadores.. hay pocos.

Aprender a programar puede ser tan sencillo como montar en bici. No te hacen falta ningún tipo de conocimientos de otro planeta.. aprendes la estructura de un lenguaje, lo básico (variable, función, clase, método, bucle etc..) y las funciones que dicho lenguaje te ofrece. A medida que lo vas necesitando, aprendes cosas nuevas.. bases de datos, protocolos de comunicación.. etc.

Conozco una persona que se hizo el curso de FreeCodeCamp (bastante recomendable si te quieres orientar a desarrollo web) en 180 días y al día 200 ya tenia trabajo en una empresa con un sueldo de 5 cifras. Es un desarrollador, sabe mucho de lo suyo.. y punto.


También puedes aprender a ser programador...  lo que implica que sabes de todo un poco y te adaptas fácilmente a cualquier cosa. Eso implica tener conocimientos como los mencionados por NEBIRE.. y sobre todo, un buen cerebro para la lógica y las matemáticas. Ensamblador, arquitecturas, protocolos, hardware, electricidad, comunicaciones.. teorías de todo tipo...  La diferencia es que seras una persona lo suficientemente cualificada como para entrar en casi cualquier proyecto.. y que invertirás más de la mitad de tu vida en siquiera empezar.


Tal y como esta puesto, te sonara mejor lo segundo.. pero como digo, hay muchos desarrolladores y pocos programadores... el motivo creo que se puede deducir.

Saludos

Mathias1980

#8
Uno de lo problemas al empezar a programar, es la cantidad de información que hay en la web, si no colocas un objetivo de que quieres hacer, te abrumas y sientes decepcionado por no lograr resultados, coloca que es lo que quiere hacer y como objetivo trata de aprende un lenguaje sin pasar a otro, si quieres aprender C, dedicate a eso, no te distraigas buscando más opciones que eso lo que hara es retrasar en tu objetivo, hay muchos lugares online, le recomiendo cursos de programacion online comienza por dominar un lenguaje y despues los demas se haran mas facil.

Machacador

#9
No reabras post viejos y menos de usuarios que tienen 0 mensaje... es común que la gente se registre, haga una consulta, se le responda, de las gracias y mas nunca vuelva por el foro...

Por eso estas dando una respuesta al viento... de todas maneras es valida tu colaboración y sientete libre de participar en cualquier hilo al cual creas puedes aportar algo...

:rolleyes: :o :rolleyes:

Saludos.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"