Autor Tema: Ventajas y desventajas de los compiladores  (Leído 40252 veces)

0 Usuarios y 10 Visitantes están viendo este tema.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Ventajas y desventajas de los compiladores
« Respuesta #15 en: 01 de Julio de 2006, 21:19:11 »
La pregunta del millon es cuales son las ventajas y desventajas de los distintos compiladores que utilizamos. Serán interesantes los resultados a los que llegemos, sobre todo para los novatos que no saben por que lenguaje decantarse. 

que nos diriais a los novatos vosotros que ya teneis experiencia con uno o mas lenguajes y compiladores?
partiendo de la base de alguien que quiere aprender y quiere hacerlo de forma gradual y asentando conocimientos, que consejos me podeis dar para ello? os pido consejo a vosotros porque he leido suficientes cosas vuestras en este foro para saber que os lo puedo pedir.

llevo muy poco tiempo en el mundillo de los pics y trato de leerme los datasheets, practicar todo lo que puedo, ver codigo y ejemplos aqui y alla y no se hasta donde conseguire llegar en plan autodidacta y sin grandes conocimientos de electronica. pero bueno, mi compañera dice que hay que ver siempre el lado positivo, y el lado positivo de un accidente es que te deja bastante tiempo libre... volvemos a la pregunta del millon?

un saludo

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Ventajas y desventajas de los compiladores
« Respuesta #16 en: 01 de Julio de 2006, 21:24:12 »
Mi opinión personal es que comiences con "C" y cuando lo domines mas o menos aprendas "ASM".

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ventajas y desventajas de los compiladores
« Respuesta #17 en: 02 de Julio de 2006, 11:43:29 »
xocas06 creo que depende que tipo de programación quieras hacer.

Usar C o ensamblador no te va a enseñar a "programar".  Con esto quiero decir que saber como organizar un software es un tema que va "aparte" del lenguaje que uno utilice.  Saber como organizarás la información o si un código debe ir en una subrutina o si lo copias y pegas indefinidamente son temas que van mas allá del lenguaje de programación.

Mi consejo es "depende".  Depende del tipo de software que harás y del tipo de mercado al que atacaran tus productos "por mas que hoy por hoy no lo veas de esa forma".

A modo general, yo estudiaría un par de cosas:  C y los módulos del PIC bien en profundo.

Saber usar los módulos del PIC bien en profundo te permitirá saber qué es lo que hace el C cuando los configura. Además no te puedes escapar de saber cómo funcionan. 

El ensamblador es muy útil cuando tu aplicación es muy orientada al hardware,  es decir a manejar mucho los puertos y a los módulos tal cual como estan.  Capturar datos por un A/D y sacarlos por el puerto serie.  También cuando tu aplicación es 'real time' y no puedes depender de los tiempos que te ponga el código extra de un compilador en C.

Ahora bien si tu aplicación tendrá muchos "condicionales" o "mucha lógica asociada" (condiciones que si pasa esto, que haga aquello) y los tiempos de ejecución no están al límite entonces el C sin duda es mucho más apto para eso. 

Yendo al mundo real si un pic 18F sin EEPROM está en 4,5 dólares por unidad (unos 2.50 u$s por 25) creo que ya quedan pocos argumentos para que comiences tus aplicaciones aprendiendo ensamblador.  Ese pic tiene el doble de memoria que el más grande de los 16F y puede andar al doble de MHz.  Sumado a esto, por más que no tenga eeprom se puede grabar a sí mismo con lo cual no interesa tener/no tener eeprom.

El ensamblador en programas complejos tiene cabida cuando hay que hacer "muchas cosas" , cuando se harán mucha cantidad de dispositivos (miles de ellos) y donde el costo de cada pic es importante en el monto global del dispositivo que uno realizará.  En esos casos incluso se puede lograr que un PIC haga lo que haría otro pic con el software codificado en C con el doble de capacidad (y gralmente un 40% mas de costo) o bien , hubieran sido necesario 2 PICs.   En ese caso y en el caso en que tengas tiempos que sean muy críticos solamente es justificado encarar un proyecto completamente en ensamblador.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Ventajas y desventajas de los compiladores
« Respuesta #18 en: 02 de Julio de 2006, 14:14:49 »
muchas gracias a ambos por vuestra respuesta.

tienes toda la razon maunix: usar uno u otro no me enseñara a programar, y me queda claro que sera la necesidad a cubrir la que decida que es mas adecuado en ese caso.
de momento mis trabajos han sido en basic y los pics utilizados ademas del 16f84 son el 12f629 y el 12f675 (como veis lo mas bajo de la gama), y hasta ahora si algo he aprendido ha sido gracias a leerme una y otra vez los datasheet...
seguire vuestro consejo y comenzare poco a poco con c y algo de emsamblador (he visto que hay abundante documentacion en el foro) y ya os ire contando que tal va el tema.

un saludo y gracias de nuevo

pd: ademas de los datasheet, este foro me ha clarificado muchas dudas... pero no lo quiero decir porque parece que siempre estoy haciendo la pelota jeje. un saludo

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Ventajas y desventajas de los compiladores
« Respuesta #19 en: 02 de Julio de 2006, 17:03:10 »
Hola.

Pues es como ya se había mencionado, no se discute el lenguaje sino el compilador.

Al parecer todos coincidimos que C es mejor lenguaje para programar PICs, sin embargo lo que dice manuix es muy cierto
Usar C o ensamblador no te va a enseñar a "programar".

No importa el lenguaje que uses, si puedes seguir un diagrama de flujo entonces puedes adaptarlo a tu tipo de lenguaje, lo importante es el algorítmo o pseudocódigo.

Como lo menciona manuix (y también lo comenté)
xocas06 Saber usar los módulos del PIC bien en profundo te permitirá saber qué es lo que hace el C cuando los configura. Además no te puedes escapar de saber cómo funcionan. 

Como se había mencionado (y como manuix lo dice) NO TE ESCAPAS de conocer la arquitectura del µicro, tienes y debes saber cómo funciona porque de ahí es donde puedes aprender a "programar".
Para qué usar una instrucción de compilador que cuente por una terminal (PBP=COUNT) si puedes configurar los contadores en hardware.
Por otro lado, para qué hacer rutinas de control de hardware I²C si con una simple instrucción (I2CREAD e I2CWRITE) puedes comunicarte.

Ventajas hay muchas y desventajas las hay y varían de compilador a compilador, de lenguaje a lenguaje. Yo no puedo hacer comparaciones entre varios (CCS, Protón, PBP) porque solo uso uno (PBP) pero puedo concluir que si está uno interesado en aprender con un compilador, solito te vas adentrando a la arquitectura (por curiosidad tal vez) y mientras mas sabes mejor.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Ventajas y desventajas de los compiladores
« Respuesta #20 en: 02 de Julio de 2006, 17:15:45 »
Yo daba por entendido que hay que saber la arquitectura y el funcionamiento de los PIC. Pero si entramos en esos detalles, lo primero que hay que aprender antes de la arquitectura de los micros (y no hablo de los PIC, como por ejemplo saber que es una pila o que es el acumulador), es imprescindible tener unos conocimientos minimos de electricidad y electrónica.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Ventajas y desventajas de los compiladores
« Respuesta #21 en: 02 de Julio de 2006, 21:15:55 »
bueno, no me explique bien o al menos no lo suficiente. yo tambien doy por sentado la importancia de conocer la arquitectura y saber como funcionan el acumulador, la pila y demas. como decia antes, hace años hice pequeñas aplicaciones en ensamblador para el 6502 (o 6510 ya no lo recuerdo bien) que era el micro de los commodore, y llegue a ver algo del 8080 aunque muy poco. de esto hace muchos años y hacia tambien muchos años que dejara de lado el tema de la electronica, al que he vuelto de forma casual.
mis estudios entonces eran de tecnico en radio y posteriormente estudie electronica digital, aunque siempre de forma autodidactica. nunca conte con un profesor y eso me supuso muchas horas de biblioteca y pagar precios desorbitados por ciertos libros -en ingles- como unica fuente de informacion (por ej. sobre ensamblador para el 6502). y lo que es peor, que a pesar del esfuerzo quedaban muchas lagunas, ciertas cosas ahi se quedaron sin que jamas llegara a entenderlas.

desde el finales de los 80 me gano la vida como tecnico informatico y en este tiempo he trabajado de programador, profesor, tecnico... es decir un poco de todo, y nunca he dejado de estudiar (el mercado esta duro) y llevado a mi campo podria decir que:
-. si alguien me pregunta que si mac que si pc le diria que si es informatico seguramente se encontrara mas a gusto cacharreando con un pc, pero si es un mero usuario que no quiere complicaciones sin duda seria el mac mi consejo.
-. si la pregunta es windows o linux la respuesta seria similar a la de este hilo: que uso tendra? si se trata de un servidor web la respuesta seria linux, y no por una cuestion de preferencias, sino por haber trabajado con ambos y conocer las diferencias.
-. podriamos seguir con otros ejemplos pero creo que todos estamos diciendo lo mismo al final. bueno, falta la version de quien conoce bien un etorno determinado y lo defiende enfrentandolo a todos los demas, pero basicamente porque se siente a gusto con lo suyo y no ve la necesidad de cambiar.

como veis creo que la cuestion no seria muy diferente a las opiniones que se puedan dar sobre lenguajes o compiladores

perdonar si he sido un poco pesado con el tema de aprender, yo en principio no estoy pensando en ganarme la vida con ello -ya con 47 años creo que la informatica seguira siendo mi fuente de ingresos- sino que es un tema que me gusta y que querria conocer lo mejor posible, y creo que lo conocere mejor utilizando un lenguaje que me obligue minimamente a saber que el pic dispone de 2 o de 4 bancos de memoria o de que existe un bit de acarreo que he de tener en cuenta para segun que operaciones y no usando un lenguaje que hace todo eso sin que yo tenga ni que saberlo.

un saludo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ventajas y desventajas de los compiladores
« Respuesta #22 en: 02 de Julio de 2006, 22:40:18 »
perdonar si he sido un poco pesado con el tema de aprender, yo en principio no estoy pensando en ganarme la vida con ello -ya con 47 años creo que la informatica seguira siendo mi fuente de ingresos- sino que es un tema que me gusta y que querria conocer lo mejor posible, y creo que lo conocere mejor utilizando un lenguaje que me obligue minimamente a saber que el pic dispone de 2 o de 4 bancos de memoria o de que existe un bit de acarreo que he de tener en cuenta para segun que operaciones y no usando un lenguaje que hace todo eso sin que yo tenga ni que saberlo.

xocas06 usa el C, no te va a defraudar.  Vas a tener que leer de la arquitectura para cualquier lenguaje y no creo que a priori debas saber si unn pic tiene 2 bancos o 4... Usando el C tal vez solo debas saber de "cuanta memoria de programa" y "cuanta memoria de datos" dispones.

Con el tiempo, si "necesitas" depurar el código para hacerlo algo más pequeño, ahí si podrás adentarte más en detalles finos,  pero no lo veo prioritario a la hora de arrancar.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Ventajas y desventajas de los compiladores
« Respuesta #23 en: 03 de Julio de 2006, 14:34:26 »
no le demos mas vueltas entonces y que sea el c el elegido.

en el foro hay bastantes ejemplos para el 16f648 y en la web encontre tambien para el 16f628 de manera que ya tengo trabajo -o distraccion, segun se mire- por delante para empezar.

un saludo a todos y de nuevo las gracias por vuestro tiempo

Desconectado freshdesing

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 88
Re: Ventajas y desventajas de los compiladores
« Respuesta #24 en: 24 de Septiembre de 2007, 08:57:49 »
Yo comencé por ASM, me sirvió para aprender como es el PIC "por dentro", ver sus registros, configuración etc... Ahora estoy con C (CCS) y la verdad es que a veces, pongo una línea para configurar algo,  y pienso... ¿Estará configurado todo como yo quiero? Realmente es más fácil C, para programar. Mi recomendación es aprender un poco en ASM para ver como van los registros y la arquitectura interna del PIC y después pasarse a C con programas más complejos.

Ahora si lo que se quiere es empezar a programar... pues C directamente, pero creo que es útil conocer un poco el funcionamiento del PIC con ASM.

Un saludo.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Ventajas y desventajas de los compiladores
« Respuesta #25 en: 03 de Octubre de 2007, 20:00:01 »
Hola. Yo empecé con ASM y ahora estoy tratando de programar en C (CCS) y la verdad es que me cuesta un montón. Pero seguro debe ser porque es algo nuevo para mí. Yo coincido en que primero se debe comenzar en ASM para luego pasar a C y por el echo de que casi todos los programadores como el ICPROG, estos pasan del hex a ensamblador.

Saludos.  :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ventajas y desventajas de los compiladores
« Respuesta #26 en: 05 de Octubre de 2007, 17:37:10 »
Hola. Yo empecé con ASM y ahora estoy tratando de programar en C (CCS) y la verdad es que me cuesta un montón. Pero seguro debe ser porque es algo nuevo para mí. Yo coincido en que primero se debe comenzar en ASM para luego pasar a C y por el echo de que casi todos los programadores como el ICPROG, estos pasan del hex a ensamblador.

Saludos.  :-/ :-/

Leon, los programadores simplemente leen los bits del .HEX y lo mandan al microcontrolador.  El programador (ICPROG; WINPIC, etc) en realidad no saben nada de la instrucción.  Ahora si le agregas una función de desensamblar lo mostrarán en ensamblador del micro original pero eso no significa que haya que saber de ensamblador para hacer estas cosas.

Hay una relación directa e unívoca entre el mnemónico del ensamblador y lo que guarda el .HEX o lo que sería equivalente a su equivalente HEXA pero ya teniendo en cuenta la posición de memoria que ocupará en el micro destino.

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Ventajas y desventajas de los compiladores
« Respuesta #27 en: 05 de Octubre de 2007, 23:09:42 »
Hola maunix.

Lo se, talvez no me hise entender. Lo que quería decir, es que, hay mas compiladores que pasan de hex a asm, que de hex a c (al menos eso lo experimente yo, al no encontrar compiladores que pasen a c, vale decir que si núnca encontre, no quiere decir que no existan)

Saludos.  :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Ventajas y desventajas de los compiladores
« Respuesta #28 en: 06 de Octubre de 2007, 05:34:14 »
Uffff ... vamos a ver si puedo exponer en pocas palabras y mas o menos claro un par de ideas.

Un fichero .hex es una representación ASCII de qué byte va en qué dirección de memoria escrito según un acuerdo en la forma de colocar esa información en dicho fichero.

El cómo se guarda esto en un fichero .hex lo dijo Intel en su momento, y los que quieren escribir un fichero .hex se atienen a esas normas (Formato HEX de Intel). Existen otros formatos de ficheros que representan bytes en posiciones de memoria, por el ejemplo el .s19 que es el que inventó Motorola (Formato S19 de Motorola). Es lo mismo aunque no es igual.

La información guardada en un .hex puede representar un programa o no: puede ser el contenido de una memoria EEPROM por ejemplo. El .hex no es mas que un paso intermedio entre quien lo genera y quien ha de recibirlo, un microprocesador, una memoria FLASH o una EPROM ...

Para generar un fichero .hex no hace falta ni un compilador, ni un ensamblador ni nada mas que un editor de texto estilo notepad, vi o emacs. Escribes qué byte quieres en que address siguiendo la norma .hex, guardas y ya lo tienes.

Los programas del estilo de ICProg o WinPic800 "saben" abrir un fichero de texto .hex y enviar al PIC o a la   memoria EPROM su contenido dependiendo de quien sea su receptor diciéndolo qué byte tiene que ir en qué dirección.

Una de las infinitas formas posibles de escribir un .hex es escribir un source en idioma ensamblador y diciéndole a un programa ensamblador que lo traduzca a .hex: su contenido será en este caso una serie de bytes que serán la traducción correspondiente de tu source a un programa ejecutable.

Otra forma es hacer lo mismo pero escribiendo un source en idioma C y diciéndole a un programa compilador de C que lo traduzca igualmente. Su contenido también será en este segundo caso una serie de bytes que serán la traducción correspondiente de tu source en C a un programa ejecutable, que podemos llegar a conseguir que sea idéntico al anterior.

Partiendo de dos sources distintos puedes obtener el mismo .hex que a su vez representa el mismo programa. El que el segundo utilice como paso intermedio un fuente en ensamblador es indiferente, puede ser o no.

Estos bytes generados no son ensamblador. Son código máquina puro y duro. Especiales y particulares para cada tipo de procesador. Al igual que distintos compiladores de C, distintos ensambladores pueden generar el mismo código máquina.

Cuando hacemos ingeniería inversa lo que hacemos es procesar al revés el contenido de un fichero .hex traduciendo los bytes en su posición a los nemónicos, direcciones y registros que escribiríamos en un source ensamblador sin utilizar ningún tipo de instrucciones de pre-procesado. Es lo que conocemos como desensamblar o usar un desensamblador.

Cada byte de instrucción es exactamente traducido por un nemonico de ensamblador, cada dirección es exactamente una dirección no una etiqueta ni una variable. Como dice Maunix hay una relación directa, exacta y univoca entre cada byte de instrucción y su nemonico correspondiente.

De todas formas el desensamblado de un .hex genera un fuente ensamblador que es muy difícil de leer y mas aún de interpretar correctamente. Lo se por experiencia directa.

Y un compilador es infinitamente mas complejo que un ensamblador, con instrucciones de control de flujo anidadas, enlazadas, supeditadas o excluyentes. Con estructuras de datos complejas, superpuestas o compartidas. Con sentencias distintas que son en realidad sucesivas acumulaciones de otras mas sencillas ...   o acaso ¿no es lo mismo un While que un For? y ¿ambos no son mas que If complejos?.

.... hacer ingeniería inversa para obtener su fuente en C es una verdadera locura. Un único progama máquina debe generar un único código ensamblador o algunas docenas de miles de códigos C, dependiendo de cómo interprete o implemente tal o cual bloque de instrucciones el creador de "descompilador".

El creador de un desensamblador solo tiene un camino, el del descompilador los tiene todos y todos ellos abiertos al mismo tiempo.

De ahí que hacia atrás solo se llegue hasta el ensamblador. Antes que ir mas arriba es preferible dedicarse a otra cosa.

Ea, mas novelas para no dormir.  :mrgreen:
« Última modificación: 06 de Octubre de 2007, 09:04:15 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Ventajas y desventajas de los compiladores
« Respuesta #29 en: 06 de Octubre de 2007, 08:24:11 »
a ver si puedo exponer en pocas palabras
Te perdiste varios episodios de Barrio Sésamo