B2 · 第3集 · 5:11

软件的五个维度

计算机科学家让-马克·耶泽凯尔解释软件的五个核心方面:算法、信息、语言、机器和用途。

来源:Université de Rennes / Wikimedia Commons · 许可:CC BY 3.0

字幕

  1. Je m'appelle Jean- Marc Jézéquel,

    我叫让-马克·热泽凯尔,

  2. je suis professeur à l'Université de Rennes 1 et je dirige actuellement l'IRISA qui

    是雷恩第一大学的教授,目前担任信息与应用数学研究所(IRISA)所长,该所

  3. est un grand laboratoire d'informatique

    是布列塔尼地区一家大型计算机科学实验室,

  4. en Bretagne qui rassemble environ 750 personnes.

    汇聚了约750人。

  5. Je suis tombé dans l'informatique quasiment depuis tout petit,

    我几乎从小就开始接触计算机,

  6. ou plus exactement quand j'étais adolescent, vers la fin des années 70,

    更准确地说,是在青少年时期,大约在20世纪70年代末,

  7. où on a eu la chance de voir apparaître les premiers ordinateurs personnels

    当时我们有幸在朋友家或高中计算机俱乐部里见到首批个人电脑,

  8. chez des copains ou au club informatique du lycée.

    它们就这样走进了我们的生活。

  9. Et rapidement, j'ai acquis moi- même un petit ordinateur qui était un

    很快,我自己也买了一台小型计算机,

  10. Zénith 80 à l'époque.

    那是一台当时的“泽尼思80”(Zénith 80)。

  11. Et pour moi, ça a été absolument révélateur, ça a été vraiment un déclencheur,

    对我而言,这简直是顿悟时刻,真正成了我的启蒙契机,

  12. parce que j'avais envie de créer des choses.

    因为我一直渴望创造东西。

  13. Et il se trouve que je suis pas manuel, j'ai quasiment deux mains gauches,

    而我偏偏不擅长动手操作,几乎‘双手左撇’,

  14. je suis pas non plus très littéraire, et donc j'avais une certaine frustration.

    也不太擅长文学创作,因此内心一直有些失落和挫败感。

  15. Et là, tout d'un coup, j'avais un outil qui me permettait de créer des choses,

    但就在那一刻,我突然拥有了一件工具,让我能亲手创造事物,

  16. alors des choses simples au début, des logiciels

    起初只是些简单的软件,

  17. de jeu, des petites choses comme ça,

    比如游戏程序,一些小玩意儿,

  18. mais qui permettaient aux gens qui les utilisaient de dire: " Wow,

    可使用者一试就会惊叹:‘哇,这是有人做出来的!’

  19. il y a quelque chose qui a été créé." Donc dès le début,

    所以从一开始,

  20. j'ai appris à programmer par moi- même.

    我就自学编程。

  21. Puis il n'y avait pas internet à cette époque- là,

    那时还没有互联网,

  22. donc il fallait regarder dans les bouquins, avec les copains,

    所以我们只能和朋友们一起翻书、查资料,

  23. dans les magazines, comment...

    或翻阅杂志,学习……

  24. Alors au début, on commençait par recopier des programmes, aller modifier.

    起初,我们先照着抄写程序,再试着修改,

  25. à voir ce qu'on pouvait faire avec.

    看看自己能用它做出什么来。

  26. Et rapidement, je me suis trouvé dans la situation où je devais écrire des

    很快,我就发现自己不得不编写程序,

  27. programmes, pas seulement pour jouer, mais aussi pour faire des choses sérieuses,

    这些程序不仅用于娱乐,还用于完成重要任务,

  28. y compris des programmes qui écrivaient des programmes.

    甚至包括能自动生成其他程序的程序。

  29. J'ai commencé sur la partie logiciel machine en faisant en sorte que les machines

    我从软件与硬件的结合入手,

  30. complexes de l'époque, au début des années 90,

    让20世纪90年代初那些复杂的机器,

  31. qui étaient les superordinateurs massivement parallèles,

    也就是当时的大规模并行超级计算机,

  32. fournissent des abstractions et des langages de programmation plus aisés pour les

    为程序员提供更易用的抽象机制和编程语言,

  33. programmer de manière plus simple.

    从而简化编程过程。

  34. Et puis de l'autre côté, plus vers les humains,

    另一方面,更贴近人类需求的方向上,

  35. à partir de logiciels et formés de. Beaucoup de parties qui sont indépendantes.

    软件由许多独立的部分构成。

  36. L'idée, c'était de bâtir sur la notion de contrat pour capturer les droits et les

    其核心理念是基于‘契约’概念,

  37. obligations, si on veut, des

    明确各软件组件之间,

  38. éléments de logiciels mutuellement entre eux,

    以及它们与人类用户之间的权责关系。

  39. et y compris avec les humains. Clairement, l'informatique serait pendant,

    显然,计算机技术应服务于所有人;

  40. tout le monde n'a pas besoin d'être un programmeur, et donc ce qu'on fait,

    并非人人都需要成为程序员,

  41. c'est qu'on fait des logiciels qui aident les gens à programmer les ordinateurs.

    因此,我们开发出帮助普通人编程的软件。

  42. Donc c'est le contexte qu'on connaît dans l'industrie sous le nom de lignes de

    这正是业界所熟知的‘生成式编程产品线’,

  43. produits de programmation générative,

    即通过技术手段最终实现编程能力的普及化,

  44. et qui consiste à démocratiser finalement la création de langage qui permet à des

    让编程语言的创造能力惠及更多人,

  45. gens moins armés, moins passionnés d'informatique,

    例如技术背景较弱、对计算机兴趣不浓的人,

  46. ou disons qui ont un métier en dehors d'utiliser ces ordinateurs.

    或者说,职业本身并不涉及使用计算机的人。

  47. Alors qu'est- ce que c'est qu'un logiciel?

    那么,什么是软件?

  48. C'est effectivement un mot que tout le monde emploie.

    这个词,几乎人人都在用。

  49. À mon sens, il recouvre cinq aspects différents: un aspect algorithmique,

    在我看来,它涵盖五个不同维度:算法维度、

  50. un aspect information, un aspect langage,

    信息维度、语言维度、

  51. un aspect machine et un aspect but utilisation de ce logiciel.

    机器维度,以及软件的用途或目标维度。

  52. Je vais développer un petit peu ça.

    我将稍微展开讲一讲。

  53. Donc un algorithme, les gens voient à peu près ce que c'est,

    算法——大家大致知道它是什么,

  54. c'est essentiellement une recette de cuisine ou bien quelque chose qui permet,

    本质上就像一道菜谱,或者一种方法,

  55. compte tenu d'un problème, d'arriver à une solution.

    能针对某个问题,得出一个解决方案。

  56. Donc c'est décrit de manière formelle ou informelle.

    它的描述可以是形式化的,也可以是非形式化的。

  57. Ensuite, on a la notion d'information.

    接下来是‘信息’的概念。

  58. La notion d'information, ce sont les données qui sont manipulées par les ordinateurs

    所谓信息,就是计算机所处理的数据,

  59. et donc qui doivent être décrites,

    因此这些数据必须被加以描述,

  60. la structure de ces données doit être décrite à un moment donné.

    其中数据的结构也需在某个时刻明确说明。

  61. Pour faire ça, on a besoin de langages.

    为此,我们需要语言。

  62. Donc les langages, ce sont les langages de programmation: Java,

    这些语言就是编程语言,比如 Java,

  63. C++, JavaScript, PHP,

    C++、JavaScript、PHP,

  64. R, etc. , sont des exemples de langages qui permettent d'exprimer des algorithmes et

    R 等等——都是能表达算法和数据结构的语言。

  65. des structures de données.

    (续上)

  66. Mais tout ça n'existe pas de manière éthérée.

    但所有这些都不是凭空存在的。

  67. Pour pouvoir s'exécuter, un logiciel a besoin d'une machine.

    软件要运行,必须依赖一台机器。

  68. Alors une machine, c'est un terme générique pour désigner des réalités extrêmement

    ‘机器’是一个统称,指代差异极大的各种实体:

  69. différentes. Ça va de très petites choses comme par exemple un Raspberry Pi,

    小到像树莓派这样的微型设备,

  70. cette chose- là, qui est un processeur avec finalement un mini ordinateur qui tient

    也就是一块带处理器的迷你电脑,

  71. sur une petite carte.

    整个就集成在一张小小的电路板上。

  72. Une machine, c'est aussi un téléphone portable.

    ‘机器’也包括智能手机。

  73. Ce qu'il faut voir, c'est que le téléphone portable, ce n'est pas juste lui,

    需要明白的是,智能手机并不仅仅是一台孤立的设备;

  74. il est connecté par le réseau à tout un ensemble et toute une infrastructure,

    它通过网络连接着庞大的系统与基础设施,

  75. et quand vous lui demandez un service, par exemple vous demandez une

    当你向它提出一项服务请求时,比如语音识别,

  76. reconnaissance vocale, en général ça va

    通常这个请求会传送到远方,

  77. jusqu'aux ordinateurs de Google ou d'Apple qui sont localisés quelque part et qui

    抵达谷歌或苹果公司的服务器,

  78. vous retournent la réponse.

    再由它们把结果返回给你。

  79. Donc la machine, ce n'est pas juste lui qui est un terminal et une passerelle,

    因此,这台机器不仅仅指他本人,即一个终端和网关,

  80. c'est tout un ensemble de choses bien compliqué qui sont ce qu'on appelle le cloud,

    而是一整套相当复杂的设施,我们称之为‘云’,

  81. mais c'est aussi des machines qui existent dans notre monde,

    同时也包括存在于我们现实世界中的各种设备,

  82. des robots, des drones, des choses comme ça sont des machines,

    比如机器人、无人机等,也都属于机器,

  83. et le réseau qui permet de communiquer est de ce point de vue- là fait partie de la

    而实现通信的网络,从这个角度看,也属于机器的一部分。

  84. machine. Donc ça c'est le quatrième aspect.

    这就是第四个方面。

  85. Et puis le dernier aspect, c'est quand on fait un logiciel,

    最后一方面,是当我们开发软件时,

  86. c'est qu'on a un but, dans

    我们总有一个明确的目标,

  87. l'idée on a des utilisateurs, c'est- à- dire on a des humains en général qui vont

    即面向用户——通常指人类使用者,

  88. utiliser ce logiciel- là

    使用该软件,

  89. dans le cadre de leur métier, de leur activité, de leurs loisirs,

    用于工作、日常活动或休闲娱乐等场景,

  90. pour une raison X ou Y, et ça fait le cinquième aspect de ce qu'est un logiciel.

    出于这样或那样的原因,这也构成了软件的第五个方面。

  91. Même sur un petit morceau de logiciel pas très gros,

    即使是一个很小的软件模块,

  92. il y a des propriétés qui sont considérées comme indécidables,

    也存在一些被认定为‘不可判定’的性质,

  93. c'est- à- dire dont on ne peut pas prouver qu'elles sont vraies ni qu'elles sont

    也就是说,我们既无法证明它们为真,也无法证明它们为假。

  94. fausses, et des choses très simples comme savoir si une variable a une certaine

    一些看似简单的问题,例如某个变量是否具有特定值,

  95. valeur ou si on va passer par une certaine instruction ou si on va faire une

    某条指令是否会执行,或者程序在运行中是否会除零,

  96. division par zéro à un moment donné ne sont dans le cas général tout simplement pas

    在一般情况下,根本无法判定。

  97. prouvables. D'accord, donc c'est une limitation intrinsèque de ce qu'est un

    好的,因此这是软件本身固有的一种局限性。

  98. logiciel.

    (即软件本质所决定的限制)