| 📦 Turbo Golo d710c1b k33g 22h ago | 1 | # Tutoriel : votre premier programme Golo dans Turbo Golo |
| 2 | |
| 3 | À la fin de ce tutoriel, vous aurez écrit, lancé et cassé un petit programme Golo sans quitter l'éditeur — et vu l'éditeur vous dire où était l'erreur. |
| 4 | |
| 5 | Aucune connaissance préalable de Turbo Golo n'est nécessaire. Il vous faut Go 1.26 ou plus récent pour compiler l'éditeur, et l'interpréteur `golo` pour exécuter le programme. |
| 6 | |
| 7 | ## Prérequis |
| 8 | |
| 9 | Vérifiez Go : |
| 10 | |
| 11 | ```bash |
| 12 | go version |
| 13 | ``` |
| 14 | |
| 15 | Vous devriez voir quelque chose comme : |
| 16 | |
| 17 | ``` |
| 18 | go version go1.26.5 linux/arm64 |
| 19 | ``` |
| 20 | |
| 21 | Vérifiez l'interpréteur : |
| 22 | |
| 23 | ```bash |
| 24 | golo --version |
| 25 | ``` |
| 26 | |
| 27 | ``` |
| 28 | v0.1.1 | dev.20260802.🤓 |
| 29 | ``` |
| 30 | |
| 31 | Si la commande est introuvable, installez-le d'abord — [un téléchargement ou un script suffit](../how-to/install-goloscript.md). |
| 32 | |
| 33 | ## Étape 1 — Installer l'éditeur |
| 34 | |
| 35 | ```bash |
| 36 | git clone https://rickub.com/turbo-editors/turbo-golo.git |
| 37 | cd turbo-golo |
| 38 | make install |
| 39 | ``` |
| 40 | |
| 41 | L'installeur compile, installe, puis vérifie ce qu'il a installé. Les dernières lignes sont : |
| 42 | |
| 43 | ``` |
| 44 | ==> Checking the language server |
| 45 | ✓ golo at /usr/local/bin/golo — completion comes from `golo lsp` |
| 46 | |
| 47 | ==> Ready |
| 48 | ``` |
| 49 | |
| 50 | Nous avons maintenant une commande `turbo-golo`. |
| 51 | |
| 52 | ## Étape 2 — Créer un dossier |
| 53 | |
| 54 | ```bash |
| 55 | mkdir /tmp/hello |
| 56 | cd /tmp/hello |
| 57 | ``` |
| 58 | |
| 59 | C'est là tout ce qu'il faut pour créer un projet Golo : Golo n'a pas de manifeste, un script est un fichier, et un programme est un dossier de fichiers. **Le dossier dans lequel vous démarrez l'éditeur** est celui où les commandes du menu Golo s'exécuteront, démarrez-le donc ici. |
| 60 | |
| 61 | ## Étape 3 — Ouvrir un fichier qui n'existe pas encore |
| 62 | |
| 63 | ```bash |
| 64 | turbo-golo hello.golo |
| 65 | ``` |
| 66 | |
| 67 | L'écran se remplit. En haut : |
| 68 | |
| 69 | ``` |
| 70 | File Edit Search Run Code Options Window Snippets Golo Help |
| 71 | ``` |
| 72 | |
| 73 | Dix menus, et le neuvième porte le nom du langage. Au milieu, une fenêtre vide intitulée `hello.golo`. En bas, à droite, vous devriez voir : |
| 74 | |
| 75 | ``` |
| 76 | 1:1 LSP: ready |
| 77 | ``` |
| 78 | |
| 79 | `LSP: ready` signifie que `golo lsp` — l'interpréteur, en mode serveur de langage — a démarré dans ce dossier. Nous nous en servirons à l'étape 8. |
| 80 | |
| 81 | ## Étape 4 — Écrire le programme |
| 82 | |
| 83 | Tapez ceci. Tapez-le exactement ; nous allons regarder les couleurs juste après. |
| 84 | |
| 85 | ```golo |
| 86 | module hello.World |
| 87 | |
| 88 | # Greet someone several times |
| 89 | struct Greeting = { name, times } |
| 90 | |
| 91 | function greet = |g| { |
| 92 | foreach i in range(1, g: times() + 1) { |
| 93 | println("Hello, " + g: name() + "! (" + i + ")") |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | function main = |args| { |
| 98 | greet(Greeting("Golo", 3)) |
| 99 | } |
| 100 | ``` |
| 101 | |
| 102 | Si une liste de complétion s'ouvre pendant que vous tapez — un `.` en demande une de lui-même, et `hello.` en est un — continuez à taper ou appuyez sur `Échap` ; `Entrée` accepterait la première entrée. |
| 103 | |
| 104 | Appuyez sur `F2` pour enregistrer. La barre d'état affiche `Saved hello.golo`. |
| 105 | |
| 106 | ## Étape 5 — Lire les couleurs |
| 107 | |
| 108 | Regardez ce que vous venez de taper. Dans le thème par défaut `turbo-classic` : |
| 109 | |
| 110 | | Quoi | Couleur | |
| 111 | | --- | --- | |
| 112 | | `module`, `struct`, `function`, `foreach`, `in` | blanc vif, gras — mots-clés | |
| 113 | | `hello.World`, `Greeting` | cyan vif — un chemin de module, et un type | |
| 114 | | `greet`, là où il est déclaré comme là où il est appelé | jaune vif, gras — fonctions | |
| 115 | | `range`, `println` | cyan vif, gras — des fonctions fournies par l'interpréteur | |
| 116 | | `name`, `times`, `g`, `i`, `args` | jaune vif — noms ordinaires | |
| 117 | | `"Hello, "`, `"! ("`, `")"`, `"Golo"` | vert — chaînes | |
| 118 | | `1`, `3` | magenta — nombres | |
| 119 | | `# Greet someone several times` | gris — un commentaire | |
| 120 | | `\|`, `:`, `+`, `=` | blanc — opérateurs | |
| 121 | |
| 122 | Deux de ces lignes méritent un second regard. |
| 123 | |
| 124 | **`Greeting` est cyan et `greet` est jaune**, et personne n'a dit à l'éditeur lequel des deux est un type. C'est la convention de Golo qui tranche : les structs, les unions et leurs variantes sont les noms que l'on écrit avec une majuscule, une majuscule est donc colorée comme un type. |
| 125 | |
| 126 | **`greet` est jaune là où il est déclaré**, après `function`, bien qu'aucune parenthèse ne le suive à cet endroit. Le nom qui suit `function` est une fonction par sa position — [et c'est une règle délibérée](../explanation/colouring-and-completion.md). |
| 127 | |
| 128 | ## Étape 6 — Donner ses outils au projet |
| 129 | |
| 130 | Appuyez sur `F10` pour ouvrir la barre de menus, puis sur `→` **huit fois** pour atteindre **Golo** — après Edit, Search, Run, Code, Options, Window et Snippets. Plus rapide : `Alt-G`. |
| 131 | |
| 132 | Le menu contient deux entrées, et une seule est disponible : |
| 133 | |
| 134 | ``` |
| 135 | ┌───────────────────┐ |
| 136 | │ Create tools file │ |
| 137 | │ Open tools file │ ← grisée ; il n'y a pas encore de fichier à ouvrir |
| 138 | └───────────────────┘ |
| 139 | ``` |
| 140 | |
| 141 | Choisissez **Create tools file**. |
| 142 | |
| 143 | Une seconde fenêtre s'ouvre sur le fichier qui vient d'être écrit, `.turbo-golo/tools.toml`. Lisez-le si vous voulez — il explique chacune de ses clés — puis fermez-le avec `Ctrl-W`. |
| 144 | |
| 145 | Regardez la barre de menus : un menu **Tools** est apparu entre Golo et Help. La dernière entrée du fichier de départ nomme un menu à elle, et cette seule ligne est tout le mécanisme. |
| 146 | |
| 147 | Rouvrez le menu Golo. Il contient maintenant huit commandes, et les deux entrées ont échangé leurs rôles : `Create tools file` est grisée, et c'est `Open tools file` qui est choisissable. |
| 148 | |
| 149 | ## Étape 7 — Le lancer |
| 150 | |
| 151 | Appuyez sur `Alt-G` et choisissez **Run**. Une boîte demande une valeur avant de lancer la commande, parce que Golo n'a pas de manifeste qui dise quel fichier est le programme : |
| 152 | |
| 153 | ``` |
| 154 | ┌──────────────── Run ────────────────┐ |
| 155 | │ script, e.g. main.golo │ |
| 156 | │ [ ] │ |
| 157 | └─────────────────────────────────────┘ |
| 158 | ``` |
| 159 | |
| 160 | Tapez `hello.golo` et appuyez sur `Entrée`. Une fenêtre de terminal s'ouvre et le programme s'y exécute : |
| 161 | |
| 162 | ``` |
| 163 | Hello, Golo! (1) |
| 164 | Hello, Golo! (2) |
| 165 | Hello, Golo! (3) |
| 166 | ``` |
| 167 | |
| 168 | Un terminal plutôt qu'une boîte de dialogue, parce qu'un programme qui lit le clavier doit pouvoir recevoir une réponse. Le programme est terminé, la fenêtre a donc cessé de se comporter comme un terminal et toutes les touches reviennent à l'éditeur : appuyez sur `Ctrl-W` pour la fermer. |
| 169 | |
| 170 | ## Étape 8 — Le casser, et voir où |
| 171 | |
| 172 | Allez à la fin du fichier, après la dernière `}`, et ajoutez un commentaire comme un autre langage l'écrirait : |
| 173 | |
| 174 | ```golo |
| 175 | // run it |
| 176 | ``` |
| 177 | |
| 178 | Appuyez sur `F2` pour enregistrer. |
| 179 | |
| 180 | En moins d'une seconde, deux choses se produisent. Un `×` rouge apparaît dans la gouttière, juste à gauche du numéro de cette ligne. Et la barre d'état affiche : |
| 181 | |
| 182 | ``` |
| 183 | ⚠ GoloScript has no '//' line comments. GoloScript comments are '#' for a single line (e.g. … |
| 184 | ``` |
| 185 | |
| 186 | Personne ne l'a demandé. `golo lsp` le publie de lui-même chaque fois qu'il relit le fichier — une erreur de syntaxe aurait valu la même marque, et celle-ci est un lint que le serveur ajoute parce que c'est la première erreur que fait quiconque arrive d'un autre langage. |
| 187 | |
| 188 | Remplacez le `//` par `#` et enregistrez de nouveau ; la marque et le message disparaissent tous les deux. |
| 189 | |
| 190 | ## Étape 9 — Changer de thème |
| 191 | |
| 192 | `F10`, puis `→` **cinq fois** pour atteindre **Options** — après Edit, Search, Run et Code. Choisissez **Theme…**. |
| 193 | |
| 194 | Une liste s'ouvre sur le thème dans lequel vous êtes. Appuyez sur `↓` jusqu'à `cobalt` puis `Entrée`. Tout l'écran change, en gardant la même forme. |
| 195 | |
| 196 | Appuyez sur `Alt-X` pour quitter. L'éditeur pose d'abord la question des fichiers non enregistrés, s'il y en a. |
| 197 | |
| 198 | ## Et maintenant ? |
| 199 | |
| 200 | Vous avez écrit un programme Golo dans l'éditeur, l'avez lancé, cassé, et vu l'éditeur dire où. Pour aller plus loin : |
| 201 | |
| 202 | - Pour faire des choses précises → les [guides pratiques](../how-to/) |
| 203 | - Pour savoir exactement ce qui est coloré et comment → [langages colorés](../reference/languages.md) |
| 204 | - Pour comprendre pourquoi l'éditeur est bâti ainsi → les [explications](../explanation/) |