Foros - Stratos

Stratos => Off-topic => Mensaje iniciado por: Sacrifai en 01 de Enero de 2006, 04:29:16 PM

Título: Libro Sobre Ensamblador
Publicado por: Sacrifai en 01 de Enero de 2006, 04:29:16 PM
 Buenas gente. Resulta que acabo de leerme el libro que me regalaron en noche buena "Aprenda C++", y me ha gustado bastante. Por eso ahora estoy buscando un libro sobre ensamblador y mas tarde buscare sobre C++ algo más avanzado o práctico. Las cuestiones son:
¿Merece la pena aprender ensamblador a esta altura?
Le echador el ojo a "Ensamblador para DOS, Linux y Windows" de la editorial Anaya. ¿ Me recomedais este libro ? ¿ Conoceis otro mejor ( en español pls XD ) ?

Y eso es todo por hoy, ¡espero respuestas!. Gracias
Título: Libro Sobre Ensamblador
Publicado por: ethernet en 01 de Enero de 2006, 06:07:43 PM
 No vas un poco rápido? Si has aprendido todo lo que dice el libro de C++ en una semana es que eres el puto amo :).

A riesgo de que me linchen , no te recomiendo bajo ningún concepto que mires ningún lenguaje por debajo de C++. Sólamente te recomiendo que mires el ensamblador como forma de entender la arquitectura de una máquina, pero nada más, a estas alturas asm es completamente inútil para programar cualquier cosa.
Título: Libro Sobre Ensamblador
Publicado por: Snakers en 01 de Enero de 2006, 06:48:48 PM
 
Cita de: "Sacrifai"...acabo de leerme el libro que me regalaron en noche buena "Aprenda C++", y me ha gustado bastante.
Para que niveles es?Estoy pensando en comprarmelo,porque lo he visto en la libreria de al lado de mi casa :D ,pero no estoy seguro...

...perdon por irme del tema... :rolleyes:
Título: Libro Sobre Ensamblador
Publicado por: fiero en 01 de Enero de 2006, 07:54:56 PM
 
Cita de: "ethernet"... a estas alturas asm es completamente inútil para programar cualquier cosa.
Hace poco leí una entrada en el blog de Enrique Dans que viene un poco al hilo de este tema http://edans.blogspot.com/2005/12/cosas-qu...-revientan.html El tio explica que compró un juguete para su hija que venia con un CD. En el CD, un simple programilla para imprimir plantillas de dibujos y poco más. Sin embargo, ese programilla tan extremadamente simple, le requería Framework .NET 1.1 y si me apuras hasta aceleradora!!!

Creo los programadores cada vez se complican menos la vida. O quizás habría que decirle al cliente de turno: "no, eso no te lo hago por menos de XXXX €" y hacer el programa en condiciones.

Para un programador de juegos creo que el asm es imprescindible. Ojo!!! no confundir con hacer un juego en ensamblador, lo que digo es que siempre puedes utilizar asm inline en C++ para acelerar algunas cosas. También hay que distinguir entre programar en ensamblador y convertir a ensamblador. Ethernet siempre dice que aunque una cosa se haga en ensamblador no irá más rápido, y tiene razón. Lo que hay que hacer es pensar en ensamblador, no convertirse en un compilador humano, y para eso hacen falta años de experiencia. Pero saber ensamblador te dá todo el control, puedes mantenerte en el nivel más alto (C++) o bajar al más bajo siempre que lo creas conveniente (asm).

Ethernet a la hoguera!!! XD

un saludo
Título: Libro Sobre Ensamblador
Publicado por: senior wapo en 01 de Enero de 2006, 09:06:36 PM
 Pues yo que llevaba años sin tocar una línea de ensamblador me estoy planteando aprender las instrucciones MMX para acelerar mis rutinas de sprites subpixel con filtro bilineal.

Es un caso muy específico, pero vaya, la diferencia de velocidad entre la implementación C++ y con MMX tiene que ser notable, así que yo no diría que ASM es inútil a dia de hoy. Simplemente, tiene su nicho.
Título: Libro Sobre Ensamblador
Publicado por: zupervaca en 01 de Enero de 2006, 09:11:04 PM
 Utilizar asm en c++ puede conllevar fallos en la optimización del compilador, si en el asm que metes utilizas los registros para algo ten seguro que fuera no lo hará, además solo hay que ver la función que hice hace unos días del MemCpy en c e iba igual de rápida que la del compilador hecha en asm.

Citarinstrucciones MMX
Yo he visto como puedes copiar bloques de memoria con instrucciones MMX y es una pasada (ole)
Título: Libro Sobre Ensamblador
Publicado por: ethernet en 01 de Enero de 2006, 09:23:44 PM
 Tomad la palabra inútil no literalmente. A efectos prácticos, asm está muchísimo más que muerto, aunque no puedo negar que para casos muy particulares puede que sea necesario e incluso recomendable.

Tampoco me voy a meter en una disputa de si asm es mejor que c++ o ese tipo de discusiones que no llevan a nada.
Título: Libro Sobre Ensamblador
Publicado por: fiero en 01 de Enero de 2006, 09:27:02 PM
 Hay cosas que estan ya optimizadas, como la función memcpy de Microsoft. Él código fuente está en la instalación de VC++. Está hecha en un fichero .asm creo recordar y tiene muchas cosas en cuenta como el numero de bytes a copiar, si la cpu tiene MMX o SSE, etc. Para ciertas cosas bastante comunes Microsoft ya ha hecho todo el trabajo.

un saludo

Edito: Para las demás plataformas (no Windows) pasará lo mismo, ciertas funciones del API están ya hechas en ensamblador "de fabrica", por eso no merece mucho la pena rehacerlas.
Título: Libro Sobre Ensamblador
Publicado por: Sacrifai en 01 de Enero de 2006, 10:26:15 PM
Cita de: "ethernet"No vas un poco rápido? Si has aprendido todo lo que dice el libro de C++ en una semana es que eres el puto amo :).
Lo soy XD. Es broma. Resulta que yo ya sabía algunas cosas de C++ y había programado en C++  :)  . Además el libro es nivel basico-medio ( para Snaker ke preguntó ). Por eso estoy buscando también un libro que me enseñe más aplicaciones y cosas más avanzadas.

Respecto a lo de que asm es inutil ¿ alguna otra opinión ? Quizás a esta altura ya no sea muy util, pero aprender asm me permitiría conocer mejor la estructura del ordenador ¿no?
Título: Libro Sobre Ensamblador
Publicado por: zupervaca en 01 de Enero de 2006, 10:34:00 PM
 Lo que mas te enseña el asm es a optimizar y a pensar las cosas antes de escribir líneas de código en c++ sin mas ya que te imaginas como quedara el código compilado. Programar en asm... buff yo hace mucho que no lo hago ya, además como ya he dicho antes puede que estropees las optimizaciones del compilador de c al usar registros u otras cosas.
Título: Libro Sobre Ensamblador
Publicado por: dracks en 01 de Enero de 2006, 11:01:02 PM
 Vamo a ver, creo que saver ASM no esta nada para mal... pero meter una linia en medio del codigo en ASM no es lo que se tenga que hacer para nada, eso si, si quieres hacer una funcion en ASM para optimizar i esto, pos, perfecto; la otra cosa es hacer como microtorrent, que esta hecho en ASM ocupa una mierda y consume de ram lo mismo... pero, claro... digamos que se devieron tirar unos cuantos segundos haciendo eso (lo de segundos es en tono ironico); vamos, una maldita matada....

Lo dicho, yo creo que es bueno saver ASM y saver programar, tampoco es mala idea... pero quien save... ;)


Suerte!
Título: Libro Sobre Ensamblador
Publicado por: ethernet en 02 de Enero de 2006, 01:44:11 AM
 Yo estoy radicalmente en contra de programar en asm, pero creo que es _muy conveniente_ saber asm (más que eso la arquitectura)de la máquina sobre la que programas para saber qué estás haciendo.  
Título: Libro Sobre Ensamblador
Publicado por: seryu en 02 de Enero de 2006, 04:40:13 AM
 
Cita de: "Sacrifai"¿Merece la pena aprender ensamblador a esta altura?
No.

Si lo que quieres es hacer juegos (lo supongo porque esto es stratos) es mejor que dediques tu tiempo a aprender DirectX, C# y sobretodo programar aplicaciones.

Si quieres saber como funciona un ordenador pues estudia teoria computacional, el asm no te va a enseñar lo que es una maquina de turing. Asm es solo un lenguaje basico para escribir programas, punto. A menos que te divierta aprender asm de un x86, de un sh, etc.. utilidad real, poca.

Sigue aprendiendo y sobretodo practicando C++. Te ira mejor.
Título: Libro Sobre Ensamblador
Publicado por: Sacrifai en 02 de Enero de 2006, 12:06:41 PM
 Vale, vale, puesto que casi todos pensáis que aprender asm a estas alturas no me va a ayudar habrá que buscar otro libro. ¿Conoceis alguno que lleve la programación de C++ de un nivel medio a uno avanzado?
Título: Libro Sobre Ensamblador
Publicado por: zupervaca en 02 de Enero de 2006, 01:36:32 PM
 Te digo uno muy viejo, no se si quiera aun existira en las tiendas o te lo podran pedir:

Titulo: Programacion orientada a objetos con C++
Escritor: Fco. Javier Ceballos
Editorial: ra-ma
ISBN: 84-7897-118-1 (con este numero deberia valerte)
Nivel: Medio-Avanzado

Este libro te enseña por encima lo que es programacion orientada a objetos y luego se pasa a c++, terminando por enseñarte a programar arboles binarios, listas, etc
Título: Libro Sobre Ensamblador
Publicado por: marcode en 02 de Enero de 2006, 01:52:52 PM
 Yo también opino que mejor que meterse en el embolado del asm, es estudiar más C++.

Si quieres velocidad también puedes mirar trucos y técnicas de optimización, yo por internet encontré bastantes aunque ya no me acuerdo donde.

Y en cuanto al libro la verdad es que a mi también me gustaría tener algo así como "La biblia del C++", donde esté TODO, en castellano ...claro.
Título: Libro Sobre Ensamblador
Publicado por: DraKKaR en 02 de Enero de 2006, 01:55:35 PM
 Yo soy de los que pensaban que el ensamblador sigue siendo útil en juegos a día de hoy. Pero no el ensamblador x86 sino el emsamblador de las GPUs, ya que es en el proceso gráfico donde un juego suele tener el cuello de botella. Un pixel shader por ejemplo,a una resolución de 1024x768 se ejecutará más de 786.432 veces cada fotograma y conviene optimizar eso al máximo. Así que pienso que puede resultarte mucho más interesante aprender como se programa una GPU abajo nivel que una CPU.

Sin embargo, ante la complejidad que están tomando los shaders y las aplicaciones gráficas actualmente, va siendo más conveniendte ir olvidandose del ensamblador en la GPU y programar directamente sobre un lenguaje de alto nivel (HLSL/GLSL/Cg).

A parte de este caso no creo que sea ni práctico nid emasiado beneficioso "perder" tiempo intentando aprender ensamblador y aplicándolo. Dentro de "poco" se vaa implantar la tecnología multicore en los procesadores (cuya tecnología ya ha tocado techo en modo mono-procesador), vease como ejemplo los nuevos AMD, las nuevas consolas,.... Así pués, estoy seguro que te va a resultar mucho más beneficioso invertir tu tiempo en aprender algorítmicamente a hacer programas bien estructurados y PARALELIZABLES, más que intentar meter líneas en ensamblador.

PD: Estoy buscando un buen libro sobre C++, pero no de aprendizaje sino al nivel mas avanzado que se pueda. No me importa qaue esté en castellano o en inglés. ¿Me recomendais alguno?
Título: Libro Sobre Ensamblador
Publicado por: Sacrifai en 02 de Enero de 2006, 02:13:23 PM
 Muchas gracias a todos por las respuestas. Buscaré el libro que me ha recomendado zupervaca  :D .
Título: Libro Sobre Ensamblador
Publicado por: Fanakito en 02 de Enero de 2006, 04:47:00 PM
 A mi para seguir con C++ me gustan los de Scott Meyers ... Effective C++ (tambien esta More Effective C++, aunque me gusta algo menos) y, sobretodo, Effective STL. Aunque quizás son algo caros para el tamaño, tienen consejos bastante interesantes. Yo los leí sacados de la biblioteca de la universidad y, desde luego, esa relación calidad precio es inigualable.

Siento que sean en inglés, pero he acabado prefiriendo leer en ingles, total, al final no queda otro remedio.  
Título: Libro Sobre Ensamblador
Publicado por: _Grey en 02 de Enero de 2006, 09:06:18 PM
 No tengo muchos libros de C++... pero me gusto bastante el "C++/como programar" de DEITEL, no es que sea para programadores "avanzados", pero tienes múltiples ejemplos de cada cosa que trate. Como punto negativo, el inicio me pareció algo "caótico", no se paran, por ejemplo, en presentarte las variables básicas del lenguaje, pero empieza prácticamente de 0. Si alguien prefiere otro, estoy abierto a nuevos libros.

Respecto al ASM, no es demasiado útil, con VC++2005, ya tienes compilación para las SSE, y raro sera que tu lo puedas hacer mas rápido a mano, que el compilador. Pero me parece acertado conocer ASM, entenderás mejor la maquina, y como funciona desde dentro.

El libro que decías de ANAYA sobre ASM, no es lo ultimo en ASM, no trataras las MMX o SSE, pero si el ASM general de los x86 y el coprocesador, del modo protegido poco. Pero me encanta que un libro de ASM empiece con un ejemplo con el debug.exe, algo tan a mano, editable en linea y en el que ves los datos en memoria al mismo tiempo que el listado, creo que es bueno para perderle un poco el "respeto" a la maquina, y ver que solo hay números, uno detrás de otro. A mi me parecería una compra interesante.

Saludos.
Título: Libro Sobre Ensamblador
Publicado por: Pogacha en 02 de Enero de 2006, 10:41:04 PM
 Opino exactamente igual que _Grey.
Pero me parece que no vale la pena gastar dinero para aprender ASM.
Bueno yo tampoco gastaria dinero para aprender C++  :P  
Título: Libro Sobre Ensamblador
Publicado por: zupervaca en 02 de Enero de 2006, 10:57:06 PM
 Hablando de no gastar un chapo en libros, pásate por aquí.
Título: Libro Sobre Ensamblador
Publicado por: Sacrifai en 02 de Enero de 2006, 11:40:46 PM
Cita de: "zupervaca"Hablando de no gastar un chapo en libros, pásate por aquí.
Personalmente prefiero leer las cosas más comodamente en la cama y más tarde aplicar lo aprendido en el ordenador. Por supuesto solo me puedo permitir un libro cada bastante tiempo.