Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: Suominon en 20 Mayo 2017, 19:02 pm



Título: Que lenguaje me recomendais para empezar?
Publicado por: Suominon en 20 Mayo 2017, 19:02 pm
He empezado haciendo un poquito de C (nada serio, de momento estoy aprendiendo los bucles y eso) Y me preguntaba si realmente es un buen lenguaje para empezar o si es útil. Me recomendáis seguir aprendiendo C o creeis que es mejor y más útil empezar con otro idioma?


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: engel lex en 20 Mayo 2017, 19:19 pm
C es util pero es dificil, lo bueno es que si entiendes bien C, tienes los conceptos necesarios para entender basicmente cualquier lenguaje incluso más allá de su sintaxis (es decir, entenderías como asigna memoria y esos detalles que no se manejan en alto nivel, pero pueden afectar)

yo recomendaría C++ si quieres empezar por ese lado, tiene muchas estructuras que simplifican el trabajo con el y no te exige todo el tiempo manejar la memoria a mano

si quieres empezar por algo simple, podría ser php y jscript, estos 2 en sintaxis son similares a C, pero al ser alto nivel, son muchisimo más simples (pero muchisimo menos potentes) sin embargo estos ultimos 2 están orientados a el desarrollo web (no sacaré el hecho de nodejs aquí para no confundir)


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: Orubatosu en 21 Mayo 2017, 20:38 pm
Para empezar recomendaría casi mejor algo interpretado. Al menos para ir soltando mano. Es bastante mas fácil localizar errores.

Por ejemplo Phyton o algo por el estilo. C o C++ tienen el inconveniente de que el programa te compila, luego casca y estás mas perdido que un pulpo en un garaje si no tienes ya cierta idea y eso puede desanimar mucho.

Luego ya es ir probando a ver cual le gusta mas


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: wicd en 21 Mayo 2017, 23:10 pm
Es mejor aprender lenguajes de manera secuencial o se lo puede hacer de manera paralela?, con aprender me refiero llegar a un nivel muy avanzado


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: engel lex en 21 Mayo 2017, 23:18 pm
Es mejor aprender lenguajes de manera secuencial o se lo puede hacer de manera paralela?, con aprender me refiero llegar a un nivel muy avanzado

depende de ti


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: Orubatosu en 22 Mayo 2017, 10:17 am
Es mejor aprender lenguajes de manera secuencial o se lo puede hacer de manera paralela?, con aprender me refiero llegar a un nivel muy avanzado

A ver, la programación no es "aprenderte las instrucciones", es aprender paradigmas y a desarrollar algoritmos.

Esto suena a chino, así que me explico u poco:

La programación es "el arte de solucionar problemas" por así decirlo. Tu quieres hacer una cosa, sea esa cosa "X". El que no importa.

Una cosa que se debe de hacer son los algoritmos. Es decir: descomponer el programa grande en problemas pequeños. Un problema puede tener una solución, o una docena o mas. Hay que ser en ese aspecto original, tener pensamiento "espacial" por así decirlo, ser capaz de abstraer los problemas a su esencia y trocearlos en problemas mas pequeños y solucionarlos.

Vamos, que hay varias formas de cocinar un pastel en una serie de pasos, y esa es una parte de la programación.

Cuando sabes lo que quieres hacer, se programa ya "de verdad". No tiene sentido abrir un editor como Codeblocks, Eclipse o similar y "ponerse a picar código". Las cosas no van así. Tu empiezas a picar código cuando sabes que quieres hacer

Luego viene lo de los paradigmas. Hay varios, pero de forma muy generalista la programación moderna se divide en dos grandes bloques: Imperativa (procedural)y orientada a objetos

En una divides el problema en pequeños problemas y estos se solucionan con una estructura de flujo de programa que va "de arriba a abajo" por así decirlo. Vas troceando los problemas, haces módulos (procedimientos, funciones) y escribes las soluciones a esos problemas.
En la POO (Programación orientada a objetos) las cosas son algo mas abstractas, creas objetos que son "cajas negras" que reciben datos y hacen cosas con ellas. Aquí las cosas son un poco mas complejas y aparecen palabras muy raras y feas que son rarísimas hasta que las conoces (instancias, herencia, polimorfismo, interfaces, superclases, constructores...)

Y por otro lado, a día de hoy los lenguajes tienen una serie de instrucciones "base" que son de uso común en todos los lenguajes y que varían muy poco de un lenguaje a otro. Por ejemplo creación y asignación de variables, bucles, condicionales... aquí en cada lenguaje hay particularidades.

Pero la programación "en serio" se hace solo en parte con estas instrucciones, luego están las librerías. En algunos casos literalmente MILES de librerías por lenguaje que añaden mas funcionalidades. Algunas son prácticamente de uso obligatorio en muchos casos (contenedores, matemáticas, etc...) otras son de uso según tus necesidades (bases de datos, acceso a archivos, interfaz gráfica, redes, etc).

Digamos que debes de aprender de forma paralela dos cosas: Una es la sintaxis del lenguaje que dedicas usar, así como sus particularidades. Hay lenguajes que son muy flexibles son el uso de variables, otros son muy estrictos, etc. Y otra cosa a aprender a la vez es a hacer algoritmos. Muchos de los cuales se pueden resolver con medios técnicos tan complejos y sofisticados como... lápiz y papel (en serio, no necesitas nada mas)

Si no aprendes a resolver algoritmos, no te sirve de nada "saber programar" a menos que te limites a "picar código" para cosas simples.

Luego ten en cuenta que no hay lenguajes "mejores" y "peores" en general. Mucha gente dice "con C puedes hacerlo todo" Muy cierto, pero para muchas aplicaciones es matar moscas a cañonazos porque se tarda mucho mas en hacer un programa que en otros lenguajes. Hay que ver en muchas ocasiones que es mas rentable en términos de tiempo/eficiencia. Puedes hacer una casa con ladrillos de lego, pero es mas sencillo hacerlo con bloques y ladrillos mas grandes, o mas incluso si se hace estructura de madera y paredes de pladur. Todo en función de lo que quieras hacer.

Pero en general como te he comentado hay cosas comunes en todos los lenguajes, de manera que elijas lo que elijas esas cosas comunes no serán muy diferentes de uno a otro


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: wicd en 22 Mayo 2017, 17:21 pm
Por ejemplo para la programacion de sockets TCP es preferible hacerlo en C o en Java??.

 Tengo el libro Redes de computadoras de kurose-ross y todas las practicas en programacion son en lenguaje Java, actualmente sigo con C (estoy con el libro Beginning C de Ivor Horton) y Bash scripting con Mendel Cooper, pero ya no se si sera conveniente ponerme a estudiar Java ya que en POO solo tengo conocimientos muy basicos y no creo que pueda hacer 3 cosas al mismo tiempo bueno 4 en realidad por que tambien dedico mi tiempo a leer todos los RFC asociados a las capas de cada capitulo que voy viendo.


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: engel lex en 22 Mayo 2017, 17:55 pm
Citar
Por ejemplo para la programacion de sockets TCP es preferible hacerlo en C o en Java??.

depende de ti, a fin de cuentas leeran los paquetes crudos y enviarán los paquetes como decidas (excepto en windows para ambos)


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: Serapis en 22 Mayo 2017, 18:01 pm
Para empezar, C, no me parece el lenguaje más adecuado... lleva una curva de aprendizaje bastante larga.
En general, si vas a aprender por tí mismo, si tras cierto tiempo, no logras avances significativos, es muy fácl que te desmoralice. Como mínimo, empieza con C#, es la misma filosofía, pero con poco puedes tener resultados y esa sensación de comprender, aprender y avanzar te da energía para seguir adelante...

Incluso te recomendaría Visual Basic, para empezar, luego que comprendas algunos fundamentos básicos y logres idear cosas y ver que eres capaz de llevarlas a cabo correctamente, puedes saltar (con más conocimiento), hacia otro lenguaje si lo ves necesario.

Para comenzar, lo ideal es hacerlo con un lenguaje que te enseñe lo básico, sin exigirte demasiado conocimiento previo...


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: Orubatosu en 22 Mayo 2017, 21:06 pm
Java es un lenguaje que... tiene sus cosas buenas y sus cosas menos buenas.

La buena es que es multiplataforma y muy potente, no es tan rápido como otros pero para cosas como manejo de redes en general va sobrado.

Pero, es POO por completo. Eso implica que tiene montones de conceptos que son bastante "raritos" de entrada. No me atrevería a decir que no se puede empezar por el... total, es posible aprender las estructuras básicas en Java lo mismo que en cualquier otro lenguaje, pero como desventaja tiene que se entra muy rápido en conceptos propios de ese paradigma: Los objetos, clases, sobreescritura de métodos, herencia, polimorfismo y demás.

Si piensas probarlo, te adelanto que las estructuras básicas no cambian mucho. Un bucle es un bucle en Java, en C y en cualquier otro lenguaje. Las variables son variables en todos los lenguajes, lo mismo estructuras como arrays y demás.

Pero Java es muy estricto en los tipos (lo que es bueno) y también muy estricto en el tratamiento de errores (que tampoco es malo). Por contra no está tan cerca de la máquina como pueda estar C

Te adelanto que C++ también tiene parte de POO como Java.

Pero vamos, es tu opción una cosa u otra. Las opciones de Visual Basic o C# también son buenas. Lo importante es ir aprendiendo las diferentes cosas correctamente. Visual Basic es un lenguaje dirigido a eventos, lo que puede ser un poquito confuso (Java también permite esas cosas). De hecho hay por ahí una aplicación si no me equivoco capaz de "traducir" de Visual Basic a Java.



Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: Arm144 en 22 Mayo 2017, 21:23 pm
Citar
Es mejor aprender lenguajes de manera secuencial o se lo puede hacer de manera paralela?, con aprender me refiero llegar a un nivel muy avanzado

Por ejemplo de manera paralela podrías aprender php, javascript,html y sql, básicos en el diseño web.

Si te quieres ya meter más en serio C++, Java o C# idénticos prácticamente, C.

También te recomiendo phyton que se utiliza en casi todas partes.

Si te sirve de guía yo empecé con C y Java.


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: wicd en 23 Mayo 2017, 00:59 am
Gracias por los comentarios, creo que voy a dedicarle unas horas semanles a Java pero voy a seguir enfocado con los otros lenguajes y SQL con Mariadb, mas adelante vere POO en mas detalle, la verdad es que disfruto trabajar a bajo nivel, esa idea de caja negra no me va jaja como con la clase PDO en PHP.


Título: Re: Que lenguaje me recomendais para empezar?
Publicado por: Orubatosu en 23 Mayo 2017, 09:41 am
Si te metes en Java, te adelanto que es un lenguaje "cien por cien" orientado a objetos

Ojo que hay mucha leyenda negra por eso de la POO. Es un paradigma diferente de como se piensa en la programación tradicional imperativa, pero tiene mucha potencia y una vez que entiendes como funciona no es para nada tan "de miedo"

Y si quieres aprender html, php y demás, te sugeriría por comodidad que pensaras para trastear en SQL con "MySQL", mas que nada porque hay montones de paquetes ya preparados para meter en tu PC un servidor Apache+PHP+MYSql y además no es complicado añadirle luego Apache Tomcat para trastear con Java EE

Ah, si te instalas un IDE para Java, que sea la versión EE. Antes o después te hará falta. Cual va por gustos, yo encuentro el Eclipse Neon bastante apañado