Page 1 of 21

Présentation PB: Project Builder avec compilateur C en ligne

Unread postPosted: 18 Mar 2016, 21:30
by Adriweb
Français / English

Depuis sa création, TI-Planet met en avant la programmation, surtout sur les calculatrices TI, à travers un grand nombre de news, de présentations et tests de programmes, de tutoriaux, de concours etc.
Nous sommes ravis désormais de pouvoir lancer (en beta) une plateforme en ligne, et donc d'autant plus accessible à tous facilement, permettant d'aller encore plus loin dans cet effort de promotion de la programmation, que nous appelons le "Project Builder" (PB).

Le Project Builder, qu'est-ce que c'est ?
Simplement, c'est un "sous-site" de TI-Planet proposant à travers une interface simplifiée un ensemble d'outils ("modules"), comme par exemple des IDE (environnement de développement) pour créer, par soi-même ou à plusieurs, du contenu à travers des programmes pour calculatrices.

L'architecture modulaire du PB permet de gérer plusieurs types de projets, eux-mêmes contenant plusieurs éléments le cas échéant. Pour l’instant, le PB n'en est qu'à ses débuts, et le seul type de projet "prêt" est le compilateur C pour calculatrices CE (TI-83 Premium CE et TI-84 Plus CE), dont nous allons donner plus de détails dans la partie suivante.
En fait, on vous parlait déjà de ce Project Builder et son module de compilateur C depuis quelques temps (septembre 2015 !) dans le topic associé concernant ce module - ce n'est donc pas une véritable surprise ;)

Par ailleurs, dans le futur, on peut imaginer des modules comme des éditeurs de :
  • TI-Basic z80/eZ80 (séries 82/83/84)
  • TI-Nspire Lua
  • images/sprites
  • ...

Revenons un peu plus en détail sur la mention, plus haut, de la création "à plusieurs". En effet, le PB présente un aspect social et multi-utilisateurs :
  • Possibilité de partager ses projets avec d'autres personnes
  • Choix dudit partage en lecture-seule ou lecture-et-écriture
  • Possibilité de cloner/forker un projet existant
  • Édition collaborative en temps réel
  • Chat intégré


Nous espérons que ces efforts aideront à populariser la programmation auprès des collégiens, lycéens et étudiants, en leur fournissant une plateforme simple mais complète :)

Nous sommes par ailleurs fiers d'annoncer que le Project Builder est open-source, et même libre (GPLv3), pour permettre la contribution dans l’esprit de la communauté - il est conçu de telle sorte que son fonctionnement n'est pas verrouillé sur l’infrastructure du site. Nous encourageons (et remercions d'avance) toute personne intéressée à contribuer, pour rajouter des choses, corriger des bugs, etc. Le lien vers le code est disponible en bas de cet article.


Le compilateur C pour calculatrices CE, un module du PB
Ce n'est pas nouveau, depuis l'arrivée de la gamme "CE" des calculatrices TI en 2015, le nouveau matériel plus puissant les composant (CPU eZ80 plus rapide que le z80, davantage de RAM, etc.) permet de faire des choses bien plus intéressantes que sur les modèles d'avant, y compris donc de la programmation "native", en C, bien plus attrayante que de l'assembleur, et utilisée souvent sur ordinateur ou autres plateformes.
Le Project Builder intègre donc ce module "compilateur C pour CE", dont le back-end est basé sur les travaux de "MateoConLechuga" (que nous remercions bien) au niveau de la toolchain.

Fonctionnalités:
Relatifs au back-end (compilateur)
  • Compilation C pour CE via utilisation transparente de la toolchain C89/ANSI de ZDS (outil Zilog officiel)
  • Intégration d'includes (headers) standards améliorés
  • Link automatique des bibliothèques que vous utilisez dans votre code source le cas échéant (include dans lib/ce/)
  • Analyse statique automatique via cppcheck (avec présentation intégrée à l'éditeur)

Relatifs au front-end (interface utilisateur)
  • Coloration syntaxique
  • Auto-complétion semi-intelligente
  • Support de projets multi-fichiers
  • Console affichant la sortie du Makefile (log de build, link, etc.)
  • Indicateur d'état de build et timestamp associé
  • Affichage inline des warnings et erreurs
  • Exemples/templates intégrés pour pouvoir partir d'une base existante
  • "Goodies" divers sur l'éditeur
    • Auto-indentation, Sélections/curseurs multiples, Code folding...
    • Search&Replace intégré (avec option RegExp)
    • Ctrl/Cmd + survol de la souris sur une variable/fonction pour voir sa définition, ou clic pour aller à sa définition
    • Ctrl/Cmd + survol de la souris sur un nombre en base 10 pour le voir en base 16, ou clic pour le transformer en base 16

Spécifiques aux calculatrices CE
  • Export en fichier .8xp (programme) directement
  • Intégration d'includes (headers) standards spécifiques aux calculatrices CE (via Toolchain et Libraries)
  • Choix du nom du programme


Fonctionnalités prévues dans le futur...:
En plus d'améliorations diverses du GUI pour une meilleure expérience utilisateur, sont normalement prévues:
Show/Hide spoilerAfficher/Masquer le spoiler
  • Intégration du coeur de l'émulateur CEmu pour pouvoir tester et débugger ses programmes en temps-réel :bj:
  • Gestion du partage plus approfondie (en plus du read/write actuel, possibilité de choisir des utilisateurs spécifiques ayant accès)
  • Auto-complétion et aide inline pour les fonctions relatives à la CE
  • Liste dynamique/intéractive des fonctions du fichier en cours
  • Meilleure intégration des features de CodeMirror au niveau du multi-fichiers
  • Choix de compilation avec optimisation orienté vitesse (actuellement le cas) ou en taille
  • Choix du .8xp pour mettre le programme par défaut en RAM ou en Archive
  • Intégration de versioning (Git etc.)
  • Import/Export de projets
  • Intégration de la toolchain LLVM eZ80 quand celle-ci sera prête :)
  • Un thème sombre
  • Vos idées ?



Liens


Une question ? Une idée ? Un bug ? N'hésitez pas à participer sur ce topic !
Since its beginning, TI-Planet has promoted programming, especially on TI calculators, through many news, program features and reviews, tutorials, contests etc.
We are now proud to launch, in beta, a new online platform (online so as to be more easily accessible), to push even further this programming promotional effort. This online tool is called the "Project Builder" (PB).

What's the "Project Builder"?
Simply put, it's a "subsite" of TI-Planet, that offers a simplified interface through a set of tools ("modules"), such as an IDE, for creating, by oneself or with other people, content like programs, for calculators.

The modular architecture of the PB allows for multiple types of projects themselves possibly containing several elements. For now, the PB is still veyr young, and the only "ready" project type / module is the C compiler for the CE calculators (TI-84 Plus CE and TI-83 Premium CE), on which we will give more details in the next section.
In fact, we had already told you a bit about the PB and its C Compiler some time ago (September 2015!) in another topic, so it might not be much of a surprise ;)

Moreover, in the future, we can imagine other modules like:
  • TI-Basic z80/eZ80 (82/83/84 series)
  • TI-Nspire Lua
  • images/sprites
  • ...

Let's go back in a little more detail on the reference above, creating things "with other people". Indeed, the PB has social / multi-user features:
  • Possibility of sharing one's projects with other people
  • Such sharing can be in read-only or read/write access
  • Possibility of cloning/forking a project
  • Real-time multiuser editing/collaboration
  • Integrated chat


We hope that these efforts will help popularize programming among high school and university students, providing a simple yet comprehensive platform :)

We are also glad to announce that the Project Builder is open-source, and even free as in freedom (GPLv3), to enable the contribution in the spirit of the community - it is designed in such a way that its operation is not locked on a specific site infrastructure. We encourage (and thank in advance) anyone interested in contributing and helping in general, adding things, fixing bugs, etc. A link to the code is available at the bottom of this article.


The C Compiler for the CE calculators - a module of the PB
This isn't new - since the release of the CE calculators series in 2015, their new more powerful hardware (eZ80 CPU, faster than the Z80, more RAM, etc.) allows much more interesting things than on prior models, including indeed "native" C programming, much more attractive than assembly, and often used on PC or other platforms.
The Project Builder thus has a "CE C compiler" module, whose back-end is based on the toolchain work by "MateoConLechuga" (who we thank very much).

Features:
Relative to the back-end (compiler)
  • Compiling C for the CE via a transparent usage of the C89/ANSI ZDS-powered toolchain (using official Zilog tools)
  • Integrates enhanced standard include files (headers)
  • Automatic linking of libraries that you use in your source code (include in lib/ce/)
  • Automatic static code analysis via cppcheck (with built-in inline editor display)

Relative to the front-end (user interface)
  • Syntax coloring
  • Half-smart auto-completion
  • Multi-file project support
  • Console showing the Makefile output (build log, link log, etc.)
  • Build status indicator with associated timestamp
  • Inline display of compilation warning and errors
  • Embedded examples/templates so as to start from an existing base
  • Various editor "Goodies"
    • Auto-indentation, multiple selections/cursors, Code folding...
    • Built-in search&replace (with RegExp possibility)
    • Ctrl/Cmd + mouse-over on a variable/function to see its definition, and click to jump to it
    • Ctrl/Cmd + mouse-over on a base 10 number to see base 16 representation, and click to make it written in base 16

Specific to CE calculators
  • Export to .8xp (program) file directly
  • Integrates include files (headers) specific to the CE (via Toolchain and Libraries)
  • Program name choice


Features planned for the future...:
In addition to various improvements on the GUI for a better user experience, the following are on the TODO list:
Show/Hide spoilerAfficher/Masquer le spoiler
  • Integration of the CEmu emulator core in order to try and debug programs in real-time :)
  • Deeper sharing options (in addition to read/write currently, possibility to choose specific user access)
  • Auto-completion and inline help for CE-specific functions Done :)
  • Dynamic/Interactive function list in the current file Done :)
  • Improved integration of CodeMirror features for multi-file projects
  • Choice of compiling optimization towards speed (current setting) or size Done :)
  • Choice for the .8xp to be set by default in RAM or in Archive No need anymore, archive ftw :)
  • Versioning integration (Git etc.)
  • Project Import/Export Done :)
  • Integrating the LLVM eZ80 toolchain when it is ready :) Done :)
  • A dark theme Done :)
  • Your ideas?



Links


A question? An idea? A bug report? Feel free to reply in this topic!


TI-Planet-PB-presentation.ppsx

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:36
by noelnadal
Un juge en ligne, ça pourrait être intéressant même si c'est pas hyper-simple à coder. :D
Beau travail en tout cas, et bonne continuation. :bj:

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:39
by QuanticPotato
Woaw :o ça à l'air cool !

Alors là, respect :bj:

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:41
by critor
Félicitations Adriweb pour cet excellent travail ! :bj:

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:43
by Adriweb
noelnadal wrote:Un juge en ligne

Un quoi ?
:comprends_po:

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:45
by critor
Pour noter automatiquement les projets CE participant au TI-Concours ? :troll:

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:54
by Epharius
Excellent ! Ça me redonne en vie de faire du C x)
Le truc, mais à mon avis impossible via le navigateur sans installer de plug-in toussa, ce serait de pouvoir transférer automatiquement le fichier à la calculatrice. Ce serait vraiment top, parce que là, il faut quand même télécharger, et aller dans le dossier pour envoyer le fichier via Ti-Connect CE...
Bref, si c'est pas possible, pas grave, c'est déjà tellement cool \o/

(J'attends le thème sombre :p )


EDIT : j'ai vu un bug, quand on build+Download et qu'on essaie de créer un nouveau projet :
[Error] Bad CSRF token. Please refresh.

Vous avez aussi ça, vous ?

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 21:58
by Adriweb
Epharius wrote:Excellent ! Ça me redonne en vie de faire du C x)
Le truc, mais à mon avis impossible via le navigateur sans installer de plug-in toussa, ce serait de pouvoir transférer automatiquement le fichier à la calculatrice. Ce serait vraiment top, parce que là, il faut quand même télécharger, et aller dans le dossier pour envoyer le fichier via Ti-Connect CE...

Ca sera déjà mieux avec l'intégration de CEmu :P
Ensuite, le client TI-Planet pourra s'occuper de faire un lien entre les calculatrices branchées et le PB, pourquoi pas...

Epharius wrote:EDIT : j'ai vu un bug, quand on build+Download et qu'on essaie de créer un nouveau projet :
[Error] Bad CSRF token. Please refresh.

Vous avez aussi ça, vous ?

J'avais ça à un moment, mais plus depuis que j'ai corrigé le bug à l'origine de ceci...
Tu as fait quoi exactement ? (dans quel ordre etc.)

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 22:03
by noelnadal
critor wrote:Pour noter automatiquement les projets CE participant au TI-Concours ? :troll:


Mais comment a-t-il deviné ? :troll:

Re: Présentation du Project Builder avec compilateur C en li

Unread postPosted: 18 Mar 2016, 22:04
by Epharius
Exactement, ma démarche c'est :
- Build&Get 8xp
- Annul (quand j'ai le petit pop-up qui me fait confirmer que je veux DL le fichier)
- New project

Et j'ai ce bug. Mais je crois que le moment où je clique sur annul n'est pas important.
J'utilise Win10, firefox 44.0.2