amchacon escribió:Pues sin duda alguna C o C++. Lo dice alguien que aprendió por su cuenta en casa.
C++ quizás sea un poco más sencilla porque tiene herramientas más eficaces en consola (empezarás por ahí). Java no te recomiendo porque es orientado a objetos.
Stylish escribió:amchacon escribió:Pues sin duda alguna C o C++. Lo dice alguien que aprendió por su cuenta en casa.
C++ quizás sea un poco más sencilla porque tiene herramientas más eficaces en consola (empezarás por ahí). Java no te recomiendo porque es orientado a objetos.
Y C++ no? Vaya tela con algunos xD
Empieza con C.
Stylish escribió:amchacon escribió:Pues sin duda alguna C o C++. Lo dice alguien que aprendió por su cuenta en casa.
C++ quizás sea un poco más sencilla porque tiene herramientas más eficaces en consola (empezarás por ahí). Java no te recomiendo porque es orientado a objetos.
Y C++ no? Vaya tela con algunos xD
Empieza con C.
Mithrandir0x escribió:Python. Sin duda alguna. El mejor lenguaje con el que alguien debería empezar a programar es Python. Las razones:
* Sintaxis simple y elegante. Sí, después te hartarás de poner llaves, y puntos-y-comas...
* Compilación gigantescamente simplificada (si lo comparamos con C).
* Programación orientada a objetos. Y cuando veas Java, verás las diferencias filosóficas que hacen que después puedas enfocar una problemática de otra manera.
* Programación funcional. Ligera, pero la tiene. Es un tipo de programación, que gracias a Javascript, está cobrando más fuerza (pobre Haskell)
* "Duck-typing". Agradable, sin embargo, en el aprendizaje no lo recomendaría del todo, debido a que has de comprender qué estructuras de datos estás manipulando en cada momento.
* El interpretador. Sin necesidad de tener que compilar el código, si quieres experimentar algo, desde CMD/TERM, escribes python↵ y ya tienes un interpretador abierto para aceptar expresiones a interpretar. Cómodo, creo.
Por cierto, ninguno de los que habéis puesto C habéis puesto la biblia introductoria: "The C Programming Language" de Kernighan y Ritchie. Y que por otro lado, no es el lenguaje más adecuado para empezar a programar. Si te tienes que meter con toda la problemática de estructuras de datos, gestión de memoria, compiladores, y demás enseres divertidísimos de C cuando no tienes ni pajolera de programar, vete preparándote.
Bibliografía para aprender C y Python:
Learn C the hard way
"The C Programming Language" de Kernighan y Ritchie
Introducción a C, de José Miguel Santos Espino
Learn Python the hard way
Python Books
C++ style language comparative
The Archive of Interesting Code
Gang-Of-Four Design Patterns (Para más adelante, cuando estés más avanzado. Es un compendio de estructuras funcionales bastante usuales en el desarrollo de software, ¡pero úsalo como referencia, no como biblia!)
Sobretodo el K&R y "Learn C the hard way" si estás interesado en aprender C. Y usa las herramientas adecuadas. Nada de bloc de notas o IDEs, Sublime Text, VIM, o EMACS, y al terminal, entendiendo todo lo qué hay que hacer para obtener un ejecutable.
Y esa recomendación de no empezar por Java porque es POO, por el amor de Dios, lo que hay que leer... Le va a resultar igual de complicado entrar desde C que desde Java.
EDIT: He añadido unas cuantas cosillas más a la mini-bibliografía introductoria de C.
Korso10 escribió:Un par de apuntes:
+ Python es interpretado, no es que tenga una compilación simplificada, es que no se compila.
+ Yo también he recomendado Python para empezar a programar, pero precisamente lo "bueno" de C es que realmente tienes que saber qué estas haciendo. Python, como lenguaje de alto nivel, "esconde" muchas veces cosas que yo considero importantes para el aprendizaje.
Yo empezaría por C, y de ahí ya a Python/C++/Java según tus preferencias.
comalies escribió:Python no está mal. Aqui tienes un curso básico online que se hace 100% en el navegador:
http://www.codecademy.com/es/tracks/python-latinamerica
En esa web hay más cursos en ese plan para otros lenguajes, pero no todos están en español.
Mithrandir0x escribió:En Python, todas sus implementaciones son compiladores Just-In-Time, i.e. transforma el código en un byte-code compilado (*.pyc) ejecutable por la máquina virtual de Python. El hecho de no compilar un byte-code nativo para la arquitectura en la que te encuentras no significa necesariamente que sea estrictamente interpretado. Este post de StackOverflow explica bastante bien a lo que me refiero.
Y sigo diciendo, C introduce una serie de problemáticas absolutamente ajenas a lo que hay que aprender cuando programas, que es ALGORÍSMICA. Programar no significa ser un as en un lenguaje, y saberte todos los "bit-hacks" posibles, o todos los recovecos de la máquina virtual no te da mejores mecanismos para solucionar un problema.
El objetivo de aprender a programar es que sepas cómo estudiar un problema propuesto y desmenuzarlo en partes tales que te permitan, no solamente resolver el problema, si no también, en el caso que las necesidades cambien, seas capaz de adaptar todo con el menor esfuerzo y tiempo posibles (y de reutilizar todo el código o cuanto más código puedas mantener).
cracker_ct escribió:Llevaba ya tiempo queriendo aprender C++, y aprovecho este hilo en vez de crear uno nuevo.
Yo tengo experiencia en C y en Java, así que controlo la programación tanto estructurada como orientada a objetos. Me saqué un libro de la biblioteca de la universidad y me puse a practicar, y no sé si fue que yo no me enteraba o que el libro era endemoniadamente malo porque fue un suplicio y a los tres días lo devolví...
Así que alguna página buena o pdf para aprender C++?
ovocaman escribió:Buenas!
Como te dicen muchos, yo empezaría por C para pillar las bases y ya luego miras lo que más te interese. Si quieres empezar con Python:
http://www.codecademy.com/
http://www.codecademy.com/es/tracks/python-latinamerica
Es una página muy guay donde aprender las cosas es casi como un juego. Tiene bastantes cosas interesantes y algunas cosas en castellano(Español Latino) Prueba a ver si te va bien, a mi el de JQuery me ha ayudado bassssstante
quinito60 escribió:Y yo programando en Fortran... En mi facultad son muy abuelos
cracker_ct escribió:Llevaba ya tiempo queriendo aprender C++, y aprovecho este hilo en vez de crear uno nuevo.
Yo tengo experiencia en C y en Java, así que controlo la programación tanto estructurada como orientada a objetos. Me saqué un libro de la biblioteca de la universidad y me puse a practicar, y no sé si fue que yo no me enteraba o que el libro era endemoniadamente malo porque fue un suplicio y a los tres días lo devolví...
Así que alguna página buena o pdf para aprender C++?
amchacon escribió:http://minidosis.org/C++/
En el primer punto, cogete el de instalación de Codeblocks (Geany es un poco caca).
Korso10 escribió:Mithrandir0x escribió:En Python, todas sus implementaciones son compiladores Just-In-Time, i.e. transforma el código en un byte-code compilado (*.pyc) ejecutable por la máquina virtual de Python. El hecho de no compilar un byte-code nativo para la arquitectura en la que te encuentras no significa necesariamente que sea estrictamente interpretado. Este post de StackOverflow explica bastante bien a lo que me refiero.
Y sigo diciendo, C introduce una serie de problemáticas absolutamente ajenas a lo que hay que aprender cuando programas, que es ALGORÍSMICA. Programar no significa ser un as en un lenguaje, y saberte todos los "bit-hacks" posibles, o todos los recovecos de la máquina virtual no te da mejores mecanismos para solucionar un problema.
El objetivo de aprender a programar es que sepas cómo estudiar un problema propuesto y desmenuzarlo en partes tales que te permitan, no solamente resolver el problema, si no también, en el caso que las necesidades cambien, seas capaz de adaptar todo con el menor esfuerzo y tiempo posibles (y de reutilizar todo el código o cuanto más código puedas mantener).
Oye, pues no tenía ni idea, supongo que será para aumentar el rendimiento. Ya he aprendido algo hoyY mira que viendo los *.pyc que se creaban, la cosa era blanca y en botella.
Por otro lado, C te introduce una serie de problemas derivados de que es un lenguaje bastante antiguo y que tiene aspectos de lenguajes de bajo nivel, pero por otro te permite "saber" qué está haciendo exactamente el programa. Es muy cómodo usar listas y diccionarios en Python, o manejar cadenas, pero alguien que no sepa nada de programación seguramente no sepa cómo funciona realmente eso por debajo. ¿Ni falta que le hace? Puede, pero precisamente para aprender, veo bien que se aprenda con un lenguaje fuertemente tipado donde sepas en todo momento con qué datos estás tratando, que te des cuenta de porqué eso de tener arrays dinámicos no es tan trivial como pudiera parecer, que aprendas a hacer una lista enlazada y porqué es útil, que veas algún algoritmo de ordenación y búsqueda, etc. En Python crear una lista es algo tan fácil como l = list(), pero si alguien empieza a aprender con Python, corre el riesgo de que luego no sepa cómo son estructuras de datos como ésta, o que adquiera malas prácticas a la hora de desarrollar algún algoritmo porque Python "automatizaba" según qué cosas.
En otras palabras, si empiezas con C y luego pasas a Python/Java no creo que tengas problemas (yo no los tuve). Si empiezas con Python y pasas a C, lo mismo sales corriendoY mira que Python me encanta, pero lo veo mejor como un segundo lenguaje que te permita continuar aprendiendo una vez que sabes lo básico.
gerkrt escribió:Es que el equivalnete de eso es decir cosas como que aprende antes a mutiplucar que a restar porque asi cuando vayas a dividir no te resulte imposible. No señores, ni de coña, lo de C para aprender es un error gigante heredado de cuando SI era mas simple y adecuado, porque en aquel entonces no habia la oferta actual, y si se usa c es por herencia de entonces y fin. Es pesimo.
Lo de que en C aprendes a manejar mejor es absurdo, eso pues se le explica a la gente para que lo tenga en cuenta y fin(en cada lenguaje hay 1000 tips de rendimiento), y tambien se pillan malas costmbres con C o se desperdiica a saco de tiempo en 1000 polleces que no enseñan nada, por no decir que es un lenguaje a nivel de sintaixs, y milcosas mas muy aburrido.
No necesites que alguien se ponga a nadar en un lenguaje casi totalmente obsoleto y que no le seervira de nda casi, que se ponga a indagar en unas funciones prehistoricas, y tal y cual, si quieres deidcar un rato a informarte de como funciona un programa a nivel mas basico pues bueno pero eso es opcional o segun lo requiera el programa.
Es que es de cajon, porque luego la mayor parte NO usan nada de eso pero sin embargo te matan a explicartelo, y encima, te explican todo el proceso de la programcion con el, no señor ni un capitulo en plan "ensamblador y c" en el curso de programacion, todo asi...
¿Que sentido tiene que se enseñe y se empieze con lo mismo con lo que se programan drivers y kernels de sistemas operativos? Es que solo viendo su utilidad, en el plan mas bajo nivel y tecnico y tal de la informaticca, para darle algun sentido a esto, y que se le de uso como esneñanza no le he visto yo el sentido hoy en dia. La programacion, uno de los pocos sitios en los cuales se saltan los pasos crecientes de complejidad, la utilidad mayoritaria, el estar actualizados, el usar cosas amenas para enseñar y mil cosas mas...
almogav3r escribió:Sé que la mayoría te recomienda otra cosa, pero ahí va mi opinión:
Aprender a programar en Python no te lo recomiendo, puesto que es un lenguaje muy potente pero bastante complicado de entender su funcionamiento, por lo potente que es. Otra cosa es hacer cosas sencillas, pero si realmente quieres saber lo que hace, te será muy difícil si nunca has programado antes.
C y C++ son más interesantes, porque tienes control de la máquina casi absoluto, incluyendo la memoria, pero esto también los hace más difíciles de dominar completamente.
Yo te recomendaría que empezases por Java o C#, que son lenguajes modernos, y tienen gestión automática de la memoria, que es el punto más difícil de dominar.
Luego ya cuando te veas bien, si quieres podrás continuar con C++ para hacer cosas a más bajo nivel..
Saludos
amchacon escribió:new = Crear nueva variable en la ram.
delete = Borrar una variable en la ram.
Complicadísimo oye.
Mithrandir0x escribió:Python. Sin duda alguna. El mejor lenguaje con el que alguien debería empezar a programar es Python. Las razones:
* Sintaxis simple y elegante. Sí, después te hartarás de poner llaves, y puntos-y-comas...
* Compilación gigantescamente simplificada (si lo comparamos con C).
* Programación orientada a objetos. Y cuando veas Java, verás las diferencias filosóficas que hacen que después puedas enfocar una problemática de otra manera.
* Programación funcional. Ligera, pero la tiene. Es un tipo de programación, que gracias a Javascript, está cobrando más fuerza (pobre Haskell)
* "Duck-typing". Agradable, sin embargo, en el aprendizaje no lo recomendaría del todo, debido a que has de comprender qué estructuras de datos estás manipulando en cada momento.
* El interpretador. Sin necesidad de tener que compilar el código, si quieres experimentar algo, desde CMD/TERM, escribes python↵ y ya tienes un interpretador abierto para aceptar expresiones a interpretar. Cómodo, creo.
Por cierto, ninguno de los que habéis puesto C habéis puesto la biblia introductoria: "The C Programming Language" de Kernighan y Ritchie. Y que por otro lado, no es el lenguaje más adecuado para empezar a programar. Si te tienes que meter con toda la problemática de estructuras de datos, gestión de memoria, compiladores, y demás enseres divertidísimos de C cuando no tienes ni pajolera de programar, vete preparándote.
Bibliografía para aprender C y Python:
Learn C the hard way
"The C Programming Language" de Kernighan y Ritchie
Introducción a C, de José Miguel Santos Espino
Learn Python the hard way
Python Books
C++ style language comparative
The Archive of Interesting Code
Gang-Of-Four Design Patterns (Para más adelante, cuando estés más avanzado. Es un compendio de estructuras funcionales bastante usuales en el desarrollo de software, ¡pero úsalo como referencia, no como biblia!)
Sobretodo el K&R y "Learn C the hard way" si estás interesado en aprender C. Y usa las herramientas adecuadas. Nada de bloc de notas o IDEs, Sublime Text, VIM, o EMACS, y al terminal, entendiendo todo lo qué hay que hacer para obtener un ejecutable.
Y esa recomendación de no empezar por Java porque es POO, por el amor de Dios, lo que hay que leer... Le va a resultar igual de complicado entrar desde C que desde Java.
EDIT: He añadido unas cuantas cosillas más a la mini-bibliografía introductoria de C.
amchacon escribió:new = Crear nueva variable en la ram.
delete = Borrar una variable en la ram.
Complicadísimo oye.
Henkka360 escribió:(más php si quieres complementar con temas de programación web)
Peklet escribió:Me encanta ver a la gente recomendar lo que absolutamente más les gusta.
Luego te contrata una empresa, te pone en un proyecto que lleva 15 años en desarrollo y te ponen a tallar binario en piedra con un punzón de madera. Y seréis libres de dar vuestra opinión al respecto, por supuesto. En EOL, por ejemplo.
amchacon escribió:almogav3r escribió:Sé que la mayoría te recomienda otra cosa, pero ahí va mi opinión:
Aprender a programar en Python no te lo recomiendo, puesto que es un lenguaje muy potente pero bastante complicado de entender su funcionamiento, por lo potente que es. Otra cosa es hacer cosas sencillas, pero si realmente quieres saber lo que hace, te será muy difícil si nunca has programado antes.
C y C++ son más interesantes, porque tienes control de la máquina casi absoluto, incluyendo la memoria, pero esto también los hace más difíciles de dominar completamente.
Yo te recomendaría que empezases por Java o C#, que son lenguajes modernos, y tienen gestión automática de la memoria, que es el punto más difícil de dominar.
Luego ya cuando te veas bien, si quieres podrás continuar con C++ para hacer cosas a más bajo nivel..
Saludos
new = Crear nueva variable en la ram.
delete = Borrar una variable en la ram.
Complicadísimo oye.
almogav3r escribió:Veo que eres un gran programador experto, pero no todo el mundo disfruta de tus grandes aptitudes. Para alguien que aprende a programar, la gestión de la memoria es una de las tareas más difíciles, sin duda.
amchacon escribió:almogav3r escribió:Veo que eres un gran programador experto, pero no todo el mundo disfruta de tus grandes aptitudes. Para alguien que aprende a programar, la gestión de la memoria es una de las tareas más difíciles, sin duda.
Pos yo sinceramente no sé a que os referís con "complicado".
Segun habeís dicho, Java libra de un gran dolor de cabeza con su recolector de basura. Personalmente yo no veo ninguna diferencia a que lo hagas tu explícitamente (y con los destructores que te quita bastante trabajo).
amchacon escribió:almogav3r escribió:Veo que eres un gran programador experto, pero no todo el mundo disfruta de tus grandes aptitudes. Para alguien que aprende a programar, la gestión de la memoria es una de las tareas más difíciles, sin duda.
Pos yo sinceramente no sé a que os referís con "complicado".
Segun habeís dicho, Java libra de un gran dolor de cabeza con su recolector de basura. Personalmente yo no veo ninguna diferencia a que lo hagas tu explícitamente (y con los destructores que te quita bastante trabajo).
Alber_h escribió:A los que comparan aprender C antes de Python, Java, etc con "aprender latín antes que castellano": la recomendación no se hace en ese orden por antigüedad del lenguaje, sino por aportar conocimientos de programación a bajo nivel que, en mi opinión, debería tener cualquier programador que se precie.
Estoy de acuerdo con que un lenguaje como Python es más cómodo para programar y entiendo que lo use una persona que ya sabe lo que está haciendo para ahorrarse los típicos problemas de punteros, etc. Con lo que no estoy de acuerdo es con que ésto mismo sea bueno a su vez para alguien que está aprendiendo.
En cualquier caso, ya hay bastantes respuestas explicando las bondades de cada opción; ahora es el interesado el que debe elegir qué quiere aprender.
Alecs7k escribió:Estudiar C te puede dar una base enorme de programación, pero si nunca vas a usar el lenguaje y nunca vas a trabajar a muy bajo nivel, ¿para qué estudiarlo?
Hay muchos lenguajes y dependiendo de lo que se quiera hacer se puede empezar por un sitio u otro.
amchacon escribió:Alecs7k escribió:Estudiar C te puede dar una base enorme de programación, pero si nunca vas a usar el lenguaje y nunca vas a trabajar a muy bajo nivel, ¿para qué estudiarlo?
Hay muchos lenguajes y dependiendo de lo que se quiera hacer se puede empezar por un sitio u otro.
ASM es bajo nivel, C sería nivel medio.
Y una cosa, alrededor del 95% de los .exe están programados en C/C++. Si tu programa depende de la velocidad vas a tener que hacerlo en C sí o sí.