#2151 Le 21/03/2014, à 22:05
- Pylades
Re : /* Topic des codeurs [8] */
Ils ont fait un epub, aussi ?
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2152 Le 22/03/2014, à 02:33
- grim7reaper
Re : /* Topic des codeurs [8] */
Ça ça a l'air marrant (un livre correspondant à un cours de maths du MIT qui se concentre sur comment estimer des trucs à la louche et de tête correctement ; un truc vachement utile dans la vraie vie).
Intéressant
Hors ligne
#2153 Le 22/03/2014, à 16:30
- Rolinh
Re : /* Topic des codeurs [8] */
Que pensez-vous de l'introduction des lambda expressions dans Java 8 ?
Personnellement, j'ai l'impression que c'est censé apporter quelque chose au langage mais qu'au final, Java n'ayant pas été pensé pour être fonctionnel, ça va juste apporter de l'incohérence.
Avant on avait déjà l'incohérence des types primitifs, maintenant on en aura juste un peu plus. Et puis l'introduction de lambda ça permet d'écrire moins de lignes de code:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
doFoo();
}
});
vs
button.addActionListener( (e) -> {
doFoo();
});
Ce n'est pas dans l'esprit Java ça.
Et je ne pense pas non plus que l'introduction des interfaces fonctionnelles soit une bonne chose non plus. Ça casse une logique Java établie depuis longtemps.
Hors ligne
#2154 Le 22/03/2014, à 17:03
- The Uploader
Re : /* Topic des codeurs [8] */
En parlant de trucs "hors-langage", j'ai rencontré un dictionnaire<string,dynamic> en C# (qui est un langage avec typage statique).
C'est possible grâce au DLR, utilisé aussi par IronPython ou IronRuby.
Les appels aux membres dynamiques sont résolus à l'exécution.
Le problème, c'est que j'ai trouvé des appels à des clés qui étaient rajoutés (méthode add) 20 kilomètres plus loin que là où était défini le dictionnaire.
Sympa le code spaghetti...
Dernière modification par The Uploader (Le 22/03/2014, à 17:08)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#2155 Le 23/03/2014, à 01:02
- grim7reaper
Re : /* Topic des codeurs [8] */
Que pensez-vous de l'introduction des lambda expressions dans Java 8 ?
J’en pense que, tout comme l’orienté objet il y a quelques années, le fonctionnel est à la mode en ce moment et donc tout les langages en intégrent des bout plus ou moins gros.
D’ailleurs niveau prog’ fonctionnelle, il y a aussi Optional qui se rapproche de Maybe en Haskell ^^
Pour moi la grosse nouveauté de Java 8, c’est qu’ils ont enfin intégré Joda Time et qu’on a enfin une API utilisable (juste pour rire, jeter un œil à java.sql.time et java.util.date dans Java 7 et compter le nombre de méthodes dépréciées >_<).
java.util.stream ça semble très sympa aussi, surtout niveau parallèlisation.
Sinon les interfaces fonctionnelles ça donne un peu de souplesse au langage (ça ne lui fait pas de mal je pense).
Cet article présente les principales nouveautés de Java 8.
Depuis Java 7, avec NIO2 et le try-with-resources (un truc comme with en Python) par exemple, Java deviendrai presque utilisable de manière agréable
Hors ligne
#2156 Le 24/03/2014, à 08:42
- Rolinh
Re : /* Topic des codeurs [8] */
Intéressant ce Joda Time, effectivement.
Pour java.util.stream, c'est vrai que ça semble intéressant aussi.
int sum = widgets.stream()
.filter(b -> b.getColor() == RED)
.mapToInt(b -> b.getWeight())
.sum();
Faut dire que, c'est mon impression en tout cas, MapReduce a la cote en ce moment. Ça doit être dans l'air du temps en raison des tendances "big data". J'ai d'ailleurs récemment découvert que même MongoDB bénéficie d'un MapReduce.
Ceci dit, c'est marrant mais j'ai l'impression que Java 8 se rapproche/s'inspire de Scala sur bien des aspects.
Hors ligne
#2157 Le 24/03/2014, à 10:49
- grim7reaper
Re : /* Topic des codeurs [8] */
Faut dire que, c'est mon impression en tout cas, MapReduce a la cote en ce moment. Ça doit être dans l'air du temps en raison des tendances "big data". J'ai d'ailleurs récemment découvert que même MongoDB bénéficie d'un MapReduce.
Ça rejoint ce que je disais à propos de la prog’ fonctionnelle.
Qu’est-ce que MapReduce si ce n’est de la prog’ fonctionnelle (map et reduce étant des primitives en approche fonctionnelle) appliquée au big data.
Ceci dit, c'est marrant mais j'ai l'impression que Java 8 se rapproche/s'inspire de Scala sur bien des aspects.
Bah Scala étant un langage pas mal orienté fonctionnel qui tourne sur JVM (donc qui peut utiliser les lib’ Java) et qui a pas mal de succès, c’est pas surprenant que Java s’en inspire.
Hors ligne
#2158 Le 24/03/2014, à 20:06
- Rolinh
Re : /* Topic des codeurs [8] */
Qu’est-ce que MapReduce si ce n’est de la prog’ fonctionnelle (map et reduce étant des primitives en approche fonctionnelle) appliquée au big data.
Tu as pris un raccourcis de trop. MapReduce, tel que décrit dans la publication de Google, ce n'est PAS de la prog fonctionnelle si ce n'est que les fonctions map et reduce en sont inspirées. C'est simplement un modèle de programmation pour paralléliser le processing d'une tâche sur un certain nombre de nœuds de calculs, avec en général plus de nœuds pour le mapping que pour la réduction (mais cela dépend du problème évidemment). Une fonction map (avec éventuellement une étape de splitting au préalable), dans ce cadre là, prend typiquement une paire clé/valeurs et renvoi aussi une paire clé valeurs qui est ensuite traitée par une fonction de réduction (avec éventuellement une étape de shuffle au préalable). Après, oui, l'idée générale sous-jacente s'inspire de ce que l'on trouve dans le fonctionnel.
Bah Scala étant un langage pas mal orienté fonctionnel qui tourne sur JVM (donc qui peut utiliser les lib’ Java) et qui a pas mal de succès, c’est pas surprenant que Java s’en inspire.
Oui et non. Ils pourraient aussi ne pas s'en inspirer car par certains aspects, cela s'éloigne pas mal de certains concepts de Java. Ne pas pouvoir faire quelque chose dans le genre risque d'en surprendre plus d'un (m'enfin, je me trompe peut-être):
int foo = 0;
List<String> bars = Arrays.asList("a", "b", "c");
bars.forEach(s -> {
foo++;
});
Hors ligne
#2159 Le 25/03/2014, à 03:30
- grim7reaper
Re : /* Topic des codeurs [8] */
grim7reaper a écrit :Qu’est-ce que MapReduce si ce n’est de la prog’ fonctionnelle (map et reduce étant des primitives en approche fonctionnelle) appliquée au big data.
Tu as pris un raccourcis de trop. MapReduce, tel que décrit dans la publication de Google, ce n'est PAS de la prog fonctionnelle si ce n'est que les fonctions map et reduce en sont inspirées. C'est simplement un modèle de programmation pour paralléliser le processing d'une tâche sur un certain nombre de nœuds de calculs, avec en général plus de nœuds pour le mapping que pour la réduction (mais cela dépend du problème évidemment). Une fonction map (avec éventuellement une étape de splitting au préalable), dans ce cadre là, prend typiquement une paire clé/valeurs et renvoi aussi une paire clé valeurs qui est ensuite traitée par une fonction de réduction (avec éventuellement une étape de shuffle au préalable). Après, oui, l'idée générale sous-jacente s'inspire de ce que l'on trouve dans le fonctionnel.
En effet, j’ai pris un raccourci foireux. Ce n’est pas totalement de programmation fonctionnelle c’est vrai, mais ça n’en est pas moins très fortement inspiré :
Abstract
[…]
Programs written in this functional style are automatically parallelized and executed on a large cluster of commodity machines.
[…]
Introduction
[…]
Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional langages.
[…]
Our use of a functional model with user-specied map and reduce operations allows us to parallelize large computations easily and to use re-execution as the primary mechanism for fault tolerance.
grim7reaper a écrit :Bah Scala étant un langage pas mal orienté fonctionnel qui tourne sur JVM (donc qui peut utiliser les lib’ Java) et qui a pas mal de succès, c’est pas surprenant que Java s’en inspire.
Oui et non. Ils pourraient aussi ne pas s'en inspirer car par certains aspects, cela s'éloigne pas mal de certains concepts de Java. Ne pas pouvoir faire quelque chose dans le genre risque d'en surprendre plus d'un (m'enfin, je me trompe peut-être):
int foo = 0; List<String> bars = Arrays.asList("a", "b", "c"); bars.forEach(s -> { foo++; });
Possible.
Mais c’est aussi peut-être pour récupérer des dev’ Java passé à Scala.
Hors ligne
#2160 Le 28/03/2014, à 20:44
- The Uploader
Re : /* Topic des codeurs [8] */
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#2161 Le 28/03/2014, à 23:46
- Elzen
Re : /* Topic des codeurs [8] */
Bon.
J'ai fais un truc, en Java, je n'arrive pas à déterminer si c'est élégant ou pas.
Je bosse sur un simulateur, avec des classes qui vont changer d'une exécution à l'autre. Par exemple, je manipule des requêtes, qui peuvent être réécrites à partir d'un ensemble d'autres requêtes. Basiquement, ça devrait donner ça :
public interface Query {
public Query rewriteUsing(Set<Query> views);
}
Avec plusieurs classes différentes, en fonction du type de requêtes que je fais jouer dans le simulateur.
Le truc, c'est que je n'utilise qu'un seul type de requête à chaque fois. Du coup, le code de chacune des classes ressemblait à quelque chose comme ça :
public class ParticularQuery implements Query {
public ParticularQuery rewriteUsing(Set<Query> views) {
for (Query view: views) {
ParticularQuery particularView = (ParticularQuery) view;
…
}
}
}
Ce qui est quand même un peu lourd.
Du coup, j'ai eu l'idée saugrenue de faire comme ça :
public interface Query<Q extends Query> {
public Q rewriteUsing(Set<Q> views);
}
Et du coup, ça donne ça :
public class ParticularQuery implements Query<ParticularQuery> {
public ParticularQuery rewriteUsing(Set<ParticularQuery> views) {
for (ParticularQuery view: views) {
…
}
}
}
Vous en pensez quoi ?
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2162 Le 15/04/2014, à 17:41
- The Uploader
Re : /* Topic des codeurs [8] */
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#2163 Le 21/04/2014, à 11:40
- doudoulolita
Re : /* Topic des codeurs [8] */
Quelques problèmes pour mon jeu Guyana-dream en javascript.
Sous IE11 (j'ai pas testé sur d'autres versions pour l'instant): j'ai ajouté excanvas.js donc la bordure du canvas s'affiche mais pas les images.
J'ai testé pas mal de trucs sur une version simplifiée (pour éviter les problèmes de z-index) sans succès.
Sous Firefox, le seul souci est que je dois reloader pour que le décor apparaisse. En fait, je mets un onload sur le sprite et un onload sur le tileset. Puis-je charger les images avant comme je l'ai vu dans un bouquin (mais je n'ai pas réussi à le faire) et les afficher avec body.onload ?
Je n'ai pas testé avec Chrome.
Dernière modification par doudoulolita (Le 21/04/2014, à 11:44)
Hors ligne
#2164 Le 26/04/2014, à 08:52
#2165 Le 01/05/2014, à 10:38
- doudoulolita
Re : /* Topic des codeurs [8] */
@grim7reaper : quelqu'un connaît un forum approprié pour javascript (à part celui d'openclassroom que je connais déjà) ?
Hors ligne
#2166 Le 01/05/2014, à 10:51
- Shanx
Re : /* Topic des codeurs [8] */
Si tu as une question précise, les membres de stackoverflow proposent souvent des réponses de qualité.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#2167 Le 01/05/2014, à 11:04
- Jules Petibidon
Re : /* Topic des codeurs [8] */
Et sinon http://www.developpez.net/forums/f23/we … avascript/
Ce forum est généralement assez inégal, mais vu que peu de monde apprécie JS, tu auras peut-être des réponses de pros et pas de débutants qui croient pouvoir répondre (ce qui est un peu un problème sur ce genre de forum).
Hors ligne
#2168 Le 02/05/2014, à 10:11
- Elzen
Re : /* Topic des codeurs [8] */
@doudoulolita : je m'y connais en JavaScript classique (c.à.d. manipulation du DOM et traitement sur le contenu « textuel » d'une page web), mais pas en canvas et autres trucs de ce genre, désolé
@The Uploader : releasé hier le bazar qui traînait sur mon disque depuis un moment et auquel je n'ai en fait quasiment pas retouché depuis un bail. N'hésite pas à me contacter si tu as des questions/soucis pour le packaging.
@tous : bon, pour la prochaine version de Touhy, et potentiellement d'autres projets, je penche de plus en plus vers Cython3 et wxWidgets. Et je vais tenter de faire un peu plus d'efforts que sur la version actuelle pour ce qui concerne l'accessibilité, l'internationalisation et la portabilité⁽¹⁾. Sauf que pour chacun des points sus-cités, je débute, donc si quelqu'un a des conseils/remarques/suggestions, je suis preneur.
(1) Par exemple, j'aimerais bien qu'il y ait une version qui puisse tourner sous *BSD pour le jour où je déciderai de migrer ^^
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2169 Le 02/05/2014, à 10:25
- Pylades
Re : /* Topic des codeurs [8] */
Ce matin, j’ai dû créer un .local/bin/gcc :
#!/bin/bash
op=()
for o in "$@"
do if [[ "$o" != '-fstack-protector-strong' ]]
then op+=("$o")
fi
done
/usr/bin/gcc "${op[@]}"
-_-"
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2170 Le 02/05/2014, à 12:28
- grim7reaper
Hors ligne
#2171 Le 02/05/2014, à 12:36
- Jules Petibidon
Re : /* Topic des codeurs [8] */
@Elzen, une question/remarque : wxWidgets est pas le truc le plus agréable à utiliser. Une raison particulière à ce choix ?
Hors ligne
#2172 Le 02/05/2014, à 13:06
- Elzen
Re : /* Topic des codeurs [8] */
Bah je ne sais pas encore trop ce que donne l'utilisabilité réelle, donc il est possible que je change d'avis par la suite, mais… disons que, pour l'instant, je code en GTK2, qu'il va bien falloir abandonner un jour, mais que je ne suis pas super chaud pour le GTK3, pour plusieurs raisons. Du coup, j'ai cherché autre chose. Si jamais j'ai besoin de coder un truc devant tourner sur plusieurs plateformes, wxWidgets a l'air d'être fait pour ça ; et puis ça a aussi l'air de contenir pas mal de widgets avancés qui ont l'air fun (genre, ci et ça), et d'avoir une tronche pas trop moche, donc je suppose que ça mérite au moins d'être essayé.
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2173 Le 02/05/2014, à 14:55
- Jules Petibidon
Re : /* Topic des codeurs [8] */
Pour avoir essayé wx et Qt, certes le premier permet de faire de très bonnes choses, mais le second est beaucoup plus agréable (la doc y fait beaucoup faut dire).
wx est assez laborieux je trouve... Après c'est un ressenti perso.
Hors ligne
#2174 Le 02/05/2014, à 15:15
- Elzen
Re : /* Topic des codeurs [8] */
Je jetterai un œil à Qt aussi. Je pense que ça dépendra surtout de ma possibilité de trouver les outils dont j'ai besoin, comme par exemple quelque chose pour faire un émulateur de terminal. Un des trucs qui étaient cools avec PyGTK, c'était qu'il y avait plein de biblis toutes prêtres pour plein de trucs, genre VTE, WNCK, poppler et gstreamer, que je n'suis pas sûr de retrouver ailleurs.
Après, il paraît que j'ai une certaine tendance à apprécier des trucs que le reste du monde n'aime pas.
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#2175 Le 02/05/2014, à 20:50
- The Uploader
Re : /* Topic des codeurs [8] */
@Elzen :
J'ai des gros problèmes de connexion en ce moment, je m'en occuperai vers la mi-mai (quand ce sera partiellement résolu).
Et sinon je vote pour QT.
Aujourd'hui, j'en ai marre de GTK. Rien que d'un point de vue utilisateur.
Avant, c'était le sélecteur de fichiers GTK qui avait décidé d'ouvrir par défaut sur une vue "fichiers récents" tout à fait inutile et inutilisable (impossible à modifier jusqu'à très récemment).
Ensuite, c'est ce même sélecteur de fichiers qui décide d'utiliser des icônes noirs totalement inutilisables (impossible à modifier)
Récemment ce même sélecteur avait décidé de mélanger les dossiers et les fichiers dans l'affichage par Nom. Super pratique. (on peut revenir à un affichage normal via dconf-editor)
Maintenant, c'est les header-bars de GTK 3.12 qui font disparaître la barre de décorations de Xfwm4 sur certaines fenêtres (file-roller, NetworkManager, ...) (impossible à modifier)
Plein-le-cul. Vivement que GTK et Gnome tombent dans l'oubli.
Je vais finir par passer à KDE et bannir toute application GTK/Gnome. Y'en a marre !
Dernière modification par The Uploader (Le 02/05/2014, à 21:00)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne