Autor Tema: ¿Él ensamblador está obsoleto?  (Leído 4619 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado automát

  • PIC10
  • *
  • Mensajes: 2
¿Él ensamblador está obsoleto?
« en: 19 de Mayo de 2017, 11:37:57 »
Hola soy nuevo en la programación de micrcontoladores ( no he tenido mucha practica) pero estoy tratando de retomar la programación y me gustaria saber si entre el lenguaje ensamblador y el lenguaje C cual es más eficiente. Porque tengo miedo de aprender ensamblador y que este sea obsoleto como el basic.

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:¿Él ensamblador está obsoleto?
« Respuesta #1 en: 19 de Mayo de 2017, 11:47:15 »
Bueno... este es un dilema de no terminar... Hay férreos defensores de C y de Assembler por igual.

Personalmente, en micros de 8 y 16 bits me gusta escribir en assembler. Esto me permite una comprensión profunda de la arquitectura interna del micro. Eso si.. toma tiempo.
Luego, si el proyecto se torna complejo, migro a C. Este proceso es definitivamente mas rápido y simple para mi(luego de haber aprendido el assembler).

En micro de 32 bits aún no me animé al assembler, pero me gustaría probar.

Pienso que el camino ideal a seguir es empezar algunos programas con assembler para comprender al micro, y luego, pasar a C.

Es solo una opinión, sobre esto encontrarás muchas opiniones. Tendrás que encontrar lo que te resulte mas cómodo
Saludos!

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:¿Él ensamblador está obsoleto?
« Respuesta #2 en: 19 de Mayo de 2017, 11:48:10 »
Que tal automát,

Mi recomendación es que aprendas ambos (C y ensamblador). Aunque lo más usado hoy en día es C. Sin embargo, basic no esta obsoleto para nada. Existen varios desarrolladores de Basic para microcontroladores PIC y AVR, tales como PBP, Proton, Mikroe, Bascom, etc. Así que yo no diría que es obsoleto.


elreypic.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Él ensamblador está obsoleto?
« Respuesta #3 en: 19 de Mayo de 2017, 14:16:13 »
Eficiente en que sentido?

Eficiente en terminos de potencia de procesamiento : Assembler
Eficiente en tiempos de desarrollo de un proyecto : Lenguajes de alto nivel, sea C, C++ , Basic o el que sea.

ASM ayuda a aprender como es que funciona el microcontrolador y es util para:
- Micros muy pequeños donde no podes darte el lujo de perder espacio para el manejo de C
- Control de tiempos de manera mucho mas exacta
- A veces hacer algunas operaciones de alguna forma que implique menos instrucciones que una en C.

Luego tenes todos los otros idiomas de alto nivel, C, C++, Basic, hay otros lenguajes mas pero estos son los mas "conocidos".
El problema esta en que la mayoria de los fabricantes que proveen los IDE y compiladores, lo hacen en C o C++, por lo tanto pienso que BASIC no seria obsoleto, pero implicaria aprender 2 lenguajes si es que pensas hacer otra cosa con algun otro micro, en cambio si aprendes C te sirve para cualqueir marca de microcontrolador.

Mi recomendacion es la misma que te dio elreypic2.

Para micros de 8 bits: ASM y C, a pesar que siempre uses C. Pero te va a llevar a una idea de como es que se maneja C y como se maneja los microcontroladores.
Para micros de 16 bits en adelante. Puro C, ASM puede servir en casos MUY puntuales ( instrucciones DSP de los dsPIC por ejemplo) pero que no valen la pena.

micros de 16 y 32 bits es lindo aprender ASM en el sentido de aprender como es que se maneja el microcontrolador internamente ya que suelen ser arquitecturas muy distintas. Pero diria que  siempre vas a programar en C.

Lo bueno de C es que los codigos si estan bien realizados los podes usar en cualquier micro.
Lo malo de ASM es que es distinto para cada familia de micro, por lo cual no son portables. Suponete que estas trabajando en un PIC16 en ASM y luego cambias a un PIC18. La memoria no es igual por lo tanto vas a tener que modificar algunas lineas. Si pasas a un PIC24 o dsPIC ( que son de 16bits ) ya hasta las instrucciones y la forma de hacer el ASM es totalmente distinto. Y ni contar si pasamos a un MIPS o ARM de 32bits.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:¿Él ensamblador está obsoleto?
« Respuesta #4 en: 19 de Mayo de 2017, 15:42:33 »
Yo programo en c con alguna parte en ensamblador.

Mi consejo: olvídate del ensamblador y programa en C.
Cuando tengas suficiente experiencia y algún problema muy especial, puedes hacer alguna parte muy concreta de un programa con unas pocas instrucciones en ensamblador (como mucho 5 ó 6 intrucciones). El resto todo en C

Los sistemas operativos se programan de esa forma, desde al Windows hasta el Linux (base de Android) ¿Qué más quieres?

No te dejes engañar por los cantos de sirena que dicen que ASM es más eficiente. Es muy difícil que puedas ser más eficiente en asm que en C. Tienes que ser un verdadero experto y dedicar mucho tiempo a optimizar el algoritmo en ASM para que al final puedas arañar al C unos pocos bytes (que hoy en día están tirados de precio) o unos pocos microsegundos (la potencia de procesamiento también está tirada de precio). Con lo cual, justificar el trabajo extra es bastante difícil.
Hace mucho tiempo que no hace falta exprimirle todo el jugo a los micros. Compras uno de nueva generación con más memoria, más potente,  que además es más barato y listo.

Para mí el ASM está completamente obsoleto. Pero sigue siendo imprescindible para realizar ciertas tareas especiales muy cercanas a la máquina que no puede realizar el C (son muy pocas).

Saludos.
« Última modificación: 19 de Mayo de 2017, 15:45:24 por Picuino »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2976
Re:¿Él ensamblador está obsoleto?
« Respuesta #5 en: 19 de Mayo de 2017, 15:54:53 »
Yo opino como picuino, pienso que la mejor función que tiene el ensamblador (en el presente) es como aprendizaje, ya que te ayuda a comprender mejor el comportamiento de los micros.

Una vez los comprendas, olvidate del ensamblador y usa C. Obviamente seguirá siendo imprescindible en alguna tarea, pero cada vez menos.

un saludo.
« Última modificación: 19 de Mayo de 2017, 15:59:57 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re:¿Él ensamblador está obsoleto?
« Respuesta #6 en: 19 de Mayo de 2017, 16:20:09 »
Supongo que cualquier compilador de C va a generar mejor código de ensamblador que el 93.22% de los humanos, así que yo miraría programar en C, y ensamblador para hacer cosas muy concretas y a un nivel ya más alto. Probablemente con C solo puedes hacer el 99.79% de las cosas que necesitas y sin tener que conocer el ensamblador de la arquitectura.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:¿Él ensamblador está obsoleto?
« Respuesta #7 en: 19 de Mayo de 2017, 16:32:01 »
El C lo inventaron para ser más productivos a la hora de portar el Unix.
En aquella época (Unix 1969) el ordenador al que querían portar Unix tenía 9kB de forma estandar (era un PDP-7).
Hoy en día casi cualquier microcontrolador tiene esa memoria y tú no vas a crear un sistema operativo Unix para él. Así que el C debería ser suficiente para tí en la mayoría de las ocasiones.

PD: Microchip tiene unos compiladores que te generan más basura que código útil a no ser que pagues una millonada. Consejo para evitarlo, pásate a Atmel  ;-)

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:¿Él ensamblador está obsoleto?
« Respuesta #8 en: 19 de Mayo de 2017, 16:44:18 »
.

El tiempo del ensamblador pasó, tuvo su momento cuando los micros eran caros, lentos y tenían poca memoria de programa, hace como 15 años o más. Hoy en día carece de sentido, es complejo, con nula portabilidad y vas a perder mucho más tiempo en el desarrollo que usando un lenguaje de alto nivel.

El ensamblador solo está justificado si necesitas un control de tiempos muy preciso. Con micros actuales solo tengo una aplicación en ensamblador para emular un microprocesador de los años 70 en un PIC18, también he visto algo de ensamblador en rutinas para controlar Leds digitales a un hilo (aunque se puede evitar usando DMA).

El Basic igual que todo el montón de lenguajes de programación que han habido a lo largo de los años, ha caído en desuso. El mejor lenguaje de programación, el más usado y portable es el C/C++, si lo aprendes te puedes pasar de una plataforma a otra sin traumas, cualquier código que desarrolles para un microcontrolador, lo puedes llevar a otro con pequeños cambios. También uso C++ para programar en PC, Raspberry y Tablets/Móviles.

Tampoco te dejes embaucar por "lenguajes" basados en organigramas y todas esas zarandajas visuales, su portabilidad es NULA, nada de lo que aprendas en esos entornos te va a servir para trabajar con otros micros, plataformas o fabricantes.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:¿Él ensamblador está obsoleto?
« Respuesta #9 en: 19 de Mayo de 2017, 17:00:20 »
Estoy de acuerdo con vuestros comentarios: a dia de hoy el ensamblador no está justificado por el precio de la memoria no volátil ni por la eficiencia del micro (es complejo ser más eficiente que GCC :P) a no ser que se trate de motores gráficos etc. Sin embargo creo que está bien entenderlo: de esa forma entiendes como funciona un micro por dentro. Yo me gané mi única matricula de honor en la uni programando PIC16F en ensamblador y gracias a eso sigo recordando, "más o menos", como funcionan los PIC por dentro...
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2976
Re:¿Él ensamblador está obsoleto?
« Respuesta #10 en: 19 de Mayo de 2017, 17:22:27 »
Estoy de acuerdo con vuestros comentarios: a dia de hoy el ensamblador no está justificado por el precio de la memoria no volátil ni por la eficiencia del micro (es complejo ser más eficiente que GCC :P) a no ser que se trate de motores gráficos etc. Sin embargo creo que está bien entenderlo: de esa forma entiendes como funciona un micro por dentro. Yo me gané mi única matricula de honor en la uni programando PIC16F en ensamblador y gracias a eso sigo recordando, "más o menos", como funcionan los PIC por dentro...

Yo programaba en la uni un motorola 68000 en ensamblador a pelo  :D :D :D tenia mas años que yo el micro.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re:¿Él ensamblador está obsoleto?
« Respuesta #11 en: 19 de Mayo de 2017, 17:41:36 »
Yo creo que la palabra "obsoleto" no aplica al lenguaje ensamblador... Sería como decir que por tener un auto TESLA con autopilot es obsoleto saber de mecánica básica...

Estoy de acuerdo en lo qué mencionan muchos comentarios, es muy útil saber ensamblador para tener las nociones básicas de qué hace el micro y si quieres programarlo en C, pero sabiendo qué pasa bajo el capó del micro.

Si te fijas bien en los temas del foro, muchas, pero muchísimas preguntas del uso de PICS (usando C) van relacionadas a cuestiones básicas del micro como manejo de los ADCs, inicialización de los fusibles, configuración de los TIMERS etc...

Muchas de esas preguntas tienen una respuesta muy obvia cuando se conoce la estructura del micro o  se sabe como hacer esas partes en ASM, pues te obliga a conocer los registros y como se configuran, pero al NO saber ASM hace que muchos que usan C sin saber ASM se atoren seguido en esas partes.

En especial no tengo nada en contra del lenguaje C, salvo por los compiladores, es ahí en donde cojea el asunto.

Resulta qué a pesar de que C se escribe igual, NO se compila IGUAL en todos los compiladores...

En los compiladores de C de microchip, resulta que los qué son gratis, generan mucho código basura, y los que son eficientes, son de paga. (Pienso qué es muy injusto porque abusan del usuario qué va a usar sus micros, obligandolo a pagar por optimizar y ser eficiente).

El compilador C de CSS, en lo personal considero qué es una BASURA... En cada versión cuando arreglan algo, descomponen otra cosa, incluso, un mismo proyecto compilado con versiones distintas de CSS te puede dar problemas qué antes no tenías!

Así qué depende mucho de que es lo qué vayas a programar o tengas pensado usar el micro...

A nivel de hobbista, usa lo que más te acomode, aunque es recomendable saber ASM primero y luego C

A nivel PROFESIONAL, la cosa es distinta, pues deberás evaluar cual lenguaje o qué compilador te conviene más y permita generar productos o diseños libres de errores.

Saludos

Desconectado automát

  • PIC10
  • *
  • Mensajes: 2
Re:¿Él ensamblador está obsoleto?
« Respuesta #12 en: 22 de Mayo de 2017, 17:50:23 »
Muchas gracias a todos, por sus opiniones. Viendo sus respustas a mi pregunta ya decidí el camino que voy a seguir; primero estudiaré ASM y luego C. Un saludo desde Cuba. ((:-))

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:¿Él ensamblador está obsoleto?
« Respuesta #13 en: 22 de Mayo de 2017, 18:12:36 »
Vaya. Creo que no he sido suficientemente claro.
Por mi parte el consejo es: aprende c, olvida el assembler.

Si haces lo contrario, mucho ánimo y no flaquees.

Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re:¿Él ensamblador está obsoleto?
« Respuesta #14 en: 23 de Mayo de 2017, 02:09:29 »
Muchas gracias a todos, por sus opiniones. Viendo sus respustas a mi pregunta ya decidí el camino que voy a seguir; primero estudiaré ASM y luego C. Un saludo desde Cuba. ((:-))

Si aún estás a tiempo de replantearte esta decisión, empieza por C. Mucha suerte


 

anything