¿Qué quiere decir "...permite al programador abstraerse de la capa hardware"?

Iniciado por theluigy13etv, 13 Marzo 2012, 20:50 PM

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

theluigy13etv

CitarEl lenguaje C es fruto de un lenguaje de programación anterior, el lenguaje B, desarrollado por Ken Thompson, en los Laboratorios Bell en 1970, con la idea de recodificar el sistema operativo UNIX que, hasta esa fecha, se programaba directamente en ensamblador, con el inconveniente de estar vinculado a máquinas concretas (según el juego de instrucciones de cada máquina). Por tanto, se hacía necesario un lenguaje que permitiese al programador abstraerse de la capa hardware y conseguir una mayor portabilidad del código, algo que se realizó en B (basándose en el BCPL de Martin Richard de 1967).

Siempre, en todos los textos que traten acerca del lenguaje C, encuentro que hacen referencias al lenguaje ensamblador, y de que el lenguaje ensamblador depende de la máquina. ¿Por qué depende de la máquina?...Además que el lenguaje C es portable. ¿Alguien que explique un poco más esto?

nirvguy

Porque cuando usas assembler utilizas las instrucciones de la arquitectura en la que estás, aunque hay estandares (desde el 8086, si no me equivoco, antes lo que programabas era solo para tu maquina porque todas las arquitecturas eran diferentes). Hablo de arquitectura tanto como hardware (instrucciones que solo sirven en tu micro, si es que las usas), como de plataforma (16, 32,  64 bits, no es lo mismo redireccionar con 16 bits, que con 32, que con 64), asi como tambien de sist op, cada sist operativo tiene sus interrupciones a nivel de software y en cada uno es diferente, por ejemplo para imprimir la pantalla en linux utilizas 0x21 y en windows 0x80. En cambio C es mas portable porque no se vale de esas caracteristicas especificas. Es decir, en C, si compilas un programa que imprime en pantalla, si lo haces en Linux, por ejemplo, gcc usara la interrupcion 0x21. Por otra parte si lo compilas en windows, MinGW usara la interrupcion (0x80, como te habia dicho). Ademas C tiene un sistema de macros que te permite especificar que codigo va para tal sist op, para tal arquitectura, o para 32 o 64 bits. Pero igual todo lenguaje no interpretado termina en codigo máquina.
Espero haberte ayudado y que alguien me corriga si me equivoco.
Todas mis letras han sido pedazos de poesía y los pedazos de poesía se toman de poemas que comúnmente no tienen sentido
en primer termino.
               Kurt Cobain

Eternal Idol

Windows 0x21 y Linux 0x80, igual hace largo rato que Windows usa sysenter/syscall.

theluigy13etv: http://en.wikipedia.org/wiki/Assembly_language
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