CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Blabla] le /pub des barbus libres

vava740
vava740
Niveau 10
13 août 2014 à 22:45:30

Y'a déjà les refinements de Ruby 2.0 qui m'attirent :hap: si y'a aussi une **vraie** évaluation paresseuse ça va me faire venir encore plus vite.

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 22:46:57

Ruby faut pas s'y mettre si t'as envie de comprendre l'informatique. C'est très efficace mais y a beaucoup trop de wrappers.

Je fais en une ligne en Ruby ce que je fais en 20 lignes en C :hap:

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 22:54:24

Langages fonctionnels :bave:

Merci Calet sans toi j'aurais attendu quelques mois avant de me lancer dans l'Objective CamL :oui:

Caletlog
Caletlog
Niveau 10
13 août 2014 à 22:55:25

Jamy > C'est le même principe que pour n'importe quel langage de haut niveau.
Et on peut toujours descendre : c'est pas avec du C que tu vas comprendre l'informatique, je fais en une ligne de C ce que je fais en 320 lignes d'assembleur :rire: :hap:
Et niveau wrappers, je trouve que c'est plus l'inverse : les débutants ont tendance à trop utiliser les boucles manuellement, alors qu'on a des collections d'itérateurs super complètes (ce que tu appelles wrappers) pour écrire du Ruby idiomatique.

Franchement, j'aime pas passer pour un gourou d'un langage particulier, mais arrêtez de blâmer le Ruby pour tous les maux en informatique, merde :o))

vava > non, pas que je sache. C'est un simulacre d'évaluation paresseuse, c'est pas vraiment complet (et c'est encore récent ; ruby s'oriente un peu vers le fonctionnel, ça s'améliorera peut-être).
Concrètement .lazy s'applique sur un énumérateur et retourne une sorte d'énumérateur (un objet Enumerator::Lazy) qui redéfinie les méthodes d'inspiration fonctionnelles classiques : map, each_<foo>, ...

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 22:59:38

Je suis désolé mais c'est la vérité, quand t'as des fonctions built-in qui fout tout le boulot à ta place tu comprends beaucoup moins. J'adore Ruby mais il faut lui attribuer que ce côté est un peu abusé, Python sur ce côté est déjà beaucoup plus viable.

Je t'invite à faire les problèmes du projet euler et de remarquer la certaines complexités de certaines enigmes pourtant résolues en 10 sec avec ce cheat qu'est Ruby.

D'ailleurs je connaissais pas l'évalution paresseuse non plus et c'est en effet assez efficace :oui:

sous-chienne
sous-chienne
Niveau 6
13 août 2014 à 23:09:18

"beaucoup plus"
Oklm svp :rire2: :hap:

Oui peut-être, mais juste avoir .lazy() comme ça ne sert pas à grand chose, donc ça veut rien dire.

Tu veux du vrai fonctionnel? Matte ça: http://pastebin.com/2fv9ZKuQ

Les listes de compréhension, vous connaissez ça en natif chez Ruby :question: :hap:

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 23:10:21

Calet en 100

:hap:

Bordel le routage freebox ne fonctionne pas en IPv6 :ouch:

Si c'est pas inciter les gens à revenir à l'ipv4 ça :honte: :hap:

Caletlog
Caletlog
Niveau 10
13 août 2014 à 23:11:32

Mais on peut pas raisonnablement se plaindre du fait qu'un langage automatise certaines tâches répétitives à partir du moment où cette automatisation n'apporte aucun inconvénient technique ! Pour certaines, c'est même plus performant que leur équivalent à la main (je pense notamment aux :attr_<foo> qui sont en fait directement écrits en C alors que les setters/getters manuels sont interprétés comme du Ruby classique).

Pour l'anecdote, je pense pas non plus que Ruby soit le meilleur langage pour débuter, parce qu'il est tellement souple qu'on finit toujours par trouver la pire méthode pour résoudre un problème si on fait pas attention. Mais pour des développeurs ayant déjà un minimum d'expérience, je vois pas en quoi empaqueter les boucles dans des itérateurs dérivés ou des énumérateurs devrait poser problème :(
Et puis c'est pas comme si les structures originales étaient cachées, on peut toujours les utiliser si on aime réinventer la roue à chaque fois quand une solution éprouvée est déjà disponible.

C'est quand même incroyable de considérer un langage comme 'cheat' parce qu'il vise à simplifier le développement. Qu'on l'attaque sur le point des sacrifices qu'il fait pour ça, okay, mais là, l'histoire des wrappers, ça n'a que des avantages. C'est pas ça en soit qui ralentit l'exécution.

À ce moment-là on la mets où la barrière entre ce qui est okay et ce qui ne l'est pas ? Le C ou le C++ ont bien des fonctions utilitaires qui au final ne sont que des fonctions qui empaquettent d'autres fonctions plus primaires. C'est okay de les utiliser ou c'est du 'cheat' ? :(

D'ailleurs c'est marrant que tu parles du projet euler, parce que j'en ai fait aussi pas mal (une cinquantaine, mais discontinus), en Ruby, Haskell et C++. Et tu seras étonné de voir à quel point le Haskell simplifie la résolution de certains types de problèmes, notamment géométriques. Tu peux littéralement résoudre une bonne partie des 20 premiers problèmes en seulement quelques lignes de Haskell.

Caletlog
Caletlog
Niveau 10
13 août 2014 à 23:12:46

Richard > je suis pas un expert en Python, mais ce snippet c'est pas l'équivalent du premier pastebin que je t'ai montré ? :doute:

Je sais pas vraiment ce qu'est une liste de compréhension donc pour le coup je peux pas te répondre. Tu peux détailler ? Je suis sûr qu'on a ça :oui: :hap:

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 23:19:06

Ce n'est pas cheat en soi mais ça gène l'apprentissage. Certains chercheurs de mon université trouvent même que le C est de trop haut niveau pour l'enseignement donc :hap:

Il ne s'agit pas de débuter, je pense qu'une fois que tu es sorti d'un cursus de 5 ans d'enseignement en Informatique alors tu peux utiliser Ruby. Dans le cas contraire c'est néfaste et non adapté. Je parle pour des personnes qui souhaitent apprendre l'informatique en tant que science.

La programmation ne se résume pas qu'a apprendre un langage puis traduire les concepts basiques qu'on a dans la tête dans ce langage particulier, une telle manière de faire est équivalente à de la traduction. Il faut assimiler les concepts si tu veux comprendre et être beaucoup plus effiace et percer dans le game.

La première pratique que j'ai cité est aussi connue sous le nom de "pissage de code" :hap:

Je t'invite à voir cette conférence quand tu auras le temps qui est extrêmement enrichissante: http://www.framablog.org/index.php/post/2013/06/11/francois-elie-education-conference

sous-chienne
sous-chienne
Niveau 6
13 août 2014 à 23:21:09

Oui c'était le but de faire l'équivalent de façon plus ou moins "pythonic".

Une liste en compréhension c'est un truc qui te permet de filtrer une liste avec des conditions et chaque élément retourner ce retrouve à gauche totalement de l'expression (tu peux appliqué une transformation à l'élément comme j'ai fait avec * 2)

C'est une features très populaire dans Haskell :hap:

En gros c'est juste plus ou moins du sucre syntaxique pour looper dans une liste, faire des transformations sur les éléments, filtrer les éléments, et le résultat de l'expression finale est une autre liste. :hap:

sous-chienne
sous-chienne
Niveau 6
13 août 2014 à 23:22:57

Et non, je ne crois pas qu'il existe un truc similaire pour Ruby. Enfin pas en natif en tout cas.

C'est ce qui me manquait le plus pour les 2-3 trucs que j'ai fait sous Rails. :(

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 23:29:02

En ruby tu peux faire l'équivalent avec reject :hap: Enfin ça marche dans l'autre sens mais suffit d'inverser la valeur de vérité et c'est équivalent.

Caletlog
Caletlog
Niveau 10
13 août 2014 à 23:30:36

Richard > Aaaaaaaaaaahh oui, je vois ça en Haskell mais j'imaginais pas du tout les revoir ailleurs que dans le Haskell donc j'ai pas tilté :hap:

Hum, là tout de suite je dirais qu'on peut bricoler un truc avec reject ou select, à voir.

Jamy >
"Il ne s'agit pas de débuter, je pense qu'une fois que tu es sorti d'un cursus de 5 ans d'enseignement en Informatique alors tu peux utiliser Ruby. Dans le cas contraire c'est néfaste et non adapté. Je parle pour des personnes qui souhaitent apprendre l'informatique en tant que science. "

:d) Mais c'est le cas de n'importe quel langage plus ou moins haut niveau :(
La programmation n'est qu'une infime partie des CS, et un langage en particulier en est une partie encore plus infime. C'est juste de la grammaire et un peu de mémoire ; le vrai boulot, c'est toute la théorie derrière sur les structures de données et les algorithmes.
Peu importe ton niveau dans ces théories informatiques, le langage n'est qu'un outil pour les appliquer. Si je n'ai aucune connaissance en théorie des catégories, ce n'est ni l'assembleur ni le ruby qui me l'apprendront. Et si je suis un expert en théorie des catégories, ce n'est ni l'assembleur ni le ruby qui m'empêcheront ni m'aideront à les appliquer si j'en ai besoin.

Je vois pas où tu veux en venir, en fait. Bien sûr qu'un langage ne t'apprendra pas les CS, c'est une discipline à part entière et dont les langages font partie ! Je le répète, mais un langage est un outil et en soi un simple conglomérat de règles de grammaire et de mots-clés. Tout le travail derrière est plus abstrait que ça et applicable à n'importe quel autre langage.

sous-chienne
sous-chienne
Niveau 6
13 août 2014 à 23:36:37

l'inverse de reject c'est select. :hap:

Mais ouais avec select et collect, on peut faire un truc semblable, mais en moins beau syntaxiquement. :hap:

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 23:37:19

Comme tu l'as dis un langage est un outil, quand on enseigne une théorie qu'on découpe en UE puis en différentes parties on a la partie théorique d'un côté puis la partie pratique du cours. Qu'est-ce que la partie pratique en informatique ? C'est un langage de programmation. Du coup ça permet de faire le lien entre la théorie et la pratique. Et je te dis pas les dégâts si on utilisait Ruby pour ce faire par exemple :hap:

En mathématiques tu n'auras jamais le meilleur niveau possible si tu ne fais pas d'exercices, tu auras beau apprendre ton cours par cœur si tu n'es pas capable d'avoir l'abstraction pour dégager les concepts et comprendre leur étendue tu ne vaudras rien devant un sujet d'examen. Expérience vécue de nombreuses fois :ok:

C'est exactement la même chose ici.

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 23:38:08

Ouais je sais en plus :rire: Le pire c'est que j'ai toujours utilisé select et pas reject :hap:

Caletlog
Caletlog
Niveau 10
13 août 2014 à 23:44:19

Mais je veux bien, je suis tout à fait d'accord avec ton dernier message ; mais je vois pas en quoi le Ruby en particulier t'empêche de mettre en application tes connaissances théoriques.
Qu'est ce que tu peux faire manuellement en C, en Python ou en je-ne-sais-quoi que tu ne peux pas faire manuellement en Ruby, si tu veux implémenter tes cours ? :question:
Comme je te l'ai dit, toutes les abstractions offertes par Ruby sont optionnelles. Si tu veux réimplémenter toi-même une structure de données ou un ensemble de méthodes en particulier, tu dispose toujours des mêmes outils primaires que dans n'importe quel autre langages : boucles, embranchements, structures de données primitives, ...

Vraiment, comme j'avais dit je pense pas effectivement que le Ruby soit le meilleur pour débuter, mais pas du tout pour ces mêmes raisons. Selon ton raisonnement, aucun langage n'est adapté puisque le principe est justement d'appliquer des théories abstraites, mais pour ce faire il faut forcément descendre en abstraction !

sous-chienne
sous-chienne
Niveau 6
13 août 2014 à 23:46:11

http://xkcd.com/378/

JamyGourmand
JamyGourmand
Niveau 8
13 août 2014 à 23:55:04

Premièrement la faiblesse, si je dispose d'un tel langage je vais être tenté par le diable et utiliser ces méthodes :hap:

Deuxièmement même dans la plus grande simplicité Ruby reste un langage de plus haut niveau ne serait-ce que dans son interprétation des structures primaires :non2:

Du coup Ruby n'est pas approprié il équipé de beaucoup trop de raccourcis, sa gestion de la mémoire est complètement transparente.

Mais oui grosso-modo CRuby est écrit en C donc tu peux faire tout ce que tu fais en C, mais il y des simplifications fondamentales.

Ce n'est pas parce que c'est abstrait que ça n'a pas de sens dans la pratique, si tu n'as pas l'abstraction nécessaire ta pratique en souffrira car tu n'auras pas LA manière de raisonner.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment