Le plus petit traducteur que vous ayez jamais vu
Ce matin, j'ai écrit un traducteur Brainf ** K C. Cela m'a pris environ une heure au total.
L'ensemble du contenu est inférieur à 50 lignes de code C. Vous pouvez le voir ici.
Qu'est-ce que Brainf ** k?
Il s'agit d'une langue d'encodage profonde. Inventé par des étudiants suisses en 1993, il est presque considéré comme l'exigence minimale pour Turiner l'exhaustivité.
C'est également l'une des langues Essolan les plus célèbres qui existent.
La syntaxe est extrêmement simple: il n'y a que 8 caractères et le reste sera ignoré.
> [ -] <.> [ -] <....>> [ -] [ -] <. .----------------------->>> [ -] <.><p>Devinez ce qu'il fait. Devinez-le.</p> <p> C'est un monde de bonjour! programme.</p> <p> Essentiellement, dans Brainf ** k, vous obtenez un tableau de 30000 octets et un curseur. Vous pouvez utiliser> et <pour d le curseur. vous pouvez modifier la m en utilisant et qui augmentera ou diminuera valeur dans cellule. cr des boucles enfin utiliser lecture seul octet comme entr utilisation.> Imprimez la valeur de la cellule actuelle</pour></p> <pre class="brush:php;toolbar:false"> >; incréments position de curseur <p>C'est presque tout sur le cerveau ** k.<br> J'ai déjà écrit des programmes plus fonctionnels en <em>assemblage</em> .</p><h2 id="Pourquoi-Pourquoi"> Pourquoi? Pourquoi?</h2><p> J'ai écrit ce compilateur complètement parce que je m'ennuyais et j'ai trouvé beaucoup d'interprètes, donc je pense que le monde a besoin d'un compilateur Brainf ** k.</p><blockquote><p> Néanmoins, il est indéniable que si vous voulez un très bon compilateur Brainf ** k, consultez celui-ci.</p></blockquote><h3 id="Pourquoi-c"> Pourquoi c?</h3><p> Plusieurs raisons:</p>
- Je veux plus de pratique
- Très rapide
- C'est principalement portable
- Très courant
- Quoi qu'il en soit, je n'ai pas besoin de beaucoup de code.
La dernière raison: le débordement entier. Souvent, c'est une mauvaise chose que les gens détestent. Cela peut être la raison pour laquelle les tests unitaires sont inventés (euh). Mais le cerveau ** k est différent. La limite supérieure du nombre dans la bande de mémoire est de 255, et si elle dépasse cela, elle doit être réinitialisée à 0. De plus, si la valeur est inférieure à 0, elle doit être réinitialisée à 255. C le fera seul; Je n'ai pas besoin d'écrire de code pour cela.
comment ?
Un aperçu de niveau supérieur:
- Lire le code du fichier ou une entrée standard à la mémoire
- Convertir chaque caractère en code C
- Code C imprimé.
Il lit le code Brainf ** k du fichier dans le code [].
Ensuite, il met en place un programme C de base:
#include <stdio.h> int main () {char t [30000] = {0}; int p = 0; </stdio.h>
Vous avez peut-être remarqué qu'il manque le support de clôture. En effet, plus de code est ajouté au char [].
Si vous voulez savoir, Char T [30000] est la mémoire qui vous est donnée. J'utilise T comme abréviation de la bande, mais je le raccourcisse car ces programmes ne conviennent pas à la lisibilité humaine.
Ensuite, il traverse le tableau de code, qui est un tableau de caractères uniques. Pour chaque caractère, il le convertit en code C:
personnage | Devient |
---|---|
> | p |
p- | |
- | t [p] - |
t [p] | |
. | putchar (t [p]) |
, | t [p] = getchar () |
[ | tandis que (t [p]! = 0) |
]] | } |
Vous pouvez consulter ce qui précède pour voir ce que font ces symboles.
Ces valeurs seront ajoutées à la sortie du programme, qui contiendra un code C valide.
Enfin, ajoutez ce code à la sortie finale:
retour 0;}
Le programme de sortie se termine ici. Le traducteur imprime ensuite ce code en sortie standard afin que l'utilisateur puisse fonctionner comme il le souhaite.
La pensée finale
J'ai quelques idées d'amélioration lors de la rédaction de ce post. Je ne pense pas que je puisse faire trop de choses pour le rendre plus rapide, mais je peux faire quelque chose pour le rendre plus sûr et meilleur.
Vous pouvez afficher le code final ici.
Vous pouvez également faire n'importe quel type de contribution si vous le souhaitez.
Merci d'avoir lu!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les plateformes de données de crypto-monnaie adaptées aux débutants incluent CoinmarketCap et la trompette non à petites choses. 1. CoinmarketCap fournit des classements mondiaux de prix, de valeur marchande et de volume de trading pour les besoins novices et d'analyse de base. 2. La citation non à petites choses fournit une interface adaptée aux Chinois, adaptée aux utilisateurs chinois afin de projeter rapidement des projets potentiels à faible risque.

Les investisseurs institutionnels devraient choisir des plateformes conformes telles que Coinbase Pro et Genesis Trading, en se concentrant sur les ratios de stockage du froid et la transparence d'audit; Les investisseurs de détail devraient choisir de grandes plateformes telles que Binance et Huobi, en se concentrant sur l'expérience utilisateur et la sécurité; Les utilisateurs des zones sensibles à la conformité peuvent effectuer un échange de monnaie fiduciaire via Circle Trade et Huobi Global, et les utilisateurs chinois du continent doivent passer par des canaux conformes en vente libre.

Les facteurs suivants doivent être pris en compte lors du choix d'une plate-forme de trading en vrac: 1. Liquidité: la priorité est donnée aux plateformes avec un volume de trading quotidien moyen de plus de 5 milliards de dollars américains. 2. Conformité: Vérifiez si la plate-forme détient des licences telles que FinCEN aux États-Unis, Mica dans l'Union européenne. 3. Sécurité: Ratio de stockage du portefeuille à froid et mécanisme d'assurance sont des indicateurs clés. 4. Capacité de service: s'il faut fournir des gestionnaires de compte exclusifs et des outils de transaction personnalisés.

La priorité est donnée à des plates-formes conformes telles que OKX et Coinbase, l'activation de la vérification multi-facteurs, et l'auto-cuir de l'auto-assurance peut réduire les dépendances: 1. Sélectionnez un échange avec une licence réglementée; 2. Allumez la liste blanche de 2FA et les retraits; 3. Utilisez un portefeuille matériel ou une plate-forme qui prend en charge l'auto-cuir.

Fournit une variété d'outils de trading complexes et d'analyse du marché. Il couvre plus de 100 pays, a un volume de trading dérivé quotidien moyen de plus de 30 milliards de dollars, prend en charge plus de 300 paires de trading et 200 fois un effet de levier, a une forte force technique, une énorme base d'utilisateurs mondiaux, fournit des plateformes de trading professionnelles, des solutions de stockage sécurisées et des paires de trading riches.

Les dix premiers échanges de devises numériques sécurisés en 2025 sont: 1. Binance, 2. Okx, 3. Gate.io, 4. Coinbase, 5. Kraken, 6. Huobi, 7. Bitfinex, 8. Kucoin, 9. Bybit, 10. Bitstamp. Ces plateformes adoptent des mesures de sécurité à plusieurs niveaux, y compris la séparation des portefeuilles chauds et froids, la technologie multi-signature et un système de surveillance 24/7 pour assurer la sécurité des fonds utilisateur.

Les stablecoins communs sont: 1. L'exploitation, émise par Tether, fixée au dollar américain, largement utilisée mais la transparence a été remise en question; 2. Dollar américain, émis par Circle et Coinbase, avec une grande transparence et favorisé par les institutions; 3. Dai, publié par Makerdao, décentralisé et populaire dans le champ Defi; 4. Binance Dollar (BUSD), coopéré par Binance et Paxos, a d'excellentes performances de négociation et de paiement; 5. Trusto

Les données du marché des crypto-monnaies peuvent être obtenues à partir des cinq canaux suivants: 1. Les pages de marché des échanges (telles que Binance, OKX, Gate.io) fournissent des prix en temps réel et des graphiques approfondis; 2. 3. Les données sur la chaîne et les outils de marché Defi (tels que Defillama, analyse des dunes) se concentrent sur les projets Defi et les données sur la chaîne; 4. News et les sites Web complets du marché (tels que Coinjie.com, Currency.com) fournissent un prix de monnaie en temps réel et une analyse du marché; 5. Les médias sociaux et les communautés (comme Twitter, Telegram) peuvent obtenir un sentiment du marché et un nouveau soudain
