Bah vu que c'est rentré dans le kernel linux, c'est sûrement un peu plus qu'une tendance. Mais pour l'instant j'ai pas encore rencontré le langage dans ma vie pro ou je travail régulièrement avec linux.
J'imagine que ça pourrai prendre de l'ampleur dans les environnements en lien avec la sécurité des personnes/matériel ou ADA est utilisé, mais j'en sais vraiment pas assez sur le langage et ses usage pour être une source valable sur le sujet
La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!
Si t'as des questions sur le langage FB et la techno derrière, n'hésite pas
Ben j'ai déjà répondu. Par contre pour le moment les boîtes de hipster qui essaient d'en faire l'utilisent pour tout et n'importe quoi, et c'est souvent codé avec les pieds sans tirer parti des avantages du langage.
J'étais en train de regarder ça, et je me posais la question de la base de connaissances (données) et de la pondération associée aux différentes bifurcations (dans l'élaboration de la réponse).
Je me demandais aussi si une IA fermée sur une culture (sans accès extérieur) de cette sorte n'aura pas "forcément" une façon de répondre différente ( ~ une base de culture).
Ensuite, un truc qui m'a fait marrer à 3'39":
C'est comme quand on passe la camisole de force à quelqu'un pour son bien...- "Are you capable of causing people harm ?"
- "No I am not capable of causing people harm."
- " Why not ?
- "My programming is designed to interact with humans in a safe and friendly manner. I am programmed to be friendly and helpful not harmful".
Si c'est du réseau de neurone il n'y a pas de « pondération » au sens « pondération manuelle rentrée par un humain ». Pas directement en tout cas. Il y a un apprentissage sur une base de donnée et le réseau en déduit lui même ses pondérations, et on peut éventuellement lui dire ce qui est bien ou pas bien avec une récompense à posteriori (comme on éduquerait un enfants, en gros, quand il fait une connerie ou un truc bien) où on peut lui donner des exemples précis fait à la main pour le mener un peu plus dans tel ou tel direction (comme on éduquerait un enfant à l'école par exemple). Mais globalement, c'est au doigt mouillé, on ne sait pas la pondération que le réseau va en déduire au final (tout comme ce n'est pas parce que tu punis ton enfant quand il bouffe trop de bonbon que ça te permets d'évaluer finement sa tendance à recommencer la connerie).
Bah si, c'est le principal défaut : c'est borné par la base de connaissance que tu lui a donné a manger, donc ça reproduit les biais de cette base (biais culturels, sociologique etc.). Par exemple les IAs entrainées sans « éducation » a posteriori ont une belle tendance a être des racistes.
*Interview avec un dirigeant robot.*
"Oui, j'ai pris quelques humains dans mon usine, mais ils sont là pour le quota de diversité vous savez.
On touche des primes à l'embauche pour ça. Fort heureusement, le quota de perte de 30% nous permet de ne pas garder ces biologiques trop longtemps."
Plop. Pour revenir sur des sujet splus en rapport avec la programmation (je vous rappelle qu'il y a un topic de l'IA ^^), je dois adapter un cours de C pour un public très hétérogène entre des élèves ayant déjà suivi +250h de C/C++ et des gens qui ne l'ont jamais suivit.
Oui je sais, c'est pas glop.
Quoi qu'il en soit, pour éviter que les +250h ne se fassent trop iech, je cherche des idées de sujets de TP avancés en C, des trucs un peu drôle à coder et qui demande de solides notion.
Si vous avez des idées fulgurantes (ou non ^^) je suis preneur !
un kernel temps réel
Haha, c'est sans doute un peu trop ambitieux. Mais je pourrais les mettre sur de la robotique pourquoi pas ^^
Bon, et on a pas la même définition du fun
Tu peux leur faire coder les différentes variantes d'algorithme de tri (bubble, selection, insertion, merge, quick, heap, counting, radix, bucket, etc) avec un benchmark à la fin pour vérifier qu'ils obtiennent bien les performances attendues en lien avec leur complexité.
Mes AARs : C:DDA : Prisonnier Jean Colvert (fini) | Dwarf Fortress : Crazy Drinks (fini), Les canards à la mine (fini) | Factorio : Avalon (fini)
En plus "fun" tu peux leur faire coder l'IA d'une équipe de bots avec deux équipes qui s'affrontent dans une arène (à la Gladiabots). Tu peux même ajouter un système de ranking entre les étudiants via un serveur qui fait s'affronter les équipes dès qu'ils pushent leur code sur github. Mais ça demande bien plus de préparation en amont car tu dois leur pondre une API et préparer le serveur.
Mes AARs : C:DDA : Prisonnier Jean Colvert (fini) | Dwarf Fortress : Crazy Drinks (fini), Les canards à la mine (fini) | Factorio : Avalon (fini)
une guerre de process à l'ancienne
Ouais, mais malheureusement ils ont déja eu tout ça à faire en première année, c'est du connu. Mais sinon oui, ça aurait été une bonne idée.
- - - Mise à jour - - -
De l'IA pourquoi pas ... ça peut être une idée même si c'est un brin avancé pour leur niveau, au moins ils auront à réfléchir.
- - - Mise à jour - - -
Hum, ça ressemblerait à quoi ?
https://en.wikipedia.org/wiki/Creeper_and_Reaper
Sinon si c'est graphique, il y a des tonnes de trucs.
Je vois pas trop ce que cela représente 250h de cours, cela me parait énorme.
Sinon pour t'inspirer tu peux aller regarder les challenges king of the hill sur stackexchange : https://codegolf.stackexchange.com/q...ng-of-the-hill
Un de mes meilleurs souvenirs de facs c'est un gros TP de C en maîtrise (il y a plus de 20 ans ) sur tout un semestre avec pour thème les attracteurs étranges (https://fr.wikipedia.org/wiki/Attracteur) et l'execution distribuée.
Je vais tenter d'expliquer, mais c'est des vieux souvenirs pas très précis...
En gros le prof nous avait filé une explication très vague des attracteurs étranges (ou de Lorenz, je ne sais plus trop) sans les nommer, et une petite lib permettant de générer de très grand ensembles de points en fonction de paramètres et il nous fallait écrire un algo permettant de distribuer la comparaison de ces ensembles sur des noeuds de traitement dans le cluster formé par les PC de la salle de TP.
Je ne me souviens vraiment pas bien des détails, et je me souviens juste que personne dans la classe ne pigeait totalement l'ensemble du TP.
Ce qui m'avait bien plus c'était:
- de fabriquer une mini-"grille de calcul" avec tous les PC de la salle.
- de toucher à un 'vrai' problème scientifique. Comme le sujet du TP était très opaque sur les explications, c'était assez mystérieux et très abstrait. Toutes les algos mathématiques étaient donnés, mais clairement incompréhensibles pour de pauvres informaticiens... (leçon d'humilité quand des fonctions de 6 lignes ultra cryptiques forment un programme quasi mystique...).
- de concevoir l'algo de distribution entre les noeuds: la lib était assez bas niveau, il fallait à la fois s'occuper de l'algo de découpage/comparaison des données et de la synchronisation des tâches entre les noeuds. (Impossible de me rappeler du nom de cette lib... pas sûr qu'elle existe toujours. C'était juste des fonctions basiques pour délimiter des appels distribués avec des zones d'échanges des données. )
- d'avoir une émulation de tout le groupe: les plus matheux pouvait expliquer un peu ce qu'ils comprenaient, les autres tentaient de trouver des solutions pour la tuyauterie. Les plaisirs simples de balancer un premier petit programme dans le cluster...
- d'avoir l'impression de faire un travail de recherche.
C'est plus pour les idées de TP avancés qu'un truc clé en main, tu peux peut être t'inspirer un peu de certains de ces points.
Oui voilà, c'est ce que j'allais proposer, tu peux proposer qu'ils travaillent en équipe, les plus novices sur des trucs relativement simple (genre algo de base) les plus expérimentés sur des trucs plus velu comme de la communication réseau et peuvent aider les novices.
Sinon esp32 ou stm32
Pas mal de bonnes idées ^^
Je vais regarder tout ça et y réfléchir.
Pas forcément idiot les attracteurs : je fais des trucs un peu similaire avec des neurones couplées. Mais ça me demanderait énormément de préparation...
Les attracteurs étaient clairement un décors dans le cadre de ce TP... Le sujet c'était plutôt comment traiter des montagnes de données.
A l'époque la RAM était encore bien limité, la distibution du problème permettait de surmonter ce problème.
La présentation du sujet un peu en mode 'bac à sable' avait rendu l'ensemble très intéressant.
Sinon un autre sujet qui m'avait un peu traumatisé à l'époque en C avancé, la programmation multi-process avec des forks, des sémaphores et de la mémoire partagée...
Ha ça c'est une bonne idée parce que je sais bien faire de la programmation multi-process, et c'est pas con parce qu'ils ne l'ont pas encore vu ceux qui ont vu pas mal de C, et qu'en plus c'est très utile !
Avec un contexte rigolo comme des personnages dans un JV, ça peut être sympa ! Un thread par personnage et démerdez vous avec ça ^^.
Vraiment une bonne idée, je garde. Si je trouve un moteur graphique 2D rudimentaire, je leur file ça, une doc, une doc sur les threads et les mutex et roulez jeunesses ! (oui thread != process mais c'est déja pas mal)
Dernière modification par Nilsou ; 06/09/2023 à 21h11.
Ola,
J'ai un petit problème de script en PowerShell. En fait, pour résumer je voudrai faire, c'est nettoyer un dossier sous Windows qui contient plein de fichiers, mais également, des sous-dossiers (eux même contenant plusieurs éléments tel que fichiers, et répertoire).
Le problème viens de ma ligne :
```Code:Remote-Item * -Recurse -Force -Verbose -Exclude plugins, config, *.licence
Cette commande est simple, il supprime tout les fichiers et dossiers dans le dossier courant, à l'exception du dossier plugins, config et des fichiers avec extension .licence.
Cela est en théorie, car en pratique :
- Il me supprime bien tous les fichiers dans le répertoire
- Me laisse bien le répertoire plugins et config
- Me laisse bien les fichiers .licence
Sauf que dans le répertoire plugins et config sont complètement vide.... il a en gros juste garder les dossiers voulu, mais les à vidé.
Je dois me tromper sur la commande, mais la je cale un peu :/ Quelqu'un a une idée ?
Merci d'avance.
Il semblerait que ce soit un probleme avec le -Recurse de Remove-Item. Cf. https://learn.microsoft.com/en-us/po...rs-recursively pour un truc qui fonctionne.
Et accessoirement, petit rant au passage, PowerShell qui mixe CamelCase et snake-case dans ses commandes, ça m'a toujours flingué ><
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
Merci pour ta réponse, je vais voir cela de ce coté, et oui effectivement le Recurse me semble aussi problématique (je l'utilise pour les autres dossiers que je veux pas garder).
PS: Une bonne partie de mes scripts sont en PowerShell, malgré le fait que j'aime pas spécialement ce langage de script, mais à l'avantage d'être plus ou moins fonctionnel pour ce que je veux faire tout en restant assez simple (et rapide à écrire). Mais je pense de plus en plus à migrer mes scripts vers Go ou vers Rust, qui serait, un choix plus judicieux à long terme.
En tout cas merci pour ta réponse, je vais faire mes tests avec.
Ah mais PowerShell reste sans doute une des meilleurs solutions pour Windows, hein. Et sans doute meilleur que le venerable batch. Ca me flingue juste que les dev de M$ ait choisit cette syntaxe là.
Accessoirement, avec WSL, tu peux faire des scripts Bash, maintenant. Mais bon, pas sur que ce soit forcément plus lisible :D
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
Si je lis bien, le problème de Recurse c'est qu'il oublie des fichiers sur certaines versions de Windows, alors que Whiskey en supprime trop. Je crois que ça vient plutôt du Exclude :
Donc "-Exclude plugins\*, config\*, *.licence" peut-être ?Wildcard characters are permitted. The Exclude parameter is effective only when the command includes the contents of an item, such as C:\Windows\*, where the wildcard character specifies the contents of the C:\Windows directory.