Merci à tous pour vos témoignages anti-java qui font que je me sens moins seul et pour vos conseils en la matière !
@Antichesse (o ^ω^ o) Merci à toi en particulier pour ta proposition il se pourrait que je te prenne au mot o/
Je vais aller essayer la rubrique openclassroom dédiée à Kotlin DQP ( https://www.youtube.com/watch?v=QpNOl2BU7tE pour la référence ^u^ )
En ce moment, j'essaie de me remettre à Java en reprenant les cours openclassroom... c'est un langage que je n'ai jamais utilisé et j'aimerais vraiment être en mesure de coder des applis pour Android...
J'ai bien sûr commencé par le cours de base, même si les concepts me sont familiers. Pourtant, une comparaison avec d'autres langages m'aurait bien simplifié les choses (comme pour python)
Une fois ces infos ingurgitées je me suis penché sur l'utilisation d'un IDE dans cet environnement.
Et bien j'ai plusieurs choses à dire.
tout d'abord, les «cours» en ligne s'apparentent à des tutos et parfois, c'est vraiment trop limité, en particulier quand on passe à côté de certains trucs: il manque la possibilité de poser des questions, comme dans un vrai cours.
ensuite, un reproche qu'on pourrait faire à tous ceux que j'ai vus (à part Grafikart pour les autres langages), je trouve qu'ils choisissent mal leurs exemples et leurs illustrations, en particulier pour les notions abstraites. Je trouve qu'on y gagnerait à partir sur un projet concret, à le faire d'une certaine façon, au niveau 1, pour en démontrer les limites dans certains contextes (dev pro ou en équipe par exemple), voir les problèmes et comprendre l'UTILITÉ de ces concepts pour résoudre ces problèmes... (les interfaces, les classes abstraites etc...) Souvent, les tutos se contentent de régurgiter la doc, c'est nul.
parfois, la progression me semble très irrégulière: passer des boucles/tableaux/tests/gestion d'erreurs aux abstractions les plus hautes d'un coup, ça plonge dans la perplexité.
pour openclassroom, les quizz finaux sont parfois très mal formulés ce qui fait qu'on ne comprend pas vraiment ce que l'auteur attend: pourtant, la clarté de rédaction des consignes me semble primordiale quand on a des prétentions didactiques.
Plus j'avance dans mon «étude» de Java, plus je rencontre de problèmes qui entravent la programmation elle-même: installation qui gâtouille, versions diverses... Et je ne parle même pas de l'utilisation d'un IDE qui multiplie ces difficultés et la complexité de leur résolution de plusieurs ordres de grandeur.
Les IDE, là, c'est des pitin d'usines à gaz ! C'est juste pas possible de démarrer sans avoir une courbe
d'apprentissage de l'éditeur qui ridiculise celle de dwarf fortress, la lisibilité en moins ! Et vas-y que je te fous des options de partout, des structures imbitables, des libellés pour Bac+15... Namého ! Même pour arriver enfin à pondre ton «hello world», t'en a chié des contrebasses. Quand tu viens du dev web, c'est un choc.
Java en lui-même... me semble vraiment... Moche. Je trouve la façon de coder inutilement verbeuse et lourde. Alors, je sais que c'est parce que je n'ai pas atteint le «point d'habitude» qui fait que tu ne vois plus les choses non pertinentes dans le cas qui t'occupe, mais bon: en général, en lisant un bout de code, j'arrive à piger ce que ça fait, à moins de me trouver devant un bout de JS de très haute volée. Là, ça me semble toujours plus compliqué que nécessaire...
Et là vous me direz «Mais qu'est-ce que tu nous pètes les gonades avec tes états d'âme sur l'apprentissage d'un langage dont tu n'as pas vraiment besoin et que tu n'es donc absolument pas obligé d'apprendre ?»
Déjà, je répondrais que c'est pas très gentil et que j'attendais plus de solidarité de la part des développeurs
J'avais juste besoin de me vider la frustration de ne pas pouvoir apprendre plus facilement un autre langage pourtant très utilisé.
Pas bête du tout ça: quand on met en place un cache en PHP, on crée le contenu s'il n'existe pas ou on le lit puis le renvoie s'il existe.
Grâce à un .htaccess bien placé, on peut servir directement le fichier s'il existe et on renvoie vers la page php censée le générer s'il n'existe pas (erreur 404)
Du coup, on n'exécute du PHP que si le contenu n'existe pas.
@Duke : Effeectivement, c'est le souci de base, le risque de retrouver mon Bronco à toutes les sauces
Toutefois, si Broncomic intéresse vraiment, je réfléchirai à l'adapter pour un usage plus général:
en créant des graphismes plus génériques
en prévoyant la possibilité d'importer ses propres graphismes simplement
en travaillant peut-être aussi la maquette pour qu'elle soit plus mobile friendly (gros taf )
en isolant le code spécifique de l'appli car pour le moment, elle fait partie d'un ensemble basé sur mon framework perso
en refactorisant le code pour permettre à des gens sains d'esprit de le reprendre sans se retrouver en PLS avec un pompier qui leur demande combien il a de doigts...
Je n'ai pas lu le contenu du lien mais ça ne me paraît pas si contre intuitif que ça : quand ton appli commence à avoir du succès auprès des utilisateurs, les demandes d'amélioration ne se font pas attendre dont certaines, n'étant pas du tout envisagées au départ, peuvent entraîner soit une réécriture plus complexe de l'appli, soit - pire - un patch à la scie sauteuse et au pistolet à colle qui complique l'appli, son usage et son architecture... (#sansdeconner)
Via https://nicolas-delsaux.hd.free.fr/Shaarli/?9O0OvQ
Le confinement nouveau est arrivé et avec lui plein de nouvelles raisons de se poser des questions exitentielles (non, j'ai pas fait de faute) (GAG)
Pour y répondre et vous guider dans vos choix, plutôt que de vous fier aux oracles, haruspices et autres politiciens qui vous noieront sous des mensonges, des billevesées voire même des promesses électorales, pourquoi ne pas utiliser la bonne vieille 8 ball magique ?
Du coup, je vous en propose une. Sous forme d'API. Oui.
OMAGAD j'adore ce genre de sites d'astuces et de snippets ultra condensés !
MERCI COPAIN ! o/
[EDIT]
La vache ! Pour certaines astuces, l'auteur propose plusieurs possibilités. En bon nerd, je me dis que j'aimerais bien savoir s'il y a des différences de perfs... Spoiler: y'en a.
Pour la deuxième astuce, le clonage de tableaux, le site propose:
// `arr` is an array
const clone = arr => arr.slice(0);
// Or
const clone = arr => [...arr];
// Or
const clone = arr => Array.from(arr);
// Or
const clone = arr => arr.map(x => x);
// Or
const clone = arr => JSON.parse(JSON.stringify(arr));
// Or
const clone = arr => arr.concat([]);
Du coup, je bricole un petit test vite fait, genre ça:
function repeat(funct,nb){
let t=Date.now();
let arr=[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9];
for (let i=0;i<=nb;i++){
let a=funct(arr);
}
return Date.now()-t;
}
let nb=100000;
console.log("arr.slice(0) x "+nb+": "+repeat(function(arr){return arr.slice(0);},nb) );
console.log("[...arr] x "+nb+": "+repeat(function(arr){return [...arr];},nb) );
console.log("Array.from(arr) x "+nb+": "+repeat(function(arr){return Array.from(arr);},nb) );
console.log("arr.map(x => x) x "+nb+": "+repeat(function(arr){return arr.map(x => x);},nb) );
console.log("JSON.parse(JSON.stringify(arr)) x "+nb+": "+repeat(function(arr){return JSON.parse(JSON.stringify(arr));},nb) );
Histoire de voir ce que chaque méthode donne en vitesse ...
Le résultat est sans appel...
BIM!
Donc arr.slice(0) est 10x plus rapide que [...arr] et carrément 33 fois plus rapide que le recours à JSON (la non surprise est totale)