arnaudus a écrit 4657 commentaires

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    c'est pas très élégant exécuter pleins de fonctions à la suite sur la séquence quand la parcourir une fois suffit

    Ah, je pense que c'est un problème de culture et de définition de l'«élégance» :-) Classiquement, quand on utilise un langage de haut niveau, on est moins exigeant sur la performance brute. Je n'ai pas de culture algorithmique, et à mes yeux, quelque chose comme "amplitude <- max(x) - min(x)" est beaucoup plus élégant qu'une boucle qui ne fait qu'une passe : quelque part, on touche presque au langage naturel.

    L'autre truc, c'est que quand on a un langage non compilé, on ne peut que deviner la manière dont les opérations sont optimisées, mais en faisant les tests, on peut avoir des surprises :

    x <- rnorm(10000000)
    > system.time(max(x)-min(x))
       user  system elapsed 
      0.128   0.000   0.132
    > system.time(diff(range(x)))
       user  system elapsed 
      0.160   0.044   0.212
    
    

    Visiblement, dans ce cas, il vaut mieux faire deux passes qu'une seule (je ne sais pas pourquoi, ça vient peut-être de l'implémentation en C des fonctions correspondantes).

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    c'est joli d'écrire ça en 4 lignes mais il y a plus efficace

    Certes, on peut écrire ça en assembleur aussi… Je ne suis pas certain que les consignes étaient spécialement claires. Apparemment, la lisibilité était évaluée sur des critères peu convainquants, et je n'ai pas lu de remarques sur le contexte. Typiquement, le code le plus efficace devra tenir compte des contraintes (exécuter rarement sur des gros jeux de données, exécuter des milliers de fois sur des vecteurs de taille 10, etc) qui peuvent rendre toute tentative d'optimisation a priori totalement contre-productive.

    si R est assez bon pour ne pas exécuter les 2 min(s)

    Ça me parait très peu probable. R est un langage de script, il exécute les instructions les unes après les autres. Par contre, je ne suis pas convaincu que le stockage du contenu des min et des max soit plus rapide que le double appel à la fonction : c'est complètement empirique.

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2. Dernière modification le 29 octobre 2012 à 22:42.

    Je m'auto-réponds encore une fois (rien que pour le plaisir de voir les geekscottes), il y a beaucoup plus simple (mais en O(n2))! . Je ne sais pas si la lisibilité et la concision étaient privilégiées sur l'efficacité.

    s <- scan("stdin")[-1]
    cat(min(sapply(1:length(s), FUN=function(x) { min(s[x:length(s)]-s[x])})))
    
    
  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    Tu as raison, mais mon code a passé les 5 tests proposés sur le site, je n'ai pas cherché plus loin. Du coup, mon argument "c'est trop simple" tombe à l'eau, non? :-) Bon, ce n'est pas si compliqué que ça, il faut appliquer la recherche entre le début et le dernier minimum, et entre le premier maximum et la fin, et prendre la plus grande différence.

    s <- scan("stdin")[-1]
    lastmin <- min(s)-max(s[1:rev(which(s==min(s)))[1]])
    firstmax <- min(s[which(s==max(s))[1]:length(s)])-max(s)
    cat(min(lastmin, firstmax),"\n")
    
    
  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    Si c'est tout à fait possible (peut-être 4 lignes), mais j'ai eu la flemme :-)

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    Tiens, pour jouer, voici la solution du 2 en R :

    s <- scan("stdin")[-1]
    m <- which(s==min(s))
    cat(min(s)-max(s[1:m[length(m)]]),"\n")
    
    

    Encore une fois, il n'y a même pas d'algorithme : on a une entrée, un calcul hyper simple, et une sortie. La seule difficulté de l'exercice, c'est la modélisation du problème, et éventuellement savoir coder min() et max() si le langage n'offre pas des fonctions aussi simples.

    Bref, je confirme que les problèmes sont bien trop ennuyeux à mon goût.

  • # Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 6.

    Ça n'engage que moi, mais je trouve que les exercices ne sont pas assez intéressants pour ce type de concours. Leur difficulté principale reste la modélisation du problème et la découverte d'une solution mathématique. Le code, au final, contiendra surtout des entrées sorties, et deux lignes pour l'algorithme.

    L'autre problème, c'est que le peu d'algorithmique présente est purement scolaire : trier, prendre le maximum, le minimum, la médiane, etc. Quelqu'un qui a bien révisé peut coder ça sans réfléchir, mais ça n'a vraiment aucun intérêt, puisque dans la vraie vie, on a tout intérêt à utiliser des bibliothèques optimisées et débugguées pour ça. Je pense qu'en 2012, on doit réfléchir autrement sur ce qu'est un programmeur efficace : quelqu'un qui sait utiliser les bons design patterns, les bons outils, les bonnes briques logicielles existantes, etc. Il existe d'excellents exercices d'algorithmique : concevoir une intelligence artificielle pour un jeu, par exemple. Des trucs où il faut être inventif et précis, avoir une bonne intuition sur les contraintes à l'utilisation (identifier tôt les bottlenecks potentiels), etc.

    En gros, j'ai l'impression de pouvoir résoudre ces problèmes en 3 lignes avec un langage de haut niveau. Sérieux, en R, la réponse au problème 3 est

    m <- matrix(scan("")[-1], ncol=2, byrow=TRUE)
    print( diff(range(m[,1])) + sum(abs(m[,2]-median(m[,2]))) )
    
    

    Il n'y a rien à coder une fois la solution mathématique trouvée.

  • [^] # Re: Autorisations

    Posté par  . En réponse au journal ice cream sandwich, je ne mange pas de ce pain-là. Évalué à 6. Dernière modification le 26 octobre 2012 à 14:55.

    Franchement, je pense que c'est complètement parano : le nombre de permissions doit être limité, justement pour que l'utilisateur puisse comprendre à quoi l'application a accès. "Accès réseau", "Connaitre l'État du téléphone" semblent être des permissions compréhensibles pour tout le monde. Comment veux-tu expliquer en deux lignes "Cette application peut savoir si le téléphone est actif, mais ne peut pas connaitre le numéro appelé, à moins qu'il soit référencé dans le carnet d'adresse"? Une granularité fine dépend au final des besoins des développeurs ; s'il faut une permission pour chaque accès matériel (accéder à la mémoire, accéder au micro, accéder aux hauts-parleurs, accéder à l'écran tactile…), l'utilisateur devra accorder des douzaines de permissions : non seulement ça donnera encore plus l'impression que les applis sont extrêmement intrusives, mais ça diminuera encore plus le sentiment de méfiance : puisque toutes les applis demandent 50 permissions, on valide, on ne lit même plus. La seule alternative à la multiplication de ces permissions serait un score d'intrusivité, ou quelque chose comme ça. "Vie privée: 5 étoiles, Risques pour le système: 3 étoiles, Intrusivité par rapport à l'utilisation du téléphone : 2 étoiles", etc.

  • [^] # Re: Autorisations

    Posté par  . En réponse au journal ice cream sandwich, je ne mange pas de ce pain-là. Évalué à 10.

    La demande de droits abusive est certainement une pratique contestable, mais histoire de balancer un peu les choses, j'ai entendu pas mal de developpeurs d'applis se plaindre de la mauvaise granularité des droits, ce qui explique en partie les droits ahurissants demandés. Par exemple, pour empêcher la mise en veille, pour avoir le droit de se connecter à un serveur de high-scores, ou pour pouvoir accéder à l'accéléromètre, il faut demander tout un tas de droits dont on n'a pas besoin (accès illimité au réseau, GPS, identité du téléphone, etc). L'exemple le plus frappant à ma connaissance était un développeur accusé de demander abusivement le pouvoir d'appeler les numéros qu'il voulait, alors que sa motivation était de pouvoir sauvegarder un truc en cas d'appel téléphonique, pour éviter que l'appli ne tourne pendant l'appel. Donc voila, oui, mais il ne faut pas tomber dans les accusations trop faciles.

  • [^] # Re: Sautons dedans

    Posté par  . En réponse au journal Linux Deepin…. Évalué à 7.

    C'est très pertinent. Je me souviens du fameux troll CMJN, gna gna gna Gimp ne sait pas le prendre en compte, ça fait amateur, etc. L'implémentation de la quadrichromie dans Gimp n'a absolument rien changé au marché, maintenant c'est les images 16 bits, et si ça n'était pas ça, ça serait encore autre chose. Chacun est libre d'utiliser le logiciel qu'il souhaite, mais il n'est pas nécessaire de se sentir obligé de justifier son choix par des fausses raisons. Évidemment, un logiciel libre comme Gimp ne peut pas être à la pointe sur tous les fronts, mais Gimp implémente 98% des fonctions disponibles dans Photoshop. C'est un peu ridicule de passer son temps à prétendre qu'on a à tout prix besoin de ces 2% de fonctionnalités que personne ne comprend vraiment, et que personne dans l'équipe de Gimp (pourtant pas des quiches en traitement d'image) n'a trouvé bon d'implémenter. Bref, à mon avis, c'est un faux argument pour justifier un choix non-rationnel.

    Personnellement, ce que je trouve beaucoup plus critiquable dans Gimp, c'est l'ergonomie et le manque d'intuition. J'accepte très facilement de lire un manuel pour une interface en ligne de commande, mais une interface graphique doit être construite pour pouvoir être utilisée intuitivement (y compris en respectant les us et coutumes arbitraires, comme l'ordre des menus, etc). Je n'utilise Gimp que très sporadiquement, et à chaque fois, j'ai l'impression que le logiciel ne fait pas ce que j'attends de lui, c'est très agaçant. Après, je n'ai jamais touché à photoshop de ma vie, donc je ne peux pas comparer.

  • [^] # Re: ARgh, trillons pourris

    Posté par  . En réponse au journal Ramesh Raskar et l’imagerie à un trillion d’images par seconde.. Évalué à 4.

    Je ne vois pas pourquoi on ne devrai pas l'utiliser. Si on commence à ne plus utiliser tous les outils qui sont des fois mal utilisés, on va vite se retrouver avec une langue dénuée de toutes subtilités.

    Une subtilité, c'est quand on peut exprimer une idée particulière d'une manière précise. Ici, il n'y a rien de subtil, il y a juste une série de termes dont la signification est totalement confuse du fait d'une multitude de faux amis avec l'anglais. Si on admet qu'une langue se définit par l'usage, alors "trillon" veut dire plusieurs choses en français, sans que le contexte ne permette de trancher. Je dirais, au contraire, que c'est une absence de subtilité.

    En français de France, par exemple, «un portable» peut désigner soit un téléphone portable, soit un ordinateur portable. Qui ne s'est jamais engagé dans un quiproquo à cause de cette confusion? Ce vocabulaire foireux est simplement lié à l'évolution de la langue, on y peut rien, mais ce n'est en rien une subtilité. Au contraire, utiliser «mobile» pour un téléphone et «portable» pour un ordinateur introduit une subtilité bienvenue.

  • [^] # Re: ARgh, trillons pourris

    Posté par  . En réponse au journal Ramesh Raskar et l’imagerie à un trillion d’images par seconde.. Évalué à 1.

    en revanche, "ambigü" n'est toujours pas correct

    Ah oui, pardon, je croyais que ça avait été harmonisé. Ambigu, ambigus, ambigüe, ambigüité.

    Dommage que les trémas n'aient pas été utilisés pour remplacer les affreux circonflexes sur piqûre, par exemple, qui devient piqure avec la nouvelle orthographe, mais qui aurait bien pu s'orthographier "piqüre" à mon avis…

  • [^] # Re: ARgh, trillons pourris

    Posté par  . En réponse au journal Ramesh Raskar et l’imagerie à un trillion d’images par seconde.. Évalué à 6.

    Tout à fait.

    Système européen, 10⁹ = 1 milliard, 10¹² = 1 billion, 10¹⁵ = 1 billiard, 10¹⁸ = 1 trillon.

    Système anglo-saxon: 10⁹ = 1 billion, 10¹² = 1 trillon, 10¹⁵ = 1 quadrillon, 10¹⁸ = 1 quintillon.

    Conclusion : ne JAMAIS utiliser en français un système aussi débile et ambigü.

  • # ARgh, trillons pourris

    Posté par  . En réponse au journal Ramesh Raskar et l’imagerie à un trillion d’images par seconde.. Évalué à 10. Dernière modification le 16 octobre 2012 à 17:06.

    Sérieux, il faut arrêter avec ces horreurs que sont les "billions" et les "trillons". Ces dénominations sont super-ambigües et désignent des nombres qui n'ont rien à voir en fonction des conventions en vigueur dans les pays.

    Je pense que tu as recopié ce "trillon" sur un site anglo-saxon, il doit donc faire référence à mille milliards (10¹²). Or, en français, un trillon, c'est un milliard de milliard, donc 10¹⁸. Dans tous les cas, c'est ambigü, même quand c'est bien utilisé, et même les traducteurs professionnels se vautrent tellement souvent que quand on lit "un trillon", il y a à peu près une chance sur deux pour que ça soit l'un ou l'autre. Je pense que le plus sage est de ne jamais utiliser un terme aussi ambigü.

    NdM : cf. page Wikipédia Échelles longue et courte.

  • [^] # Re: Compliqué

    Posté par  . En réponse à la dépêche Firefox & Thunderbird 16 sont sortis. Évalué à 4.

    Bah, surtout qu'à ma connaissance, le moteur de rendu HTML n'est pas codé en javascript… Peut-être que ça vient du fait que ça a dû être une extension à l'origine?

  • [^] # Re: "pour les systèmes plus évolués" ?!?

    Posté par  . En réponse à la dépêche Firefox & Thunderbird 16 sont sortis. Évalué à 6.

    T'as marché dedans, fais gaffe, t'en mets partout.

  • [^] # Re: Compliqué

    Posté par  . En réponse à la dépêche Firefox & Thunderbird 16 sont sortis. Évalué à 5.

    En ce qui concerne la fameuse extension, je l'utilise au quotidien, et il faut avouer qu'elle n'est pas vraiment au point. Donc il est urgent d'attendre.

    Par contre, du point de vue technique, j'avoue que je ne comprends pas pourquoi ne pas avoir utilisé du code existant, il y a d'excellents moteurs de rendu de pdf libres…

  • # Un tonton fligueur...

    Posté par  . En réponse au journal « Le domaine public est du communisme », pour Nicolas Seydoux, . Évalué à 10.

    Les cons, ça ose tout, c'est même à ça qu'on les reconnait…

  • [^] # Re: Privatisation ??

    Posté par  . En réponse au journal L’aventure spatiale perd un peu de sa liberté. Évalué à 2.

    Je suis bien d'accord : c'est vraiment manichéen d'opposer public et privé dans le domaine particulier de la conquêtre spatiale.

    D'une part, c'est une activité qui a besoin d'énormément de matériel et de technologie (navettes, fusées, etc), qui ne peuvent pas vraiment être construites par les États modernes, sont souvent incapables matériellement et idéologiquement d'entrer dans une logique industrielle.

    D'autre part, l'histoire de la conquête spatiale "publique" se révèle assez désastreuse : c'est très, très lent, ça recule même sur certains points (alunissage par exemple), c'est motivé principalement par des questions de politique internationale, les budgets changent sans arrêt, et contrairement à ce qui est dit dans le journal, il n'y a pas grand chose de public dans la technologie développée. Par ailleurs, on peut se demander si c'est le rôle des États que d'investir dans des activités génératrices de profit, comme les lancements de satellites.

    Je pense que les États ont eu 60 ans pour prouver qu'ils étaient incapables de mettre en place une progression technologique digne des capacités d'innovation de l'humanité. Même si je suis a priori douteux, je pense qu'il est légitime de laisser sa chance au secteur privé, rien que pour le potentiel d'innovation. Si dans 50 ans on en est encore à lancer des fusées en y fourrant des tonnes de carburant et en y foutant le feu, alors le privé n'aura pas réussi à faire mieux que le public.

  • [^] # Re: système de fichier

    Posté par  . En réponse à la dépêche Windows 8, Windows Server 2012 et Windows Phone 8. Évalué à 4.

    Au moins une raison : pousser l'utilisation de leur super format sur une partition partagée entre plusieurs OS, par exemple.

  • [^] # Re: Et ne parlons pas de Free Mobile

    Posté par  . En réponse au journal ras-le-bol de Free. Évalué à 5.

    Bref, j'ai l'impression que – davantage chez Free que chez les autres – les râleurs gueulent plus fort.

    Je crois que tu te trompes. Ceux qui gueulent, en général, sont ceux qui ne sont pas chez Free. Regarde ce qui se passe pour le téléphone : les gens qui sont coincés dans leur forfait 24 mois trouvent n'importe quelle excuse pour justifier le prix qu'ils payent (le réseau est meilleur, mon prestaaire est plus éthique, …). Ceux qui ont le forfait à 0€ ne vont pas gueuler parce qu'ils reçoient mal les SMS qui viennent de Russie, parce qu'ils n'ont pas les mêmes objectifs et la même conception du service que les abonnés professionnels de chez SFR.

    Pour Free vs. Youtube, je ne comprends pas vraiment les tenants et les aboutissants de l'affaire, et je trouve assez craignos de prendre parti contre un FAI "les débits sont pourris, vous êtes des voleurs" sans essayer de comprendre vraiment pourquoi les débits sont pourris, et quels sont les enjeux derrière en terme de financement durable de l'infrastructure.

  • [^] # Re: Clause de non garantie

    Posté par  . En réponse au journal Licence virale minimaliste ou licence incestueuse. Évalué à 2.

    À mon avis, il faut quand même pouvoir prouver qu'on n'a pas eu l'intention de nuire. Si tu distribues un soft sous GPL qui est en fait un "rm -rf /" obfusqué, je ne pense pas que tu puisses te cacher derrière une telle clause.

  • [^] # Re: WTFPL

    Posté par  . En réponse au journal Licence virale minimaliste ou licence incestueuse. Évalué à 5.

    Je suis d'accord qu'il faut avoir les yeux en face des trous pour suivre les conversations avec les indentations du forum, mais je répondais au commentaire qui tentait de créer une WTFPL contaminante, et mon point de vue était : c'est absurde et impossible dans l'esprit de la WTFPL. Au passage, la WTFPL n'est pas vraiment BSD-like, elle est plutôt à rapprocher du domaine public, à mon avis, donc PD-like. La licence BSD est une licence "attribution" : "Je suis l'auteur, je vous donne le droit de faire ci et ça", alors que la WTFPL est une licence de type "j'abandonne tout ce qui est possible d'abandonner en termes de droits d'auteur".

  • [^] # Re: WTFPL

    Posté par  . En réponse au journal Licence virale minimaliste ou licence incestueuse. Évalué à 3.

    1. Your users just DO WHAT THE FUCK THEY WANT TO.

    Ouais, donc on fait ce qu'on veut, sauf d'empêcher les utilisateurs de faire ce qu'ils veulen. Je pense que ça n'a aucun sens, il faut aller voir la FAQ de la WTFPL : on fait CE QU'ON VEUT, y compris faire ce qu'on veut (supprimer le nom de l'auteur, changer la licence, ce qu'on veut). La moindre restriction est totalement incohérente avec l'esprit de la licence.

  • # Le monde réel

    Posté par  . En réponse au message 10.26€ de l'heure net c'est trop demandé ?. Évalué à 10.

    J'ai un peu l'impression que pendant quelques dizaines d'années, les compétences informatiques étaient réservées aux ingénieurs ou aux gens sortant d'écoles plus ou moins prestigieuses, avec toute l'aura qui vient avec. Avec l'expansion du nombre de gens sachant plus ou moins bidouiller un système, ces compétences deviennent moins rares, et le chômage fait qu'il doit être de moins en moins difficile de trouver des gens capables de coder des trucs.

    Alors oui, 1450€, c'est un peu plus que le SMIC. Mais c'est aussi à peu près ce que gagne un instit en début de carrière : avec 80% d'une classe d'âge qui a le bac en poche, la majorité de la population aspire à attrapper un poste de cadre. Dans l'histoire de l'humanité, jamais les salaires moyens et le pouvoir d'achat n'ont été aussi élevés, mais jamais les postes à responsabilité moyenne n'ont été aussi mal payés. Ce qu'il y a d'assez triste en fait, c'est que la fracture sociale s'est simplement déplacée ; maintenant, les cadres et les ingénieurs sont des employés de base, traités comme tels, alors que les gros commerciaux et les dirigeants gagnent plus d'argent qu'ils n'en ont besoin.