Tout comme FP l'a fait, au final, tous nos programmes sont structurés. Autrement dit, peu importe à quel point nous les fabriquons, purs ou fonctionnels - ils sont toujours traduits en assemblage, donc ce qui se passe réellement derrière les capots, ce sont les instructions, les états et les boucles. Nous sommes une sorte d'émulation de FP.
En tant que noob matériel, ma question est: pourquoi n'utilisons-nous pas des architectures informatiques qui calculent réellement les choses dans un style fonctionnel? Par exemple, un ordinateur pourrait être constitué de "puces fonctionnelles" primitives telles que "concat", "mapper" et "réduire", et un programme dirait simplement à l'ordinateur comment faire circuler les données entre ces puces afin de calculer le résultat souhaité , comme dans les langues concaténatives.
Cela n'a pas vraiment de sens mais pourrait illustrer ce que je pense.
if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation.
Pas vraiment, car Filter n'est pas "une opération"; c'est une fonction d'ordre supérieur qui applique une opération externe arbitraire à une liste. Vous ne pouvez pas réduire cela à un seul cycle d'horloge.Réponses:
Ils font des ordinateurs comme ça. Cela s'appelle un FPGA . Bien sûr, les FPGA prennent en charge la logique séquentielle et combinatoire, mais rien ne vous empêche d'utiliser simplement la partie combinatoire comme vous le suggérez.
En pratique, cependant, la logique séquentielle (du type avec état) est extrêmement utile même au niveau de la puce. D'une part, il réduit considérablement le nombre de portes logiques nécessaires pour résoudre un problème. D'autre part, il résout de nombreux problèmes de conception liés à des signaux ayant des retards de propagation différents.
Si vous êtes intéressé par ce genre de chose, les FPGA valent la peine d'être vérifiés. Il existe une planche peu coûteuse de type arduino appelée papilio , idéale pour les débutants. Les gens l'utilisent pour tout, du contrôle du robot à l'extraction de bitcoins.
la source
Essentiellement, oui, les ordinateurs analogiques fonctionnaient de cette façon: vous changiez les paramètres et un courant électrique était modifié en conséquence. C'est ce qui les a rendus "plus rapides", pendant un certain temps, dans les années 1950 - vous ne vous êtes pas souciés de la lente création et modification des "états" séparés comme dans les mastodontes numériques d'autrefois.
Et sans doute, les ordinateurs quantiques pourraient également fonctionner de cette façon: si l'état de certains phénomènes quantiques dépend de l'état d'autres, alors changer un état "initial" changera simultanément les états suivants - pas d '"états" entre les deux.
la source