Développement Blockchain et langages

a marqué ce sujet comme résolu.

Bonjour à tous.

Je viens prendre vos avis SVP.

Y a t-il des développeurs Blockchain parmi-vous ?

Je me tâte vraiment à apprendre cette techno.

Actuellement, en dehors du PHP/Laravel et du JS, je n’ai pas fait grand chose d’autre comme langage de programmation.

Donc apprendre le développement Blockchain c’est une occasion d’apprendre un nouveau langage (et donc de devenir un meilleur développeur), et la Blockchain est visiblement l’avenir du web.

Quels langages me conseillez-vous ?

On m’a parlé de Solidity, de comme quoi c’est très recherché. Mais Solidity c’est pour développer des contrats intelligents sur la Blockchain Ethereum.

Perso je veux vraiment apprendre à dév une Blockchain, à créer ma crypto, etc. (je ne sais pas si ça va vraiment me servir d’un point de vue professionnel, mais coté culrure perso je pense que c’est quelque chose d’excellant).

On m’a donc aussi parlé de Golang et de Rust.

Merci d’avance.

Si tu veux créer ta blockchain pour t’amuser, tu peux le faire en PHP ou JS sans souci. Il est essentiel de connaître quelques bases théoriques pour choisir les paramètres de ta blockchain, cependant. Pour cela, j’avais lu le livre Mastering Blockchain: A deep dive into distributed ledgers, consensus protocols, smart contracts, DApps, cryptocurrencies, Ethereum, and more qui est un peu lourd, mais y’a tout le nécessaire théorique dès les premiers chapitres là-dedans, sans se perdre dans des détails mathématiques complexes.

J’avais fait une blockchain/cryptomonnaie en Python qu’on avait utilisé avec deux amis pour rigoler. Le design était le même que pour Bitcoin, sauf que le Proof of Work était moins difficile (il fallait trouver un double sha256 avec moins de 0 que pour BTC afin que Python puisse en trouver un en ~10–15 min max). Comme base de données pour chaque node, SQLite faisait l’affaire.

Pas besoin d’apprendre Rust ou Go, donc (sauf si tu as envie). Tu peux juste faire en sorte que le PoW soit faisable en PHP/JS en un temps raisonnable. Par ailleurs, toutes les blockchains n’ont pas besoin d’avoir un Proof of Work basé sur le calcul arbitraire d’un hash. D’autres designs permettent de miner des blocs d’une autre façon sans nécessiter de la grosse puissance de calcul, donc sans justifier d’avoir recours à des langages comme Rust, Go, C++, … (je te laisse faire tes recherches sur le Proof of Stake).

En revanche, je n’ai pas vraiment développé l’aspect P2P réseau (tout les nodes devaient tourner dans le même LAN), mais c’est peut-être pas le plus intéressant de toute façon, quand on veut surtout comprendre la mécanique d’une blockchain.

Donc apprendre le développement Blockchain c’est une occasion d’apprendre un nouveau langage (et donc de devenir un meilleur développeur), et la Blockchain est visiblement l’avenir du web.

Je ne sais pas si c’est l’avenir du Web (bien que IPFS/FileCoin semble prometteur sur la papier), mais c’est intéressant dans l’absolu d’un point de vue technique, du moins. Même si c’est pas l’avenir du Web ou de la finance, on finira bien par trouver un use-case intéressant.

L’informatique est un domaine gigantesque avec des applications très variées.

On peut se construire une carrière sur PHP+JS parce que le domaine du "web un peu chiant", bien qu’assez restreint en terme d’applications, emploie beaucoup de monde: tout le monde et son chien veut avoir un site web, donc il faut des développeurs web, beaucoup, beaucoup. Et c’est possible parce ce domaine demande assez peu de compétences pointues, on peut s’y lancer après une formation relativement courte. (Mais il faut des connaissances sur les outils, qui changent vite.)

La blockchain c’est un peu tout l’inverse. Les briques techniques (consensus distribué, cryptographie, peer-to-peer, protocoles économiques…) ont tendance à être très techniques, et le domaine applicatif est assez restreint: très peu de gens ont vraiment besoin d’une blockchain, donc à part le buzz et la nouveauté il y a assez peu de déploiements dans la vraie vie.

(Les "contrats intelligents" pourraient se généraliser dans le futur (ce n’est pas sûr mais c’est une possibilité), mais pas forcément par-dessus une blockchain, et s’ils se généralisent ce sera après être devenus beaucoup plus simples à utiliser.)

Je suis surpris par le contraste entre ces deux domaines choisis. J’ai l’impression qu’entre les deux il y a plein de choses intermédiaires: plus spécialisées que "le web", mais avec plus de besoins réels que "la blockchain" et moins techniques. Par exemple, un peu au hasard:

  • le sysadmin sérieux (machines virtuelles, Docker, orchestration, monitoring, tout ça)
  • le bas-niveau / les performances / l’optimisation
  • l’algorithmique (structures de données, etc.)
  • la programmation système
  • la programmation distribuée (communications entre machines)
  • le calcul scientifique
  • l’implémentation de langages ou DSLs (parsing, interprétation, compilation, etc.)
+2 -0

Merci pour vos réponses

… Et c’est possible parce ce domaine demande assez peu de compétences pointues, on peut s’y lancer après une formation relativement courte. (Mais il faut des connaissances sur les outils, qui changent vite.)

gasche

Courte pour fais du site Vitrine.

Néanmoins, pour maîtriser des gros Framework (tel que Laravel ou Symfony par exemple), avoir des compétences en Front, et aussi en Linux et Conf de Serveur. Ça prend tout de même quelques années avant de "commencer" à être à l’aise.

La blockchain c’est un peu tout l’inverse. Les briques techniques (consensus distribué, cryptographie, peer-to-peer, protocoles économiques…) ont tendance à être très techniques…

gasche

C’est en grande partie le très technique qui me donne envie de m’y mettre. Ça peut que faire de nous un meilleur développeur.

J’avais rencontré un développeur blockchain récemment, il me disait qu’il y a de plus en plus d’entreprises qui montent des ICO et qui cherchent des développeurs blockchain.

Pas besoin d’apprendre Rust ou Go, donc (sauf si tu as envie). Tu peux juste faire en sorte que le PoW soit faisable en PHP/JS en un temps raisonnable. Par ailleurs, toutes les blockchains n’ont pas besoin d’avoir un Proof of Work basé sur le calcul arbitraire d’un hash. D’autres designs permettent de miner des blocs d’une autre façon sans nécessiter de la grosse puissance de calcul, donc sans justifier d’avoir recours à des langages comme Rust, Go, C++, … (je te laisse faire tes recherches sur le Proof of Stake).

sgble

Ok.

En fait je veux aussi en profiter pour apprendre un nouveau langage (typé et compilé, histoire de me sortir de ma zone de confort PHP). J’ai commencé à regarder les comparatifs et les différences de syntaxes des langages, c’est Go et Rust qui m’attirent le plus. Avec peut être une préférence pour Go.

On peut se construire une carrière sur PHP+JS parce que le domaine du "web un peu chiant", bien qu’assez restreint en terme d’applications, emploie beaucoup de monde: tout le monde et son chien veut avoir un site web, donc il faut des développeurs web, beaucoup, beaucoup. Et c’est possible parce ce domaine demande assez peu de compétences pointues, on peut s’y lancer après une formation relativement courte. (Mais il faut des connaissances sur les outils, qui changent vite.)

Ça c’est plutôt que certaines entreprises pensent que ça demande assez peu de compétences pointues, jusqu’au jour où elles comprennent que ce n’est pas le cas à leur dépens.

De plus, je ne suis pas sûr que la plupart des développeurs travaillent seulement sur des sites Web pour tout le monde et son chien (ça reste surtout le domaine des agences Web), mais sur des applications en tout genre avec toute la diversité de complexité technique qui est représentée. De la simple app CRUD jusqu’au gros système B2B qui gère mille et une règles métier. Ces trucs-là prennent bien la forme de sites Web (on y accède via un navigateur, une URL, …), mais c’est une véritable machine complexe derrière, qui demande une attention constante et des gens hautement qualifiés pour l’administrer correctement (pour la performance, la qualité du service, la sécurité, la maîtrise des coûts d’infra).

En fait je veux aussi en profiter pour apprendre un nouveau langage (typé et compilé, histoire de me sortir de ma zone de confort PHP). J’ai commencé à regarder les comparatifs et les différences de syntaxes des langages, c’est Go et Rust qui m’attirent le plus. Avec peut être une préférence pour Go.

Dans ce cas, fonce et apprends donc Go et/ou Rust !

C’est en grande partie le très technique qui me donne envie de m’y mettre. Ça peut que faire de nous un meilleur développeur.

Je pense que tu as le bon état d’esprit. Si tu maîtrises les briques techniques d’une blockchain, tu auras en effet acquis des connaissances qui à la base sont applicables en dehors du domaine : de la cryptographie (hash, authentification), du réseau (P2P), des méthodes de calcul (optimisation), des algorithmes, de la théorie sur les BDD (théorème CAP) et sûrement d’autres trucs.

C’est un gros morceau, mais si tu prends ton temps, le voyage devrait t’apporter.

+0 -0

J’avais rencontré un développeur blockchain récemment, il me disait qu’il y a de plus en plus d’entreprises qui montent des ICO et qui cherchent des développeurs blockchain.

Oui après chacun prêche pour sa paroisse; si tu écoutes un développeur d’applications pour téléphones Windows il va te dire que c’est l’avenir. Dans les faits la blockchain aujourd’hui c’est surtout du vent.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte