[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