Partie 2 du

carnet de notes

Table des matières

1- Volet théorique

2 - Volet pratique

Volet théorique

Lecture: Une hiérarchie des paradigmes de programmation

Depuis le début de la session, nous avons vu que les technologies numériques sont au coeur d'échanges humains de toutes sortes: échanges de biens (comptabilité), échanges transactionnels (finances), échanges culturels (transmission et transcription des cultures), échanges de codes secrets (cryptographie) ainsi qu'échanges de tirs et de missiles. Les technologies et l'humanité sont en co-évolution depuis que les doigts de nos mains nous servent à dénoter des nombres (d'où l'expression « digital »).

Lors de la séance du 17 octobre, nous avons vu que la 2ème guerre mondiale oblige des investissements importants en technologies numériques. Ces développements se font des deux côtés de l'Atlantique. Ceci reflète l'ordre des 4 C (« commande, contrôle, communication, « computers » que nous avons vu dans notre lecture de la troisième semaine. (Kittler, 2008, p. 41).

Entre les fins de la première et de la deuxième guerre mondiale, un changement important se produit. Les emplois des ordinateurs humains sont automatisés pour donner graduellement naissance à l'ordinateur (machine) que nous connaissons aujourd'hui.

Donc nous passons de ceci:

« Salle des calculateurs dans un bureau
                        gouvernemental américain vers 1920. »
Photo extraite du livre Lazard, E. et Mounier-Kuhn, P. (2016). Histoire Illustrée de L’informatique: Préface de Gérard Berry, Professeur Au Collège de France. EDP Sciences, p. 74.

À cela:

« La Z4 de Konrad Zuse
                        terminée en 1944 :
                        sans doute la première
                        machine « Turing-complete »
                        de l’histoire. »
Photo extraite du livre de Lazard, E. et Mounier-Kuhn, P. (2016). Histoire Illustrée de L’informatique: Préface de Gérard Berry, Professeur Au Collège de France. EDP Sciences, p. 90.

Puis, en 1957, au «  premier ordinateur programmable à usage général construit avec des transistors. » , le TX-0 construit au MIT (source: Computer history museum ).

TX-O au MIT
Source: « Des chercheurs du MIT construisent le TX-0 » (Computer history museum. Timeline of computing history )

À travers la lecture du texte sur les paradigmes de programmation, il est possible de faire plusieurs constats:

« Pendant la construction de l’ENIAC, un groupe de travail est mis en place pour réfléchir aux améliorations possibles et à la définition d’un nouveau projet, l’EDVAC (Electronic Discrete Variable Arithmetic Computer). Le mathématicien John von Neumann (1903-1957), l’un des esprits les plus brillants et les plus universels du xxe siècle, participe à ces réunions. Tirant les enseignements de l’expérience ENIAC, notamment du goulet d’étranglement que constituent la programmation et le stockage des données externe pour une machine électronique, il réfléchit en termes de structure logique de la machine. Il reprend des idées déjà exprimées par Eckert et Mauchly, en les formalisant, et les rapproche du concept de machine universelle évoqué dans l’article d’Alan Turing de 1937, que von Neumann avait lu.
Le document qu’il rédige décrit une machine entièrement nouvelle par sa conception fondamentale. Les principaux organes correspondent à des fonctions clairement définies — processeur, mémoire, dispositif d’entrées/sorties — ouvrant sur un concept absolument inédit : le programme enregistré. L’idée de stocker les données et les instructions sous forme d’impulsions électriques, à l’intérieur même de la machine qui pourra les consulter à l’instant et à la vitesse qui lui conviennent, définit d’un seul coup une structure logique adaptée à la nouvelle technologie électronique, là où des techniciens plus immergés dans les problèmes de détail auraient mis des années à élaborer la solution. La notion de programme enregistré rompt radicalement avec la lignée des calculateurs à programme externe tels les Z3, Mark I ou ENIAC. Cette architecture, appelée depuis « architecture de von Neumann », caractérise ce que nous appelons l’ordinateur.
Intitulé First Draft of a report on the EDVAC, ce rapport largement diffusé va inspirer le développement des premiers projets d’ordinateurs dans le monde entier. Von Neumann participera personnellement à la conception de plusieurs ordinateurs dont celui de l’IAS, (Institute for Advanced Study) à Princeton, qui sera largement copié. » (Lazard et Mounier-Kuhn, 2016, p. 102)
source: Lazard, E. et Mounier-Kuhn, P. (2016). Histoire Illustrée de L’informatique: Préface de Gérard Berry, Professeur Au Collège de France. EDP Sciences, p. 102

L'architecture d'un ordinateur

Schématisation de l'architecture de von Neumann.
                    tirée de Wikipedia
Chris-martin, Aeroid, CC BY-SA 3.0, via Wikimedia Commons

Lecture: Cybernétique et théorie de l'information

À vous maintenant de prendre vos notes de recherche sur le texte de la semaine 06.

Pour répondre aux questions dans ce fichier html, ouvrez-le dans Visual Studio Code et faites la recherche de la classe CSS suivante: question-a-repondre

Explorez les termes que vous ne connaissez pas en faisant des requêtes telles que:

« Qu'est-ce que la cybernétique » :

"La cybernétique est une modélisation de l'échange, par l'étude de l'information et des principes d'interaction. Elle est issue en particulier du passage par la théorie entre l'étude du système nerveux et sa reproduction en intelligence artificielle. Le mot cybernétique formalisé en 1948 par Norbert Wiener est le résultat de tout un mouvement scientifique très largement interdisciplinaire et source d'une nouvelle école de pensée. Techniquement, c'est une méthode interdisciplinaire qui étudie l'évolution dynamique des systèmes." Source
D'aprés ma copmprehensipon du terpme Cybernétique, c'est une theorie qui explique l'interaction entre le systeme nerveux et l'inteligence artificielle. Dans un autre sens c'est une source d'une nouvelle ecole de pensée. Sur ce elle est interdisciplinaire.

« Quelle est la relation entre le béhaviorisme et la cybernétique ? »

"Céline Lafontaine : « Dépouillé de toute référence à l'hérédité et à l'intériorité, le béhaviorisme définit la culture en termes de comportements adaptatifs et de réflexes conditionnés, laissant ainsi une large place au reconditionnement culturel. Selon le fameux schéma stimulus-réponse, l'ensemble des comportements humains, y compris la pensée, sont ainsi assimilés à des réactions adaptatives. Il s'agit en fait d'une psychologie de la boîte noire où l'on ne tient compte que du processus '' input-output''. Fortement déterminé, l'individu est un être vide, dont la seule consistance réside dans son rapport constitutif à l'environnement extérieur 1 ». Céline Lafontaine aurait pu compléter son analyse du béhaviorisme en rappelant, chose généralement ignorée, que B.F. Skinner a publié en 1947 une utopie, Walden Two, apparentée au Meilleur des mondes d'Aldous Huxley. Cette utopie confirme le bien fondé du rapprochement que l'auteure opère entre la cybernétique et le béhaviorisme. Par le titre du livre, Walden Two, Skinner donne à comprendre à ses lecteurs qu'il est un disciple de Henry David Thoreau, l'auteur de Walden ou la vie dans les bois. Voici l'exemple parfait d'un rapprochement fallacieux destiné à semer la confusion dans les esprits. Thoreau, romantique, lecteur de Goethe et adepte de sa conception organique du monde, Thoreau homme libre jusqu'à la désobéissance civile n'aurait pas tenu une minute dans le parc hypercontrôlé de Walden Two, hypercontrôlé depuis un hôtel ayant toutes les caractéristiques d'un hôpital." Source
La relation entre le béhaviorisme et la cybernétique, cettre derniere explique la confusion dans les esprits tandis que la cybernétique etudie l'interaction entre le syteme nerveux et l'IA.

Ces théories datent d'un certain temps...qu'en est-il aujourd'hui ? « Les prédictions de la cybernétique sont-elles en train de se réaliser ? »

"En 1956, la première cybernétique a donc vécu, même si elle ne cessera d’être revendiquée ensuite, sous toutes ses formes car le terme est flottant (« comme peut l’être celui de psychanalyse », note Mathieu Triclot). Soixante ans plus tard, « elle est à la fois un succès prodigieux et un échec prodigieux, estime-t-il. Un succès parce que l’informatique et les télécoms sont devenus l’infrastructure centrale de notre monde actuel, mais aussi un échec puisque le projet de Wiener était de constituer une nouvelle science dans le prolongement de la physique. Or il n’y a pas eu d’institution cybernétique tels que la rêvaient Wiener et compagnie»." Source
Selon cette source, les preditions de la cybernétiques sont en train de se realiser. cette realisatio n'est pas globale.

Volet pratique

Les fondamentaux de la programmation sur scratch

Scratch est un langage de programmation visuelle qui permet de créer des jeux, des pièces musicales audio-vidéo, des séquences animées, des histoires et des expériences interactives.

Scratch est développé par une équipe du MIT depuis 2007. Le jeu est utilisé par des millions d'élèves, ce à travers 196 pays. Il est aussi disponible près de 70 langues (Scratch Foundation, « Our Story »).

Quelques définitions utiles

Ordinateur

«  Un ordinateur est un dispositif polyvalent qui se comporte en fonction des ensembles d'instructions et de données qui lui sont fournis. Les ordinateurs exécutent des instructions pour traiter des données. Chaque ordinateur est doté d'une unité centrale de traitement (UC). Les UC modernes sont constituées d'une seule puce microprocesseur. »

source: Object-Oriented Programming in Python, (Université de Cape Town, 2014, traduction DeepL).

Programme

Un programme est essentiellement une séquence d'instructions (commandes) données à un ordinateur.

Dans leur livre «  How to think like a computer scientist », Wentworth et al. nous donnent les éléments communs à tous les langages de programmation :

Ces mêmes éléments font aussi partie du coeur de la programmation sur Scratch.

Voici une vidéo qui explique plus en détails la logique guidant la programmation visuelle sur Scratch:

Exercices

Théorie:

Faites une recherche sur les différents types de langage de programmation et listez-en trois ci-dessous à l'aide d'une liste HTML (avec balises appropriées). N'oubliez pas de fournir le lien vers vos sources et de bien les citer.

  1. HTML, CSS: le HTML nous permet de creer la structure de la page, tandis que le CSS gere l'aparence des fonds.
  2. JavaScript: " langage de programmation qui permet de créer du contenu mis à jour de façon dynamique, de contrôler le contenu multimédia, d'animer des images, et tout ce à quoi on peut penser." Source
  3. C#, C ou C++: "Le C est un langage procédural, et le plus basique parmi les 3 cités. On parle parfois de proximité à la machine. Il ne permet de définir et d'utiliser que des fonctions ainsi que des structures de base (struct). Un code source en C n'est qu'un enchaînement de définitions et d'appels à des procédures. Le C++, comme son nom l'indique, est une surcouche du C pour ainsi dire. Il introduit le modèle objet dans le C, ainsi que de nouvelles fonctionnalités avancées comme les templates. Il s'articule aussi autour d'une librairie de base : la STL. Pour résumer assez grossièrement : si vous pensez faire du C++ sans n'utilisez ni les classes (donc ni la STL), ni les templates (ni d'autres possibilités que je vais omettre ici par simplicité), vous faites en realité du C. Le C# quant à lui est un tout autre langage. Il s'agit aussi d'un langage compilé, mais dont le produit de compilation s'appuie sur le Common Language Runtime (CLR). Ce qui implique que, pour executer les binaires produits, il vous faut installer sur la machine cible un environnement d'exécution (le .NET Framework). Le C# repose lui aussi sur le modèle objet, tout comme le C++. Mais contrairement aux deux langages précédemment cités, la charge de l'allocation et de la libération des resources n'incombe pas au programme lui même, mais est géré par l'environnement d'exécution (garbage collector). En gros, pour simplifier encore une fois, le C# a plus en commun avec le Java qu'avec le C++, contrairement à ce que son nom pourait laisser penser. Par ailleurs, s'agit d'une technologie destinée à Windows, à l'origine, bien que des portages existent (sous Linux par exemple)." Source

Pratique:

Créez un programme sur Scratch qui permet d'utiliser :

L'anatomie d'un PC

Activité avec Roberto Da Costa dans une prochaine séance (à faire avec votre page de carnet sur les composants essentiels à un PC).

Références

Kittler, F. (2008). Code (or, How You Can Write Something Differently). Dans M. Fuller (dir.), Software studies: a lexicon (p. 40‑47). MIT Press.