Que lenguaje me recomendais para empezar?

Iniciado por Suominon, 20 Mayo 2017, 19:02 PM

0 Miembros y 3 Visitantes están viendo este tema.

Suominon

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?

engel lex

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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Orubatosu

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
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

wicd

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

engel lex

Cita de: 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

depende de ti
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Orubatosu

Cita de: 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

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
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

wicd

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.

engel lex

CitarPor 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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Serapis

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...

Orubatosu

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.

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998