J'ai rencontré un syndicaliste. Je devrais écrire un syndicaliste intelligent, il en existe tout de même quelques uns, luttant pour le bien du pays et non pour son confort personnel puisqu'il distribuait des tracts pour une mobilisation constructive et la mise à plat des trente-cinq régimes de retraite français alors que, dépendant d'un régime spécial, il avait tout à y perdre.
Je lui annonce que profession libérale, je n'entre pas dans la catégorie de travailleurs dépendant de son syndicat. De là part une discussion que je qualifierais avec le recul d'instructive et de pathétique.
Reprenons les faits. Un syndicaliste vient me voir et ne me traite pas de psychopathe — sic le dernier de la CGT que j'ai pourtant aimablement reçu dans mon bureau une fois qu'il en avait forcé la porte —, pire, écoute mes problèmes et me signale que sa sœur était dans la même situation que la mienne.
Ce syndicaliste, de statut cadre, a une sœur d'une quarantaine d'années qui a fait des études pour être orthophoniste. Travaillant du lundi matin 9h00 au samedi soir, sans jour de congé, elle gagnait il y a deux ans 2000 € nets à la fin du mois. L'an passé, elle ne gagnait plus à volume de clientèle par ailleurs égal que 500 € nets mensuels et, cette année, il m'a dit devoir l'aider à la fin du mois car elle n'arrivait plus à nourrir sa famille. Nous parlons bien entendu d'un cabinet qui fonctionne normalement, depuis plus de dix ans, pas d'un nouveau cabinet qui n'a aucune clientèle. Le choix pour cette femme est de continuer le métier pour lequel elle a sacrifié des années d'étude ou d'en changer pour réussir à vivre.
J'avais l'impression d'être un peu moins seul. Je n'irais pas jusqu'à dire que cela fait du bien, mais ne pas être seul dans ce genre de situation démontre au moins que je ne me raconte pas des histoires pour me rassurer.
En effet, je suis confronté au même problème. L'an passé, j'arrivais à un solde positif tous les mois de pas loin de 2000 €, solde positif que je réinvestissais immédiatement car je ne peux compter sur personne pour avoir une retraite si un jour j'y arrive. Cette année, le solde n'est plus lors des bons mois que de 500 € et je sais déjà que l'an prochain, ce solde sera au mieux nul. Je dis au mieux parce que dans la pire des situations, il pourrait être négatif de 500 €. Cette modification n'est pas due à une baisse de revenu mais à la simple augmentation de mes impôts et charges.
En mettant à plat mon budget mensuel avec mon expert-comptable, nous sommes arrivés à la conclusion aberrante suivante : je dégagerais plus d'argent à la fin du mois en mettant mon appartement et mon garage parisiens en location et en allant prendre n'importe quel travail d'employé de base en Alsace ou en Corrèze payé 1500 € nets mensuels. En plus, je ne travaillerais plus que trente-cinq heures, aurait des heures supplémentaires, cinq semaines de congés payés et la sécurité sociale. Je n'ai donc aucun intérêt à continuer à faire mon métier.
Il y a juste un problème. J'ai sacrifié dix ans de ma vie après le baccalauréat pour faire des études me permettant de ne pas vivre correctement des fruits de mon travail (deux ans de classes préparatoires, un diplôme d'ingénieur en électronique et traitement du signal, un mastère de communications numériques et une thèse de doctorat en traitement du signal et métrologie) et cela m'ennuierait légèrement de les oublier pour aller faire chef de rayon au supermarché du coin. Je n'ai pas passé dix ans de ma vie à vivre comme un moine pour gâcher cela dans un métier alimentaire pour de simples raisons financières.
Actuellement, je suis démarché par un cabinet de recrutement suisse. Sachant que j'arrive à peine à vivre en France du fruit de mon travail, que croyez-vous que je vais faire ?
À votre avis, à long terme et sachant que je ne suis pas le seul dans ce cas, quels seront les vrais perdants ?
Nul n'est prophète en son pays. Et surtout, nul ne doit avoir raison trop tôt. Au printemps 2007, j'écrivai un article dans une revue dans lequel je signalais que la période dans laquelle nous étions en train d'entrer ferait passer la grande dépression de 1929 pour une aimable promenade de santé. J'y indiquai aussi que cela ne serait pas une crise mais une situation longue de laquelle nous ne nous sortirons qu'après un très long purgatoire.
Nous étions un an avant le 15 septembre 2008, chute de Lehman Brothers.
Notez bien que je ne tire aucune fierté ni aucune gloire de l'avoir écrit. Je pense même que nous aurions pu nous affranchir de la période actuelle. Il aurait suffit de prendre les mesures qui s'imposaient et que le gouvernement aurait encore pu prendre jusqu'en 2009.
Pourtant, aujourd'hui, soit cinq ans après la déflagration due à la faillite de Lehman, force est de constater que rien n'a réellement changé. Mais comment pourrait-il en être autrement ?
En effet, les errements de tous les gouvernements des pays dits développés depuis une bonne trentaine d'années ne permettent pas de sortir de la situation actuelle sans pleurs ni grincements de dents. Rares sont les pays qui ne sont pas endettés à outrance à force d'essayer de faire perdurer un système de cavalerie qui ne pouvait tenir que durant les trente glorieuses, lorsque l'augmentation de la richesse était de loin supérieure à ce qu'elle est actuellement.
Mêmes les États-Unis d'Amérique qui sont encore la première puissance économique mondiale sont touchés puisque depuis une dizaine de jours, toute l'administration fédérale est fermée pour cause de différend budgétaire. Loin de moi l'idée de donner un avis sur ce shutdown, contrairement à la situation française, je n'en connais ni les tenants ni les aboutissants, mais lorsqu'un pays commence à avoir 17 000 milliards de dollards de dette publique, on ne doit pas s'étonner de devoir faire des coupes budgétaires ici ou là.
Fig. 1 : sites internet des administrations américaines en drapeau
Ne nous trompons pas, nous sommes très proche de la situation des USA puisque notre dette publique tourne joyeusement autour de 2 000 milliards d'euros et ne cesse de croître. La question est maintenant de savoir si nous pouvons encore continuer à vivre continuellement au-dessus de nos moyens. Plusieurs écoles s'affrontent.
L'école que j'appellerais mélenchoniste à courte vue et au couteau entre les dents prétend qu'il suffit d'annuler cette dette en signalant aimablement mais fermement aux créanciers de l'état français que ce même état ne remboursera jamais. Très bien. C'est révolutionnaire et totalement idiot comme toute révolution. D'un autre côté, pour avoir tenté de discuter avec un membre haut placé du Front de Gauche pas plus loin que dans ces pages, souvenez-vous, comment en attendre autre chose ? En effet, si sur le papier il est très intéressant d'annuler purement et simplement notre dette, qu'en sera-t-il lorsque nous aurons à nouveau besoin d'emprunter ? Le leit motiv du Front de Gauche est que sans les charges de la dette, notre budget serait à l'équilibre. Foutaises ! Ces trois dernières années, les différents gouvernements ont créé pour 70 milliards d'euros de nouveaux impôts en augmentant les dépenses de 75 milliards. Le raisonnement ne résiste donc pas à l'analyse. Par ailleurs, une partie de cette dette est détenue par des petits épargnants. Qu'adviendra-t-il lorsque l'état leur dira que leurs économies placées à la banque et durement acquises seront perdues ? Restons donc sérieux et oublions les théories économiques du Front de Gauche.
Une autre école consiste à payer cette dette en faisant fonctionner la planche à billets, donc par l'inflation ou la dévaluation. Là encore, ce ne serait une solution viable que si le budget de l'état était à l'équilibre en absence de charge de la dette. Dans tous les autres cas, ce ne serait qu'une cavalerie de plus. Les plus vieux se souviendront avec une larme des trois dévaluations successives du franc français de la première moitié des années 1980.
La dernière solution est un remboursement de cette dette et une orthodoxie budgétaire. Mais il y a deux freins et non des moindres : d'une part une nouvelle augmentation des impôts et d'autre part une cure d'austérité drastique.
Je gage que la solution sera un mélange d'augmentation des impôts, d'austérité et d'inflation puisque la banque centrale européenne n'annoncera jamais une dévaluation de l'euro. Néanmoins, aucun gouvernement ne prendra le risque politique de le faire. En effet, tous les gouvernements récents, sans exception, ne cherchent qu'à faire perdurer un système à bout de souffle, sans doute parce qu'ils savent que les électeurs finiraient par voter pour leur intérêt particulier plutôt que pour l'intérêt général.
Or l'intérêt général n'est pas quelque chose qui va faire rêver les foules. L'intérêt général à long terme passe par une réduction drastique des dépenses, donc par une diminution du mille-feuille administratif, par la suppression de tout un tas de prestations sociales à l'efficacité douteuse et par une orthodoxie budgétaire, la première chose étant de revenir au bon vieux système soit disant archaïque de l'ancien régime qui faisait correspondre à chaque classe de dépenses une caisse différente. L'électeur ne choisira pas tout seul cette voie. La preuve est qu'il préfère actuellement voter Front National (un parti qui n'a toujours rien compris des mécanismes de base de l'économie) ou Front de Gauche (il est amusant de voir comment les deux fronts se rejoignent sur leur compréhension de l'économie) alors qu'il faudrait voter pour des gens qui ont une certaine maîtrise des mécanisme économiques. De la même manière, comment demander à un homme politique, dont la politique est un métier plus qu'une vocation, de supprimer son poste ?
Bizarrement, des pays comme l'Allemagne, la Belgique ou la Suisse s'en tirent bien mieux que nous. Souvent, avec des budgets publics inférieurs en proportion du PIB. Chose remarquable, tous ces pays ont des structures fédérales, c'est-à-dire que les décisions concernant les citoyens sont prises localement. Les dépenses y sont aussi gérées localement pour éviter au maximum les dérives.
Mais sans doute un pays comme la Suisse est-il sous-développé puisqu'un suisse gagnant annuellement 200000 CHF ne donne à l'état que 25% de ses revenus, tous impôts, taxes et assurances maladie confondus. À titre de comparaison, nous ne sommes pas loin de 60% en France pour les mêmes revenus bruts.
Il existe donc des pays en voie de développement et d'autres en voie de sous-développement. Prenons garde !
Comme demandé récemment, je vais tenter d'expliquer ici ce qu'est pour moi un bon langage de programmation. Je suis souvent sidéré du panurgisme patent du microcosme du développement informatique prétextant que si tout le monde utilise tel ou tel langage, on ne risquera rien à développer dans ce langage précis. Accessoirement, cela permet de se garantir des échecs dus au choix du langage en rappelant à qui veut bien l'entendre que tout le monde aurait fait de même.
Le système de défense me paraît un peu court.
En effet, il existe au moins trois types de langages :
Les deux premières catégories doivent pouvoir être compilées ou semi-compilées. Quant à la troisième, rien ne s'oppose à ce qu'elle soit interprétée. Et chacun des langages peut être impératif, procédural, fonctionnel, objet voire ne ressembler à rien de connu. Il existe dans le bizarre, l'ésotérique ou le carrément mal foutu mais utilisé un nombre de langages assez impressionnant dont php et Perl.
Commençons par regarder de près les différents paradigmes de programmation et éludons immédiatement celui de la programmation impérative (typiquement celle des Basic historiques ou du Cobol à l'ancienne) qui n'a aucun intérêt sur les calculateurs modernes. La programmation impérative se justifiait à une époque où les piles des processeurs étaient limitées et où l'on n'avait pas encore inventé autre chose. Aujourd'hui, c'est une hérésie.
Un peu plus complexes, les langages procéduraux ou fonctionnels sont intéressants. Ils permettent une bonne isolation des données et sont structurés. Les données procèdent des programmes, ce qui est assez logique. En d'autres termes, le développeur écrit un programme qu'il va appliquer sur des données. En revanche, à l'autre bout du tableau figurent les langages orientés objets. Le concept de langage objet poussé à l'extrême revient à affirmer que les programmes procèdent des données. Il s'agit donc dans un premier temps de décrire les structures des données utilisées avant d'écrire les méthodes permettant de les manipuler. C'est, d'un point de vue logique assez intéressant, mais d'un point de vue de la consommation des ressources totalement contre-productif. En effet, manipuler des objets sous la forme de classes qui héritent d'un ou de plusieurs parents et qui contiennent des fonctions virtuelles résolues ou non lors de la compilation ne se fait qu'avec une débauche de mémoire et de temps processeur.
Pour fixer les idées, je vais évoquer une petite expérience. J'ai dû utiliser un algorithme de recherche du meilleur chemin dans un graphe orienté, le graphe en question contenant 15 millions d'arcs orientés. J'avais estimé que sur une machine de calcul munie de 8 Go de mémoire, cela devait passer sans aucun problème. Étant d'une fainéantise crasse, j'ai tenté de réutiliser la fonction A* de la bibliothèque Boost, programmée en C++. J'ai rapidement abandonné l'idée, les 8 Go de mémoire suffisant à peine à faire tourner un calcul. En implantant le même algorithme A* en RPL/C (un langage inspiré du C, procédural, permettant de s'interfacer avec le RPL/2), j'ai divisé l'empreinte mémoire du graphe par 20 et le temps d'exécution par 25. En effet, avec un langage procédural ou fonctionnel, lorsqu'on demande une banane, on la prend dans le panier. On n'est pas contraint à appeler un singe qui vient avec tous ses copains de la jungle pour apporter la banane.
Ainsi, un langage efficace du point de vue des ressources de la machine est un langage procédural ou fonctionnel. Le langage impératif est efficace, mais n'offre pas d'isolation entre les données des différents sous-programmes.
Parlons de la syntaxe et des fonctionnalités d'un langage. Il n'est pas tout de déclarer qu'un langage efficace du point de vue de la machine et non des neurones du développeur doit être procédural ou fonctionnel (risquons même le fonctionnel impur), faut-il encore que sa syntaxe évite les erreurs grossières, voulues ou non. En effet, il y a plusieurs écoles de pensée radicalement différentes. D'un côté se trouvent les langages où tout est permis, langages bizarrement écrits dans la période suivant 1968. Sans doute un relicat du slogan il est interdit d'interdire… Figurent dans cette classe les langages comme le C. Le compilateur ne fait aucune vérification sur l'air du « vous l'avez voulu ? Eh bien tant pis pour vous ! ». Les résultats peuvent être assez dramatiques, allant de la simple violation d'accès à l'explosion d'ariane V.
Là, il me faut tout de même parler de l'opérateur d'affectation. En C comme dans l'immense majorité des langages, il s'agit du signe « = ». Logique me direz-vous. Mais comme en C, contrairement au Basic, il est possible d'écrire plusieurs expressions encapsulées les unes dans les autres et qu'il est aussi possible d'omettre implicitement les comparaisons à 0 et que, selon l'implantation, l'évaluation d'une expression contenant des et logiques peut se faire de gauche à droite et s'arrêter à la première sous-expressions fausse, on peut trouver des choses amusantes qui ressemblent à :
if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
retval = -EINVAL;
Vous ne revez pas. Cette ligne était une backdoor introduite dans le noyau Linux quelque part entre les noyaux 2.4 et les 2.6. Comment est évaluée l'expression du test ? Si la variable options vaut exactement __WCLONE|__WALL, le résultat de la première sous-expression est vrai et l'exécution se poursuit par l'évaluation de current->uid = 0 qui n'est pas un test mais une affectation. Comme la valeur affectée est nulle, la clause de test est toujours fausse et le programme ne positionne jamais retval. Au passage, l'uid courant passe à 0, ce qui donne les droit root au programme utilisant cet appel système avec les paramètres __WCLONE|__WALL. Propre, efficace et parfaitement licite du point de vue du C.
Je passe sous silence le bloc de commandes
retval = -EINVAL;
qui n'est pas délimité car réduit à une seule expression. Que se serait-il passé si par pure étourderie un point-virgule avait malencontreusement terminé la ligne précédente ? Un bloc de programme ne doit jamais être défini implicitement. Comme il ne doit pas être défini non plus en fonction de la forme comme en Python.
Dans un langage à la syntaxe bien conçue, cela ne devrait jamais arriver. Un test doit toujours être explicite en notation algébrique et les blocs doivent être clairement indiqués. Par ailleurs, utiliser une répétition de symbole « == » comme opérateur de test alors que le symbole « = » correspond à une affectation est une aberration. À minima, il faudrait écrire :
if ((options.eq.(__WCLONE+__WALL)).and.(current%uid.eq.0)) then
retval = -EINVAL
end if
Si par malheur l'opérateur de comparaison « .eq. » avait été remplacé par une affectation, le compilateur aurait refusé de faire son œuvre. Le compilateur C aurait tout aussi bien pu râler parce qu'il effectue une opération booléenne entre un booléen et un entier. Mais comme cela n'est pas interdit en C, il ne trouve rien à y redire. Des choses plus amusantes peuvent être écrites en C comme :
unsigned char *ptr;
...
if ((!ptr) && (ptr->n == 0)) retval = -EINVAL;
Je vous laisse deviner le résultat si le compilateur ne s'arrête pas à la première sous-expression fausse ou s'il décide de ne pas évaluer l'expression de gauche à droite. Sans compter le fait que le pointeur NULL n'est pas forcément défini comme étant 0x0. J'ai un souvenir d'un système sur lequel NULL valait 0x1. De deux choses l'une, soit le compilateur considère alors qu'un test !ptr était implicitement fait par rapport à NULL et non à 0 parce que l'opérande est un pointeur, soit il s'en tient à un comportement qui n'est pas plus bête qui consiste à comparer l'adresse par rapport à 0. Passons. Dans 99,9% des cas, le compilateur est gentil et fait ce que le développeur lui demande implicitement. Restent les 0,1% des cas.
Un autre problème et une source d'ennuis incommensurable. Dans la plupart des langages, les données sont typées parce que les variables doivent être déclarées et qu'une donnée ne peut exister en dehors d'une variable. Hormis quelques langages à inférence de types, l'immense majorité des langages considère que les données doivent avoir un type et un seul, que ce type soit affecté explicitement lors de la déclaration de la variable, cas du C, d'Ada, du Cobol, de Java ou du Fortran, ou qu'il le soit implicitement en fonction du nom de cette variable comme en Basic. Le problème sous-jacent est alors le choix de la structure algébrique dans laquelle les calculs vont se faire.
Si lors de calculs en flottants, la majorité des langages est tombée d'accord pour travailler sur la droite achevée réelle, le cas est un peu différent lors des calculs en entiers. Certains langages utilisent une arithmétique brutale en complément à deux sans aucune vérification d'intégrité. Ainsi, si une variable est déclarée sur un octet, 127+1 donne… -128 ! Sans aucune erreur récupérable par le programme. D'autres langages considèrent que 127+1 vaut toujours 127. D'autres encore génèreront une erreur de dépassement. Aucun des résultats n'est mathématiquement acceptable. De la même façon, l'extraction de la racine de -1 provoquera une erreur même si -1 est déclaré comme un flottant.
Un langage — je parle ici d'un langage destiné à des calculs, pas à un langage comme le C destiné surtout à l'écriture de systèmes d'exploitation et de programmes de bas niveau — doit donc pouvoir changer le type de la donnée au vol en fonction du résultat d'une commande. Si un calcul ne peut se faire jusqu'au bout en entier, il doit passer automatiquement en flottant voire en complexe. Mais cela ne peut se faire de façon efficace que si les données existent indépendamment des variables, ce qui implique un langage à pile comme le Forth.
Mais le Forth n'est pas satisfaisant car il n'utilise ni pile banalisée ni typage fort. C'est au développeur de savoir ce qu'il a empilé, combien d'emplacements sur la pile cela prend et comment il doit les relire. Ainsi, si le Forth permet de coder très rapidement des petits programmes, son utilisation devient assez rapidement très complexe et fastidieuse.
Un dernier problème et non des moindres. La gestion de la mémoire, de la pile système et, insidieusement, celle des goto's considérés comme nuisibles par certains. La mémoire peut être gérée de façon explicite par allocation dynamique, donc par augmentation de la taille du tas, ce qui est le cas avec les fonctions allocate() du Fortran, malloc() du C et new du C++. En C++, new crée un nouvel objet en appelant son constructeur. Sauf erreur manifeste du programme, le delete correspondant va se charger de libérer toute la mémoire occupée par cet objet (pas forcément dans le sens contraire aux appels effectués par new, ce qui peut poser des problèmes complexes dans le cas de fonctions virtuelles). Mieux, si l'objet est alloué comme une variable automatique, l'appel au destructeur sera implicite lors du retour de la fonction. L'utilisateur n'a donc pas à se soucier des problèmes de gestion de la mémoire. En C et en Fortran, il faut explicitement appeler deallocate() ou free(). Le compilateur ne le fera pas de son propre chef. Il faut donc savoir très exactement ce que l'on fait et quand on doit le faire. En cas de retour anticipé d'une fonction, par exemple en cas d'erreur, ce qui est fait automatiquement en C++ la plupart du temps doit se faire à la main dans d'autres langages. Et c'est généralement là qu'on rigole ! Ou qu'on pleure, c'est selon. J'ai eu l'occasion de fréquenter des doctorants, pourtant spécialistes des mathématiques qui s'évertuaient à coder des bouts de programmes en C en effectuant des malloc() à chaque besoin de mémoire sans jamais ne penser à appeler free(). Pourquoi en C ? Parce qu'un marteau, c'est tellement pratique pour enfoncer un clou lorsqu'on n'a jamais vu de tournevis ! Ce qui aurait été trivial en Fortran ne l'était réellement pas pour eux en C parce qu'ils ne maîtrisaient pas du tout le langage ni ses implications.
Et le rapport avec les goto's, me direz-vous ? Il est pourtant assez simple. La plupart des langages autorise ces branchements à l'intérieur d'une procédure. C'est pratique, cela économise souvent l'écriture de boucles longues et fastidieuses sous l'air de un goto et ça repart ! Mais cela impose aussi au compilateur de réserver sur la pile toutes les variables automatiques en début de procédure même si celles-ci ne sont utilisables que dans un bloc de programme. La conséquence de ce choix est que seule l'analyse syntaxique effectuée durant la compilation permet de masquer ces variables. Sans cela, l'utilisation des goto's aboutirait à une corruption de la pile système ou à une complexité démentielle. Le corollaire de la disponibilité du goto dans un langage est un côté implicitement statique des variables déclarées dans des blocs de programme à moins que le compilateur ne fasse un travail d'allocation spécifique et coûteux.
Une réflexion de quelques années sur tous ces problèmes et la rencontre avec des doctorants n'ayant aucune compétence en développement informatique mais étant contraints de programmer des algorithmes m'a décidé de me pencher sur ces différents problèmes. Un langage utilisable par un non spécialiste de l'architecture des systèmes, typiquement un mathématicien ou quelqu'un qui n'a pas à connaître les entrailles des calculateurs pour écrire un programme, doit répondre aux caractéristiques suivantes :
La somme de tous ces critères aboutit à un langage utilisant la notation polonaise inversée sans laquelle le troisième critère n'est pas atteignable, semi-compilé et à préprocesseur. Ce langage, quoique très structuré, ne connaît pas la notion de ligne. Il permet de se concentrer sur l'écriture d'un algorithme au sens mathématique du terme tout en évitant de se poser les questions inhérentes à l'architecture cible.
Ceux qui sont intéressés par mes travaux trouveront plus d'informations ici.
Combien de temps faudra-t-il encore supporter tous ces politiques bien pensant répétant à l'envi que les résultats de l'éducation nationale ne sont pas bon parce que les classes sont surchargées. Chose amusante, ce sont généralement les mêmes qui s'enorgueillissent des 85% de réussite au bac. Mon mauvais esprit me souffle dans le creux de l'oreille qu'il y aurait ici comme un début de contradiction. Passons, si l'incohérence les étouffait, je pense qu'on aurait déjà constaté une hécatombe parmi cette engeance.
Les élèves ne sauraient pas lire parce que les classes de maternelle — si, si, je vous assure que cela a été dit sans rire au Téléphone Sonne, sur France Inter, le 2 octobre 2013, allez vérifier ! — et de l'école primaire comptent plus de vingt élèves.
Là, je m'insurge. Je suis issu d'une longue lignée de hussards noirs qu'on n'appelait pas encore professeurs des écoles. Il n'y avait pas que des hussards noirs de la république, il y en avait aussi de l'empire, mais je m'égare. Dans le lot, il y a même eu un maître de stage de l'école normale, plusieurs directeurs d'école et certains de mes oncles et tantes sont aussi du sérail. Sans doute un atavisme dangereux à surveiller de près.
Des années 1900 aux années 1960, ces instituteurs avaient des classes chargées. Ceux qui avaient la chance de n'avoir qu'un seul niveau avaient entre quarante et quarante-cinq élèves. Les autres avaient des classes moins chargées, mais de plusieurs niveaux, dans des campagnes dont les élèves ne parlaient pour la plupart pas français lorsqu'ils franchissaient pour la première fois les portes de l'école primaire municipale.
Je ne connais pas les horaires de cours alors en vigueur dans ces écoles de la campagne profonde. En revanche, j'ai assez entendu parler des horaires dans les écoles des villes au début des années 1960. Il y avait six heures de cours par jour, 8h00-12h00 et 14h00-16h00, en classe de CE1, du lundi matin au samedi soir, le jeudi étant libre, tout cela avec quarante-cinq élèves par classe. De 16h00 à 18h00, les élèves pouvaient aller en étude lorsque les parents ne pouvaient les récupérer. Et en fin de CE1, les élèves savaient lire correctement et tenir un stylographe qui n'était pas encore à bille (une belle contradiction dans les termes pour ceux qui ont eu la chance de faire du Grec) puisque l'instituteur remplissait encore les encriers.
Le fait que les élèves actuels ne savent ni lire ni écrire en arrivant au niveau du baccalauréat n'est ainsi pas directement lié au nombre d'élèves par classe. Si c'était le cas, nos aînées n'auraient jamais pu apprendre à lire. Peut-être faut-il regarder ailleurs, par exemple sur la motivation des élèves, leur discipline en classe, les méthodes d'apprentissage de la lecture, de l'orthographe et de la grammaire, les matières nouvelles qui ne servent à rien pour l'apprentissage des matières fondamentales et j'en passe. J'ai pu lire dans un rapport tout à fait officiel émanant du ministère de l'éducation nationale que le niveau ne baissait pas parce que les élèves actuels savaient bien plus de chose que ceux d'il y a un siècle lorsque ce même ministère s'appelait encore ministère de l'instruction publique ; les mots sont importants. Ils savent en particulier manipuler un ordinateur, ce que leurs aînés ne savaient pas faire. Argument spécieux s'il en est puisque leurs aînés ne pouvaient pas manipuler quelque chose qui n'existait pas encore. En revanche, ces aînés savaient utiliser une règle à calcul ou une table de logarithmes et j'aimerais bien voir un bachelier moderne utiliser ces deux instruments. Déjà qu'il a du mal avec une calculatrice de compétition, j'imagine assez mal le voir manipuler une Graphoplex. Ariane V a explosé pour bien moins que cela.
Mais le problème est toujours le même, réduire le nombre d'élèves par classe. C'est un leit-motiv, un gimmick des syndicats et du ministre. On pourra essayer de le réduire autant qu'on voudra jusqu'à avoir un élève par enseignant. Tant qu'on ne luttera pas contre la réelle cause d'échec scolaire dans les petites classes que sont l'attitude des parents et des enfants, les méthodes d'apprentissage, la relation au travail et aux devoirs, la dispersion dans des matières parfaitement inutiles voire nuisibles — quel intérêt en classe de CE1 au maniement de l'outil informatique ? — on n'avancera pas. Et que l'on ne me parle pas de l'étude des langues étrangères au primaire, on pourra commencer à envisager cela lorsque la langue maternelle sera maîtrisée. Il suffit de regarder une pile de copies d'élèves de collège pour se convaincre que ce n'est pas le cas et que l'étude des langues étrangères ne devrait pas être une priorité.
Mais il est tellement facile de se convaincre que tout les problèmes sont dus aux classes surchargées, donc à des problèmes financiers… J'espère seulement que le ministre n'en est pas convaincu lui-même. Mais un doute m'assaille à la lecture de sa réforme des rythmes scolaires.
Il l'a dit. Il a osé le dire. Je le cite avec des guillemets que j'ouvre avec des pincettes :
On pourrait légaliser le viol aussi. Le viol, finalement, c'est un rapport amoureux qu'une partie des deux souhaite. La deuxième pourrait faire un effort. Enfin, finalement, si je suis votre raisonnement, on pourrait légaliser le viol ou le vol de voiture.
Celui qui a eu cette fulgurence se nomme Stéphane Ravier, candidat du Front National à la mairie de Marseille, devant Patrick Mennucci et sur un plateau d'une émission de Thierry Ardisson, Salut les Terriens !, samedi 28 septembre sur Canal+. J'admets que cette phrase est sortie du contexte, mais même lors d'un échange de vannes, elle reste choquante. Je suis pourtant assez difficile à choquer.
Cela se passe de commentaire et personnellement, je crois que je vais aller vomir.
En tout cas, une raison de moins pour voter FN. Après un programme économique délirant, un programme social inepte, voici la morale à géométrie variable.
Pages: << 1 ... 107 108 109 ...110 ...111 112 113 ...114 ...115 116 117 ... 204 >>