GFA, Python, C, Java... discutons langages de programmation
+15
Orion_
lincruste
Dobro
Capitaine
upsilandre
Shaoth
Gege34
Stef
rocky007
wulf
F.L
mic
drfloyd
Urbinou
Tryphon
19 participants
Page 2 sur 7
Page 2 sur 7 • 1, 2, 3, 4, 5, 6, 7
Re: GFA, Python, C, Java... discutons langages de programmation
python n'est pas un langage pour faire de la perf, c'est surtout un moyen de rendre accessible à tous des fonctions avancées sans se casser la tête, boucler une app en 1 journée.
exemple : capturer une image sur une camera , appliquer un filtre et la balancer sur un serveur distant...ça devrait prendre 10 lignes à tout casser
python c'est un peu de LOGO des années 80 :)
il n'y a rien de plus lent comme langage tellement il est haut niveau et interprété !
je n'ai rien contre dans l'absolu, c'est vrai qu'il permet de mettre facilement en rapidement en route un projet, mais ce que je reproche c'est que cette apparente facilité cache une véritable usine à gaz...et plus on va développer sur ce langage ( ce qui est le cas ), plus on va gaspiller nos ressources. ce langage surconsomme les ressources mémoires et processeurs inutilement, je n'ose pas imaginer le bilan énergétique
exemple : capturer une image sur une camera , appliquer un filtre et la balancer sur un serveur distant...ça devrait prendre 10 lignes à tout casser
python c'est un peu de LOGO des années 80 :)
il n'y a rien de plus lent comme langage tellement il est haut niveau et interprété !
je n'ai rien contre dans l'absolu, c'est vrai qu'il permet de mettre facilement en rapidement en route un projet, mais ce que je reproche c'est que cette apparente facilité cache une véritable usine à gaz...et plus on va développer sur ce langage ( ce qui est le cas ), plus on va gaspiller nos ressources. ce langage surconsomme les ressources mémoires et processeurs inutilement, je n'ose pas imaginer le bilan énergétique
rocky007- Interne
- Nombre de messages : 9152
Date d'inscription : 29/01/2011
Re: GFA, Python, C, Java... discutons langages de programmation
Bof , c'est pas le python qui consomme le plus , et c'est pas la cause principal d'une consommation sur un PC le premier est souvent le GPU ,et le second le CPU on pourrait faire des processeurs plus économe mais avec du X86 c'est peu probable ! x)
Sinon je n'ai rien contre python , mais si tu pense que c'est une usine à gaz , j'ai hâte de voir coder tout tes programmes en assembleur ! :)
Sinon je n'ai rien contre python , mais si tu pense que c'est une usine à gaz , j'ai hâte de voir coder tout tes programmes en assembleur ! :)
Invité- Invité
Re: GFA, Python, C, Java... discutons langages de programmation
rocky007 a écrit:python n'est pas un langage pour faire de la perf, c'est surtout un moyen de rendre accessible à tous des fonctions avancées sans se casser la tête, boucler une app en 1 journée.
Je dis pas le contraire. Python est un excellent langage pour débuter, meilleur encore que le Basic en son temps. Et comme il est très souple (en particulier il est assez facile d'interfacer des bibliothèques en C avec), on peut s'en servir pour des choses assez pointues.
Si je veux des perfs, je fais du C ou de l'assembleur.
Par exemple, Shinobi, j'ai commencé à le coder en python pour pouvoir développer assez facilement un moteur clair (je n'avais jamais codé de jeu "ambitieux" avant, donc j'avais pas forcément les idées très claires dessus, et démarrer en C ou asm, c'est pas le mieux pour structurer et restructurer son code). Puis j'ai repris le code en C.
python c'est un peu de LOGO des années 80 :)
Je ne dirais pas ça. Le LOGO est très orienté éducation, et n'a pas vraiment d'applications en dehors. Par contre il permettait d'appréhender des concepts pas évidents, comme la récursivité (ce qui est quasi-impossible à faire en BASIC). Pour moi, c'est clairement le successeur du BASIC (en mieux sur tous les points).
il n'y a rien de plus lent comme langage tellement il est haut niveau et interprété !
Ils sont assez nombreux maintenant les langages haut-niveau et interprétés. Le Java par exemple. Python a quand même sur Java l'avantage de la concision.
je n'ai rien contre dans l'absolu, c'est vrai qu'il permet de mettre facilement en rapidement en route un projet, mais ce que je reproche c'est que cette apparente facilité cache une véritable usine à gaz...
Je suis tout à fait d'accord avec toi, et je trouve déplorable le fait que nos ingénieur en Informatique n'ont souvent aucune connaissance sur ce qui se passe à bas niveau.
Tiens, un truc que je n'aime pas : il y a en ce moment un enseignement d'informatique en classe prépa basé sur Python. On enseigne aux élèves les bases de la théorie de la complexité. Et on utilise Python. Or en python, on a un type liste. Est-ce implémenté sous forme de tableau (limité en taille, avec des accès en temps constant et des concaténations linéaires) ou de liste chaînée (illimitée, avec des accès en temps linéaires et des concaténations en temps constant) ? Pour le savoir, il faut consulter l'implémentation du langage (c'est en fait un tableau, qui se redimensionne de façon dynamique (ce qui signifie qu'une même opération ne se fait pas toujours avec la même complexité). Du coup le concept de complexité algorithmique en prend un coup...
et plus on va développer sur ce langage ( ce qui est le cas ), plus on va gaspiller nos ressources. ce langage surconsomme les ressources mémoires et processeurs inutilement, je n'ose pas imaginer le bilan énergétique
Ce qui bouffe des ressources, ce sont les processus très calculatoires (encodage, filtrer une image, parcourir un réseau de neurones...). Ces processus sont toujours codés dans des langages bas niveau, même les bibliothèques python correspondantes sont en général des wrappers pour des trucs en C/C++.
Donc tant qu'on utilise Python pour ce pour quoi il est fait, ça ne me semble pas un problème...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
Tryphon a écrit:
Si je veux des perfs, je fais du C ou de l'assembleur.
voilà exactement ce que je pointe... beaucoup ne font pas cette démarche, car leur script python tourne bien et ne cherchent ( ou ne peuvent pas car ils ne connaissent pas d'autres langages ) pas à optimiser.. en plus, optimiser n'est pas à la portée de tous, car comme tu l'as très bien souligné, il faut pouvoir comprendre les choses en bas niveau pour comprendre comment optimiser au mieux. et ça, nombreux n'ont aucune connaissance de cela. Utiliser Python, c'est comme utiliser le BASIC sur un C64 en 1980 pour faire tourner un BBS.
Au final on se retrouve avec des millions de scripts Python dans le monde : serveurs, dans appareils connectés, voitures, robots etc... qui finalement n'ont aucune optimisation et gâchent les ressources. On doit surdimensionner les processeurs, batteries, mémoires pour combler les lacunes de Python. Il faut quand même savoir que le python est 79 fois plus énergivore qu'un même code en C.
Un code C /assembler va tourner entre 300x et 500x plus rapidement qu'un script Python ( ex:http://www.science.smith.edu/dftwiki/index.php/Speed_of_Instructions:_Nasm,_Java,_C%2B%2B_and_Python_comparison ).
Je suis pas devenu ecolo, mais ce gaspillage à cause d'une mauvaise habitude, ça me dépasse. Nous sommes à une époque où sous prétexte de gain de temps, de facilité ( voir fainéantise ) et que nos ressources semblent inépuisable, on se lâche sur tout : streaming netflix, streaming jeux video, bitcoin, AI, assistant vocal, tout cela va nous mener dans un gouffre énergétique.
Je serais curieux de chiffrer toute l’énergie + cout des composant surdimensionné dépensé inutilement à cause de codes mal foutu
Je ne dirais pas ça. Le LOGO est très orienté éducation, et n'a pas vraiment d'applications en dehors. Par contre il permettait d'appréhender des concepts pas évidents, comme la récursivité (ce qui est quasi-impossible à faire en BASIC). Pour moi, c'est clairement le successeur du BASIC (en mieux sur tous les points).
oui j'admets c'était du foutage de gueule de comparer au LOGO,
Ils sont assez nombreux maintenant les langages haut-niveau et interprétés. Le Java par exemple. Python a quand même sur Java l'avantage de la concision.
Je suis d'accord, mais Python est quand même le plus lent....JAVA tourne 20x plus vite que Python
rocky007- Interne
- Nombre de messages : 9152
Age : 50
Date d'inscription : 29/01/2011
Re: GFA, Python, C, Java... discutons langages de programmation
rocky007 a écrit:Je suis d'accord, mais Python est quand même le plus lent....JAVA tourne 20x plus vite que Python
J'ai regardé le lien vers la comparaison, elle est complètement absurde.
Le programme testé compare des calculs sur des entiers. Or en java le type int est un entier sur 4 octets, en Python il est en précision infinie (donc beaucoup plus lourd à gérer). D'ailleurs il remarque que le résultat fourni par C (et Java) est faux, pour des questions de dépassement de précision...
S'il voulait vraiment faire un test, il fallait choisir soit un int32 en python (avec le package ctype ou numpy), soit un BigInteger en Java.
Dans tous les cas, ce genre de test n'a pas beaucoup de sens (le code testé n'est de toutes façons pas représentatif de l'utilisation de ces deux langages, et d'autres tests dans d'autres domaines te donneraient tantôt l'un, tantôt l'autre). Il suffit d'utiliser les deux pour voir que les performances sont assez similaires (et faibles, ce qui est normal).
Mais un aspect important à prendre en compte, c'est que c'est plus facile d'écrire un code algorithmiquement efficace en python qu'en asm, ou même en C.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
Dans tous les cas, ce genre de test n'a pas beaucoup de sens (le code testé n'est de toutes façons pas représentatif de l'utilisation de ces deux langages, et d'autres tests dans d'autres domaines te donneraient tantôt l'un, tantôt l'autre). Il suffit d'utiliser les deux pour voir que les performances sont assez similaires (et faibles, ce qui est normal).
oui c'est vrai, un simple benchmark sur ce code n'est pas représentatif
Mais un aspect important à prendre en compte, c'est que c'est plus facile d'écrire un code algorithmiquement efficace en python qu'en asm, ou même en C.
bien évidement oui, c'est le but de ce langage, simplifier pour le programmeur
petite curiosité : tu parlais de codage de Shinobi ( je n'ai pas suivi ton projet , j'en suis désolé ), tu dis l'avoir "précodé" en python, mais sur quelle plateforme était-il destiné ?
rocky007- Interne
- Nombre de messages : 9152
Age : 50
Date d'inscription : 29/01/2011
Re: GFA, Python, C, Java... discutons langages de programmation
De nos jours Java est quasi toujours compilé (depuis bien longtemps même, avec la compilation JIT) et je pense qu'un programme en Java et qui tourne sous une JVM performante et récente (et donc un bon compilateur JIT) sera quasiment aussi performant qu'un programme développé en C/C++.. et à terme ça tournera même mieux qu'un programme C/C++ puisque la compilation JIT (qui se fait au runtime) a connaissance du hardware ce qui n'est pas le cas d'une compilation statique qui est fixée pour une architecture donnée.
Par contre dans le cas du python, on en est encore loin de tout ça. Il existe des compilateurs Python mais rien à voir avec ce qu'on a en Java, déjà à cause déjà de la flexibilité / manque de rigueur du langage (pas de typage fort) et aussi parce-que le Python n'a pas comme but d'être performant, on ne lui demande pas de faire du bas niveau. Mais c'est vrai qu'au bout de compte il contribue au gachi énergétique car beaucoup ne l'utilise pas très bien (qui est contre balancé par le gain de productivité si on peut le voir ainsi).
Par contre dans le cas du python, on en est encore loin de tout ça. Il existe des compilateurs Python mais rien à voir avec ce qu'on a en Java, déjà à cause déjà de la flexibilité / manque de rigueur du langage (pas de typage fort) et aussi parce-que le Python n'a pas comme but d'être performant, on ne lui demande pas de faire du bas niveau. Mais c'est vrai qu'au bout de compte il contribue au gachi énergétique car beaucoup ne l'utilise pas très bien (qui est contre balancé par le gain de productivité si on peut le voir ainsi).
Dernière édition par Stef le Ven 29 Mar 2019 - 12:09, édité 1 fois
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: GFA, Python, C, Java... discutons langages de programmation
C'est un projet de portage (qui commence à bien prendre forme) sur Megadrive. Tu peux voir l'historique de son avancement (commencé avant même que je me sois inscrit sur le forum ) ici : https://www.gamopat-forum.com/t102937-shinobi-1-sur-md
Comme c'est mon premier gros projet de jeu, comme je savais que j'allais réécrire le moteur 20 fois, j'ai démarré par un brouillon en python (j'ai écrit une petite biblio qui m'oblige à coder comme sur MD).
Comme c'est mon premier gros projet de jeu, comme je savais que j'allais réécrire le moteur 20 fois, j'ai démarré par un brouillon en python (j'ai écrit une petite biblio qui m'oblige à coder comme sur MD).
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
Stef a écrit:Par contre dans le cas du python, on en est encore loin de tout ça. Il existe des compilateurs Python mais rien à voir avec ce qu'on a en Java, déjà à cause déjà de la flexibilité / manque de rigueur du langage (pas de typage fort)
Il existe des compilateurs python dans lequel tu produis un exécutable classique. Mais tu dois te restreindre dans les fonctionnalités de python, et rajouter des annotations pour aider le compilateur à inférer le type des variables.
Je ne pense pas que ça soit très efficace, et comme tu le dis, ce n'est pas du tout comme ça que je vois python.
Je déteste Java parce qu'il sous-entend une logistique aussi lourde que celle de python, sans ses avantages de syntaxe et de concision. Je préfère encore coder en C++.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
enfin bref, on est totalement hors sujet, le GFA explosant de toute façon le python,java et c++ :)
je vais jeter un oeil sur ton projet, ton approche m'interpelle
je vais jeter un oeil sur ton projet, ton approche m'interpelle
rocky007- Interne
- Nombre de messages : 9152
Age : 50
Date d'inscription : 29/01/2011
Re: GFA, Python, C, Java... discutons langages de programmation
Au début je n'aimais pas trop java et j'avais surtout beaucoup d’aprioris dessus.. mais force est d’admettre que je l'avais mal jugé (c'est beaucoup plus performant que je le pensais) et surtout c'est un langage très "propre" (même si je trouve que les évolutions depuis Java 8 vont un peu à l'encontre de tout ça avec les expressions lambda et autres), avec peu de fioritures, c'est un langage purement objet que je trouve très facile à programmer. Pas de pointeurs et donc pas d'erreurs possibles là dessus et malgré tout tu arrives à des niveaux de performances comparables au C++
Pour moi le C++ c'est trop complexe, ça part dans tout les sens, tu peux mixer differents concepts.. franchement c'est trop bug prone, il faut être un bon codeur très rigoureux pour "bien" programmer en C++, en Java le langage est moins permissif et donc t'impose un code plus propre naturellement. Une chose que je n'aime pas trop en java c'est le garbage collector, en réalité c'est une super fonctionnalité mais ça peut donner de mauvaises habitudes et je pense qu'il serait bon de pouvoir libérer les objets sois même si on le souhaite (pour diluer la charge de travail du GC).
Pour moi le C++ c'est trop complexe, ça part dans tout les sens, tu peux mixer differents concepts.. franchement c'est trop bug prone, il faut être un bon codeur très rigoureux pour "bien" programmer en C++, en Java le langage est moins permissif et donc t'impose un code plus propre naturellement. Une chose que je n'aime pas trop en java c'est le garbage collector, en réalité c'est une super fonctionnalité mais ça peut donner de mauvaises habitudes et je pense qu'il serait bon de pouvoir libérer les objets sois même si on le souhaite (pour diluer la charge de travail du GC).
Dernière édition par Stef le Sam 30 Mar 2019 - 13:14, édité 1 fois
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: GFA, Python, C, Java... discutons langages de programmation
je suis en train d'essayer APPGAMEKIT (demo)
https://www.appgamekit.com/order
Du basic... pour developper sur PC, Mac, Android, etc.... Mais du basic un peu chiant à utiliser
genre pour ecrire un texte il faut 3 ou 4 lignes :
CreateText(1,"TEXTE")
SetTextSize(1,5)
SetTextColor(1,0,0,0)
SetTextPosition(1, 200,300)
C'est LOURD !
https://www.appgamekit.com/order
Du basic... pour developper sur PC, Mac, Android, etc.... Mais du basic un peu chiant à utiliser
genre pour ecrire un texte il faut 3 ou 4 lignes :
CreateText(1,"TEXTE")
SetTextSize(1,5)
SetTextColor(1,0,0,0)
SetTextPosition(1, 200,300)
C'est LOURD !
_______________________________________________________
Re: GFA, Python, C, Java... discutons langages de programmation
drfloyd a écrit:CreateText(1,"TEXTE")
SetTextSize(1,5)
SetTextColor(1,0,0,0)
SetTextPosition(1, 200,300)
C'est pas du basic ça !
C'est plus du html5 qui aurait remplacé les accollades par des parentheses
Re: GFA, Python, C, Java... discutons langages de programmation
ouais, bah je laisse tomber, c'est débile.
je retourne sur BLITZ 3D... (ou BLITZ MAX pour faire des trucs poussés)
je retourne sur BLITZ 3D... (ou BLITZ MAX pour faire des trucs poussés)
_______________________________________________________
Re: GFA, Python, C, Java... discutons langages de programmation
Stef a écrit:Au début je n'aimais pas trop java et j'avais surtout beaucoup d’aprioris dessus.. mais force est d’admettre que je l'avais mal jugé (c'est beaucoup plus performant que je le pensais) et surtout c'est un langage très "propre" (même si je trouve que les évolutions depuis Java 8 vont un peu à l'encontre de tout ça avec les expressions lambda et autres), avec peu de fioritures, c'est un langage purement objet que je trouve très facile à programmer. Pas de pointeurs et donc pas d'erreurs possibles là dessus et malgré tout tu arrives à des niveaux de performances comparables au C++
Si tu arrives à des niveaux comparables au C++, c'est que ça a dû sacrément évoluer depuis la dernière fois que je l'ai touché. Ou alors que tu compares avec du mauvais C++.
Moi c'est le contraire : au début j'ai été émerveillé par Java et la façon qu'il a de te forcer à penser objet. Puis je l'ai détesté à cause de ça : ça t'encourage à de plus en plus d'abstraction, jusqu'à l'excès. Je trouve python beaucoup plus souple. Par contre c'est clair que t'auras jamais les performances du C++.
Pour moi le C++ c'est trop complexe, ça part dans tout les sens, tu peux mixer differents concepts.. franchement c'est trop bug prone, il faut être un bon codeur très rigoureux pour "bien" programmer en C++, en Java le langage est moins permissif et donc t'impose un code plus propre naturellement.
Je suis tout à fait d'accord avec ça. Je plaisantais pour le C++. Je n'aime pas du tout ce langage pour exactement la raison que tu mentionnes. On sent que le langage n'est pas pensé. On a voulu rajouter des trucs au C, sans plan au départ, et on finit par un truc sans unité. Du coup soit tu codes comme un goret, soit tu utilises 20% du langage. Perso je me contenterais du C avec des classes et un peu de généricité, mais même ça, en C++, c'est fait avec une syntaxe sale.
Une chose que je n'aime pas trop en java c'est le garbage collector, en réalité c'est une super fonctionnalité mais ça peut donner de mauvaises habitudes et je pense qu'il serait bon de pouvoir libérer les objets sois même si on le souhaite (pour diluer la charge de travail du GC).
Tu es sûr que ce n'est pas possible ? Il m'avait semblé qu'il existait un moyen d'utiliser des GC alternatifs, voire de gérer soi-même la durée de vie des objets
Au passage, ce "problème" existe aussi en Python (je mets des guillemets parce que dans une bonne partie des applications c'est plutôt un avantage).
drfloyd a écrit:je suis en train d'essayer APPGAMEKIT (demo)
https://www.appgamekit.com/order
Du basic... pour developper sur PC, Mac, Android, etc.... Mais du basic un peu chiant à utiliser
genre pour ecrire un texte il faut 3 ou 4 lignes :
CreateText(1,"TEXTE")
SetTextSize(1,5)
SetTextColor(1,0,0,0)
SetTextPosition(1, 200,300)
C'est LOURD !
Tu peux écrire des fonctions avec ton Basic ? Si oui, je ne vois pas où est le problème...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
Puisqu'on en parlait, voici un article récent sur l'efficacité (énergétique) des différents langages :
https://thenewstack.io/which-programming-languages-use-the-least-electricity/
On peut voir que le java est le seul langage "interprété" qui est dans le top 5, je ne connaissais pas le langage Rust (enfin j'en avais juste entendu parler), il a l'air assez sympa et très efficace (très proche du C mais avec des concepts bien plus évolués). Cela dit, je trouve sa syntaxe assez lourde, je pense qu'on peut mieux faire là dessus :p
Le java a pas mal évolué (il est devenu rapide depuis java 5, et depuis il progresse encore mais petit à petit on va dire), et je comparais à du C++ de GCC (c'est pas le meilleur mais il s'est bien amélioré au fil des ans lui aussi).
Sinon pour le développement, je pense que c'est toujours une histoire d'équilibre, moi j'aime quand le code est simple, clair et facile à comprendre. Je vais toujours privilégier la simplicité à la performance (même si la performance est un aspect important aussi, ça vient juste après la simplicité). Du coup tout dépend de ta façon de programmer, par exemple je connais des programmeurs très techniques qui font tout en générique et basé interface en Java, perso je ne suis pas de cette école, je n'aime pas ça... Le code devient très difficile à lire (ou plutot à suivre). Je pense qu'il faut utiliser les génériques uniquement quand c'est nécessaire et que ça apporte un réel gain / efficacité dans le développement, ça n'a pas d'intérêt si c'est juste pour l'élégance du code (avoir quelque chose de très / trop flexible).
J'aime aussi le langage mais il faut admettre que ça fait un peu vieux dinosaure quand même, le fait de ne pas pouvoir avoir 2 méthodes avec le même nom, rien que ça c'est bien chiant.. et la gestion "objet" est quand même un apport important (ça rend le code quand même nettement plus propre / modulaire..). Bien sûr tu peux tout refaire en "C" mais c'est plus fastidieux..
Non c'est sûr tu ne peux pas gérer la durée vie de tes objets, bien sûr tu peux appeler toi même le GC mais c'est pas vraiment une solution... en réalité si tu veux ne pas trop impacter les performances par le GC, tu dois faire attention à la création de tes objets, java est *très* performant pour la création / libération d'objets (plus que le C++) mais en même temps c'est logique puisque le langage te pousse à en créer des tonnes. Typiquement un objet Point ou Rectangle, une fonction getPosition() que tu vas appeler des millions de fois par seconde peut créer un objet Point à chaque appel, c'est classique.. du coup java a intérêt à être rapide... mais du coup tot ou tard le garbage collector va devoir libérer ses milliers / millions d'objets et ça va couter forcément pas mal de temps CPU.
Une manière d'éviter ça c'est de recycler les objets (plutot que de créer un nouvel objet, tu gères un pool d'objets, et quand un objet n'est plus utilisé alors tu le recycles à un autre endroit). Ca évite de créer des millions d'objets et de trop faire travailler le GC. Par contre ça rend le code plus complexe, moins lisible et ça c'est dommage. Pour ça que j'aimerai bien avoir un .free() sur les objets pour forcer leur libération (mais bien sûr ça pose énormément de problème car on peut encore avoir des références dessus, il faudrait que le free () ne fonctionne que lorsqu'il n'y a plus de référence sur l'objet).
https://thenewstack.io/which-programming-languages-use-the-least-electricity/
On peut voir que le java est le seul langage "interprété" qui est dans le top 5, je ne connaissais pas le langage Rust (enfin j'en avais juste entendu parler), il a l'air assez sympa et très efficace (très proche du C mais avec des concepts bien plus évolués). Cela dit, je trouve sa syntaxe assez lourde, je pense qu'on peut mieux faire là dessus :p
Si tu arrives à des niveaux comparables au C++, c'est que ça a dû sacrément évoluer depuis la dernière fois que je l'ai touché. Ou alors que tu compares avec du mauvais C++.
Moi c'est le contraire : au début j'ai été émerveillé par Java et la façon qu'il a de te forcer à penser objet. Puis je l'ai détesté à cause de ça : ça t'encourage à de plus en plus d'abstraction, jusqu'à l'excès. Je trouve python beaucoup plus souple. Par contre c'est clair que t'auras jamais les performances du C++.
Le java a pas mal évolué (il est devenu rapide depuis java 5, et depuis il progresse encore mais petit à petit on va dire), et je comparais à du C++ de GCC (c'est pas le meilleur mais il s'est bien amélioré au fil des ans lui aussi).
Sinon pour le développement, je pense que c'est toujours une histoire d'équilibre, moi j'aime quand le code est simple, clair et facile à comprendre. Je vais toujours privilégier la simplicité à la performance (même si la performance est un aspect important aussi, ça vient juste après la simplicité). Du coup tout dépend de ta façon de programmer, par exemple je connais des programmeurs très techniques qui font tout en générique et basé interface en Java, perso je ne suis pas de cette école, je n'aime pas ça... Le code devient très difficile à lire (ou plutot à suivre). Je pense qu'il faut utiliser les génériques uniquement quand c'est nécessaire et que ça apporte un réel gain / efficacité dans le développement, ça n'a pas d'intérêt si c'est juste pour l'élégance du code (avoir quelque chose de très / trop flexible).
J'aime aussi le langage mais il faut admettre que ça fait un peu vieux dinosaure quand même, le fait de ne pas pouvoir avoir 2 méthodes avec le même nom, rien que ça c'est bien chiant.. et la gestion "objet" est quand même un apport important (ça rend le code quand même nettement plus propre / modulaire..). Bien sûr tu peux tout refaire en "C" mais c'est plus fastidieux..
Tu es sûr que ce n'est pas possible ? Il m'avait semblé qu'il existait un moyen d'utiliser des GC alternatifs, voire de gérer soi-même la durée de vie des objets
Au passage, ce "problème" existe aussi en Python (je mets des guillemets parce que dans une bonne partie des applications c'est plutôt un avantage).
Non c'est sûr tu ne peux pas gérer la durée vie de tes objets, bien sûr tu peux appeler toi même le GC mais c'est pas vraiment une solution... en réalité si tu veux ne pas trop impacter les performances par le GC, tu dois faire attention à la création de tes objets, java est *très* performant pour la création / libération d'objets (plus que le C++) mais en même temps c'est logique puisque le langage te pousse à en créer des tonnes. Typiquement un objet Point ou Rectangle, une fonction getPosition() que tu vas appeler des millions de fois par seconde peut créer un objet Point à chaque appel, c'est classique.. du coup java a intérêt à être rapide... mais du coup tot ou tard le garbage collector va devoir libérer ses milliers / millions d'objets et ça va couter forcément pas mal de temps CPU.
Une manière d'éviter ça c'est de recycler les objets (plutot que de créer un nouvel objet, tu gères un pool d'objets, et quand un objet n'est plus utilisé alors tu le recycles à un autre endroit). Ca évite de créer des millions d'objets et de trop faire travailler le GC. Par contre ça rend le code plus complexe, moins lisible et ça c'est dommage. Pour ça que j'aimerai bien avoir un .free() sur les objets pour forcer leur libération (mais bien sûr ça pose énormément de problème car on peut encore avoir des références dessus, il faudrait que le free () ne fonctionne que lorsqu'il n'y a plus de référence sur l'objet).
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: GFA, Python, C, Java... discutons langages de programmation
Stef a écrit:Puisqu'on en parlait, voici un article récent sur l'efficacité (énergétique) des différents langages :
https://thenewstack.io/which-programming-languages-use-the-least-electricity/
Je comprends pas trop l'intérêt de ces chiffres (comme beaucoup de chiffres sur l'écologie/économie). On perd de vue que ces langages ont souvent des spécificités qui font qu'on ne les utilise pas pour la même chose, et que leurs bénéfices dans leurs domaines compensent très largement leurs inconvénients.
Par exemple, ADA est un langage ultra-sécurisé, qui doit générer une tonne de tests de validité même pour des tâches simples. Forcément, ça en fait un langage coûteux. Mais quand tu dois gérer un trafic aérien ou balancer des fusées dans l'espace, le coût en sécurité est largement compensé par les pertes que tu aurais en cas de catastrophe.
Et même sans recourir à des cas aussi drastiques, tu as des langages dans lesquels la relative inefficacité du code produit est compensée par le fait que ton langage facilite par exemple l'écriture d'algorithmes compliqués (OCaml ou haskell).
Bref, ces chiffres sont de moyennes sans pondération alors que, justement, ces langages accordent plus de poids à certains problèmes...
Je vais jeter un œil à Rust
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
ah mais oui je suis d'accord, c'est toujours une histoire de compromis
Comme je disais pour le cas du Python par exemple, ce que tu "perds" en énergie, tu le gagne en productivité (ce qui représente du temps de travail, donc de l'argent..)
Comme je disais pour le cas du Python par exemple, ce que tu "perds" en énergie, tu le gagne en productivité (ce qui représente du temps de travail, donc de l'argent..)
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: GFA, Python, C, Java... discutons langages de programmation
Je jette un œil à Rust, c'est bizarre, ça emprunte pas mal de concepts à CaML. Ça ressemble pas tant que ça à C ou Java...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
Tryphon a écrit:drfloyd a écrit:je suis en train d'essayer APPGAMEKIT (demo)
https://www.appgamekit.com/order
Du basic... pour developper sur PC, Mac, Android, etc.... Mais du basic un peu chiant à utiliser
genre pour ecrire un texte il faut 3 ou 4 lignes :
CreateText(1,"TEXTE")
SetTextSize(1,5)
SetTextColor(1,0,0,0)
SetTextPosition(1, 200,300)
C'est LOURD !
Tu peux écrire des fonctions avec ton Basic ? Si oui, je ne vois pas où est le problème...
oui bien sur.... mais bon quand même
_______________________________________________________
Re: GFA, Python, C, Java... discutons langages de programmation
Un basic que j'ai redécouvert (je connaissais sur Amiga) et qui produit un programme autonome (pas de DLL et autres gigaoctects à installer) et de petite taille (dû moins sous windows). C'est purebasic, compatible Windows, Linux et Mac.
Avant j'utilisais autoit pour faire des petits programmes de test, mais pour debugger c'est un peu galère et ça ne fonctionne que sous windows.
Avant j'utilisais autoit pour faire des petits programmes de test, mais pour debugger c'est un peu galère et ça ne fonctionne que sous windows.
Gege34- Patient en incubation
- Nombre de messages : 63
Age : 53
Localisation : 31
Date d'inscription : 18/03/2019
Re: GFA, Python, C, Java... discutons langages de programmation
drfloyd a écrit:Vous savez que Another World a été programmé en GFA Basic ?
Voici un super reportage sur la conception du jeu, et en effet il a été programmé en GFA Basic
Re: GFA, Python, C, Java... discutons langages de programmation
c'est vraiment un super reportage.
mais aussi j'ai programmé de super jeux en GFA, pourquoi je n'ai pas mon reportage ?
mais aussi j'ai programmé de super jeux en GFA, pourquoi je n'ai pas mon reportage ?
_______________________________________________________
Re: GFA, Python, C, Java... discutons langages de programmation
jamais capté la hype pour another world. ouais c'est joli, rotoscopy tout ca, mais c'est completement injouable
Invité- Invité
Re: GFA, Python, C, Java... discutons langages de programmation
Jamais fait. Mais Flashback c'est de la baballe...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
ah flashback se controle 10x mieux.
AW t'as juste l'impression de déplacer un pavé en mode random avec 3s de lag. infame.
(pardon pour le HS)
AW t'as juste l'impression de déplacer un pavé en mode random avec 3s de lag. infame.
(pardon pour le HS)
Invité- Invité
Re: GFA, Python, C, Java... discutons langages de programmation
je suis d'accord, je n'est jamais compris le succès de Another World
_______________________________________________________
Re: GFA, Python, C, Java... discutons langages de programmation
Ho punaise le doc et moi on est d'accord :)
Je mets une croix sur le calendrier
Je mets une croix sur le calendrier
Invité- Invité
Re: GFA, Python, C, Java... discutons langages de programmation
FlashBack
Sa suite, Fade to Black, est injouable aussi...
Sa suite, Fade to Black, est injouable aussi...
Shaoth- Guéri miraculeux
- Nombre de messages : 2215
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018
Re: GFA, Python, C, Java... discutons langages de programmation
Tellement injouable que je l'ai fini... Et j'en ai un très bon souvenir...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: GFA, Python, C, Java... discutons langages de programmation
Tryphon a écrit:Tellement injouable que je l'ai fini... Et j'en ai un très bon souvenir...
Les jeux vidéo, c'est comme les gouts et les couleurs
Shaoth- Guéri miraculeux
- Nombre de messages : 2215
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018
Page 2 sur 7 • 1, 2, 3, 4, 5, 6, 7
Sujets similaires
» Conseils pour débuter en Python
» [WAILING WALL] JEUX SWITCH JAP - LANGAGES & DIFFERENCES
» G&W en JAVA
» Programmation CPS-1
» La programmation Megadrive
» [WAILING WALL] JEUX SWITCH JAP - LANGAGES & DIFFERENCES
» G&W en JAVA
» Programmation CPS-1
» La programmation Megadrive
Page 2 sur 7
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum