Loading...

This presentation is an HTML5 website

Press key to advance.

Having issues seeing the presentation? Read the disclaimer

Slides controls
  • and to move around.
  • Ctrl/Command and + or - to zoom in and out if slides don’t fit.
  • S to view page source.
  • T to change the theme.
  • H to toggle syntax highlight.
  • N to toggle speaker notes.
  • 3 to toggle 3D effect.
  • 0 to toggle help.

Today, we will cover...

Développer pour le Web

Université Léonard de Vinci - Paris, La Défense
. . .
21 novembre 2012 - Jean-Claude Lévy - @jclevy

Présentation

Remerciements à Jean Rohmer

  • À la recherche d'esprits atypiques

-- Les informaticiens ont réussi à inventer le désordre sans espace

-- Un univers d'intentions, d'expressions et de réalisations

-- Immediate Programming

Blog Jean Rohmer

-- Il faut inventer une nouvelle informatique qui serait par essence une matière enseignable

-- Se débarrasser du génie logiciel, au profit d'un génie de l'information

-- Nous subirons des catastrophes informatiques tant que nous ne ferons pas de progrès dans la construction d'une théorie de l'information ( Interopérabilité des systèmes d'information >> revenir aux constantes anthropologiques )

-- Habituer les gens à considérer l'information comme un ensemble d'énoncés, ne pas définir à l'avance des modèles, schémas ou classes, pouvoir un peu fusionner des informations étrangères les unes aux autres sans usine à gaz de conversion, pouvoir dessiner le graphe d'un ensemble d'informations

-- Lire : Thierry Laronde: Un esprit critique sur l'informatique

Historique personnel - le parcours

  • Auteur de logiciels
  • Consultant indépendant
  • Directeur de Projets

Clients récents :

  • Web agency
  • Editeur de progiciel RH
  • Emetteur de cartes bancaires prépayées
  • Industrie de l'eau

Historique personnel - le parcours

  • 1985-1991 - Développeur Apple indépendant
  • 1991-1993 - Développeur et entrepreneur pour NeXT
  • 1994-1998 - Créateur d'une société de services informatiques
  • 1998-2000 - Consultant chez Microsoft France
  • 2001-2005 - DSI d'une PME (assurance automobile)
  • 2005-2012 - Consultant et auteur indépendant

Historique personnel - les langages

  • Jouer sur Apple II - Lemonade (1979) - j'ai beaucoup joué avec ce jeu
  • Basic - Tennis Championship (1985) - mon premier logiciel commercialisé
  • Assembleur - 65816 (1987-1988)
    Pour Broderbund sur Apple II GS : Downhill Challenge et ShowOff
  • Ada, Lisp, Turbo Pascal - Master Of Science - 1988
  • Assembleur - 6502 -> 68000 (1989)
    Pour Broderbund sur Atari STE : adaptation de Prince Of Persia
  • C : Unix (1989)
  • Cobol : Unix (1989)

Historique personnel - les langages

  • X Windows : DEC Ultrix (1990)
  • Objective C, Postscript : NeXT (1991-1992)
  • MS Basic : RaPID - Access 2.0 (1994) - générateur d'applications de gestion
  • C++ : Windows 95, MFC 4.0 et Visual Studio 4 (1997)
    Pour un éditeur multimédia : La bible de Jérusalem
  • Premiers concepts de programmation intentionnelle (1998)
  • ASP, Javascript, Ajax (1999) - premiers pas, premiers clients
  • C# (1999-2000) - premier cours donnés en interne chez Microsoft France
  • Création d'Intentware.com (2001)
  • .NET, ASP.NET (2002)

Historique personnel - les langages

  • Création d'Ijax basé sur Mootools (2006)
    Pour une association : La Bible multilingues en ligne
    Et une bibliothèque numérique
  • Python, Trac, Django, Web2Py (2009)
  • CoffeeScript, Coffekup, Docco, Ace (2011) - redémarrage du projet Intentware
  • Création de Chocolate.js (2012) - environnement de développement en ligne

Actualité

Gestion de projet

Comparatif des logiciels de gestion de projet

Open Source

Propriétaire

  • Jira
  • [Microsoft TFS]

Modélisation

Bases de données

Frameworks Javascript

Frameworks Javascript pour mobiles

Développment pour Mobile

HTML5

De nouveaux services sur les clients Web

Références

Javascript sur le serveur

Un monde en pleine ébuilition

Editeur de code en ligne

Développement en ligne

Nouveaux langages

Présentation : http://intentware.com/press/20111004-devinci.htm#title-slide

Bret Victor

Inventing on Principles

-- creators need immediate connection

3:30-5:30 ; 10:42-14:25 ; 16:50-22:45

Demo Chocolate

binarySearch = (key, array) ->
    low = 0
    high = array.length-1

    while (low <= high)
        mid = Math.floor((low + high) / 2)
        value = array[mid]

        if value > key
            high = mid - 1
        else if value < key
            low = mid + 1
        else
            return mid
    return -1

result = binarySearch 'f', ['a', 'b', 'c', 'd', 'e','f']

Learnable Programming

http://worrydream.com/#!/LearnableProgramming

  • La programmation est une façon de penser, pas une simple compétence.
  • L'apprentissage des boucles "For" n'est pas apprendre à programmer, pas plus que l'apprentissage du monde des crayons n'est apprendre à dessiner.
  • Les gens comprennent ce qu'ils peuvent voir. Si un programmeur ne peut pas voir ce qu'un programme fait, il ne peut pas le comprendre.

Learnable Programming

L'environnement doit permettre à l'étudiant de :

  • lire le vocabulaire - que signifient ces mots ?
  • suivre le flux - qu'est-ce qui se passe ?
  • voir l'état - à quoi pense l'ordinateur ?
  • créer par réaction - commencer quelque part, puis sculpter
  • créer par abstraction - démarrer par du concret, puis généraliser

Learnable Programming

Le langage doit fournir:

  • identité et métaphore - comment puis-je relier le monde de l'ordinateur au mien ?
  • décomposition - comment puis-je décomposer mes idées en en morceaux 'pensables'?
  • recomposition - comment recoller les morceaux ?
  • lisibilité - qu'est-ce que signifient ces mots ?

Learnable Programming

Un exemple en Javascript et Processing

Avant que le lecteur puisse avoir une idée du sens de ce code, avant qu'il puisse même commencer à comprendre comment cela fonctionne, voici quelques questions auxquelles il devra répondre :

Learnable Programming

Imaginez que vous avez acheté un nouveau micro-ondes

Il a fallu le sortir de la boîte, et vous avez trouvé un panneau de boutons étiquetés :

Imaginez que le micro-ondes vous a encouragé à frapper au hasard sur les boutons jusqu'à ce que vous ayez compris ce qu'ils font :

Learnable Programming

Expliquer dans le contexte

Un environnement de programmation est une interface utilisateur qui doit permettre la compréhension d'un programme.

Surtout dans un environnement d'apprentissage, l'environnement doit être conçu pour expliquer.

Les bonnes explications sont souvent celles qui sont ancrées dans le contexte de ce qu'ells expliquent.

Learnable Programming

Expliquer dans le contexte

Au lieu de simplement décrire ce que signifie le vocabulaire, on peut souvent le montrer dans le contexte des données. Dans l'exemple suivant, les étiquettes connectent le code et sa sortie :

Une telle connexion peut être particulièrement puissante quand une ligne de code fait plusieurs choses :

Learnable Programming

Rendre le flux de contrôle tangible

Nous devons mettre l'exécution du programme dans la main du programmeur, lui laisser sentir qu'il est une chose réelle, qu'il la possède.

Dans l'exemple suivant, le programmeur utilise un curseur pour superviser par l'exécution :

Le programmeur peut se déplacer dans la boucle à son propre rythme, et comprendre ce qui se passe à chaque étape. Il peut aller d'avant en arrière, explorer des zones difficiles à comprendre, et comparer ce qui se passe à différents moments.

Demo Chocolate.js ..(suite)..

  • Chocokup
  • Specolate
  • Doccolate
  • Donolate

Merci

Pour me contacter :

  • @jclevy