.Net Core 3.0 à .Net 8 (C#,F#, Visual basic .Net)

Parce qu'il en faut pour tout le monde, discutez ici d'ADA, de shell et autres Wolfram...

Modérateur : Francois

Répondre
ChPr
Messages : 40
Enregistré le : ven. 29 mars 2019 14:36

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par ChPr » ven. 3 janv. 2020 11:01

Bud Spencer a écrit :
jeu. 2 janv. 2020 19:38
... Le pascal est un langage académique mort (ce qui ne retire rien à ses qualités), alors que le C# est un langage moderne résolument tourné vers l’avenir.
Outre les précisions qu'apporte "cbalo", vu la facilité avec laquelle on peut avoir de l'aide sur le NET, je ne pense pas que le Pascal soit un langage mort, de loin s'en faut.

Cordialement.

Pierre

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » ven. 3 janv. 2020 12:56

Pourquoi j’ai fait ce petit tuto sur .Net Core 3 ?. Tout simplement parce ce que c’est d’actualité. Ça permet de mettre en œuvre des technologies de toutes dernière génération et pour notre plus grande joie, ça fonctionne merveilleusement bien sur un Raspberry PI et ça prend même nativement en charge ses GPIO.

Pourquoi Visual Studio ? tout simplement parce que c’est celui que j’utilise. Accessoirement Il peut aussi être utilisé pour faire du dev sur Arduino, ESP, TinyCLR, NetMf, WinIoT plus tout un tas d’autres petites cartes rigolotes, un grand nombre µC standalone, en bref tout ce qui fait l’intérêt d’un forum dédié à tout ça comme l’est celui-ci. Si on ajoute à ça qu’il est gratuit, en français et qu’il est considéré dans le monde pro comme un des meilleurs IDE du moment, ça me parait être une bonne idée de le faire découvrir à ceux qui ne le connaissent pas et pourquoi pas leur donner envie de programmer pour d’autres choses que le PI puisque les possibilités que j’évoque ici ne sont qu’une infime partie de ce que cet outil peut faire.

Pourquoi le choix projet ASP ? , là aussi le choix n‘est pas fait au hasard. On parle d’IoT, donc d’objets connectés qui utilise les protocoles d’échange utilisé sur Interne, donc un projet qui entre dans ce cadre d’application me semblait être une bonne idée d’autant que l’intérêt générale de ce genre application il n’est plus à prouver ici. Les scores du tuto pour les applications web dynamique que j’avais fait avec NodeJs parlent d’eux même.

Alors oui, des solutions il y en plein. Des bonnes, des moins bonnes et chacun est libre de se faire sa propre idée et d’utiliser ce que bon lui semble. Tu sais, tout le monde sait tout faire avec tous les langages. Il suffit juste de lire les lignes de ce forum et d’être un peu naïf pour y croire. Ouvre donc un topic sur lazarus t free pascal, et montre-nous comment tu réaliserais la même chose que cette petite app qui demande tout au plus 15 minutes de la création du projet au déploiement sur le Pi compris. tu te rendras mieux compte de la largeur du fossé qui sépare les 2 solutions

ChPr a écrit :
ven. 3 janv. 2020 11:01
Outre les précisions qu'apporte "cbalo", vu la facilité avec laquelle on peut avoir de l'aide sur le NET, je ne pense pas que le Pascal soit un langage mort, de loin s'en faut.
Si si, le pascal fait bien partie de langage dit 'mort' et ce n'est pas moi qui le dit. Ca n'enlève rien a ce qu'il peut faire et ca de dévalorise pas la petite communauté qui reste autour. Pour jouer chez toi, c'est bien, mais si tu prévois de trouver un jour du boulot comme développeur avec ca, tu seras au chômage pour le restant de tes jours. En 2019, en france, C# représentait suivant le sources, entre 21 et 23% des offre d'emplois de développeurs et les technologies .Net plus globalement frolait les 30% alors que pascal ne figure même pas dans les 20 langages les plus recherchés (je dois encore avoir les chiffres officiel au boulot, mis de mémoire c'est ca) . Doit t'on jugé de la vivacité d‘un langage de programmation à la capacité d’un débutant à chercher et à comprendre sa documentation ? . C‘est aussi ça les méthodeq moderne. On ne se contente plus de quelque if dans des while. Toutes la documentions est disponible du moindre mots clé aux concepts les plus complexe. Bien sûr elle est vaste. Juste .Net Core, c’est 120000 Api et ça ne contient qu’a peine à moitié des Api de .Net Framework, alors c’est sûr que tu ne vas pas l’apprendre en une nuit. Si la doc officielle ne parait pas didactique, c‘est justement parce que c’est une documentation, et non pas un cours de programmation. Chaque page de documentation sous-entend que tu maitrises les concepts inférieurs donc forcément en voulant programmer avant même de savoir apprendre les bases, ça vous parait imbuvable. Il y a toutefois des sites qui proposent de très bon tuto pour débuter ( pour tous les langages 'ailleurs) . je pense bien sur a openclassrooms ici ou la. Ca date un peut pour certains cours mais tout reste valable pour toutes les versions (c'est un des point fort du langage depuis sa création), mais il y en d'autres et même du coté 'officiel'
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

cbalo

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par cbalo » ven. 3 janv. 2020 15:01

Si si, le pascal fait bien partie de langage dit 'mort' et ce n'est pas moi qui le dit
Les webinar que je suis sont organisés par saint-pierre ? pourtant ça ne passe à Paris.

Et, en ce cas je connais un paquet de TMA, de SSII et de collègues qui sont tous des morts vivants.
Sans compter les grosses entreprises elles aussi mortes vivantes.
Embarcadero ne doit vendre qu'à Saint-Pierre.
TMS Software est d'outre tombe.
Beaucoup d'applications sur nos téléphones et tablettes sont décédées.
De nombreux sites web sont maintenus au ciel.
Si ce langage est mort alors il n'y a plus de back office dans certaines des plus grosses banques Françaises, ni de backoffice pour la gestion des sinistres dans certaines de nos plus grandes compagnies d'assurances.
Pascal est loin d'être mort !, il s'appelle simplement FPC/Lazarus/Delphi/Pascal Objet/DX
Par contre certains journaleux feraient mieux de se renseigner avant d'écrire des articles.

Et s'il était mort, pourquoi donc propose-t-il le plus grand nombre de composants visuels ou pas ?

Voyons pour quel type d'application mobile je vais faire aujourd'hui en pascal ....
dx.png
dx.png (141.09 Kio) Vu 5721 fois

ChPr
Messages : 40
Enregistré le : ven. 29 mars 2019 14:36

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par ChPr » ven. 3 janv. 2020 15:30

Pouvez-vous m'expliquer ce que veut dire :
Bud Spencer a écrit :
jeu. 2 janv. 2020 19:38
... le faire tourner sous n’importe quelle plateforme (et j’ajoute : sans mème avoir à compiler pour chacune d’elle). ...
Il n'y a qu'une seule compilation ? Il en sort un code unique et il tourne partout, quelle que soit le type de processeur ? Quel est le principe ?

Cordialement.

Pierre

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » ven. 3 janv. 2020 18:44

cbalo a écrit :
ven. 3 janv. 2020 15:01
Les webinar que je suis sont organisés par saint-pierre ?
Ou sa sœur, va savoir …

Si tu pouvais éviter de trop polluer ce sujet, ce serait sympa. Je te l’ais dit, si tu penses maitriser quelques choses susceptibles d’intéresser du monde, fais comme moi. Ouvre un topic sur ton sujet et présente ta solution. Tu vas voir que c’est quand meme beaucoup de volontarisme et de boulot et que tu ne seras pas trop content quand je viendrais dessus pour te pourrir le taf avec mes idées. La comparaison de tel ou tel langage vient de faire l’objet d’un sujet dédié et tu remarqueras que contrairement à vous tous, j’y ai modestement apporté ma petite contribution (la moindre des choses étant pratiquement le seul a proposé du code ici …) ‘SANS CRITIQUER AUCUNES DE VOS IDEES OU CONVICTION’ (et ce n’est pas faute d’y avoir lu beaucoup de co****ies).
Modifié en dernier par Bud Spencer le ven. 3 janv. 2020 18:57, modifié 3 fois.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » ven. 3 janv. 2020 18:52

ChPr a écrit :
ven. 3 janv. 2020 15:30
Il n'y a qu'une seule compilation ? Il en sort un code unique et il tourne partout, quelle que soit le type de processeur ? Quel est le principe ?
Bhaa écoute Pierre, je vais essayer.

Le code n’est pas directement compilé en code machine. Il est ‘transformé’ en un langage intermédiaire normalisé appelé CIL (Common Intermédiate Langage). Ce CIL est partial. Ce qui veut dire qu’il est indépendant des architectures, des systèmes et des langages utilisés (plus de 30 langages sont par exemple utilisables avec le Framework .Net de Microsoft). La compilation et l’optimisation se fait ‘à la volée’ en toute transparence par un compilateur appelé JIT (Just In Time).

Quels intérêts à tout ça ?
- La portabilité. Si tu codes par exemple une application avec .Net Core sur ton Raspbian 32 Bits, tu peux la déployer sur ton mac ou ton windows 64 bits avec la garantie qu’elle fonctionnera tout pareil sans avoir à la recompiler sur la cible.

- Ça permet de développer beaucoup plus vite et d’etre safe (sécurisé) du fait que c’est le JIT qui prend en charge l’optimisation en fonction du besoin, la gestion de la mémoire et des erreurs. Jamais tu ne pourras avoir de probleme d’adressage conçurent comme tu peux en avoir avec un langage compilé meme pour des process très complexes.

- C’est side-by-side. Ce qui veut dire que tu peux utiliser autant de versions différentes que tu veux sur un meme système sans altération ou perturbation des unes avec les autres. C’est aussi ce concept qui fait que c’est très facilement conteneurisable (un truc moderne sans intérêt pour débuter …)

- C’est très performant du fait que c’est bien du code compilé en code machine qui est exécuté.

- Ça permet d’avoir des langages d’une richesse incroyable du fait que le CIL se charge de toute la partie ‘transpilatoire’.

Est-ce viable ? : Techniquement ça existe depuis les années 50 et c’est toujours là. Si on prend ça avec un recul contemporain, c’est ce qui a permis à Java d’etre parmi les langages le plus utilisé dans le monde depuis plus de 15 ans et à C# d’etre depuis plus de 10 dans le Top Five. Tout ça a bien sur eu des répercutions moins heureuses en rendant beaucoup d’autres langages obsolètes et les nostalgiques pleurent encore …

- Y a-t-il des inconvénients ? Bien sûr, rien n’est parfait. Il faut que le JIT soit présent sur la cible. Ça reste globalement de plus haut niveau et un poil en dessous des performances des meilleurs langages compilés meme si dans certains cas ça les dépassent. Ça permet des langages tellement riches que ça semble etre inaccessible pour débuter (mais ça tu le sais déjà ;-) ) . Autre inconvénient concernant principalement .Net, c’est qu’il y a trop de Framework. Mais ça c’était avant. .Net Core est là pour balayer tout ca en devenant la référence toutes plateformes confondus et offre déjà des performances qui surclasse celles de l’original MS Framework .Net sous Windows et celles de Mono sous les autres OS.

Voila. J’espère avoir répondu à ta question.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

ChPr
Messages : 40
Enregistré le : ven. 29 mars 2019 14:36

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par ChPr » ven. 3 janv. 2020 19:27

Merci pour cette longue explication
Bud Spencer a écrit :
ven. 3 janv. 2020 18:52
... Le code n’est pas directement compilé en code machine. Il est ‘transformé’ en un langage intermédiaire normalisé appelé CIL (Common Intermédiate Langage). ...
C'est donc une compilation vers un langage intermédiaire normalisé.
Bud Spencer a écrit :
ven. 3 janv. 2020 18:52
... La compilation et l’optimisation se fait ‘à la volée’ en toute transparence par un compilateur appelé JIT (Just In Time).
...
Il faut que le JIT soit présent sur la cible.
On en arrive donc à la compilation finale : il faut alors un compilateur JIT spécifique à chaque type de processeur.

Donc, chaque machine (un PC avec x86, ..., un Raspberry avec son ARM) doit fournir ce JIT propre à son processeur (mais apparemment indépendant de l'OS si j'ai bien compris).

Comment s’appelle-il sur chacune de ces machines, comment savoir s'il existe ?

Existe-t-il un lien automatique entre le fichier CIL et le JIT ?

Cordialement.

Pierre

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » ven. 3 janv. 2020 22:39

ChPr a écrit :
ven. 3 janv. 2020 19:27
C'est donc une compilation vers un langage intermédiaire normalisé.
Oui, c’est ça. Ce code Intermédiaire est le meme pour tous les os et toutes les architectures. Ce sont soit des .exe ou des .dll (extensions bien connus de tous les windowsiens).
ChPr a écrit :
ven. 3 janv. 2020 19:27
On en arrive donc à la compilation finale : il faut alors un compilateur JIT spécifique à chaque type de processeur.
Exactement. Qui dit langage compilé machine dit obligatoirement compilateur et le JIT n’est rien d’autre qu’un compilateur temps réel très haute performance qui ne connait qu’un seul langage, le CIL (en fait il est bien plus que ça, mais ne chipotons pas).
ChPr a écrit :
ven. 3 janv. 2020 19:27
Donc, chaque machine (un PC avec x86, ..., un Raspberry avec son ARM) doit fournir ce JIT propre à son processeur (mais apparemment indépendant de l'OS si j'ai bien compris).
Exactement, mais Il n'est pas indépendant de l'os. Le JIT est déjà compilé pour l'OS et embarque les instructions spécifique pour l'architecture. Il fait le meme boulot que n'importe quel autre compilateur. Si on voulait comparer avec du C par exemple, il faut que chacun de tes programme en C soit compilé pour chaque os et chaque architecture avec un compilateur lui meme compilé pour ce meme ensemble. ici c'est pareil sauf que le JIT compile très vite un seul langage universel (le CIL) a chaque fois qu'il y en a besoin et sans que tu n'est besoin de lui demandé. pour résumer :

Developement sur n'importe quel os/plateforme:
Code Langage (n'importe lequel de compatible) => CIL

Execution sur n'importe quel os/plateforme:
CIL => Compilation à la volée par le JIT Spécifique OS/Plateforme

ChPr a écrit :
ven. 3 janv. 2020 19:27
Comment s’appelle-il sur chacune de ces machines, comment savoir s'il existe ?
Il s’appelle tout simplement ‘runtime .net’. Comme je l’ai déjà mentionné, il y a une foule de Framework pour .NET (comme il y a une foule de compilateur en tous poil pour tout). Mais si on enlève les trucs d’intégristes qui ne fonctionnent pas et que l’on se contente de parler de Linux, Mac ou Windows, on a vite fait le tour et il ni en a que 3, à savoir MS .Net Framework, Mono et .Net Core.
Je n’avais pas prévu de faire ici une synthèse de .Net mais si ça intéresse du monde, je peux ouvrir un sujet là-dessus et faire un tableau qui explique qui fait quoi et où se place le PI et les différents autre systèmes dans tout ça (qui est un peut le boxon pour les non initiés il faut bien l'admettre, mais qui finalement est très bien encadré).

Pour Mono, c’est là : https://www.mono-project.com/download/s ... n-raspbian
A utiliser sur linux et mac si tu veux développer ou faire tourner des applications Desktop Portable (qui peuvent etre développées depuis Windows sans Mono)
(J’ai déjà détaillé une fois la procédure d’install sur ce forum, mais où ? …)

Et pour .Net Core, ça peut etre d’ici : https://dotnet.microsoft.com/download/dotnet-core/3.1 (Linux arm32 pour Raspbian! ).
Ca c'est pour tout le reste.
J’ai expliqué sommairement en début de post comment installer .Net Core sur le PI et un peu plus loin comment mettre à jour ou ajouter des versions.
ChPr a écrit :
ven. 3 janv. 2020 19:27
Existe-t-il un lien automatique entre le fichier CIL et le JIT ?
Ça tu n’as pas à t’en occuper. Le code CIL est créé automatiquement en .exe (ou .dll) quand tu génères ton projets (meme en phase de débogage). le JIT est automatiquement appelé quand tu démarres ton application. Tu peux aussi avoir accès à l’assembleur du langage intermédiaire mais ça concerne surtout les développeurs expérimentés à titre d’analyse ou qui sont à la recherche d’optimisation.

Voila une petite image qui résume le fonctionnement :
La partie noté 'compilation', c'est le développement. Chaque langage est fournie avec son compilateur langage=>CIL
La parti runtime, c'est l'exécution CIL=>Code Native
Il y a une abstraction totale entre 2 en terme d'architecture, et de system . Le seul point de convergence, c'est le CIL
overview01.jpg
overview01.jpg (30.87 Kio) Vu 5684 fois
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

ChPr
Messages : 40
Enregistré le : ven. 29 mars 2019 14:36

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par ChPr » sam. 4 janv. 2020 10:12

Bud Spencer a écrit :
ven. 3 janv. 2020 22:39
...
ChPr a écrit :
ven. 3 janv. 2020 19:27
Comment s’appelle-il sur chacune de ces machines, comment savoir s'il existe ?
Il s’appelle tout simplement ‘runtime .net’. ...
Je n'ai pas ça sur mon Raspberry Pi 3B+
Bud Spencer a écrit :
ven. 3 janv. 2020 22:39
... Pour Mono, c’est là : https://www.mono-project.com/download/s ... n-raspbian ...
Je suppose que c'est après avoir installé "Mono" que j'aurai "runtime.net".

J'ai vu en visitant le site relatif à "Mono qu'il était possible de faire du débogage "temps réel" je suppose.

Là, je me pose une question : Ce que Mono a en entrée, c'est un fichier "CIL" qui est un langage normalisé compilé ... mais incompréhensible à un lecteur humain : je ne me vois pas y placer des "points d'arrêt".

Admettons alors que j'ai placé mes points d'arrêts dans le langage source ; admettons qu'ils soient transmis et inclus dans le fichier "CIL" et admettons encore qu'ils y soient sur l'"exécutable" sortant du JIT. Le débogueur va s'arrêter sur un "point d'arrêt" et ne pourra jamais remonter qu'à la ligne correspondante dans le fichier "CIL" , qui n'a pas de signification humaine. Il faut donc, si je veux déboguer, que j'ai la chaîne complète qui me permette de remonter jusqu'à mon fichier source, seule chose que je sois capable de comprendre. Toute cette chaîne me paraît bien compliquée.
Bud Spencer a écrit :
ven. 3 janv. 2020 22:39
... ici c'est pareil sauf que le JIT compile très vite un seul langage universel (le CIL) ...
Personnellement, ce qui m'intéresse le plus, ce n'est pas une compilation rapide, mais une exécution rapide.

Cordialement.

Pierre

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: .Net Core 3.0 (C#,F#, Visual basic .Net)

Message par Bud Spencer » sam. 4 janv. 2020 19:33

Attention. Mono et .Net Core n’ont rien à voir et le sujet ici, c’est (c’était) .Net Core.

Je pourrais te donner des réponses, mais franchement, plus envie.

J’aurais pu faire un tuto sur Mono, c’est un sujet très intéressant, mais J’écris ces tutos surtout parce que personne d’autre ne le fait et que si on se contente de ce que les autres écrivent ici pour programmer le PI, ça résume à quelques scripts poussifs et du ‘moi je’. Des champions du monde qui savent tout et qui ont réponse à tout, il y en a plein. Tant qu’ils se gaussent entre eux de leur pseudo science, ça ne me dérange pas (ça m’amuse), mais là j’ai passé le cap sur ce forum. J’en ai plein le c*l de me le casser à essayer d’élever un peu le niveau pour faire découvrir à cette communauté qu’il y a plein de chose extraordinaire utilisables avec le PI. Il ni a pas moyens décrire 3 ligne sans qu’un ******* la ramène avec sa science qui n’existe plus depuis Jésus Christ et qu’en plus qu’il ne maitrise meme pas.

J’arrête là. Je vais me contenter de faire comme eux. A chaque fois que j’en aurais l’occasion, je viendrais critiquer pour faire le beau et faire croire à tous les noobs que je suis un gourou du kernel qui tient le monde entier dans sa main avec un bout code minable tapé en console. Ça n’apporte rien, mais au moins je ne perdrais plus mon temps.

Désolé, tu vas devoir te débrouiller sans moi. Est-ce que les autres t’aideront ?
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Autres langages »