¿Cómo iniciarme en Programación básica?

Hola, quiero empezar a aprender lo básico básico de programación y he visto que hay mucha variedad de opiniones. Unos dicen que comenzar con pseudocódigo, otros pascal, otros pyhton...

Yo realmente empiezo desde 0 y lo que quiero es simplemente coger una base para más adelante poder comenzar con lenguajes como C o Java.

Cualquier libro o tutorial será bienvenido

Gracias!
Yo te recomiendo este tutorial que ya ha salido más de una vez en el foro:

http://www.tecnun.es/asignaturas/Inform ... leng_c.pdf

Es de un lenguaje estructurado, el C, y es una muy buena base para luego otros lenguajes ya sean tipo estructurados o orientado a objetos y ya sea via web o via aplicación.
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.
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.


Exacto. Mejor empezar con C, yo también te lo recomiendo. Además, la sintaxis de C te la vas a encontrar luego en muchos lenguajes como PHP, Java, Javascript o 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.

C++ es multi-paradigma. Puede orientarse a objetos, hacer programación híbrida o hacerlo estructurado como C (pero aprovechandote de las libertades que te da C++).

A nivel de principiante creo que es más fácil C++ puesto que contiene muchas más herramientas y una sintaxis un "poco" más flexible.
Yo aprendí con C.

Para aprender a programar desde 0, tienes que saber un poquito de matemáticas.

Aprenderás:

-condicionales (if)
-bucles (for, while)
-qué es una variable
-cómo escribir por pantalla

Con eso, C. Luego, según veas.
Yo, si va a ser la primera vez que toques la programación, empezaría con C y luego seguiría con C++ (por los muchos parecidos que tienen entre ellos XDDD).

Java lo dejaría para más tarde. Soy de los que recomiendan pasar de C++ a java y no al contrario.

Un Saludo.
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.
Realmente lo que te toca aprender ahora es lo que tienen absolutamente todos los lenguajes de programación, pero C es el primer lenguaje por excelencia porque es muy ligero, tiene una sintaxis muy poco puñetera y está todo excesivamente documentado. Y cuando quieras hacer cosas más complejas podrás pasar si quieres a C++ o java, que son, digamos, sus hijos legítimos, y son bastante más usados.
C++ es de los peores lenguajes para empezar a programar, es demasiado flexible para alguien que no sabe nada de programación.

Yo sin duda te recomiendo C, y cuando domines C (o creas que lo dominas [+risas]) entonces te recomiendo tirar a lenguajes orientados a objetos (C++ y Java).

Si dominas C te será bastante más fácil aprender C++ y Java entre otros lenguajes.
Como han cambiado los tiempos, yo comence con Basic (no visual, el verdadero ;) ) y aun lo sigo usando... jaja
Y yo programando en Fortran... En mi facultad son muy abuelos XD
Lo más fácil para aprender es sin duda pascal, es mucho mas intuitivo que C o C++. Yo te recomendaria empezar por pascal y luego ya pasar de Pascal a C++ esta tirado.
Por Java casi mejor que no empiezas... [+risas]
Yo también empecé con BASIC hace 20 años ya xD
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ó: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.


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


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).
Sin duda Pyhton/Ruby. No sé por qué recomendáis C, si de hecho debería ser uno de los últimos lenguajes a aprender, la gestión de la memoria se puede aprender fácilmente en otros lenguajes simulandolo con tus propias estructuras.

El único "defecto" de Python, es que no va a aprender el uso "real" de métodos y variables privadas, frente a las públicas, pero quitando eso, es un lenguaje genial para aprender, de hecho, las buenas costumbres de organización de código que se cogen con Python lo hacen el lenguaje preferido para prácticamente cualquier programador que tenga que mantener un código antiguo o realizado por otro.

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


Coincido al 100% con que si emprendes python, esta web es de lo mejorcito. Lo que sí, es que si sabes inglés te recomiendo la versión inglesa: va un poco mejor y la traducción es un poco chustera.
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 hoy [+risas] Y 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 corriendo XD Y 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.
Yo siempre recomiendo lo mismo:

-Aprender las bases en C (condicionales, estructuras, etc).
-Pasas a C++, te miras programación orientada a objetos, trasteas con librerías...
-Después ya puedes pasar a cualquier lenguaje de más alto nivel/scripting que quieras: C#, java, python...
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++?
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 :)
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++?


Thinking in C++, de Bruce Eckel, tiene buena fama. Aunque lamento decir que como detesto C++ no he leído más allá de la intro (aparte de que si hasta hace un par de años se usaba boost, ahora se usan las STL estandarizadas recientemente, y los estandares siguen cambiando casi cada año con el mareo consiguiente).

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 :)


Empecé con JQuery pero tuve que dejalo por falta de tiempo. Por lo que vi es la caña, hace que no te den ganas de pegarte un tiro cada vez que quieres acceder a partes del DOM con javascript.
te recomendaria clipper o cobol
quinito60 escribió:Y yo programando en Fortran... En mi facultad son muy abuelos XD

Yo estoy teniendo que aprender DCL...no hay bucles!

Sobre el tema, yo empecé con C, trastee con batch (ms-dos) pero realmente "aprendí" con java y luego, pues por necesidad a veces acabas programando en cualquier cosa.
Para mi, q no me considero ni medio crack, lo más importante cuando empiezas es pillar las estructuras de control, y aprender a pensar como un programador, conseguido eso te puedes quitar los ruedines, luego depende de cada uno si pasear, correr o hacer descenso.
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++?

http://minidosis.org/C++/

En el primer punto, cogete el de instalación de Codeblocks (Geany es un poco caca).
amchacon escribió:http://minidosis.org/C++/

En el primer punto, cogete el de instalación de Codeblocks (Geany es un poco caca).


[mad] ¿Geany es un poco caca? Para mí es el mejor editor sencillo y más ahora que he visto en esa web que se puede instalar con el soporte de consola virtual en Windows. De hecho, para un principiante yo recomendaría Geany antes que Codeblocks.
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 hoy [+risas] Y 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 corriendo XD Y 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.


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.

Para aprender a programar, la base mas base(pero valida para todo), basta con diagramas de flujo, eso para empezar, usa el programa dfd mismo. Otra opcion es usar un lenguaje de script sencillo y ameno como ruby o python, y hacer ahi lo mas basico, si total, al final todo es lo mismo y fin.

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

Empieza por python, ruby o c#... almenos asi lo veo yo. El que mas me gusta a mi es ruby pero bueno, va a gustos, que es el mas simple de empezar a tocar ya te lo aseguro, aunque luego la sintaxis no sea muy en plan C y tal, pero bueno... esque es una de sus gracias tambien.
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.


No, el equivalente de lo que digo es que aprendas antes a multiplicar a mano que usando una calculadora, porque si aprendes directamente con una calculadora corres el riesgo de no adquirir unas bases que te serán útiles en un futuro.

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.


Esto no veo por donde cogerlo, sinceramente.

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.

¿Que C está obsoleto? [poraki]
http://www.tiobe.com/index.php/content/ ... index.html
http://bestteneverything.com/top-ten-mo ... ages-2013/
http://techinfact.com/top-10-programmin ... s-in-2013/

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


¿Es que de eso se trata, de aprender no?

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


Te sorprendería la cantidad de cosas que están programadas en C. Por otro lado, también me gusta Python para aprender, como ya he dicho, pero yo empezaría por C. Las razones las he comentado antes.
(mensaje borrado)
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
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.
amchacon escribió:new = Crear nueva variable en la ram.
delete = Borrar una variable en la ram.

Complicadísimo oye.


Si no se pasan punteros como argumentos, no se usan arrays multidimensionales y demás, pues es fácil.

Los problemas vienen cuando se empieza uno a olvidar los delete y la aplicación empieza a chupar memoria por un tubo... o se realiza un delete sobre un puntero sin haberle hecho un new... y cuando son programas complicados pues ponte a buscar el problema.

Desde luego herramientas como valgrind no se han creado porque la gestión de memoria sea cosa baladí.
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.


Exacto. Ni caso a los que te dicen "Lo mejor es aprender con C y luego verás como.." .Eso es una gilipollez como un pino, con perdón. Es como decir que para aprender español o francés mejor aprende primero latín.
Python-Java son los dos idiomas a aprender (más php si quieres complementar con temas de programación web).
PD: Python complicado? Por el amor de Odín, si es el lenguaje de programación actual más fácil de aprender de todos..
amchacon escribió:new = Crear nueva variable en la ram.
delete = Borrar una variable en la ram.

Complicadísimo oye.


Venga, ya puedes ir a arreglar todos los problemas de gestión de memoria en programación concurrente.

Henkka360 escribió:(más php si quieres complementar con temas de programación web)


¿PHP? Ni en sueños. La peor plataforma de desarrollo de aplicaciones web que se pudo crear y extender jamás por la faz de la tierra. Tendrás que aprenderlo, porque es una de esas jodidas herencias cojonudas de la gente que no quería largarse del CGI. Pero si te metes antes en Sinatra, Django o Spring, odiarás PHP. Te lo digo con conocimiento de causa...

Si quieres introducirte en la programación para arquitecturas web, Flask es un entorno bastante interesante para entender el ciclo de vida de una aplicación web.

Como mucho, Symfony, pero porque están locos. Rematadamente locos...
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.
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.


Ah, ¿pero a vosotros os daban punzones y todo? Nenazas. [fumando]
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.


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


Bueno, el problema está en las fugas de memoria si te olvidas algún destructor, los bloqueos de la aplicación si el destructor se usa con una zona no reservada, etc. etc.

Herramientas como valgrind existen porque la gestión de memoria es de lo más complicado que hay en programación. De hecho las fugas de memoria aparecen regularmente en proyectos como el núcleo de linux, con programadores de lo más bestia que hay.
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).


No es que sea especialmente "complicado" pero sí muy propenso a errores y muy difícil de depurar en según qué casos. Yo mismo he sufrido esos cuelgues que venían sin saber porqué, sólo en algunas ocasiones cuando ejecutabas exactamente lo mismo y que no sabías por dónde te venía la guantada. (En mi caso era porque estaba liberando dos veces la memoria de una matriz en dos sitios diferentes que yo *creía* que no se podían ejecutar a la vez [+risas] ).

Eso no quita para que si se quiere APRENDER siga aconsejando C, y que se aprenda a reservar memoria y a liberarla.

No sé donde leí que: "El lenguaje que necesita un recolector de basura es porque la genera" [poraki] [/troll]
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.
A mi de hecho python me parece tan exageradamente sencillo que molesta xD
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.


+1.

Cuando empecé aprendiendo C me cagaba en todo lo cagable pero ahora que programo en Objective-C, PHP, JS y Python lo agradezco. Me despreocupo de los temas de memoria pero intento optimizar al máximo funciones y procedimeintos (bueno en Objective-C, Xcode casi te lo hace todo [+risas] [carcajad] ) y eso se lo debo a C que me hizo sudar de lo lindo.
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.
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í.
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í.


Ya, bueno, pero no todo el mundo tiene como objetivo programar exes. A un programador web le vendrá mucho mejor estudiar Java, Ruby, Python e incluso PHP.
Empieza por aquí: http://www.code.org -> http://scratch.mit.edu

Cualquiera puede aprender ;)

El lenguaje es lo de menos, lo importante para empezar es que entiendas las reglas del juego.
68 respuestas
1, 2