Ufff!, que debate más sabroso!, muy bueno, con todos los matices:
Comienzo con mi postura:
Mi posición es algo especial, pues en la U inicié programando en C (creo que la versión se llamaba R-hide), que prácticamente no permitía hacer nada, luego en c++ con sus estructuras y su opción de programar orientado a objetos...., demasiado bueno, se hicieron cosas muy interesantes. Posteriormente pasé por el assembler del 386 (de lo cual casi no recuerdo nada, pero vale la experiencia), un compilador de C en RT-linux para programar en tiempo real (un compilador especial de C, una pesadilla pero si se le saca el jugo es muy bueno)...., y por último hice mi tesis en un pic18f252 todo programado en assembler!!!!!, 16K de código y muchas, muchas, muchas semanas de programación..., (hacer lo que hace un vector en C en ASM es una pesadilla para mi capacidad de programación); obviamente, lo de las semanas se lo debo a las curvas de aprendizaje.
Recuerdo mucho que después de ir por más de la mitad del código de mi tesis me percaté en la hoja de especificaciones de mi PIC que la arquitectura del 18F estaba optimizada para ser programada en C, en ese momento sentí que perdí MUUUUUCHOOOOO tiempo de mi vida, en la cual hubiera podido aprender de otras cosas; sin embargo esto rindió sus frutos. Desde hace aproximadamente 6 meses estoy entrando al foro, de este modo inició mi interés por programar los uC en C (inicié con C18), cosa que no hacía desde hace aproximadamente un año y medio (me refiero al C como tal), pero me encontré con una gran sorpresa!, el haber programado en ASM, el conocer la arquitectura del micro sobre el que estoy programando, en como se manejan las instrucciones me han hecho (en mi humilde opinión) un mejor programador en C, por lo menos mejor que antes, me dí cuenta de muchos errores que cometía, es más en varias partes de mi código inserto código asm (#asm o _asm) por aquello de lo optimo. En realidad yo uso segmentos en assembler para realizar funciones sencillas, pero para operaciones matemáticas en .flotante (por experiencia propia no lo recomiendo en .asm, jajajajajaa!) o para ramificaciones de código definitivamente uso C porque me simplifica mucho las cosas.
Ahora, no es que sea facilista, pero el contexto en que me encuentro, donde estoy desarrollando proyectos empresariales (también cuento con la fortuna/infortunio de ser mi propio jefe), en mis productos (tengo socios claro está) aproximadamente sólo el 5% (exagerando) del costo del producto se me va en el tipo de microcontrolador, de hecho en relación con otros de los elementos del productos, la sensibilidad del precio final con respecto a la variación del costo del microprocesador es realmente baja (por no decir nula en algunos casos); obviamente, es insensato que si puedo hacer algo con un PIC16F630 lo haga con un PIC18F252. A lo que quiero llegar es que influye más en mi precio las horas hombre en i+d, el diseño mismo de la PCB (espacio, cantidad de vias, capas, tipos de componentes), el diseño industrial, diseño gráfico, la construcción del molde de inyección (esta vaina es muy cara!), personal de ensamble, los costos de envío de los componentes, la adecuación del espacio y los costos de comercialización (de hecho en esto se va la mayoría del precio final), esto, repito, es en mi caso.
Ahora bien, en un ambiente comercial a veces vale más el tiempo (coste de oportunidad), pero en un ambiente científico y/o académico importa demasiado el desempeño, es aquí donde encuentro validez en las posturas a favor del ASM, pera es simple, como todo en la vida, una cuestión de equilibrio, alguien decía que su frase favorita era "todo en sus justas proporciones", para mi ese es el verdadero secreto de algo tan valioso como el conocimiento..., la sabiduría. Ahora hago un paralelo un poco absurdo, pero, muchas veces el buen jugador de fútbol es el que hace las jugadas correctas en el momento correcto (Fabregas es uno -me perdonan los españoles si lo escribí mal-); eso mismo es lo que seguramente impulsó a Maradona a sacarse medio equipo (y al mismo tiempo humillar, jajaja!) de inglaterra en el 86, porque la opción más adecuada con sus capacidades era esa; esa es la diferencia entre un borrachín y alguien que sabe disfrutar de una rumba.
Para terminar solo queda agregar que todas las opiniones tienen validez después de que se aprenda, al fin y al cabo eso es lo que nos tiene en el foro.
Saludos!
Andros.