• Domingo 7 de Agosto de 2022, 23:32

Autor Tema:  C ó Asm?  (Leído 11887 veces)

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
C ó Asm?
« en: Viernes 13 de Enero de 2006, 21:11 »
0
Saludos a todos! En vista de algunas diferencias que existen entre la conveniencia de programar micros en C ó asembler, me tomo la libertad de abrir ésta nueva discusión.
La idea es ir sacando cosas en claro, y exponer aquí nuestras experiencias. En primer lugar, para no confundir y desanimar a los que comienzan :(  Segundo, para ampliar nuestros conocimientos.
Bien, en lo posible seamos imparciales y objetivos... :)

Comienzo: recién comparé dos rutinas relacionadas con el manejo de un display LCD, una de inicialización del display y la otra para escribir un dato en el display. Las rutinas fueron escritas en asembler y en C (compiladas con el CCS C), están probadas, y realizan exactamente la misma función.
Resultados:
En C, las rutinas me ocupan 106 y 78 bytes para la inicialización y la escritura, respectivamente; en asembler, 66 y 68 bytes. Tengo 40 bytes menos (en asm) para la inicialización, y 10 menos (en asm) para la otra rutina.
Conclusión (mía):
*En asm necesito menos ROM.
*En C fué mucho más rápida y simple la escritura del código.

Bien, compartan sus opiniones, y entre todos encontremos las pautas para definir cuál es la herramienta más conveniente para cada proyecto que iniciemos.

Saludos :hola:

Kain589

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: C ó Asm?
« Respuesta #1 en: Viernes 13 de Enero de 2006, 23:36 »
0
A mi particularmente me gusta mas el asm, tambien es que he usado poco el C, pues tampoco llevo en esto de los pics mucho. Para aprender a usarlos creo que es mejor el asm que te permite ver como se debe configurar el pic para cada proposito y para el uso de los perifericos.

Una de las grandes pegas es que el codigo te llena mucho espacio (en cantidad de codigo escrito me refiero), y es mas dificl, a priori, llevar una idea de todo lo que se va haciendo; ademas en assembler es mas facil cometer errores pues tienes que ir configurando todos los bits y registros, y es facil que se te pase alguno o que intercambies el orden de las acciones que a veces da igual pero otras no. como ventajas, el codigo resultante es mas compacto y por tanto tardara menos en ejecutarse y un control total sobre el pic

La "pega" de C,a mi forma de ver, es esa que las aplicaciones ocupan mas espacio y tardan ams en ejecutarse cosa que en la mayoria de los procesos no es muy relevante, y el problema del tamaño esta solucionado debido al aumento de la capacidad de memoria de los pics que se hacen para facilitar su programacion en C. Por otra parte, la programacion en C es mas simple y facil de llevar, ademas de ser mas legible a simple vista por el usuario. Tambien los compiladores mejoran cada vez permitiendo codigos mas compactos

Como conclusion, para empezar con los pics recomendar el assembler si se quiere paralelamente con c, pero creo que todo el que programe pics deberia pasar por assembler. Y para grandes funcionalidades, como por ejemplo teclado que permita configuara parametros a usar en el programa, sacar datos por lcd conversiones adc y comunicaciones pues la resolucion desde c parece mas viable, aunque con assembler se pueda aunque quedara un tocho considerable de codigo

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: C ó Asm?
« Respuesta #2 en: Viernes 13 de Enero de 2006, 23:46 »
0
Citar
Conclusión (mía):
*En asm necesito menos ROM.
*En C fué mucho más rápida y simple la escritura del código.
Es obvio. Asm es lenguaje de máquina, es más tardado hacerlo en Asm que en C. :D

Ya lo sacaste tu solo:
Asm es mejor pero más tardado, C es más rápido pero se necesita más ROM.

{una cosa más aprendida en este día :kicking: }
 :comp:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: C ó Asm?
« Respuesta #3 en: Sábado 14 de Enero de 2006, 00:41 »
0
Gracias muchachos! Mi conclusión es más que obvia, pero debemos decírla a todos! :D
Sigamos por aquí, que nos queda mucho por aprender... ;)

Saludos :hola:

lalo_soft

  • Miembro MUY activo
  • ***
  • Mensajes: 469
    • Ver Perfil
Re: C ó Asm?
« Respuesta #4 en: Sábado 14 de Enero de 2006, 03:50 »
0
Esta ves no hare comparacion entre C y ASM como suguiere Tirol les hablare de mi experiencia en C.
Yo he usado tres tipos de compilador C para el desarrollo de proyectos profecionales.

1.- CCS para Pics.         calificacion "Regular"  precio us$ 1000 aprox.
2.- ICC para Atmel Avr  calificacion "Optima"   precio us$ 700 aprox.
3.- IAR para ARM core   calificacion "Una Maravilla" precio us$ 2000 a us$ 5000 aprox.

CCS:
Lo Malo:
No es standar ANSI la columna verterbrar de un progama escrito con este compilador no es portable a micros de otras marcas,requiere de manuales del fabricante ya que todo el manejo del hardware viene soportado con funciones tipo CUSTOM, no trae optimisador de codigo para ahorrar memoria.
Lo Bueno:
La ultima version maneja toda la familia Pics,las librerias Custom configuran con eficiencia casi todos los modulos de hardware para luego solo interactuar con ellos.

ICC:
Lo Malo:
La documentacion de fabricante es deficiente.
Lo Bueno:
Full ANSI, todo lo leido en los libros standar de C (ej: El lenguaje de programacion  C autor Dennis M Ritchie ) corre en este compilador,con pequeños cambios he portado funciones hacia otros micros, tiene optimisador de codigo con un algorismo  bastante eficiente para ahorrar memoria.

IAR:
Lo Malo:
Aun no lo encuentro.
Lo Bueno:
Este compilador es un caso especial sumando las caracteristicas de ICC y varias otras mas, nos permite progamar en C,C++,POO.Para los que dominan programacion POO se daran cuenta la potencialidad de este compilador para realizar proyectos de altas prestaciones.

Saludos.

ijfa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: C ó Asm?
« Respuesta #5 en: Sábado 14 de Enero de 2006, 03:50 »
0
weno..llegue tarde pero llegue.....si tu programa es pekeño y no tiene algo muy komplejo te rekomiendo ASM.....si tu programa es mas komplex entonces usa el C... :comp:

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: C ó Asm?
« Respuesta #6 en: Miércoles 8 de Febrero de 2006, 21:03 »
0
Tengo rato sin programar un PIC (y nunca lo he hecho en C), pero la mayoría sabemos que el código en C resultará en algo más de espacio.

Mi idea es, hay que aprender ASM para entender "cómo" trabaja el microcontrolador en cuestión.

Para proyectos grandes, quizá sea mejor trabajarlos en C y posteriormente optimizar partes del código usando ASM (porque supongo que los compiladores que existen deben permitir embeber código ASM).

Por cierto, la razón por la que hace tiempo no programé con C (no tenía necesidad de programas complejos y con ASM me la podía pasar) es por el enorme costo de las herramientas que encontré, ¿me podrían pasar enlaces a las herramientas que conocen (ojalá cuenten con alguna versión demo)?

También, hace tiempo leí algo por allí de un compilador llamado AnyC, pero nunca encontré nada que se pudiera usar (descargar).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Orizabeño

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: C ó Asm?
« Respuesta #7 en: Sábado 10 de Junio de 2006, 06:10 »
0
MI PUNTO DE VISTA ESTA ENFOCADO A MI EXPERIENCIA CON EL MENAJO DE ASSEMBLER Y C DE CCS PARA PICS.

ALGO BIEN IMPORTANTE QUE NADIE HA MENCIONADO Y QUE CREO GENERA UNA GRAN VENTAJA DEL C SOBRE EL ENSAMBLADOR...

ES EL HECHO DE QUE EN C ES SENCILLO MANEJAR VARIABLES DE 16 BITS (LONG INT)Y OPERACIONES FLOTANTES(FLOAT), CONSIDERANDO MICROS DE 8 BITS COMO EL 16F84, EN ENSAMBLADOR TAMBIEN SE PUEDE REALIZAR PERO EL DISEÑADOR SE DISTRAE MUCHO DE LA APLICACION EN CONTRETO, POR QUE ESTA MAS PREOCUPADO POR IMPLEMENTAR LA LOGICA PARA EL MANEJO DE ESTE TIPO DE DATOS E INICIALMENTE LA APLICACION PASA EN UN SEGUNDO PLANO, ESTO ROBA MUCHO TIEMPO PARA EL DISEÑADOR.

TAMBIEN ES DE TODOS SABIDO QUE SI ALGO LE CUESTA A UN MICRO ES HACER OPERACIONES CON ESTE TIPO DE DATOS E IMPLEMENTARLO POR SOFTWARE GENERA MUCHA DIFICULTAD DESDE ENSAMBLADOR, ADEMAS AUN ASI EL PIC RESUELVE LAS OPERACIONES CON RELATIVA LENTITUD OBVIAMENTE POR ESO EXISTEN LOS DSPs DONDE EN LAS COMUNICACIONES ENCUENTRAN SU MAYOR CAMPO DE APLICACION.


YO SIEMPRE HE MANEJADO ESTA FILOSOFIA......

PROGRAMAS CON PROBLEMAS DE LOGICA Y COMPARACION= ENSAMBLADOR


PROGRAMAS CON PROBLEMAS DE OPERACIONES ARITMETICAS COMO MULTIPLICACION Y DIVISION= LENGUAJE C

ORA QUE SI TIENES DEMASIADA HABILIDAD PUEDES OPTAR POR LA PROGRAMACION HIBRIDA. CCS SOPORTA ENSAMBLADOR CON #ASM  #ENDASM


ATTE: ALEX

SALUDOS DESDE ORIZABA

Orizabeño

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: C ó Asm?
« Respuesta #8 en: Sábado 10 de Junio de 2006, 06:20 »
0
OTRA COSAA..

LA COMPATIBILIDAD DEL CODIGO EN C HACEN DE C ALGO INTERESANTE, EMIGRAR DE UN MICRO A OTRO ES MUY FACIL Y NO REQUIEREN MUCHOS CAMBIOS, EN ENSAMBLADOR SI QUISIERAMOS EMIGRAR EL CODIGO TMB NO ES COMPLICADO PERO NOS HACE OJEAR EL DATASHEET UN PAR DE VECES PARA SABER COMO ESTA MAPEADA LA RAM PARA REDIRECCIONAR ALGUNOS REGISTROS. EN C A VECES NI ES NECESARIO VER EL DATASHEET EN MUCHOS DE LOS CODIGOS.

UN DUDA DICEN QUE EN C LOS RETARDO NO SON TAN EXACTOS COMO LO SON EN ENSAMBLADOR?? A MI NO ME CONSTA REALMENTE NO SE SI ASI LO SEA OJALA ALGUIEN PUDIERA RESOLVERME ESTA DUDA, SERIA UN PUNTO A FAVOR DEL ENSAMBLADOR.....

NO ATACO EL ENSAMBLADOR AL CONTRARIO ME GUSTA PROGRAMAR EN ENSAMBLADOR, CREO QUE TIENES UN MAYOR CONTROL DE TODO EN ENSAMBLADOR ENTIENDES COMO TRABAJAN LOS PICS POR QUE TODO QUEDA EN EVIDENCIA Y ENTENDER LA ARQUITECTURA DE LOS PICS ES MUCHO MAS SENCILLO SI SE PROGRAMA DESDE ASSEMBLER......

SALUDOS

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: C ó Asm?
« Respuesta #9 en: Sábado 10 de Junio de 2006, 08:20 »
0
Bueno yo os dire que el ASM es mi favorito es mucho mas rapido y mas pequeño y C es mucho mucho mas facil y me permite hacer ciclos y funciones de manera muy sencilla cosa que en ASM es muy tedioso.
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: C ó Asm?
« Respuesta #10 en: Sábado 10 de Junio de 2006, 23:48 »
0
Hola!
No se si viene al caso, pero durante esta última semana he estado haciendo un curso en la central de B&R (Bernecker & Rainer, Eggelsberg, Austria; http://br-automation.co.at), empresa dedicada a la electrónica industrial. Y para sorpresa mia me encuentro con que los PLC de esta marca tienen la posibilidad de ser programados en C (ANSI C).
No soy un experto programador en C, pero esto me viene mejor que bien!! Puedo programar en el PLC funciones con, por ejemplo, complicados cálculos matemáticos sin tener que matarme en AWL (asembler para PLC). Es más, puedo crear mis propias librerias en C, y luego usar las funciones en KOP (ladder, lenguaje de contactos)
No estoy al tanto, pero según intercambios con otros compañeros de curso, Siemens aún no ofrece esta posibilidad. Aunque hay que reconocer que Siemens ofrece una biblioteca de librerías mucho más completa...
Bueno, se que entre un micro y un PLC hay algo de diferencia, en especial si miramos con suma atención el encapsulado(!); pero si a la hora de programar todos hablamos el mismo idioma, no hay gran diferencia.

Si bien esto no tiene nada que ver con los microcontroladores, quiero comentarlo para que sirva de incentivo a los que estan en la duda. En su momento estaba muy pegado al asembler, despues fui descubriendo las ventajas del C... Y ahora me pregunto por qué no le tome la mano un tiempo antes!

Bueno, tengo un par de proyectos atrasados :unsure: ; pero creo que me gano algo de tiempo haciéndolo en C. Y mientras esté en este proyecto tengo dos PLC a disposición... Ya les comento las experiencias y conclusiones.

A meterle con el C, pero sin hecharle tierra al asembler (o al KOP :P )

Saludos

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: C ó Asm?
« Respuesta #11 en: Domingo 11 de Junio de 2006, 05:53 »
0
No estoy seguro, pero también supongo que un PLC tiene más memoria que un microcontrolador. Pero es cierto, el programar en un lenguaje de un nivel más arriba de ASM acorta el tiempo de desarrollo, amén de hacer más legible un programa.

Lo de los PLCs, hace algún tiempo, en un brevísimo taller de Festo, nos comentaban de un lenguaje que habían implementado en sus PLCs, parecía bueno, enfocado a procesos secuenciales, el problema que le encontraba es que era exclusivo de Festo. También, nos comentaron que en Europa la tendencia es hacia lenguajes de alto nivel, y C me parece una opción excelente, sobretodo pensando en que exista cierto nivel de portabilidad de proyectos.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Kain589

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: C ó Asm?
« Respuesta #12 en: Martes 15 de Agosto de 2006, 01:01 »
0
Saludos! He vuelto a este hilo, porque "donde dije digo, digo diego" es un dicho de mi pais, lo que viene a decir es que he cambiado mi opinion, desde que he empezado con C, asm es ese oscuro pasado en el que programar era tedioso y pesado.

He realizado aplicaciones en C y todas me han ido bien, sin falta de memoria ni de tiempo, aunque tampoco ha sido algo de muy alto nivel. Y tiene grandes ventajas, como la mayor facilidad para el desarrolo y el hecho de que es mas facil que cualquiera te eche una mano al ser mas legible.

Ademas al aprender C, el pasar no solo de una familia a otra, sino tambien cambiar de marca de micrcontrolador parece mas facil.

borgo

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: C ó Asm?
« Respuesta #13 en: Martes 22 de Agosto de 2006, 23:30 »
0
:rolleyes:
Si estamos trabajando con PIC´s sin dudarlo creo lo mejor es ASM porque los pic´no tienen su CPU optimizada para el C es el caso de todas las arquitecturas hardware, esto no quita claro que se pueda programar en C con PIC´s sin embargo no es lo optimo, memoria paginada, un pobre stack, muy pocos direccionamientos en fin para lo que es assembler un lujo pero para C realmente muy pobres.
Otra cosa muy distinta es Motorola y mas específicamente la CPU de 908 que esta optimizada para programar en C, UN LUJO impresionante lo que se puede hacer a tal punto que el código que resulta en C es mejor que el escrito en ASM.
Ojo quiero dejar en claro que me da lo mismo Microchip o Motorola solo trabajo con ellos y el que se ajusta mejor a lo que busco es lo que elijo en el momento.
Pero está claro que interrupciones vectorizadas, memoria lineal y varias formas de direccionamiento mas un control absoluto del stack es casi como programar para un PC. Creo que los programadores de C encuentran en estos micros la fiesta de la programación, por poner un ejemplo realizar codigo embebido en un pic, digamos colocar una pagina web dentro de el y manejar el hard desde un navegador común es una tarea imposible a niveles prácticos, es decir que sirva para algo,  mientras que en un 908AP32 ya podemos embeber nuestra intefaz de aplicación dentro del propio micro mas todas las capas de operación del TCP.
Esto segun entiendo es posible en un DSPIC, pero ya es posible en un 908 sin llegar a un DSP 568xx.
Repito no soy ni partidario de Motorola ni llevo la bandera de Microchip, pero si es verdad que Motorola esta sacando unos micros realmente insolitos para programar en C.

Saludos y disculpen lo extenso del comentario.

   Angel

Kain589

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: C ó Asm?
« Respuesta #14 en: Miércoles 23 de Agosto de 2006, 00:23 »
0
La serie 18F de microchip ya esta optimizada para C, y a partir de esta todas las posteriores: la 24F y los dspic, que son las mas modernas por ahora.

De todas formas la comparacion de Motorola y Microchip tiene como claro ganador a Motorola, aunque tambien hay que ver los sectores del mercado a los que se dirigen...

Saludos!

borgo

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: C ó Asm?
« Respuesta #15 en: Jueves 24 de Agosto de 2006, 13:19 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: C ó Asm?
« Respuesta #16 en: Sábado 26 de Agosto de 2006, 05:06 »
0
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... :)
-------------------------------------------------------------------
Microextremo.Com

pabloide86

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: C ó Asm?
« Respuesta #17 en: Lunes 13 de Noviembre de 2006, 15:39 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: C ó Asm?
« Respuesta #18 en: Domingo 17 de Agosto de 2008, 20:17 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: C ó Asm?
« Respuesta #19 en: Domingo 17 de Agosto de 2008, 20:27 »
0
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.

ADC

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: C ó Asm?
« Respuesta #20 en: Domingo 17 de Agosto de 2008, 20:51 »
0
Mayor dificultad para integrar tu codigo con un sistema operativo: esto esta relacionado directamente con la eficiencia, ya que si no podemos utilizar un sistema operativo, muy buenos y listos tenemos que ser para que nuestro programa en ASM sea capaz de ejecutar eficientemente (sin esperas activas, con tiempos de respuesta controlados, aprovechando de forma dinámica los modos de bajo consumo....) varios procesos simultaneamente. Ademas la API de los SO siempre es en C.

Por que ninguna empresa te va a pedir que programes en ASM: quizás te pidan en la oferta de trabajo que sepas ASM, pero despues es muy raro programar algo en ASM, así, que para el caso, como la mayoria estais aprendiendo, deciros que lo mas problable es que si llegais a trabajar en desarrollo de sistemas embebidos nunca utilizareis ASM.

Por que la tendencia en sistemas embebidos son los sistemas con Linux embebido: es la tendencia, cada vez son mas baratos, en pocos años por el precio de PIC podrás comprar un micro capaz de mover Linux (hay ARM de 3€ y pico capaces), esto no es "usar Linux por que si", usar un SO tan avanzado permite implentar facilmente una series de funcionlidades en nuestros dispositivos que hace unos años no pensabamos que fuese posible.

Bueno, de todas formas tambien quiero dejar claro que existe la posiblidad de que una determinada aplicación se tenga que usar ASM. Despues de tanto rollo no he comentado una cosa que en realidad es la clave, la decisión de si se va utilizar ASM o C en un produto se toma siempre como resultado de un estudio economico del proyecto, así que en determinados casos puede resultar la opcion adecuada. Lo que pasa es actualmente siempre se quiere mucha funcionalidad en el sistema, y esto hace que ASM siempre pierda, por su mayor tiempo de desarrollo sobre todo.

Resumen:
mas funcionalidad = mas codigo
tiempo desarrollo ASM = 10*tiempo desarollo C
tiempo de desarrollo = coste, +competencia
C es reusable
ASM no es reusable
ASM mala integracion con SOs
escasa diferencia de precios entre micros mas y menos potentes


Saludos,
adc

ADC

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: C ó Asm?
« Respuesta #21 en: Domingo 17 de Agosto de 2008, 20:58 »
0
P.D. que se me pasan unos comentarios muy importantes.

He hablado de la tendencia a Linux embebido (tambien existe .NET micro framework, Windows CE y otros). Por ejemplo ya hay mucha gente haciendo su software no solo en C y C++, sino en C# ,Java, Phyton, Ruby, etc,(Linux permite eso por ejemplo), al final son las cuentas las que mandan, si  el tiempo de desarollo es caro y el hardware barato, manda el tiempo de desarollo.

Saludos

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: C ó Asm?
« Respuesta #22 en: Domingo 17 de Agosto de 2008, 21:27 »
0
Hola:

La mejor explicación clara y razonable que he visto sobre el C vs ASM. Sobre el sistema C# es bueno saberlo, también estoy aprendiendo ese lenguaje nuevo y es bueno saberlo. Si me permite, haré un copy & paste a otros foros sobre tu comentario cuando lo vuelvan a decir.

Bajo mi punto de vista, aprender ASM primero, luego al meterte con el C, entenderás más cosas y será más eficiente en aprendizaje. No todos los PIC cabe el código C, por falta memoria, RAM, etc. Trabajos pequeños ASM, grandes C.

Muy buen aporte, los que quieran aprender ASM que en las universidades utilizan es ASM, http://www.pic16f847a.com

Quiero hacer un SO en ASM como el Windows, pero en C me parece más fácil y en menos tiempo aunque no sea tan eficiente que el ASM.

Por algo será que se crea los lenguajes de alto nivel.

Un cordial saludos.