Commencer un projet, que choisir?

Bonjour à tous, c’est mon premier message ici mais surtout la première fois que je vais travailler sur une Raspberry et j’ai donc besoin de vos lumières… :bulb:

Deux amis et moi-même commençons un projet scolaire sur lequel nous avons décidé de travailler sur Raspberry. Je suis novice et eux ont un tout petit peu bidouiller déjà.

Pour ce qui est de l’équipement, nous utilisons une Pi4 avec un écran tactile et un système Nfc.

L’idée est de créer une application qui tournerai en permanence à l’allumage, comme s’il s’agissait d’un bureau (dans un style plutôt téléphone genre liste d’application) qui possèderait elle même des petites app et pourrait en télécharger. :grimacing:

Nous souhaitons donc créer la « Main app » ainsi que des petites app « interne » et à télécharger.

D’après vous cela est-il envisageable et si oui quelles sont vos conseil ?
J’ai vu beaucoup de choses grâce à l’ami google mais pas facile de faire le tri…
Quel Os utilisé ? Quel langage pour les applications ? etc…

Merci d’avance pour vos conseil, idée, lien… :grinning:

je te conseille de regarder du côté de yunohost.

Quel est votre niveau scolaire?

Pour l’OS (ou plutôt, la distribution) je vous conseillerai, au moins pour commencer, la distribution officielle, RpiOS (stable, supportée: si vous developpez du logiciel, vous n’avez pas à gérer les éventuels défauts d’une distribution et vous pouvez être amenés à demander de l’aide: tant qu’à faire, vaut mieux passer par une distribution populaire).
Nota: une définition d’OS est dans wikpedia, une des déités des cancres -et tout le monde l’est plus ou moins- https://en.wikipedia.org/wiki/Operating_system; une distribution englobe un OS, et des tas de programmes, ainsi que les utiltaires pour en telecharger des tas -10E4 au moins pour Debian instable- d’autres; si votre prof est un puriste (à mon sens, il aura raison), il sera traumatisé par la confusion.

Pour le langage: avez vous appris python ? Si c’est le cas, c’est le langage idéal pour RPi, car le distributeur a mis tout ce qu’il faut pour développer simplement: des éditeurs (geany et nano), un interpréteur récent , python3 , deux environnements de developpement -si vous aimez_
Si vous venez du monde Arduino, vous avez aussi tout ce qu’il faut pour developper en C(+++): les compilateurs, make (+ les paquets Debian). Sachez que C
++ est plus compliqué que la version simplifiée supportée par Arduino .

dans tous les cas, vous avez peut être interet -surtout pour un projet scolaire- à expliquer que vous avez choisi de decouper votre projet en petites briques, bien testées (au démarrage, c’est lent et pas du tout sexy: mais, si vous testez méthodiquement, vous n’aurez pas d’inquietudes de savoir si vous avez construit sur des bases saines.
Certains utilitaires permettent de savoir si :

  • un (bout de) programme C(++) est trop compliqué pour être lu/relu/testé : pmccabe https://en.wikipedia.org/wiki/Cyclomatic_complexity (sudo apt get install pmccabe vous l’installe)
  • un (bout de) programme C(++) est laid : cpplint https://en.wikipedia.org/wiki/Cpplint dit s’il peut être lu … par des ingenieurs de google (et quelles sont les lignes à corriger Edité: si les messages sont incompréhensibles, demandez à stackoverflow -voir plus bas- )

ou présente des risques de mauvais comportement à l’éxécution : splint https://en.wikipedia.org/wiki/Splint_(programming_tool) permet de detecter quelques horreurs… C’est toujours ça de moins.

Ces utilitaires peuvent aussi guider, dans une certaine mesure, votre choix si google vous ramène trop de trucs ayant la même fonction…

Une autre bonne source pour comprendre et corriger ses erreurs de programmation est stackoverflow (mettre un message d’erreur , prefixé par stackoverflow et laisser faire google est assez efficace)… Normalement, les types d’erreurs sont assez restreints, et il suffit de lire (et les correcteurs bénvoles n’aiment pas les travaux monotones,et peuvent donc être féroces s’ils trouvent qu’un autre a vu la même erreur corrigée)
Nota: pour un langage à préconiser, je pense que vous devez approfondir vos connaissances dans un lagage déjà appris, plutôt que vous disperser… (en apprendre un autre est alors assez facile, une fois maîtrisées toutes les notions du premier)

Merci @boltar, je vais regarder ça.
Merci @dbrion06 pour toute ses infos. Pour répondre à tes questions, je suis en dernière année d’alternance comme « concepteur, développeur d’application » dans une boite spécialisé dans le paiement mobile. Je suis donc plus habitué à Swift et Kotlin (et Java du coup) mais j’ai appris Python et vais devoir m’y remettre de manière plus assidue ^^

J’avais bien compris que Python ou C++ était en tête de course mais me demandait si il y avait de bonnes alternatives. Je vais me remettre au Python donc :slight_smile:

Cela vous parait donc envisageable en Python de créer un logiciel en acceuillant d’autre (je ne sais pas si c’est clair ? :face_with_monocle:) ou au moins pouvoir passer du logiciel principal vers d’autre puis y revenir sans qu’un utilisateur vois le « côté RpiOS » (Pas sûr que ce soit clair non plus…)

Si jamais l’explication « technique » n’est pas clair, je peux faire un schéma pour peut être rendre la chose plus clair (peut être :stuck_out_tongue: )

Encore merci pour vos réponse :smiley: