Quantcast
Channel: #Rui » Event
Viewing all articles
Browse latest Browse all 18

NDCoslo 2012-uncle bob- what is OO and what is the future?

$
0
0

Oncle part en mode on slides, je fais ma près avec textmate et je cause :-)

20120607-134131.jpg

Qu’est que le OO réellement? Comment savoir que notre langage est OO? Ou qu’il ne l’est pas?

Il y’a principalement 3 paradigmes: structure, object et fonctionnel.

Le concept de langage structure à été inventé en dernier mais à été le premier à être adopté. La première critique vient de Dijkstra qui a publié un papier qui disait qu’un programme ne pouvait fonctionner correctement avec un goto.

Le premier des paradigmes inventés fut le fonctionnel avec lisp. Un paradigme ne nous apporte pas qqch mais nous donne un cadre restrictif. Le fonctionnel par ex, nous élève le le fait d’assigner des variables, le structurel nous enlève le goto.

Lire le livre structure and interprétation of computer programs: mitpress.mit.edu/sicp

Dans le livre pendant tout le début tout n’est que fonctionnel, puis vers la fin ils expliquent que tout ce joli monde va être casse, et ils introduisent le concept d’assignation, puis associent un autre point qui va casser ça aussi, la notion de threads. Ces deux problématiques, ont été associés .

En dernier est apparu le OO en 67. Cela a commencé avec l’algol.

Algol était un langage base sur des blocs qui pouvaient contenir d’autres blocs, par ex:

Void f(){
Int I;
Void g(){
I++;
g();
}

En gros on a bougé la donne de la stack vers le heap. Sur cet exemple, on voit que si l’on rajoute le mot clé class on est proche de ce que l’on a aujourd’hui. Ce travail à abouti à simula. Presque tous les concepts aujourd’hui on été créés à ce moment la.

Mais cela ne défini toujours pas l’objet.

Les concepts objets comme l’héritage, les interfaces ou même le polymorphisme existent d’une certaine manière en C. Par ex, getchar() est polymorphique. Presque tout ce qu’on peut faire en OO est dispo en C mais sous la contrainte. C++ n’est finalement que la couche au dessus de c qui contraint, sécurise et simplifie l’accès à toutes ces fonctionnalités.

l’objet est la discipline qui a supprimé les pointeurs de fonctions

Y a t’il une différence entre les syntaxes suivantes?

//c#
O.f();

//python
F(O);

//lisp
(f O);

Il n’y a pas vraiment de différence.

Ou va t’on avec ça?

regardons le nombre de cores de nos ordis? Aujourd’hui 4, puis cela va doubler d’annee en année …

Nous avons pu voir qu’il est difficile de gérer plusieurs threads sur une appli, cela devient encore plus compliqué avec plusieurs cores. Avoir plus de cores à notre disposition change forcément notre manière de programmer!

Et en revient à notre problème d’assignation. Avec un langage fonctionnel, qui est immutable et déterministe, on peut exécuter les fonctions que l’on veut sur n’importe quel core.

Le fonctionnel serait donc l’avenir de l’OO.

Notes: au final, rien de nouveau, mais avec l’histoire qui va avec
et raconté par le patriarche cela donne tout son sens à un certain nombre de concepts, à voir si vous n’êtes pas encore convaincus.


Viewing all articles
Browse latest Browse all 18

Latest Images

Trending Articles



Latest Images