On Mon, 22 Sep 2003 21:28:46 +0200, Martin J. Sanchez
Post by Martin J. SanchezComo bien dices han existido y existen variaciones importantes en las
implementaciones de C, y como resultado han surgido distintos estandares
que intentan definir lo que encontraras en una implementacion de C
sujeta a uno de esos estandares, u otras peculiaridades (vease POSIX,
X-OPEN, etc).
No, como ya he dicho, ese es el problema. Creo que no se queda clara la
separación entre el C y, por ejemplo, POSIX. POSIX no es un estándar
de C. Es un estándar que define una interfaz con el sistema operativo.
Para definir la interfaz utiliza como base el C estándar, y describe su
uso utilizando el C, pero lo importante, lo que realizan las funciones
no tiene nada que ver con el C, sino con el sistema operativo que
funciona debajo (y que se tienen que comportar según POSIX especifica).
Además, creo que POSIX ha dejado claro que sería mejor no depender de
ningún lenguaje:
Language-Dependent Services for the C Programming Language
POSIX.1 is, for historical reasons, both a specification of an
operating system interface, shell and utilities, and a C binding for
that specification. Efforts had been previously undertaken to
generate a language-independent specification; however, that had
failed, and the fact that the ISO C standard is the de facto primary
language on POSIX and the UNIX system makes this a necessary and
workable situation.
Post by Martin J. SanchezPero no existe el termino "C estandar", y ni siquiera un
unico estandar de C. Aunque como "C estandar" nos solemos referir a el
"estandar internacional del lenguaje C" de ISO/IEC, que es el "C
programming language standard ISO/IEC 9899" o al "ISO/IEC 9899:1990" con
las correcciones dadas en "ISO/IEC 9899/COR1:1994", ISO/IEC
9899/COR2:1995" y "ISO/IEC 9899/AMD1:1995.
¿Y cuántos estándares más de C hay? Me refiero a un intento de
normalizar el lenguaje, no a las extensiones que han incluido algunos
desarrolladores de compiladores (GNU C, Turbo C,...); ni a
implementaciones concretas del estándar.
Post by Martin J. Sanchez"A conforming implementation may have extensions
(including additional library functions), provided
they do not alter the behavior of any strictly conforming
program."
4.7 A conforming program is one that is acceptable to
a conforming implementation.
Asi que segun tu ni siquiera deberiamos aceptar aqui cuestiones
conformes al "estandar internacional de C", si no solo aquellas
definidas como "estrictamente conformes".
No. Lo que creo es que aquí se debería discutir:
· Cuestiones "estrictamente conformes"
· Cuestiones "conformes" mientras se discuta sobre la parte
especificada en el estándar.
· Cuestiones "conformes" no especificadas en el estándar
(comportamiento no especificado, extensiones, librerías...), pero
siempre aclarando que por no estar especificado es un comportamiento
dependiente de la plataforma.
Pero nunca el resultado de una llamada al sistema operativo, repito,
pues pertenece a él (al sistema operativo); y las consecuencias de esa
llamada entran en el ámbito de discusión de los grupos de sistemas
operativos, no aquí.
Post by Martin J. SanchezNo deja de resultarme sorprendente, que a estas alturas estemos
discutiendo sobre esto.
A mí no, pero más que nada porque considero que existe esa confusión
entre lo que es el lenguaje de programación y lo que son extensiones y
llamadas al sistema operativo.
Post by Martin J. SanchezEso es lo que tu dices. Como ya he comentado la propia ISO define a su
estandar como "C programming language standard ISO/IEC 9899". Y en
ningun momento dice que otros estandares o versiones del lenguaje C no
son C.
El estándar también dice esto:
This International Standard specifies the form and establishes the
interpretation of programs written in the C programming language.
Según el 'Rationale' del estándar, el propio estándar es:
The Committee's overall goal was to develop a clear, consistent, and
unambiguous Standard for the C programming language which codifies
the common, existing definition of C and which promotes the
portability of user programs across C language environments.
Es decir, surge por la necesidad de normalizar el lenguaje; para que
cuando uno diga C sepamos a que se refiere. Es decir, yo considero que,
una vez aparecido un estándar internacionalmente aceptado que define el
lenguaje C, no cabe duda de a qué se refiere uno cuando habla del C.
Todo lo demás será una extensión, un dialecto, algo que se parece, pero
no C.
Post by Martin J. SanchezPost by Fernando ArbeizaSi estás seguro de que pertenece a otro grupo, ¿por qué no? Si alguien
ha preguntado donde le ha dado la gana yo respondo donde quiero ;-)
Por que no tienes derecho a que mis respuestas puedan ir a un grupo al
que no tenia ninguna intencion en contestar, o del que no leo las
respuestas.
Bueno, el Followup-to es una indicación sobre a qué grupo debería ir la
respuesta; no una orden tajante. Además, creo que es de buena educación
avisar de que la respuesta puede que no vaya a ese grupo.
Post by Martin J. SanchezSegun esta misma observacion (y segun las reglas de la jerarquia es.*)
es.comp.lenguajes.c deberia desaparecer y llevarse a uno de estos
grupos, por que en absoluto cumple la norma del numero de mensajes.
Te gusta la idea?
No, gustarme no. Pero no se trata sólo de lo que te guste o no. Con el
tráfico que tienen es.comp.lenguajes.c, es.comp.lenguajes.c++ y
es.comp.lenguajes.misc consideraría lógico que los dos primeros
desaparecieran y se llevase todo en es.comp.lenguajes.misc. No creo que
fuese un gran inconveniente para nosotros (siempre se pueden marcar los
asuntos con el nombre del lenguaje). Y, quien sabe, quizá en algún
momento volviera a haber un grupo de c.
Post by Martin J. SanchezPost by Fernando ArbeizaPerfecto, en eso estoy completamente de acuerdo. Y creo que he dado mi
opinión. Por si acaso: Creo que en este grupo se debe discutir sobre C
(el estándar, su librería e incluso variantes). También podría
discutirse sobre el uso de librerías externas. Pero el resultado de una
llamada al sistema es objeto de discusión sólo para los que discutan
sobre ese sistema operativo,
Estas diciendo algo como: usa x, no preguntes "para que" y "por que",
por que aqui es off-topic.
No, estoy diciendo algo como:
Eso no se puede hacer en C. Podrías utilizar X en el sistema Y. Pero
si quieres saber como funciona, mejor pregunta en un grupo del
sistema Y, que sabrán mejor como va.
Post by Martin J. SanchezDe verdad, aqui no hay trafico alguno. Lo que se pretende es que sea un
grupo util. Para saber si algo es estandar o no, simplemente hay que
leer el estandar,
Bien, pero hay gente que no quiere leer, no puede leer, o ni siquiera
conoce el estándar. O que no sabe distinguir entre una función portable
del lenguaje y una función específica de su sistema operativo. Y como
creo que son bastantes, sigo pensando que hay (como mínimo) que
indicarlo.
Post by Martin J. Sanchezy/o poner la opcion -pedantic (y no me refiero a ti :-) ) o algo
pareceido en las opciones de construccion.
Ya, seguro que no te refieres a mí ;-) No, en serio, si soy pedante (o
estricto, llámalo como quieras porque lo soy :-) en esto es porque creo
que es importante la distinción. No me cansaré de repetirlo, creo que
hay mucha confusión entre lo que es estándar y lo que no; y no está de
más recordarlo cada vez que aparece la ocasión.
Vuelvo a poner el mismo ejemplo, pero creo que las funciones getchar() y
getch() son el ejemplo perfecto. No sé cuanta gente sabe que getchar()
es estándar y getch() no lo es.
Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>