[gull] Types : [was: Php/MsSQL obsoletes?]
JM Nunes
Jose.deAbreuNunes at ieug.unige.ch
Wed Sep 28 23:00:57 CEST 2005
L'occasion d'apporter mes 2 centimes :-)
Petite précision concernant les types et les langages de programmation.
Le type peut être déterminé statiquement (C, Ocaml), i.e., à la
compilation des sources, ou dynamiquement (Pyhton, Perl -je crois), à
l'exécution. C'est sécurité/rapidité contre souplesse/lenteur.
Concernant les conversions entre types, le type peut varier de faible
(weakly typed) à fort (strongly typed) selon les conversions (casts)
admises. Ainsi C est faiblement typé par rapport à Python, et Python est
moins typé que Ocaml.
En pratique:
-souvent le statique force à la déclaration du type des variables, mais
pas toujours. Caml (Ocaml) fait de l'inférence de type.
Ainsi en C c'est
char* x = "123"
et en Ocaml c'est
let x = "123"
-"strongly typed"...
*************** en C ****************
main () {
char* x = "123";
printf ("x=%i"; x);
}
************
compilé et exécuté résulte en:
./a.out
x=134513860
*************** en Ocaml ********************
$ ledit ocaml
Objective Caml version 3.08.3
# let x = "123";;
val x : string = "123"
# Printf.printf "x=%i" x;;
This expression has type string but is here used with type int
#
***********************
**************** en Python **********************
$ python
Python 2.3.5 (#2, May 4 2005, 08:51:39)
[GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = "123"
>>> print 'x=%i' % x
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: int argument required
>>>
******************
et donc C est plus faiblement typé que Ocaml et Python.
Essayons maintenant
***************** C ****************
main(){
int x = 123;
printf ("x=%s",x);
}
**************
le résultat est
$ ./a.out
Segmentation fault
**************** Ocaml ***************
# let x = 123;;
val x : int = 123
# Printf.printf "x=%s" x;;
This expression has type int but is here used with type string
***************
and
************ Python ****************
>>> x=123
>>> print 'x=%s' % x
x=123
******************
D'où Python est plus faiblement typé que Ocaml.
Sans vouloir discuter les inconvénients des types forts (et il y en a),
il faudrait dire que les langages de programmation c'est comme les
langues parlées: aucune n'est meilleure que les autres et chacune a un
domaine spécifique où elle est imbattable.
<troll>
Si toutefois on cherche le langage le moins mauvais pour exprimer tout
algorithme ---i.e., *le* langage de programmation générique--- on finit
par trouver Ocaml. Mais je vous laisse le temps de le découvrir...
</troll>
More information about the gull
mailing list