🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: La supuesta portabilidad de C.

#26147
From: Jonathan Revusky
Date: Thu, 04 Feb 1999 00:00
102 lines
5904 bytes

"Juan A. Paz" wrote:
> 
> Guillermo Rodriguez Garcia wrote:
> 
> S�lo una cosilla...
> 
> > No hago ning�n argumento. Solo digo que el C es perfectamente portable
> > si te atienes al est�ndar, que para eso est�. El hecho de que no haya
> > miles y miles de controles y chequeos y vigilancias etc etc como los
> > hay en Java es simplemente por motivos de *velocidad*, que teniendo en
> > cuenta para qu� est� dise�ado C parece un factor bastante importante.
> 
> Hay una diferencia ESENCIAL  entre JAVA y C que claramenteproporciona portabilidad frente a velocidad. Simplemente JAVA
> corre sobre una JVM, no sobre un sistema operativo de los muchos
> que existen. Si existe una JVM para un sistema operativo y tu programa
> JAVA corre en otra cualquiera correr� sobre esta nueva plataforma
> porque la simple definici�n de la JVM impide que haya problemas
> de portabilidad.

Supongo que estamos bastante de acuerdo, aunque me gustar�a matizar un
par de puntos. S� que JAVA es mucho m�s portable que C y s� que es
porque hay una m�quina virtual. Pero bueno, una m�quina virtual no es
una m�quina real, m�s que nada es una construcci�n cognitiva. Estamos
diciendo que tenemos una abstracci�n de una verdadera m�quina -- su
sistema de ficheros, sus hilos de ejecuci�n, su gesti�n de memoria su
interfaz gr�fica -- y escribimos nuestro c�digo para que corra en esa
m�quina abstracta, a diferencia de escribir c�digo para que funcione
bajo Win32 o Mac o Unix o lo que sea. Es una interfaz de programaci�n y
nuestro c�digo funcionar� en cualquier m�quina que implemente esa
m�quina abstracta. Lo que me deja con un cierto malestar en tu
afirmaci�n es la sospecha de que decir que Java es portable porque tiene
una m�quina virtual es quiz� equivalente a decir que Java es portable
porque Java es portable.

Y lo que pasa tambi�n es que cualquier lenguaje de programaci�n (incluso
el C) tiene una m�quina virtual en cierto modo -- hay una abstracci�n
subyacente de la verdadera m�quina. As� que quiz� la diferencia se halla
en la amplitud de ambici�n de la JVM. Realmente existe la ambici�n de
definir una interfaz de programaci�n que sea independiente de plataforma
y han ido mucho m�s lejos para conseguirlo.

De hecho, Java es tres cosas:

(1) El lenguaje mismo.

(2) El runtime -- la especificaci�n del bytecode Java y cosas como el
ClassLoader, el SecurityManager etc.

(3) Las librer�as est�ndar.

Bueno, es d�ficil mantener una l�nea fina entre las tres cosas, pero
todos contribuyen a la portabilidad frente a algo como C.

(1) El lenguaje mismo ya tiene incorporado una sem�ntica de programaci�n
multitarea -- multitarea -- la palabra clave "synchronized", pero bueno,
funciona en conjunci�n con las librer�as est�ndar, las clases
java.lang.Thread y el m�todo Object.wait() etcetera.

(2) Las librer�as est�ndar incorporan el AWT, una encapsulaci�n de una
interfaz gr�fica. (Es el aspecto de Java que m�s problemas ha dado, 90%
de los problemas de portabilidad -- y de velocidad.)

(3) El runtime puede rechazar c�digo "inv�lido" -- es decir c�digo con
resultados indeterministas. Entonces, a diferencia del C, hay un
mecanismo implantado que impone la compatibilidad al est�ndar.

> 
> C no es portable ni pretende serlo. C + UNIX es,  puede ser, portable a
> otros C + UNIX, lamentablemente hay muchos UNIXs diferentes, as�
> puedes hablar de C+ POSIX, etc...

En los 80, o� bastante que C era portable. Creo que eso se basaba en 2
ideas.

(1) C es portable porque lo estamos comparando con ensamblador (lo cual
no es decir gran cosa, digo yo :-))

(2) Cualquier plataforma tiene un compilador C. (Eso es un argumento
pragm�tico m�s que nada, no te�rico. C no es intr�nsecamente m�s
portable que cualquier otro lenguaje comparable. Simplemente se
convirti�, por razones historicos en un "�standar de facto".)

Pero, de todas formas, cuando se dec�a que C era portable, nunca
significaba portabilidad en el sentido amplio de lo que significa en el
mundo Java. Era algo mucho m�s limitado.

> 
> En cuanto a la compilaci�n del kernel de Linux supongo que ser�
> 'compilable' para muchas plataformas porque estar� repleto de
> compilaci�n condicional para ocultar la diversidad de uso de la
> memoria f�sica, de pantalla, etc... en los distintos sistemas. 

Sin duda. Aunque no he mirado ese c�digo.

Jonathan Revusky
-- 
Java and Delphi Consulting
Make your .class files double-clickable
with SmartJ
http://www.bigfoot.com/~crystalline.solutions
Technical Details
Message-ID: <36B9EF8A.C1AF32EE@jet.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <367ecc2b.2367399@noticias.iies.es> <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> <36B5F161.EBCF71E5@tid.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/04
Message-ID: <36B9EF8A.C1AF32EE@jet.es>
X-Deja-AN: 440705236
Content-Transfer-Encoding: 8bit
References: <367ecc2b.2367399@noticias.iies.es> <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> <36B5F161.EBCF71E5@tid.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 918156681 28303 194.224.180.132 (4 Feb 1999 19:31:21 GMT)
Organization: CTV/JET
Mime-Version: 1.0
Reply-To: jrevusky@bigfoot.com
NNTP-Posting-Date: 4 Feb 1999 19:31:21 GMT
Newsgroups: es.comp.lenguajes.java