Je sais plus pour le Scala Build Tool (il m'avait l'air bien, mais lent c'est vrai), mais Gradle c'est en gros Maven en 70x plus lourd et en 10x plus compliqué à apprendre (estimation indicative). C'est le truc que pour compiler un Hello World il faut 1 minute 10 à 100% de CPU sur 4 cores, si t'as un disque dur et une machine de 2014. Le pire c'est que j'exagère pas, ces chiffres viennent de mon précédent MacBook Pro. Bon après il te garde un démon de 2 Go en RAM et plein de bordel en cache, et du coup les prochaines compilations font 4~5 secondes donc ça va. Après il a une certaine flexibilité qui est censée te permettre de te passer de certains outils écrits spécifiquement pour une toolchain (par exemple probablement qu'il n'y aurait pas besoin du frontend gcc, et qu'un bon script gradle pourrait faire ce qu'il faut).
Bon sinon j'ai trouvé une solution plus élégante. Pour le coup c'est plus du tout aussi moche :
func (v *virtualPointWorkerImpl) setNextProcessTime(now time.Time) {
sub := -(now.UnixNano() % processingInterval)
v.lastProcessStartInterval = now.Add(time.Duration(sub))
}Et quand on y pense, pour un langage qui est supposé proposer un set de fonctionnalité proche du C++, et sachant qu'il faut de toute façon réapprendre parce que ce n'est pas le même paradigme, au final c'est sûrement pas trop mal. En l'occurrence il est super strict, mais très souple avec les constantes (si elles sont non typées il prend le type qui l'arrange et du coup tu as beaucoup de cas qui passent sans casting), du coup dès que tu sors des exemples simples et jolis tu remarques que ça ne rigole pas et il faut s'habituer. Ceci dit, le C++ c'est le genre qu'encore hier j'ai fait une erreur du genre :
int pos = kStartPos - 4 * (strlen(grayText) + strlen(greenText));Avec kStartPos = -1. Je dessinais l'objet à la position calculée mais je ne le voyais pas. Je n'ai pas cherché pourquoi, j'ai immédiatement corrigé en ça et après il est apparu :
int pos = kStartPos - 4 * int(strlen(grayText) + strlen(greenText));C'est pas intuitif, même en y réfléchissant rapidement maintenant je ne vois pas bien pourquoi la soustraction d'un unsigned a foutu la merde, mais bon, Go ne permettrait pas ça.