🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #26033

Re: La supuesta portabilidad de C.

#26033
From: Jonathan Revusky
Date: Sun, 07 Feb 1999 00:00
109 lines
6580 bytes

Guillermo Rodriguez Garcia wrote:

> >Te explico. Estoy diferenciando una realidad te�rica de una realidad
> >pr�ctica. La portabilidad de c�digo C es una realidad te�rica en la
> >mayor�a de casos.
> 
> Entiendo la met�fora, lo que no s� a qu� viene es el empecinamiento en
> demostrar que el C no es portable. C puede ser tan portable como Java.

> S� que hay una diferencia principal, y es que las librer�as est�ndar
> de Java son mucho m�s completas que las de C. Por eso un programa en
> Java puede tener GUIs utilizando s�lo librer�as est�ndar, mientras que
> en C no es as�... (pero esto no significa que no se pueda hacer de
> forma portable. 

Hay una diferencia b�sica. En C, tienes que saber por adelantado en qu�
plataformas quieres que el c�digo corra y escoger las librer�as en
funci�n de eso. Eso representa una diferencia enorme a nivel pr�ctico
con lo que ocurre con Java. Imag�nate el escenario siguiente: IBM saca
un nuevo super servidor -- o digamos, dentro de un par de a�os, alguna
peque�a empresa nueva inventa una m�quina con una arquitectura novedosa
con un rendimiento que antes era impensable. El programa que t� escribes
AHORA correr� en esa m�quina si hay una implementaci�n de Java para esa
plataforma (y lo habr�.) Es decir, Java tiene portabilidad en el sentido
de que puedes desarrollar PARA UNA MAQUINA CUYA EXISTENCIA DESCONOCES EN
ESE MOMENTO. Es realmente portabilidad en otro sentido.

> Simplemente utiliza una librer�a adecuada, como por
> ejemplo V), pero no es un problema de que el *lenguaje* sea m�s o
> menos portable, sino de las librer�as.

Las librer�as son un elemento de la rompecabezas. No obstante, no es el
�nico elemento. Hasta el lenguaje Java es intr�nsecamente m�s portable
que el lenguaje C. Como Juan Antonio indic�, la sem�ntica de Java se
expresa en t�rminos de una m�quina virtual. Un programa v�lido en Java
se reduce a una serie de instrucciones para esa m�quina *virtual*, que
es una abstracci�n de una m�quina real. Bueno, eso quer�a matizar en un
cierto momento, ya que por supuesto el C tambi�n incorpora una
abstracci�n de la m�quina real. Cualquier lenguaje menos ensamblador,
pens�ndolo. No obstante, hay una gran diferencia. En Java toda la
sem�ntica de esas instrucciones (de hecho, uf, algunos matices me vienen
en mente...pero bueno) est� definida de una manera independiente de la
m�quina real.

A diferencia de eso, en el coraz�n mismo de C, hay una sintaxis de
punteros y aritm�tica de punteros sin restricciones -- y la sem�ntica de
los punteros es necesariamente distinta para cada m�quina ya que depende
sutilmente (y a veces no tan sutilmente) del modelo de memoria de cada
SO y procesador. Para m�, eso ser�a un motivo inescapable para tener que
concluir que C no es intr�nsecamente portable en el mismo sentido que
Java. 

Otro motivo importante por el cual C es intr�nsecamente no portable --
por lo menos compar�ndolo con Java -- es que Java lleva incorporado en
el lenguaje mismo una sem�ntica de programaci�n multitarea. Ya que los
programas no triviales hoy d�a tienden a ser multitarea, eso representa
una gran limitaci�n de la portabilidad de C, una limitaci�n superada
claramente por Java.

 
> Por otra parte, he visto que le contestabas a Enrique que en C hay que
> recompilar para cada m�quina, mientras que en Java tienes lo que has
> llamado "un �nico binario ejecutable". Eso es simplemente porque Java
> normalmente es int�rpretado (dentro de esta categor�a incluyo los
> compiladores JIT) 

�C�mo dices? Guillermo, para que lo sepas. Los compiladores JIT compilan
de verdad. Generan instrucciones de m�quina. La compilaci�n JIT ocurre
la primera vez que una clase se carga en memoria. Y se ejecuta c�digo
compilado comparable en eficacia con el c�digo generado por compiladores
de otros lenguajes.

> y C compilado, pero sigue sin ser una caracter�stica
> esencial del lenguaje, m�s bien del entorno.
 
> A pesar de todo, nunca he tenido problema en reconocer que Java es m�s
> portable que C. 

Si t� lo dices. :-)

> Pero eso no significa que la portabilidad de C sea
> "pura teor�a" como t� dices.

Mira, yo apostar�a que todas las empresas principales de Software --
IBM, Microsoft, Adobe, Corel, etcetera -- tienen grupos enteros de
trabajo donde la gente no hace m�s que portar c�digo. Apostar�a tambi�n
que la mayor�a de ese c�digo fue escrito en C -- on en C++, pero
t�picamente en un C++ bastante cerca del C. Una situaci�n as� es
simplemente inconcebible con Java, departamentos enteros dedicados a
portar c�digo Java. �Por qu�? �Porque Java, a diferencia de C, es
portable de verdad!

Para m�, la portabilidad de C es algo te�rico. Puedes afirmar que ANSI C
es portable pero tienes que condicionar y matizar la afirmaci�n hasta
tal punto que, al fin y al cabo, no tiene mucho significado.

Cierro este mensaje aqu�, porque todo esto se vuelve largo y quiz�
conteste al resto por separado cuando tenga un momento.

Saludos,

Jonathan Revusky
-- 
Java and Delphi Consulting
Make your .class files double-clickable
with SmartJ
http://www.bigfoot.com/~crystalline.solutions
Technical Details
Message-ID: <36BD8DBF.43818422@jet.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <01be2d1e$9894a5e0$e6164cc3@default> <75ntf6$vgl$1@news.udl.net> <01be2f3f$b70425a0$65164cc3@default> <3685c875.1606618@noticias.iies.es> <3686AEA6.95121EF7@jet.es> <36895642.1240659@noticias.iies.es> <3695DAA5.554C94F2@ibm.net> <3698a74d.1128294@noticias.iies.es> <36A384E0.4EC6BEC@jet.es> <36a59e89.1856809@noticias.iies.es> <36A50AD4.FC2F8B7A@jet.es> <36a8acca.4654561@noticias.iies.es> <36ACA760.8FD40701@jet.es> <36b4aa0e.4641133@noticias.iies.es> <36B22A44.44F9B181@jet.es> <36bc4728.97809@noticias.iies.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,4e17c3721247235e
X-Google-Attributes: gid1116f3,public
From: Jonathan Revusky <jrevusky@jet.es>
Subject: Re: La supuesta portabilidad de C.
Date: 1999/02/07
Message-ID: <36BD8DBF.43818422@jet.es>
X-Deja-AN: 441657621
Content-Transfer-Encoding: 8bit
References: <01be2d1e$9894a5e0$e6164cc3@default> <75ntf6$vgl$1@news.udl.net> <01be2f3f$b70425a0$65164cc3@default> <3685c875.1606618@noticias.iies.es> <3686AEA6.95121EF7@jet.es> <36895642.1240659@noticias.iies.es> <3695DAA5.554C94F2@ibm.net> <3698a74d.1128294@noticias.iies.es> <36A384E0.4EC6BEC@jet.es> <36a59e89.1856809@noticias.iies.es> <36A50AD4.FC2F8B7A@jet.es> <36a8acca.4654561@noticias.iies.es> <36ACA760.8FD40701@jet.es> <36b4aa0e.4641133@noticias.iies.es> <36B22A44.44F9B181@jet.es> <36bc4728.97809@noticias.iies.es>
X-Accept-Language: en
Content-Type: text/plain; charset=iso-8859-1
X-Complaints-To: usenet@lola.ctv.es
X-Trace: lola.ctv.es 918392390 6652 195.55.161.212 (7 Feb 1999 12:59:50 GMT)
Organization: CTV/JET
Mime-Version: 1.0
Reply-To: jrevusky@bigfoot.com
NNTP-Posting-Date: 7 Feb 1999 12:59:50 GMT
Newsgroups: es.comp.lenguajes.java