Bonjour à tous,
Sur le site que je viens de créer :
http://www.pc-infogame.com, vous pourrez trouver un tableau comparatif de la syntaxe entre 6 langages (Java, VB.Net, C, Delphi, PHP, Javascript).
100 critères permettent de comparer et de se remettre en mémmoire la syntaxe (déclarations, structures de contrôle, prog. objet...).
Voici le lien :
http://pc-infogame.com/index.php?menu=10
N´hésitez pas à m´indiquer toute erreur. Ceux qui souhaiteraient m´aider à le compléter (languages manquants) sont les bienvenus.
Mail : webmaster@pc-infogame.com
http://www.pc-infogame.com/
le meme sans la virgule
Il y a quelques inexactitude. Mais surtout... Je ne vois pas l´interet. Tu peux m´eclairer la dessus ?
Euh...
Si tu connais la syntaxe des langages par coeur, ce tableau est inutile évidemment...
Conçoit un site et utilise le javascript, le php, l´asp (avec le vb.net). La plus grande difficulté est de naviguer entre la syntaxe de tous ces langages ...
Connaître les équivalences entre les langages au niveau objet n´est pas intéressant ? En un clin d´oeil, tu sais le mot-clé utilisé dans le langage...
Inexactitude, sûrement mais lesquelles ?
j´ai regardé que le C et le java
tu as oublié tous les types signed/unsigned long/short
sur les points d´entré d´un programme, mais peut etre appelé avec aucun, 2 ou 3 parametre.
En java d´ailleurs, ce n´est pas forcément main dans le cas de programme awt.
dire qu´en java il n´y a pas de pointeur, ce n´est qu´a moitié vrai. Les références donnent une bonne émulation, meme si ce n´est pas exactement le meme concept.
Sur les passage par valeur/adresse. Je n´aime pas beaucoup l´idée de dire que l´on passe des tableau adresse. de plus, les structure ne sont pas passé par adresse.
static en C ne sert pas a faire des variables global. (le concept est plus compliqué. C´est une histoire de porté de la variable).
quand tu parle de condition multiple, je ne penses pas que tous les langages soit egaux a ce niveau la. En C par exemple, on ne peut faire cela que sur des valeures constantes de type primaire. Je ne suis pas sur que java souffre de cette restrictions. A la base, le switch case en C est un dérivéde table d´indirection. Tres pratique poru faire moins de comparaison au prix d´un peu d´espace.
Sur le do/while en C, il y a un ´;´ a la fin
En c, tu as des constantes. enum fait ca tres bien.
Dire qu´il n´y a pas d´exception en C, c´est un peu brutal. Tu as plusieurs de facon d´en faire. La plus classique étant setjump/longjump.
Tu parles d´ecrire dans la console. En C tu fais ca avec printf. Déjà il y a 50 façon différente d´ecrire sur le descripteur de fichier 1. Ensuite, il y a des langages qui n´ont pas de console, mais qui pourrait en avoir en fonction de l´environment qui est autour.
Ton "Déclaration du programme / script " est vachement bizarre, ca dépends completement de ton interpréteur.
Plus généralement, je n´ecris pas du code en javascript en meme temps que du code delphi. Donc je ne swap pas de langage aussi vite que ca. et jetter un coup d´oeila un code déjà existant te rappele instantanément la syntaxe du langage.
Il y a des tas de concept qui passent a l´as du coup...
Au niveau du jeu que tu présentes sur le meme site.
Le nombre d´effet graphique a l´air faible et le moteur de jeu a l´air relativement simple.
Pourtant, la configuration requise est de:
* Processeur : 2Ghz
* RAM : 512Mo
* Carte graphique : 6600GT (vertex shader 1.1 & pixel shader 2.0)
* Carte son
ce qui a l´air super gros pour un jeu de ce niveau de réalisation. Ca a été mis au pif ou il y a une raison profonde ?
Je redoutais ce genre de déballage de connaissances (peu constructif au final) et ce genre de mépris pour le travail des autres (cf. jeu). Mais passons...
En tout cas, tes remarques sont justifiées, j´en prend note. Tu es plus spécialiste que moi en C, c´est certain.
Mais le fait est que tu te trompes de public. Je ne prétend pas donner toutes les solutions, toutes les possibilités de syntaxe. Comment résumer 6 langages en un simple tableau alors que des dizaines de livres portent sur le sujet ? Etre très technique c´est un point, être pédagogique c´en est un autre...
Les langages sont globalement "semblables", les notions restent les mêmes en programmation. Seule la syntaxe varie d´où l´intérêt majeur d´un tableau récapitulatif. Tu recherches la syntaxe en prenant un autre morceau de code ? Bien, ben rien ne m´empêche de faire un tableau récapitulatif pour ça non ?
Je n´ai jamais parlé de passer du javascript au delphi, il ne faut pas déformer mes propos.
Je n´ai pas écrit le contenu de mon site au hasard. Mon jeu a été développé avec un moteur peu optimisé d´où la config importante nécessaire.
meme si ce n´est qu´un tableau simplifie, je me permet quelques correction; j´ai note apres un survol rapide quelques erreurs pour le c que godrik n´a pas (encore
mentionne:
- "Programmation orientée objet possible ?" : tu peux programmer objet meme si le language n´est pas a la base designe pour.
- "Transtypage / Cast obligatoire ?" : ca depends. Pas besoin de cast entre un void* et un int* par exemple.
- "Commentaire sur une ligne": // est du C99
- "Point d´entrée du programme" / "Passage par valeur" / "Passage par adresse" : pas forcement, ca depends de l´implementation.
- "Définir une variable globale": ha non, pas du tout static, au contraire
/k
Ok ok merci
L´objet possible en C ? Il possède les notions d´héritage, surchage, interface ?
Je corrigerai tout ceci très rapidement. C´est vrai que de nombreux cas particuliers n´ont pu être inscrits.
kufa, j´avais peur qu´on me dise que je pinaille. Mais j´ai hésité.
"ce genre de mépris pour le travail des autres (cf. jeu)"
Je ne le méprise pas du tout. Je me demande pourquoi il consomme plus qu´il ne devrait (ca n´a pas l´air plus compliqué qu´half life qui tournait sur un P2 500). Tu aurais pu implanter des mécanisme compliqué qui ne se voit pas, charger un espace super large plutot que de te réduire a des zones restreintes, avoir un découpage en tiles qui consomme plein de ram, avoir un compilo pourri qui te plombent tes performances. Des explications, il y en a a la pelle.
"Seule la syntaxe varie d´où l´intérêt majeur d´un tableau récapitulatif."
Il n´y a pas que la syntaxe. Si les langages était équivalent, on en aurait pas fait plusieurs. Tu parles de pédagogie, je ne suis pas completement convaincu. Un tableau comme ca laisse l´impression que la difference entre les langages est d´ordre purement syntaxique. Et c´est bien ca qui me fait réagir (peut etre un peu trop fortement).
Je respecte le travail, mais ne comprends pas son interet. Je n´ai jamais confondu les syntaxes du C, java et php. Deplus, tu sembles penser que c´est utile pour un débutant, mais a priori, il ne fait pas assez de choses en meme temps (ou ne reste de toute facon pas loin de son document de reference) pour s´emmeler les pinceaux.
Pour ce qui est de l´objet en C. C´est un peu bizarre mais ca se fait bien
l´idée est d´utiliser une struct. Pour faire une fonction membre, on passe a cette fonction un pointeur vers cette structure. l´heritage, c´est juste rajouter des champs a la structure, ca se fait avec de l´agrégation/typecast bourrin. et la Vtable, tu fais des pointeurs de fonction.
En vrai, c´est comme ca que c´est fait en C++ apres compilation.
Ok désolé pour ma remarque alors. Je comprends mieux ton point de vue et je le respecte.
Pour le jeu en fait, il a été réalisé à l´occasion d´une compétition (nvidia) qui devait se dérouler sur 4 mois seulement. Je n´avais jamais réalisé de jeu, jamais modélisé sous 3DS Max... c´était un vrai défi en fait. Le moteur sous Dark basic Pro est limité, on n´a pas accès à son fonctionnement (compilation, plusieurs threads...). C´était un moyen de débuter simplement.
Pour le tableau oui, c´est vrai, j´avais peur qu´on ne croit que seule la syntaxe distingue les languages. Alors qu´une syntaxe, dans le fond varie, et n´est pas représentative du langage. Pour être franc, je travaille parfois exclusivement avec un langage sur plusieurs mois (genre que du java, puis que du VB.Net) et ce tableau m´a permis de me rafraîchir rapidement les idées.
Pour débuter c´est vrai que c´est à la fois trop léger et incomplet. Dans ce cas ça ne reste qu´un tableau "aide-mémoire" comme je l´ai précisé(avec certains points à corriger).
Pour l´objet en C, je ne connaissais pas. Merci !
Je comprends mieux pour le moteur.
Au niveau du tableau. Pour se rémémorer les syntaxes. Une présentation plus proche des tuto de fvirtman (
http://perso.numericable.fr/~fvirtman/info/tuto/index.html ) pourrait etre pas mal je pense.
L´idée serait de donner des exemples simples de code a plusieurs niveaux qui présentent de façon concise les grandes fonctionnalité du langages. Pour quelqu´un qui connait un langage mais qui a juste besoin d´etre "dérouiller", je penses qu´en deux ou trois code exemple on peut faire ca bien. Dans le premier, tu fait un main avec deux variables, un test et une boucle d´affichage a l´ecran. Dans le deuxieme tu fais de l´objet simple. Dans le troisieme de l´objet compliqué.
J´ai parcouru vite ce qui a été dit mais je crois que ça pas été dit:
je vois en java :
- chaine de caractères : ´texte´ ou "texte"
Le 1er ne marche pas.
En revanche, un caractère seul ´c´ là ça marche
- chaine de caractères :
string et non pas String, c´est un peu chipote mais en c# par exemple,string et String existe tout les 2.
- tableaux :
array n´existe pas
c´est :
type[] nom ou type nom[] (comme en c)
- Valeur de TRUE/FALSe
Pas vraiment de sens, je pense pas que le cast soit possible
-Déclaration d´une fonction
partiellement correct :
visibilité typeRetour nomFonction (type var1, type var2, ...)
-Procédures:
même choses que fonction
Point d´entrée du programme
public static void main(String[] args) ou
public static void main(String args[])
cf tableau
- concatenation
+ : ok, mais c´est un peu sale, priviléfier la méthode concat de String
- Accés aux objets :
nomObjet.nomAttribut
ca dépend : si public ou packaged (et pas forcement tout le temp) sinon méthodes d´accés
- Définition du constructeur
public 90% du temps : certains constructeurs sont en private ou protected pour faire un singleton
- Définition du destructeur
finalize n´est pas un destructeur, c´est la fonction appelée lors de la destruction de l´object par le
garbage collector.
- get/set
mettre public même si toujours vrai est pas tout à fait exact (visibilité)
- Instanciation d´un objet
ClasseObjet nomObjet = new ClasseObjet(parametres)
à noter que ClasseObjet à droite et gauche peuvent être différente.
+ ne pas oublier les singletons comme Calendar où on fait un Calendar.getInstance()
- Classe des exceptions
Exception et non pas Exceptions
- Capturer une exception
je chipotage :
try {
}
catch (ClasseException e) {
}
finally {
}
et préciser l´option de finally
- Importer un paquetage / classe
import et non pas imports
voilà voilà ce que je vois en regardant vite fait.
Bon courage pour ton site ![]()
Merci pour toute cette relecture
Je corrigerai toutes ces erreurs. J´ai mis parfois les cas les plus courants/généraux (visibilité par exemple, upcasting/downcasting pas précisé).
Je viens de me rendre compte d´un petit truc pour chipoter encore un peu ![]()
la gestion des exceptions dans son ensemble peut être élargie au Thrownable dont hérite Exception et Error.
Chipotez, chipotez ^^
Ca fera un tableau complet comme ça (et juste surtout)
D´ailleurs, il me manque le C++... mais je ne l´ai jamais utilisé.
et même le C# ^^
Oui, aussi lol C++ et C#, je ne connais pas non plus ^^
Au sujet de l´import :
import nomDuPackage.nomDeClasse;
ou
import nomDuPackage.*;
ou depuis 1.5
import static nomDuPackage.nomDeClasse;
ex :
import static java.lang.Math.PI;
qui permet d´accéder aux champs et méthodes statiques comme si il était dans la classe (mon explication est pas top)
Ah ouais ? Avec static ? Je connaissais pas, merci de l´info ![]()
Novembre, en fait les tableaux sont documenté dans la classe Array