Desde mi visión de profesor y mi propia experiencia que va de programar en varios lenguajes, incluyendo al menos tres ensambladores, G, ladder, etc. El lenguaje no es lo que determina si una persona es capaz o no de programar.
En particular C no es lo que pudiese llamarse un lenguaje difícil, es que muchos programadores de payasos más que otra cosa suelen escribir código en C que ni ellos mismos luego entienden.
Los lenguajes son simplemente el conjunto de palabras y expresiones (gramática) que permiten que uno exprese ideas o le indique a la computadora que haga cosas. Claro que muchos lenguajes se han orientado hacia expresar ideas complejas de una forma más manejable como los lenguajes orientados a objetos. Otros se han enfocado en la usabilidad máxima de un enorme conjunto de librerías y objetos que cada vez se vuelven más y más extensos.
Sin querer restar importancia al lenguaje que alguien decida utilizar para aprender a programar en mi opinión lo que al final pesa sobre todas las cosas son las habilidades para manejar los principios básicos de la programación, he aquí algunos:
* Pensamiento lógico básico (operaciones básicas sobre conjuntos)
* Sentido de la lógica secuencial (¿qué va primero?, y ¿después de lo primero qué es lo segundo? ...)
* Sentido de la concurrencia (si existe en la aplicación)
* Capacidad para determinar sobre la recursión y las desiciones (estructuras de control de flujo)
* Capacidad de abstracción (los lenguajes orientados a objetos se sustentan en este principio)
* Capacidad para reutilizar el código (mucho lenguajes hacen fuerte énfasis en este principio, pero existe desde hace mucho)
He visto y he tenido a muchos estudiantes que son incapaces de programar algo simplemente porque les enseñaron muchos lenguajes pero nunca les enseñaron que la programación es primero un proceso cognositivo-inductivo-deductivo en el que uno no hace nada más que crear un modelo abstracto del mundo real que luego debe ser capaz de implementar al redactar una composición en ese "maldito lenguaje de programación"
Ahora ¿qué lenguaje uno debe estudiar?
Eso depende de muchas cosas.
De lo que uno vaya a hacer, por ejemplo. Si uno va a trabajar en una aplicación de base de datos, debería que aprender SQL. Si vas a crear aplicaciones de tiempo real para la industria aeroespacial probablemente tengas que programar en Ada. Si vas a la web, bueno allí hay miles de lenguajes (HTML, ASP, PHP, Perl, etc). Si te toca trabajar en sistemas empotrados con FPGA, no hay remedio VHDL, Verilog o SystemC.
¿Tienes mucho o poco tiempo? El tiempo es siempre un recurso preciado, así que hay que pensar en ello antes que nada.
¿Se aprende a programar en un lenguaje en una semana? No, sin importar lo que digan los libros con título ¡Aprenda xxx en 21 días! no lo crea, es imposible aprender a programar en tan poco tiempo. A no ser que usted ya sepa programar, no aprenderá un nuevo lenguaje en tan poco tiempo. Aprender a programar es una habilidad, no es un conocimiento que usted puede adquirir. Las habilidades no se desarrollan sino con la experiencia.
Una vez adquirida la habilidad se puede programar en cualquier lenguaje. Yo mismo por ejemplo he programado en más de 10 lenguajes diferentes, he programado por más de 12 años y aún considero que mis habilidades están un poco verdes en algunos aspectos. Si me paso dos meses sin escribir código en C, lo primero que hago antes de comenzar es dar un vistazo al tema de los punteros y a otras yerbas que uno debe tener claro antes de volver a leer C. Actualmente tengo que aprender XML, XLS, XST y que se yo cuantas cosas más que vienen en el paquete de XML, para poder escribir un módulo que tome un fichero en XML y a partir de los datos allí contenidos genere código en C para una aplicación que se desarrollará en FreeRTOS. Ya le eché un vistazo a XML y sus anexos y no será muy fácil, pero es más de lo mismo.
En mi opinión, juanes79 debería primero valorar que es lo que va a hacer e investigar un poco más que lenguaje le conviene. Pero si pretende aprender a programar para meterle código a los PICS, Phyton no es la opción apropiada, no creo que exista un compilador cruzado de Phyton para PICs.
Un saludo
Reinier