Autor
|
Tema: De quien deriva C++? (Leído 6,982 veces)
|
x64core
Desconectado
Mensajes: 1.908
|
hola! me hice esa pregunta... de quien deriva el lenguaje C/C++ ? pues porque pensando si fuera de ASM... como es que un programa de C++ es portable y se puede ejecutar en cualquier computadora... y ASM se programa para un tipo de microprocesador... ¿?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
estoy algo cansado de leer x3 y mas en ingles pero gracias EI me lo leere mas tarde GIYF.
|
|
|
En línea
|
|
|
|
farresito
Desconectado
Mensajes: 302
|
Deriva de B, pero esta programado desde 0. Es portable porque se han hecho compiladores de C para cada arquitectura y como es compatible, se puede compilar en cualquiera. El backend de C es ASM. (cada compilador hay que programarlo desde 0, pues son arquitecturas diferentes)
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
pues si eso me puse a pensar, que C debe tener varios compiladores para distintas arquitecturas, pero eso es a la hora del compilado y a la hora la ejecucion... si se compilo con uno de esos tantos compiladores que tiene C entonces seria lo mismo porque los programas de C se ejecutan en todas las PCs no tendria porque tener varios compiladores para diferentes arquitecturas y usa cosa... si es de otro lenguaje de alto nivel ( por lo que veo acerca de B ) ese lenguaje de quien deriva? osea todo deriva del lenguaje maquina... y el mas cercano es asm... osea todos derivan al final de asm...? pero entonces si fuese asi como es que el propio asm no es portable y sus derivaciones si
|
|
|
En línea
|
|
|
|
farresito
Desconectado
Mensajes: 302
|
El proceso de compilado significa pasar de un lenguaje más comprensible para nosotros a lenguaje binario. Por lo tanto, cuando tu compilas, solo compilas para una arquitectura. Si quieres ejecutar en otra arquitectura, necesitas compilarlo otra vez en el compilador adecuado para tal arquitectura. Es portable porque no tienes que reescribir el código otra vez, solo compilarlo (a veces tienes que cambiar ciertas cosas, pero generalmente, poco).
Te confundes un poco con lo de derivado. C viene INFLUENCIADO de B, pero está reescrito otra vez. Yo si quiero puedo crear un lenguaje ahora mismo que no derive de ningún otro. Influenciado quiere decir que tiene ideas del lenguaje B pero no está copiado. Se usa el ensamblador para programarlo. El ensamblador no deriva del lenguaje máquina, ES EL LENGUAJE MÁQUINA. Solo que de modo que lo podamos entender. Si el procesador entiende 0001 1001 1010 0010, y para el procesador esto quiere decir sumar, nosotros representamos estos unos y zeros con una palabra, como por ejemplo, ADD. Y el ensamblador, cuando tu escribes la palabra ADD lo pasa a los zeros y unos.
El ensamblador no es portable porque cada procesador entiende los unos y zeros de distinto modo. 0001 1001 1010 0010 puede ser entendido por un procesador de la arquitectura x86 como ADD, pero por uno de la arquitectura ARM como MUL (multiplicar), por ejemplo. Cada compilador de C lo pasa a un ensamblador distinto, uno para cada arquitectura distinta, y este ensamblador, a la vez, lo convierte en binario.
Si tu compilases un programa en C para arquitectura x86, el compilador lo pasaría a ensamblador y, este, a binario. Entonces, el procesador x86 lo entendería. Pero si este programa lo ejecutaras en ARM, el código binario de antes no lo entendería, ya que los zeros y unos son entendidos de diferente manera. 0001 1001 1010 0010 lo puede entender de otro modo y no funcionaría (de hecho, es un ejemplo, ni tan solo es así, solo para que te hagas una idea.
Un abrazo!
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
bueno como dices tu que al compilar un programa de C este se "convierte".... bien lo de ARM no se la verdad acerca de eso... me imagino que asi es como dices tu... eso significa que nisiquiera el lenguaje C es portable 100% en cualquier maquina... y mas que todo a lo portable me referia más a que un programa en ensamblador para arquitectura x86 no puede ser ejecutado en un procesador 8086... en cambio un programa de C si, no...
|
|
|
En línea
|
|
|
|
farresito
Desconectado
Mensajes: 302
|
Un procesador 8086 es un x86. Es lo mismo, solo que un poco mas antiguo. Todo programa es portado si tiene compilador para tal arquitectura. Java es portable porque han hecho un compilador para todas las arquitecturas. Si ahora yo me invento una arquitectura, nada me va a funcionar, lo tengo que crear yo. Un compilador de C, un ensamblador...
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
perdon me referia a la arquitectura 80386,80486,pentium, superiores. un programa hecho en ensamblador para esas arquitecturas no "corre" en un 8086 en cambio un programa de C/C++ si puede correr en todas esas arquitecturas
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Tenes que RECOMPILAR para que un programa en C/C++ corra en diferentes plataformas, ahi esta la diferencia, en assembly tenes que escribirlo de nuevo con el juego de instrucciones y los detalles del microprocesador ...
PD. Y no, un mismo binario de C/C++ de 32 bits no corre ni en pedo en un 8086.
PD2. Java es portable por tener una MAQUINA VIRTUAL en cada plataforma, el binario es uno solo, no hay que recompilar.
|
|
« Última modificación: 7 Diciembre 2011, 10:49 am por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Estoy a la deriva.. SUPLICO AYUDA!!! No se ni cual es mi problema!!
.NET (C#, VB.NET, ASP)
|
Skeletron
|
6
|
5,658
|
16 Noviembre 2009, 05:35 am
por Skeletron
|
|
|
¿Quién es quién? Androides Geminoid frente a sus modelos humanos
Noticias
|
KarlosVid(ÊÇ)
|
0
|
2,197
|
8 Abril 2011, 08:05 am
por KarlosVid(ÊÇ)
|
|
|
Elserver.com deja a la deriva cientos de webs argentinas
Noticias
|
wolfbcn
|
0
|
2,790
|
15 Junio 2011, 12:47 pm
por wolfbcn
|
|
|
El barco de The Pirate Bay sigue a la deriva buscando un dominio
Noticias
|
wolfbcn
|
1
|
1,537
|
18 Diciembre 2013, 18:18 pm
por WHK
|
|
|
'Watch Dogs', o la deriva más oscura de la tecnología
Noticias
|
wolfbcn
|
0
|
1,347
|
28 Mayo 2014, 02:08 am
por wolfbcn
|
|