Pregunta

Mis objetivos se centran en el desarrollo de aplicaciones de software y tal vez en el desarrollo de aplicaciones web, pero probablemente en aplicaciones de escritorio.Me estoy embarcando en un camino para familiarizarme más con C/C++, pero ¿debería ir mucho más allá, hacia el ensamblaje?¿O no tendría beneficio para mis objetivos a largo plazo?

¿Fue útil?

Solución

Probablemente no obtendrá muchos beneficios a menos que tenga una aplicación directa.Si busca conocimientos generales, C/C++ es un buen lugar para comenzar.

Dicho esto, los desafíos que plantea el montaje son muy interesantes y requiere una mentalidad bastante diferente para hacer las cosas.

Pasé un poco de tiempo aprendiendo el ensamblaje del Z80 programando el TI-86 calculadora.El conjunto de instrucciones de la Z80 es bastante reducido y la novedad de programar una calculadora en ensamblador resulta muy divertida.

ticalc.org tiene muchos buenos recursos en Programación de ensamblaje TI.

Otros consejos

Estoy realmente sorprendido de ver tantas respuestas "no" a esta pregunta.creo que usted debería aprender montaje.

No espero que alguna vez lo hagas usar montaje directamente como parte de su trabajo.Pero de ello no se sigue que no debas aprenderlo.

El ensamblaje de aprendizaje le enseñará lo que sucede dentro de la computadora.Le ayudará a comprender qué está haciendo realmente el software.

Realmente se trata de profesionalismo.¿Vas a ser un ingeniero de software profesional?¿O vas a ser un truco de copiar y pegar?Claro, este último puede pagar las cuentas, pero ser un profesional es mucho más satisfactorio.

Escuchar a alguien decir: "No, no te molestes en aprender a ensamblar", suena en mis oídos como "Aquí está el libro de cocina para construir puentes".No necesitas aprender sobre física o ingeniería para construir un puente.Sólo sigue estas recetas." No, gracias.

Buen día,

Aprendí ensamblador de PDP cuando hice mi Elect.Ing.Licenciatura a finales de los años 70.El último dialecto de ensamblador que realmente utilicé tenía cuatro modos diferentes de direccionamiento de memoria.¡El último dialecto que vi tenía 17 modos!

No estoy seguro de lo que realmente te ofrece aprender ensamblador hoy en día.En aquel entonces era una parte esencial de una corriente de CS en mis elegidos.ing.grado.

En cuanto a aprender C++, simplemente me sentaría y trabajaría "C++ acelerado" que se acerca a C++ por derecho propio y no como "C con otros bits".

En cuanto a C, simplemente trabajaría con la última versión de "Lenguaje de programación C" (también conocido como) K'n'R

Espero que esto ayude.

Saludos, Rob

Ahora, si hubieras preguntado sobre la nanoprogramación...(-:

"¿Vale la pena aprender un dialecto de asamblea?"

He programado el montaje profesionalmente.M68k ejecutando una máquina de fax y un escáner.También Windows VxD (controladores de dispositivos virtuales) en Windows 3/3.1 días antes de que tuvieran un kernel real.

Cuando codificas un ensamblador para realizar tareas ordinarias de software (copiar memoria, concatenar cadenas, llamar a controladores de interrupciones, etc.), es algo interesante.A veces, codifica el ensamblador para que lo llame el código C para realizar alguna tarea especializada lo más rápido posible en un procesador determinado.Eso puede ser más interesante porque buscas formas de aprovechar cada ciclo que te brinda el procesador.A usted le importa lo que hay en la caché L1 del procesador.Le importa alinear los datos en la memoria para evitar aciertos en la línea de caché (si recuerdo el término).Le importa la arquitectura del procesador de canal dual y usar las 2, 3 o 4 instrucciones correctas en el orden correcto para que sucedan 2, 3 o 4 cosas con un solo tic de reloj (-uno- de esos HZ en el XgHz del procesador).

Cuando codifica un ensamblaje para controlar hardware personalizado, ahora está haciendo cosas como llenar un búfer de memoria de 16 bytes, configurar una operación DMA y enviar esos datos a un controlador que hace algo como manejar el tambor de una impresora láser.Y el tambor está girando y no se puede detener y quiere sus próximos 16 bytes dentro de los próximos 5 us.Por supuesto, eso se puede hacer en C o C++.Pero los ejemplos son infinitos.

Tal vez recortaría la última mitad de su pregunta "¿Vale la pena aprender un dialecto de ensamblaje?" Y hazlo "¿Vale la pena aprender?"

Si te encanta la programación, la forma en que defines "valor" implica algún componente del amor por la programación.En ese sentido, nunca aprendí algo de programación y no pensé que valiera la pena.Incluso si no lo usé mucho después.

En ese mismo sentido, casi diría que cuanto más difícil es aprender algo, más "vale la pena".

Pero dejando a un lado toda esa tontería, creo que vale la pena tener al menos algunos conocimientos sobre el montaje.Continúe y descubra cómo escribir el ensamblado para reemplazar algunas rutinas stdlib simples como strcpy, memmove, etc.Luego intenta optimizarlos, llamándolos desde C un millón de veces mientras lo cronometras.

No empezaría a aprender ASM.Si quieres aprender C/C++, comienza con eso.A medida que la calidad de su código madure, es posible que necesite ASM.El 99% de las veces no lo harás, pero de vez en cuando es posible que lo necesites.

Además, es útil conocer ASM en términos de comprender qué está haciendo C/C++ detrás de escena.Pero nuevamente, hasta que avance más, probablemente no lo necesitará.

Lo hice y creo que me ayudó en ese momento.Ya no me ayuda en el día a día, pero creo que dependería de tu trabajo.

Aprendí ensamblador hace 20 años en un Commodore y nuevamente en la universidad en una computadora central IBM.No puedo decir que me ayude en mi trabajo actual.

Estoy de acuerdo con Marcos.Creo que es similar a aprender MSIL cuando se escribe en C#, VB.NET u otro lenguaje .NET.Es útil saber qué sucede bajo el capó, pero podrías pasar toda tu vida creando aplicaciones que funcionen y nunca las necesites.

No.A menos que quieras hacerlo por diversión, realmente no necesitas aprender a ensamblar.

Hay algunas cosas para las que necesitas saber ensamblar, como la creación de controladores, el desarrollo del sistema operativo, el desarrollo de exploits, pero aparte de eso, personalmente creo que puedes codificar felizmente para siempre sin saberlo.

Si necesitas aprender a ensamblar, lo sabrás; yo no lo aprendería por aprenderlo.

Si está escribiendo C++ no administrado, en ocasiones resulta invaluable conocer al menos el ensamblaje básico x86, los sistemas numéricos binarios, etc.Principalmente desarrollo C/C++ y ocasionalmente necesito depurar el código de producción para detectar errores que son tan específicos de la representación del código de máquina producida por el compilador que la única manera de encontrar y luego corregir el error es leer el ensamblado descompilado. y determinar por qué el compilador lo generó como tal.

Para obtener más información sobre el montaje, consulte la pregunta: ¿Cuál es la mejor manera de aprender ensamblaje?Específicamente, para alguien que tenga experiencia en lenguajes dinámicos..

El montaje no es muy difícil.Una vez que esté familiarizado con C, dedique uno o dos días a aprender el ensamblaje básico.Su utilidad en términos de depuración es tremenda, además de ser divertido poder escribir código que supera al equivalente de C en velocidad por un factor de 10, 15 o más.

No sugeriría aprender un "lenguaje ensamblador moderno".

Sin embargo sabiendo un poco sobre MOS 6510 Ensamblador y navegación por el desmontado. C64 Kernel, también conocido comoes SO y BASIC Interpreter, me ayudó mucho a comprender lo que sucede dentro de una computadora, cosas como interrupciones y páginas de memoria.

Esto posiblemente podría ayudarlo a darle sugerencias sobre cómo escribir código optimizado en otros idiomas.Sin embargo, gran parte de eso ya lo hacen los compiladores modernos, por lo que solo lo sugeriría si está interesado en lo que sucede dentro de esa caja negra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top