Cours de C "minimaliste en lignes, riche en résultats"

Cours de C "minimaliste en lignes, riche en résultats" - C - Programmation

Marsh Posté le 10-06-2011 à 01:04:48    

Bonjour à tous :)
 
Je recherche, pour la culture personnelle et professionnelle également, un/des cours de C portant sur ces fameux codes très très courts (genre une à deux lignes, parfois plus) qui généralement n'ont pas une apparence très parlante à première vue, mais qui au final signifient réellement quelque chose, par exemple un équivalent au fork bombing en bash comme :
 

Code :
  1. " :() { : | : & };: "


 
Une recherche avec google n'a rien donné de concret, peut être ai-je employé les mauvais termes  :??:  
 
En fait il y a des chances que je doive passer un entretien avec une personne aimant bien poser ce genre de question (style "Peux-tu me dire ce que fait ce code C de 2 lignes ? C'est tiré du kernel de Linux et joue un rôle très important" ... le truc qu'on ne trouve pas forcément dans le cours C de base quoi ...).
 
Donc si vous avez des références (blogs, articles, cours, livres, etc), ça m'intéresse énormément !
 
Un grand merci d'avance :)


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 10-06-2011 à 01:04:48   

Reply

Marsh Posté le 10-06-2011 à 01:46:04    

Reply

Marsh Posté le 10-06-2011 à 14:31:11    

Un grand merci, c'est déjà ça à se mettre sous la dent :)


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 10-06-2011 à 15:39:04    

Alors apres, une boite veut m'engager sur mes capa a ecrire du code merdique inmaintenabel, je change de cremerie

Reply

Marsh Posté le 10-06-2011 à 15:56:22    

Non non, et à vrai dire après brève lecture de ces codes, ce n'est pas exactement ce que je recherche (même si ça reste intéressant).
 
Le code obfuscé n'est pas le genre de code sur lequel on me questionnera, mais plus simplement un code court (très court) tel qu'on puisse trouver dans une fonction C d'un OS, par exemple :)


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 13-06-2011 à 14:57:06    

ce genre de code est souvent écrit à grands renforts de macro... Y'a des exemples rigolo de ce genre de trucs sur le net (un othello je crois, donc le code fait une ligne... y'a un autre dont le code fait un ascii art...)

Reply

Marsh Posté le 13-06-2011 à 18:06:11    

Reply

Marsh Posté le 13-06-2011 à 18:56:35    

C'est du pdf obfusqué apparemment vu les réactions de Acrobat Reader et Foxit reader...
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-06-2011 à 19:00:24    

gilou a écrit :

C'est du pdf obfusqué apparemment vu les réactions de Acrobat Reader et Foxit reader...
 
A+,


 
Iceweasel sous kde propose d'ouvrir le fichier avec unzip. C'est la seule fois en 1000000 fois qu'il a bon  :D  
 

Reply

Marsh Posté le 13-06-2011 à 19:26:04    

gilou a écrit :

C'est du pdf obfusqué apparemment vu les réactions de Acrobat Reader et Foxit reader...
 
A+,


 
Tu viens d'échouer au 1er test d’admission au master : un zip renommé en pdf :o
 
Les déclarations de structures sont à la fin du PDF (Contenu dans le zip :o).


Message édité par Anonymouse le 13-06-2011 à 19:36:57
Reply

Marsh Posté le 13-06-2011 à 19:26:04   

Reply

Marsh Posté le 14-06-2011 à 09:26:25    


Merci  :jap:  
 
(même si ça porte sur le même sujet que le cours ASE de Master Info en première année à Lille 1  :D )


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 23-06-2011 à 19:24:57    

Le mot que tu cherche est: operateur ternaire
 
genre:
 
x > 2 ? x : x + 2
 
C'est bien ça?

Reply

Marsh Posté le 23-06-2011 à 19:38:12    

Non, quelque chose qui tient en quelques lignes (genre une fonction système courte).
 
Le if raccourci (opérateur ternaire donc), ce sera pas le genre de truc posé ^^" (malheureusement :p)


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 23-06-2011 à 19:49:48    

La deja ça raccourci bien ^^
 
A la base c'est ça:
 
if (x > 2)
return x
else  
return x + 2
 
Aprés du peu chainer pour faire des else if (ca devient vite illisble)
 
Sinon pour des appels systemes, a part imbriquer des appels de façon dégueulasse ou carement de l'assembleur je vois pas trop.
 
Edit:
 
Ou sinon des dereférencement a la volée avec des *(& ) partout c'est fun aussi, mais la c'est juste de la logique de pointeur.
 
Ou peu être parles-tu de masques binaire, le genre de chose utilisé pour optimiser des comparaison, comme celui utilisé dans le strlen() systeme par exemple


Message édité par gueuledange le 23-06-2011 à 19:55:15
Reply

Marsh Posté le 23-06-2011 à 20:52:56    

En effet c'est (il me semble) la majorité du temps des pointeurs, voire même pointeurs de fonctions. Enfin bref je vois que ça n'a pas de catégorie particulière, je crois que je suis juste bon pour me trouver un cours C version roxxor de la progra histoire de compléter mes connaissances.
 
En tout cas merci à vous pour les infos malgré tout :)


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 23-06-2011 à 21:30:40    

sauf que c'est tout sauf du roxxor. Ecrire du code imbitable ca sert un bon rien quoi :s

Reply

Marsh Posté le 23-06-2011 à 21:40:12    

darkeagle10 a écrit :

En effet c'est (il me semble) la majorité du temps des pointeurs, voire même pointeurs de fonctions. Enfin bref je vois que ça n'a pas de catégorie particulière, je crois que je suis juste bon pour me trouver un cours C version roxxor de la progra histoire de compléter mes connaissances.
 
En tout cas merci à vous pour les infos malgré tout :)


 
 
Si tu veut t'entrainer, tu reprend du code a toi en essayant de le condenser a mort, en utilisant le moins de variable possible (voire aucune).
 
Par contre t'oublie les vérification de valeur de retour & co....
 
Bref y a que des inconvénient a coder comme ça, a part peu être gagné quelques dizaine d'octet ou de la rapidité d’exécution, voir même du temps de compilation (micro secondes? xD). Je sais pas comment se passe le développement des kernel mais ça me paraîtrai bizar qu'ils fassent du code illisible....

Reply

Marsh Posté le 24-06-2011 à 11:24:22    

Ah, ces jolies boites qui ont embauche un naze persuade d'etre bon parcequ'il etait le seul a pouvoir se relire. Quand ils cherchent a le remplacer, ca pose ce genre de problemes.

Reply

Marsh Posté le 24-06-2011 à 19:51:54    

Non mais vous semblez pas avoir compris, je ne recherche pas du tout du code obfuscé, encore moins du code raccourci au max juste pour raccourcir.

 

C'est pas pour un entretien de boulot, c'est pour en entretien d'une spécialité de Master 2 ...

 

Comme c'est un prof ayant donné cours sur tout ce qui touche ordonnancement, sémaphores, etc ... en C (cours OS), j'imagine que ça doit tourner dans ces eaux là (du code court mais complet en même temps et exploitant le C à fond).

Message cité 1 fois
Message édité par darkeagle10 le 24-06-2011 à 19:52:25

---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 25-06-2011 à 09:24:11    

Au lieu de poser des questions débiles et sans intérêt, downloade le source de linux et lis-le.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 25-06-2011 à 10:15:41    

darkeagle10 a écrit :

Je recherche, pour la culture personnelle et professionnelle également
...
En fait il y a des chances que je doive passer un entretien

darkeagle10 a écrit :

C'est pas pour un entretien de boulot, c'est pour en entretien d'une spécialité de Master 2 ...

Il fallait le dire tout de suite. Maintenant, je comprends. Vous ne connaissez pas encore le monde professionnel, et vous n'avez pas encore constaté que le monde de l'informatique professionnel est très différent du monde de l'informatique scolaire. Dans le premier cas, on est les mains dans le cambouis, dans la graisse sale des vieux programmes, dans la jungle infestée de moustiques, et dans l'autre cas, on est sur les nuages blancs de l'utopie théorique et délirante. Donc, c'est sûr, vous n'aurez pas le même genre de tests.

Ca aussi, il aurait fallu nous le dire dès le début. Dans le monde réel, moins de 1 pourcent des informaticiens travaillent à la réalisation d'un OS, les 99 autres pourcent utilisent juste celui qui est à leur disposition. Mais, dans le monde scolaire, on peut se permettre de réinventer ou d'étudier les mécanismes internes des OS.
 
J'ai rarement vu des profs écrire des lignes de codes. Et en général, ils détestent le code C. Mais par contre il écrivent souvent des lignes de pseudo-code. Et on peut faire du pseudo-code très compact en utilisant des mots vagues.
 
Donc, je pense qu'il vous serait profitable de vous concentrer sur du vocabulaire : objet, instance, assertion, prédicat, paradigme, lemme, l-value, réassignation, reusability, scalability, automate (fini), phase, structure, système, environnement, virtuel (mémoire), multi, parallèle, signal, noyau, exception, carte perforée, pico, femto, tera, peta, silicium, arsenure de gallium, contrôleur, pipeline, core, cache de deuxième niveau, filtre, Fourrier, von Neumann, Turing, temps réel, méthode prédictive, multiplex, fibre optique, pigeon voyageur...


Message édité par billgatesanonym le 25-06-2011 à 10:15:54
Reply

Marsh Posté le 25-06-2011 à 12:53:38    

J'admets que j'aurais du préciser à quelle fin était destinée ma recherche.
Je vous assure, le prof en question sait très bien coder des fonctions système en C lui-même, l'option en question porte sur la sécurité des logiciels, OS et réseaux.

 

Que 99% des personnes n'utilisent pas de C dans ce cadre-là, je m'en fiche un peu à vrai dire. En quoi voir comment un ordonnancement d'OS fonctionne est utopique ? (oui je suis effectivement encore étudiant sans expérience pro, je ne le cache pas)

 

Je recherchais juste à savoir si ce genre d'exos existaient sur la toile (il arrive qu'on ne parvienne pas à mettre un terme sur un domaine particulier, c'est quand même plus pratique de le connaître avant de se lancer dans une recherche).

 

@el muchacho : merci de porter autant d'attention à mon post, je vous en suis gré. Je doute que le noyau linux soit la meilleure solution didactique pour apprendre du code C (même si j'en conviens, il doit être très riche), j'aurais plutôt vu ceci comme une 2ème étape ... après quelque chose de plus "light".


Message édité par darkeagle10 le 25-06-2011 à 13:06:08

---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le 25-06-2011 à 14:38:46    

Bonjour,
Le code des demomakers, ceux qui font des intro 4k et 64k peut être ? (enfin si ils codent en C!)


---------------
Seul Google le sait...
Reply

Marsh Posté le 26-06-2011 à 18:14:37    

...pigeon voyageur... Polymorphisme par heritage, heritage multiple, Interface, classe abstraite, template, late binding...
 
T'avais oublie le meilleur :P

Reply

Marsh Posté le 26-06-2011 à 21:08:12    

Plop,
 
Je me demande si ce n'est pas ça que tu cherches : par exemple, le Duff's Device ou certaines implémentations très raccourcies de strcpy ou strncpy.
 
Bon y a aussi des trucs vraiment hardcore mais je pense que c'est une très mauvaise idée d'avoir ça trop longtemps sous les yeux :o
 
EDIT : Master Info à Lille 1 ? On risque de se voir l'année prochaine.


Message édité par Tsomi le 26-06-2011 à 21:09:56
Reply

Marsh Posté le 28-06-2011 à 07:49:10    

Une puissance calculé sans boucle c'est pas hardcore, c'est magnifique :P
 
C'est grace a cet algo que le 1er wolfenstein est sorti en pseudo 3d (raycasting) ça optimise le calcul a mort :O


Message édité par gueuledange le 29-06-2011 à 20:53:01
Reply

Marsh Posté le 28-06-2011 à 19:54:41    

Hep merci pour ces infos Tsomi :)
 
(oui on risque de se voir ^^, si tout va bien je serai en M2 TIIR, enfin on verra les résultats ;) ).


---------------
Gates gave you the windows. GNU gave us the whole house.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed