Programación Específica > Programación en C

 C ó Asm?

<< < (4/5) > >>

borgo:
Hola Kain
        Si es verdad de repente los sectores de mercado son distintos y se nota mucho la diferencia por lo menos aca en el Perú.
 
        Un cordial saludos para todos.  :hola:

       Angel

microextremo:
bueno, la verdad es que encuestion de microcontroladores no me parece que exista un ganador sobre otro... usar un potente microcontrolador Motorla para realizar una temporizacion simple para apagar un dispositivo me parece un total desperdicio de HW. Los Motorolas desde su concepcion son uCos muy buenos, pero cada diseñador debe escoger el mejor micro que se ajuste al circuito, asi como el mejor lenguaje de programación. Yo particularmente uso ambos, por todo lo expuesto en este post por los demas participantes... hacer un PWM o una adquisicion AD es mucho mas facil con C que con assembler (un par de instrucciones) , pero es muy recomendable saber programar en bajo nivel para poder corregir ciertas cosas que el C no permite, o que prefieres hacerlas de una forma mas eficiente... alguna aplicaciones de tiempo crítico requieren tener el código bien controlado y eso sólo lo consigues con asm... yo enseño cursos de Pics y yo siempre comienzo con assembler para despues pasar al C... :)

pabloide86:
buenas a todos...breve comentario desde mi poca experiencia con micros...

coincido con el comentario general...ASM para aprender y C para programar...aunque sean cosas chicas...y si lo que quiero hacer requiere de un nivel un poco mas alto de precision entonces ASM embebido en el codigo C...

me quede sorprendido con la facilidad que se puede hacer una comunicacion RS232 en un 16F84...siendo que este micro no trae esta funcion...

en fin me parece que el C permite programar de una forma mas prolija pero creo que la principal ventaja que tiene es que el codigo es mas reutilizable y mas lejible...pero bueh creo que principalmente es cuestion de gustos personales...

ADC:
Bueno, despues de muchisimo tiempo sin postear por aqui me encuentro esta discusion, que personalmete creo que es algo que está mas que hablado y que todo el mundo tiene claro, pero veo que no.

En resumen, C sin dudarlo, y como explicare mas adelante no es cuestion de cual es mejor o peor, por que esos son terminos muy relativos. Mis cometarios estan basados en mi experiencia profesional.

Eficiencia del codigo: ¿Como?¿C mas eficiente que ASM?jajaja... Seguro que pensareis. Pues lo cierto es que en la muchos casos puedes conseguir código igual de eficiente en C que ASM por dos razones fundameltanmente:
1-Un buen compilador es capaz de optimizar el codigo MUCHO, incluso mas que una persona. Tened en cuenta que el codigo al final es un grafo de operaciones que puede ser optimizado mediante algoritmos, y los compiladores mejoran cada dia, así que sobre todo en codigos largos podemos optener optimizaciones muy buenas.
2- La librerias. ¿Eres un experto en metodos numericos?¿Estas seguro que tu algorimo es el mas eficiente?¿Seguro? Para muchas aplicaciones, sobre todo de cálculo, el uso de librerias especializadas nos aseguran que estamos utilizando los algoritmos mas eficientes para las operaciones que utilicemos. Es imposible e ineficiente, incluso para un ingeniero experto y con conocimietnos de metodos numericos, recordar o ponerse a buscar que metodos es el mas rapido para tal operación, o cual necesita menos memoria, etc...

Tiempo de desarrollo: El tiempo de desarrollo es fundamental para cualquier producto comercial, por varias razones. La primera es que obviamente a mas tiempo de desarrollo mas costoso sera el sistema. La segunda el el time-to-market, es decir, que mientras antes tengamos nuestro producto acabado, menos competencia tendremos. La tercera el la presión de los clientes: en el caso de que sea un sistema encargado, los clientes se ponen muy nerviosos conforme pasa el tiempo, les gusta tener resultados rápido. En muchos casos, sobre todo en empresas en las que se hacen series pequeñas (menos de 5000 unidades) el tiempo de desarrollo es clave, ya que los gastos de ingenieria suponen una parte muy importante de el coste final de producción: Ejemplo:

ADC:
Imagina que vamos ha hacer 2000 sistemas y tenemos dos opciones , hacerlo que un PIC de 2€ en ASM o con un ARM de 4€ en C. Supon que el tiempo de desarrollo en C es de un mes. Pues si haces cuentas, y ves que ASM tardarás 10 veces mas que C (es una buena aproximacion general), y que el ingeniero te cuesta 3000€ al mes  te queda:
En C:
Desrrollo 3000€
Coste micros 2000*4 = 8000€
Total : 11000€

En ASM:
Desarrollo 10*3000€ = 30000€
Coste micros 2000*2 = 4000€
Total = 34000€

La conclusion es evidente.

Legibilidad, reusabilidad: No hace falta decir que el codigo ASM es muy poco legible, nostros mismo si nos llevamos un mes sin ver nuestro propio codigo, tenemos que llevarnos un rato reanalizandolo para ver que hace esto o aquello, incluso habiendolo comentado. Pues imagina que te vas de la empresa a otra a mitad de proyecto, y que te tiene que sustituir otra persona, pues ya esta, a todo ese tiempo de desarrollo, sumale un mes o dos para que el que te sustituye se entere de que hace tu programa y como lo hace. Eso es una ruina para la empresa, ninguna empresa se puede permitir eso.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa