Aller au contenu

Le fil des geeks informatiques


Johnnieboy

Messages recommandés

Old school mon fion, C++ est daté, mais il n'est pas old school, c'est aussi perverse que le visual basic, différement perverse, mais tout autant, ça a poussé des centaines de milliers de gens à AIMER la merde.

 

 

Lien vers le commentaire

Je suis un codeur old school, elevè au C++ et au polymorphisme de classe: pour moi une variable sans type (pire, sans déclaration!) est aussi hérétique qu'un verbe sans sujet ;)

 

Toi, t'as une tête à aimer Haskell.

 

Lien vers le commentaire

geekscottes_017.png

Le pire c'est que je la connaissais déjà ...

 

L'inférence de type en dehors des contrats, c'est un prérequis pour tout langage récent, franchement.

L'inférence de type dans les contrats, je pense que c'est une très mauvaise idée, et que c'est (entre autre) ce qui rends les migrations Scala aussi chiantes.

Tu veux dire quoi par là ?

Inférence OK lorsque tu utilises un constructeur mais pas lorsqu'une fonction/méthode retourne qqch ?

Pour moi moi c'est surtout les trucs comme  String str = new String() qui me rendent dingue, j'ai l'impression de radoter.

 

Je suis un codeur old school, elevè au C++ et au polymorphisme de classe: pour moi une variable sans type (pire, sans déclaration!) est aussi hérétique qu'un verbe sans sujet ;)

Mais je reconnais que je suis un vieux con.

Oui mais le truc c'est que parfois on a franchement l'impression de se répéter, cf ci-dessus, vraiment pour rien du tout. Si j'utilise un constructeur, bien sûr que je veux ce type.

Et franchement j'ai jamais vu quelqu'un faire Supertype maVariable = new SousType() hormis en première année d'info, ce genre de truc ça se fait avec des factories.

 

Old school mon fion, C++ est daté, mais il n'est pas old school, c'est aussi perverse que le visual basic, différement perverse, mais tout autant, ça a poussé des centaines de milliers de gens à AIMER la merde.
Ben quoi ils sont pas beau mes templates hein hein, t'aimes pas ça la STL ?
Je blague hein, quand je vois la taille des fichiers générés avant la compilation parfois c'est à ce pendre.
Lien vers le commentaire

Bof, je veux du typage statique, j'ai pas envie de devoir écrire des tests pour ce genre d'âneries, le compilo fait ça très bien, c'est toujours une série de tests qu'on a pas besoin d'écrire.

Thank fuck for that.

Lien vers le commentaire

Le typage pas dynamique c'est preuve que le langage ne gère pas bien la mémoire, les références et les pointeurs.

Contrairement aux langages de haut niveau pour tafio... euh ... avec typage dynamique et garbage collector, comme le Java, qui est un modèle en matière de gestion mémoire.

Noob: j'avoue, les déclarations sont parfois très lourdinguesau niveau syntaxique. Je ne te cache pas que ça m'a toujours fait cet effet (maintenant que je code plus je m'en tape, remarque).

Mais bon les variables polymorphes, ca me fait peur. J'ai toujours l'impression que mon code ne sera pas robuste (eh qu'est ce qui se passera dn cas d'attribution mal interprétée par le compilateur ?

J'ai beaucoup de préjugés sur les compilateurs. On ne peut jamais vraiment leur faire confiance.

Lien vers le commentaire

Java c'est du typage statique plutôt, non tu voulais peut-être parler de Python ou de Ruby ? Ou alors on parle pas la même langue du tout là.

Pour le reste c'est les goûts et les couleurs quoi. Mais par exemple lorsque tu fais jamais de variable lorsque tu veux en passer une à une autre fonction.

Tu fais simplement foo(bar()) et pourtant tu n'as jamais posé de variable temporaire pour dire de quel type est la valeur de retour de bar(). Je vois pas trop ou est la différence avec un autre cas.

 

Et de plus je fais beaucoup moins confiance aux programmeurs qu'aux compilateurs.

Lien vers le commentaire

Oui je pensais au garbage collector en écrivant Java. J'avoue que je trolle un peu en fait, je saisis bien les avantages des langages que j'appellerais " intelligents" au sens large, mais c'est principalement que je n'ai pas appris à coder comme ça. Du coup les langage "modernes" me perturbent. Ne pas typer une variable ou déclarer un objet sans appel explicite au constructeur, passer un paramètre sans type à une fonction, dans mon éducation (largement autodidacte), c'est comme construire une fonction mathématique sans connaitre son domaine de définition: c'est dangereux :)

Mais je sais bien que le problème vient de moi. J'ai acquis trop de rigidité avec les langages durs type c++ (et j'ai trop maudit les ide/compilateurs trop permissifs type visual machin truc 2000 qui tentaient maladroitement d'introduire la souplesse des langages dynamiques dans le codage "a l'ancienne" avec des résultats à s'arracher les cheveux).

J'arrive po. Ca mr fait peur. :)

Lien vers le commentaire

Ne pas typer une variable ou déclarer un objet sans appel explicite au constructeur, passer un paramètre sans type à une fonction, dans mon éducation (largement autodidacte), c'est comme construire une fonction mathématique sans connaitre son domaine de définition: c'est dangereux

 

Le compilateur/la VM se débrouille pour déterminer le type d'un objet. S'il reste une différence c'est juste au niveau des perfs, là oui le typage explicite conserve une certaine avance (et encore, à force ça devient quasiment un détail – suffit de voir comment une VM moderne optimise le bytecode).

Lien vers le commentaire

Ouioui j'en ai largement conscience, et sauf applications hyper pointues, la perte de performance est certainement négligeable vu la puissance des machines actuelles. C'est juste que j'ai du mal à exploiter cette souplesse.

Même les interfaces de classe au début ça me perturbait. Je voulais faire de l'héritage multiple. Sinon, après c'est la pagaille, et du coup, ben.. c'est l'bordel.

Lien vers le commentaire

Ne pas typer une variable ou déclarer un objet sans appel explicite au constructeur, passer un paramètre sans type à une fonction, dans mon éducation (largement autodidacte),

Personne ne fait ça, en Scala par exemple ni en Swift de ce que j'en ai vu on donne le type des paramètres à la définition de la fonction, tout est typé simplement lors de l'appel, le compilateur se démerde pour finir le boulot.

 

Au lieu de taper String str = new String(), je fais simplement val str = String("") ou un truc du genre. Et si ensuite je fais str = new Int() le compilateur me saute à la tête et me dit que str est de type string (normalement c'est là que les non geeks rigolent)  et que je peux pas affecté un Int à une variable de type string. C'est vraiment que limité à ce genre de confort, on parle pas de langage à typage dynamique.

Lien vers le commentaire

Personne ne fait ça, en Scala par exemple ni en Swift de ce que j'en ai vu on donne le type des paramètres à la définition de la fonction, tout est typé simplement lors de l'appel, le compilateur se démerde pour finir le boulot.

 

Au lieu de taper String str = new String(), je fais simplement val str = String("") ou un truc du genre. Et si ensuite je fais str = new Int() le compilateur me saute à la tête et me dit que str est de type string (normalement c'est là que les non geeks rigolent)  et que je peux pas affecté un Int à une variable de type string. C'est vraiment que limité à ce genre de confort, on parle pas de langage à typage dynamique.

Un peu comme auto en c++ donc ;-)

c++ a ses faiblesses, mais s'il est encore utilisé pour de nouveaux projets, c'est qu'il a aussi ses qualités.

Lien vers le commentaire

Ah ben oui peut-être bien, ça fait un moment que j'ai plus touché à ça et j'ai jamais dit que c'était une poubelle c++ (ça c'est neuneu2k qui l'a dit, je suis comme ça moi je balance.).

J'ai dis que Apple était enfin entré dans l'ère moderne avec Swift et que j'aimais beaucoup ça, tu auras remarqué que tout mes mauvais exemples étaient en Java...

 

Ceci dit je n'en démords pas, la STL c'est quand même un peu la plaie.

Lien vers le commentaire

Un peu comme auto en c++ donc ;-)

c++ a ses faiblesses, mais s'il est encore utilisé pour de nouveaux projets, c'est qu'il a aussi ses qualités.

Principalement pour la quantité énorme de bibliothèques disponibles, et la facilité d'interfaçage avec le C (et donc tout un tas de fonctions système). Et aussi pour tout ce qui est calcul intensif, ça reste plus rapide que Java.

 

Sinon en termes de coûts de développement et de maintenance, un nouveau projet ça se fait en Java ou C#.

 

Mais bon, quand on voit la quantité de projets développés en Java ces 5-7 dernières années, ça ne plaide pas en faveur de démarrer un projet en C++.

Lien vers le commentaire

Ah ben oui peut-être bien, ça fait un moment que j'ai plus touché à ça et j'ai jamais dit que c'était une poubelle c++ (ça c'est neuneu2k qui l'a dit, je suis comme ça moi je balance.).

J'ai dis que Apple était enfin entré dans l'ère moderne avec Swift et que j'aimais beaucoup ça, tu auras remarqué que tout mes mauvais exemples étaient en Java...

 

Ceci dit je n'en démords pas, la STL c'est quand même un peu la plaie.

Boost, c'est une plaie, les templates c'est vraiment puissant, mais c'est ultra chiant.

STL, c'est vraiment pas le pire je trouve.

Le vrai gros soucis du c++ à mon sens, ce n'est ni son écriture verbeuse, ni la complexité, mais c'est le temps de compil.

Damn que de temps perdu par jour à attendre ce putain de compilateur !

 

Principalement pour la quantité énorme de bibliothèques disponibles, et la facilité d'interfaçage avec le C (et donc tout un tas de fonctions système). Et aussi pour tout ce qui est calcul intensif, ça reste plus rapide que Java.

 

Sinon en termes de coûts de développement et de maintenance, un nouveau projet ça se fait en Java ou C#.

 

Mais bon, quand on voit la quantité de projets développés en Java ces 5-7 dernières années, ça ne plaide pas en faveur de démarrer un projet en C++.

Essaye de faire du low latence en c#. C'est possible (principalement en dégageant le gc via du 0 alloc), mais vraiment chiant.

 

Pour en revenir à Swift, j'ai l'impression que ça n'apporte pas grand chose, voire rien, si ce n'est avoir un langage un peu haut niveau sur iPhone.

Le langage en tant que tel, n'est pas très impressionnant je trouve.

Lien vers le commentaire

Essaye de faire du low latence en c#. C'est possible (principalement en dégageant le gc via du 0 alloc), mais vraiment chiant.

 

Actuellement Java est en passe de supplanter les traditionnels C/SPARK dans l'embarqué 'sensible' (avionique etc), c'est en bonne partie dû au fait que des VMs dont le GC est déterministe sont en production depuis des années. Donc non, la présence d'un GC n'exclut pas les utilisations en low-latency, c'est surtout une question de VM (bon ok c'est java, c# en embarqué c'est pas pour tout de suite, mais quand même).

Lien vers le commentaire

Ce qui fait la popularité de Java c'est la portabilité, mais en termes de gestion ressources... (encore que j'ai pas expérimenté Java 7, mais côté utilisateurs les applis restent lourdes pour ce qu'elles font...

En entreprise ça ne sert à rien la portabilité (qui est toute relative): tu déploies ton applicatif sur des serveurs qui auront toujours le même OS. C'est effectivement utile pour les applications client, et je ne vois pas du tout en quoi des applicatifs Java ou C# sont lourds... exemple ?

 

Essaye de faire du low latence en c#. C'est possible (principalement en dégageant le gc via du 0 alloc), mais vraiment chiant.

Je ne connais pas C#, mais en Java c'est possible si la GC est déterministe.

Lien vers le commentaire

Actuellement Java est en passe de supplanter les traditionnels C/SPARK dans l'embarqué 'sensible' (avionique etc), c'est en bonne partie dû au fait que des VMs dont le GC est déterministe sont en production depuis des années. Donc non, la présence d'un GC n'exclut pas les utilisations en low-latency, c'est surtout une question de VM (bon ok c'est java, c# en embarqué c'est pas pour tout de suite, mais quand même).

Le java, et certaines vm doivent dans ce cas mieux se débrouiller que celle du c#.

La ou je bosse, pour faire quelques services low latence pour de l'auto-trading, le gc a vraiment posé pas mal de soucis.

Lien vers le commentaire

Boost, c'est une plaie, les templates c'est vraiment puissant, mais c'est ultra chiant.

Oui my bad je voulais parler de boost, c'est le machin qui te génère plus de fichiers que t'as de source au final n'est-ce pas ?

 

En fait Swift apporte une syntaxe assez sympa je trouve avec l'essentiel des fonctionnalités qu'on peut raisonnablement attendre d'un langage moderne. Pour la plateforme c'est un bon pas en avant quand même.

Lien vers le commentaire

Le java, et certaines vm doivent dans ce cas mieux se débrouiller que celle du c#.

 

Oh oui, et il y en a plusieurs :

 

Atego PERC, ze big leader, cher mais très efficace

IBM WebSphere RT

FijiVM

JamaicaVM (il existe une version linux/x86 téléchargeable gratos pour s'amuser avec)

...

Lien vers le commentaire

J'ai acquis trop de rigidité avec les langages durs type c++ (et j'ai trop maudit les ide/compilateurs trop permissifs type visual machin truc 2000 qui tentaient maladroitement d'introduire la souplesse des langages dynamiques dans le codage "a l'ancienne" avec des résultats à s'arracher les cheveux).

J'arrive po. Ca mr fait peur. :)

J'étais pareil (C++ puis Java et C#) avant de passer à PHP et JavaScript, langages que j'ai choisis juste parce qu'ils sont les plus déployés. J'ai appris à aimer. D'abord il faut un bon IDE, par exemple un de JetBrains, il réussit à afficher des avertissements presque aussi bien que si le typage était statique. Ensuite le travail intellectuel nécessaire pour programmer est plus léger : plus besoin d'abstraire systématiquement. C'est un avantage : on est moins fatigué et plus créatif. J'aurais bien du mal à revenir à Java, rétrospectivement ce langage me parait une torture pour l'esprit.

Un inconvénient majeur des langages mous : le refactoring est une plus grande galère, c'est vite fait d'y laisser des bugs.

 

Même les interfaces de classe au début ça me perturbait. Je voulais faire de l'héritage multiple. Sinon, après c'est la pagaille, et du coup, ben.. c'est l'bordel.

L'héritage et les classes amies sont essentiellement des pratiques complexes qu'il faut oublier. Les interfaces sont une solution simple et élégante. Une interface est une notion naturelle : c'est une casquette, de la même manière qu'une même personne peut avoir la casquette (le savoir-faire) d'électricien et de plombier. L'héritage au contraire n'est pas intuitif. On parle de classe "parent" et de classe "enfant" parce qu'aucune image naturelle ne correspond vraiment, mais d'une manière naturelle les parents et les enfants devraient être des instances et pas des classes.

Lien vers le commentaire

J'étais pareil (C++ puis Java et C#) avant de passer à PHP et JavaScript, langages que j'ai choisis juste parce qu'ils sont les plus déployés. J'ai appris à aimer. D'abord il faut un bon IDE, par exemple un de JetBrains, il réussit à afficher des avertissements presque aussi bien que si le typage était statique. Ensuite le travail intellectuel nécessaire pour programmer est plus léger : plus besoin d'abstraire systématiquement. C'est un avantage : on est moins fatigué et plus créatif. J'aurais bien du mal à revenir à Java, rétrospectivement ce langage me parait une torture pour l'esprit.

Tiens, c'est marrant ça, parce que j'ai commencé avec PHP, maintenant je suis sur Java et j'aurais bien du mal à retourner à PHP.

 

Par contre j'ai trouvé Hack (http://hacklang.org/) a priori intéressant, mais malheureusement il n'y a pas de version Windows... sinon j'essaierais bien et effectivement ça me simplifierait la tâche pour du développement web. Java c'est une vraie torture de ce côté là.

 

Un inconvénient majeur des langages mous : le refactoring est une plus grande galère, c'est vite fait d'y laisser des bugs.

 Et c'est aussi difficile de faire travailler une grosse équipe sur un même projet.

 

L'héritage et les classes amies sont essentiellement des pratiques complexes qu'il faut oublier. Les interfaces sont une solution simple et élégante. Une interface est une notion naturelle : c'est une casquette, de la même manière qu'une même personne peut avoir la casquette (le savoir-faire) d'électricien et de plombier. L'héritage au contraire n'est pas intuitif. On parle de classe "parent" et de classe "enfant" parce qu'aucune image naturelle ne correspond vraiment, mais d'une manière naturelle les parents et les enfants devraient être des instances et pas des classes.

:chine:

Lien vers le commentaire

Admettons que je me mette à développer sur ma machine, par exemple autour de .Net et d'autres technologies Windows - essentiellement pour apprendre. Noob sur ces technologies, je souhaite limiter la casse au regard des erreurs que je pourrais commettre. Suffirait-il de me créer une nouvelle session sur le même ordinateur, ou bien me conseillez-vous plutôt de m'acheter une nouvelle machine afin d'en avoir une pour mon utilisation courante, et une autre dédiée exclusivement à mes développements ?

Lien vers le commentaire

J'ai dix pouces. Et deux mains gauches. Et crois-moi, j'ai conscience de mes limites (en fait, j'ai tendance à surestimer la proximité de mes limites, mais je préfère ça au défaut inverse). Et puis en cas de gros problème, j'aurai moins d'hésitation à remettre la machine de développement d'aplomb en la nettoyant pas le vide.

Accessoirement, je ne veux pas avoir la tentation de regarder mes mails ou glander sur le Net (ou pire, sur Liborg !).

Lien vers le commentaire

Ok, je comprends, si cela peut te rassurer, je ne suis pas une flèche et pour l'instant, pas de cataclysme chez moi. Quoiqu'il en soit, ça ne te coûtera pas grand chose de te faire une nouvelle partition comme bac à sable. Par contre, ne pas avoir accès au net, ça va vraiment te compliquer la vie je trouve, surtout dans une phase d'apprentissage... Ne serait-ce que Stackoverflow ou MSDN, ça aide à démarrer.

Ce qui serait bien pour toi en fait, c'est de se faire un petit soft qui verrouille tous les noms de domaines que tu veux pendant un certain laps de temps (2 heures par exemple) ou au bout d'une procédure casse-pied de déverrouillage (genre taper un code de 96 caractères) en cas d'"urgence".

Lien vers le commentaire

Ok, je comprends, si cela peut te rassurer, je ne suis pas une flèche et pour l'instant, pas de cataclysme chez moi. Quoiqu'il en soit, ça ne te coûtera pas grand chose de te faire une nouvelle partition comme bac à sable. Par contre, ne pas avoir accès au net, ça va vraiment te compliquer la vie je trouve, surtout dans une phase d'apprentissage... Ne serait-ce que Stackoverflow ou MSDN, ça aide à démarrer.

Ce qui serait bien pour toi en fait, c'est de se faire un petit soft qui verrouille tous les noms de domaines que tu veux pendant un certain laps de temps (2 heures par exemple) ou au bout d'une procédure casse-pied de déverrouillage (genre taper un code de 96 caractères) en cas d'"urgence".

Pour StackO ou MSDN, je peux utiliser IE au pire - mais juste à cette fin. Je ne veux juste pas de favoris ou d'onglets déjà ouverts, qui me font du pied pour que j'aille voir ce qu'ils ont de nouveau. L'équivalent d'une machine de bureau dans une boîte de paranoïaques, en fait.

Sinon, le vrai enjeu, c'est clairement le côté "bac à sable" de l'environnement de développement. C'est ça, bien davantage que le reste.

Lien vers le commentaire

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...