Articles de la catégorie «Développement» :
Bashing Java : Les bonnes et les mauvaises critiques sur Java — Épisode 1 : Les mauvaises critiques
Ouais, je fais pas dans la dentelle.
Aujourd’hui je commence une série qui dissertera, de mon point de vue, des critiques couramment portées sur Java et des vrais problèmes du langage.
Avec l’ami Chocobozzz, nous sommes à peu près d’accord pour dire que Java est un mauvais langage. Cependant, notre désaccord porte sur la nature de ces problèmes. La plupart de ses critiques pourraient être résumées avec la BD suivante :
Bien que cette BD soit hilarante (essentiellement parce que j’aime le troll), ces critiques sont malheureusement hors de propos. En premier lieu, parce qu’elles portent sur la technique de la semi-compilation interprétée dans une VM et non sur le langage lui-même. De fait, c’est un reproche que l’on pourrait étendre à tout langage qui n’est pas purement compilé : C♯, Groovy, Scala, Kotlin, Python, Jython, Ruby, JRuby, PHP, OCamL, Perl, JavaScript, Lua, etc.
Mais surtout,… Lire la suite
Lecture gapless et maux de tête avec Android et son MediaPlayer
Meh…
Je viens probablement de tomber sur le bout de code le plus étrange de l’histoire des bouts de codes. Et c’est d’autant plus étrange que ça nous vient de Google.
Incipit
Dans un lecteur de musique bien conçu, le passage d’une musique à l’autre se fait sans temps mort. On appelle ça la lecture gapless. La manière de gérer une transition fluide est généralement la même : on a un premier buffer qui lit la musique en cours et un second, qui commence à temporiser lorsque le premier arrive vers la fin. Ça, c’est la théorie.
Dans l’API Android, la classe qui permet de lire des médias audios ou vidéos s’appelle
MediaPlayer
et s’utilise comme ça :
// On récupère l’URI du média Uri myUri = …. // On crée notre lecteur MediaPlayer mediaPlayer = new MediaPlayer() // On précise que notre type d’audio est un flux… Lire la suite
Bashing Java : Les interfaces sont-elles un mauvais patron de conception ?
Bon, je vais pas faire de mystère, j’ai déjà eu l’occasion de dénigrer le principe des interfaces dans de précédents articles donc autant répondre à la question tout de suite : oui, je pense que les interfaces en POO sont une mauvaise pratique. Mais pour pouvoir affirmer une telle chose, il faut pouvoir l’expliquer. Sur ce sujet, mes notes sur la POO constituent une bonne introduction de mon propos, je pense. Alors commençons tout de suite avec le vif du sujet.
L’idée de départ derrière les interfaces
La première formalisation concrète de la programmation orientée objets apparaît avec les travaux d’Alan Kay et son langage de programmation SmallTalk. Une des caractéristiques de la POO est le principe d’objets et d’héritage entre objets. L’héritage est une notion simple qui consiste à dire qu’un objet va en étendre un autre et donc hériter implicitement de… Lire la suite
Bashing Java : Notes sur la programmation orientée objets
Dans la plupart des écoles d’informatique, il y a un cours qui s’appelle généralement POO. S’il ne s’apelle pas comme ça, il s’appelle alors plus honnêtement Java ou C♯. On y apprend alors généralement que le Java, le C♯ ou le C++ sont les langages dit orientés objets. Certains profs pourrons même aller jusqu’à donner une définition d’un objet en disant que c’est un ensemble de données (comme les structures en C) et de méthodes de traitement sur ces données.
Sauf que partant de cette définition, on peut parfaitement définir le C comme un langage orienté objet car il suffit de rajouter à une structure des pointeurs sur fonction, de les assigner lors de l’allocation et hop ! Un objet ! Bon c’est un peu bancal alors certains profs prendront quand-même la peine de préciser que pour faire de l’orienté objet, il faut pouvoir faire de l’héritge d’objets, bla bla… Lire la suite
Plus de Groovy avec Android (et un peu de SwissKnife dedans)
Cédric Champeau, concepteur du plugin Android qui m’a sauvé la vie et principal développeur du langage Groovy m’a fait l’honneur de faire une petite remarque technique sur mon billet concernant l’installation du plugin Groovy pour Android. Je me dois donc de la signaler.
Et c’est cool parce que la procédure d’installation du plugin est un poil plus simple. Du coup, dans la deuxième partie du billet, je vous parlerai un peu de l’utilisation de la bibliothèque SwissKnife.
Plus de Groovy avec Android
Résumons. Un nouveau projet AndroidStudio présente deux scripts
build.gradle
, un général et un à la racine du dossier
app/
de votre projet que nous appelleront respectivement
build.gradle
et
app.gradle
.
La manip pour le
build.gradle
ne change pas, il faut passer la ligne
classpath ‘com.android.tools.build:gradle:0.11.+’
à
classpath ‘com.android.tools.build:gradle:0.12.+’
. J’ai essayé avec une version plus récente (
0.13.2… Lire la suite
Faire du Groovy avec Android
Note : La solution technique décrite dans ce billet n’est plus à jour. Pour avoir la version à jour, veuillez lire le billet suivant de la série.
Ceux qui me connaissent et ont déjà développé avec moi savent à quel point je déteste Java.
Hmm… Déjà vu… :/
Bref. J’aime pas beaucoup Java, je l’avoue. Il faut reconnaitre à ce langage d’avoir été une petite révolution quand il est arrivé : il a été parmi les premiers langages à présenter une bibliothèque standard qui couvre pratiquement tous les besoins, jusqu’à fournir par défaut des composants graphiques. Mais le pauvre a mal vieilli. Son créateur est tellement devenu taré qu’il a affirmé que s’il devait réécrire le langage aujourd’hui, il supprimerai la notion d’héritage et ne laisserai que la possibilité de créer des interfaces — le truc le plus inutile de l’histoire de l’humanité. On peut voir cette folie de… Lire la suite
JavaScript 6 arrive et il est cool !
Note : Il ne s’agit pas vraiment de JavaScript mais de la 6ème norme de l’EcmaScript dont JavaScript est l’implémentation pour Firefox. Je pratique donc ici l’abus de langage :p
Ceux qui me connaissent et ont déjà développé avec moi savent à quel point je déteste JavaScript. Je trouve ce langage complètement troué, syntaxiquement lourd et reposant sur des paradigmes de programmation imbitables comme la programmation par prototype.
Mais je sais reconnaître que le langage a quelques bonnes fonctonnalités comme la possibilité de faire du fonctionnel avec les fonctions lambda :
$(‘#link’).onClick(function(){ // Ceci est une fonction lambda ou dite « anonyme » alert(‘Fonctionnel, woooooow ! O__O’); });
À part ça, la manipulation des chaines de caractères reste ignoble. Petit exemple de comment insérer la valeur d’une variable dans une chaine en Python :
def valeur = ‘lolilol en barre !’ def string = « » »Ceci est une chaîne avec une variable de… Lire la suite