Aller au menu - Aller au contenu

Developpez.com lance les défis Qt

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Amnell, dourouc05, MathX, Nelty et Ten
Publié : le 29/11/2009 à 19:42:33
Catégorie : Programmation
Visualisations : 17 004

Licence : Creative Commons BY SA

Developpez.com lance les défis Qt

Image utilisateur
Qt, comme introduit dans le cours C++, est un framework réputé permettant de réaliser des interfaces graphiques portables, mais également de gérer des problèmes récurrents comme l'internationalisation d'une application, la gestion des threads, le réseau, etc.

Il y a quelques jours, un concours de développement avec Qt a été lancé par la communauté Qt de Developpez.com. Ce concours souhaite réunir la communauté francophone du framework pour lui proposer une épreuve commune et tester les connaissances acquises de ses membres. Le principe de ce premier concours est très simple. Il suffit de réaliser une application aussi bien écrite et pensée que possible pour afficher et personnaliser une fractale, le Buddhabrot.

Les fractales



Une fractale est une surface irrégulière ou morcelée qui se crée en suivant des règles déterministes ou stochastiques.
En général, une fractale, quelle que soit l'échelle, propose des détails semblables. Aussi, elle est assez irrégulière, et ne peut être décrite efficacement en termes géométriques. Une fractale est contenue dans un ensemble de points, généralement du plan complexe. Les points de cet ensemble sont définis par une expression mathématique (par exemple : une suite récurrente, dans le cas du Mandelbrot - dont le Buddhabrot est un dérivé).

En pratique, il suffit de prendre une suite de nombres récurrente (l'élément n+1 s'appuie sur la valeur de l'élément n) et dessiner les points obtenus par cette suite.

Détails du concours



Afin de rajouter un enjeu au concours, les travaux soumis seront notés. Des points supplémentaires seront d'ailleurs attribués aux implémentations originales, utilisant les mécanismes d'internationalisation, le multithreading, etc. En terme de délais, les participants auront jusqu'à la fin du mois de février 2010 pour proposer une implémentation, soit individuellement, soit par équipe de deux personnes au maximum.

Aussi, afin de ne pas pénaliser ceux sur qui les mathématiques exercent un pouvoir fortement répressif, il n'y a pas besoin de coder l'entièreté de la génération de fractale : un module s'en occupant est proposé. Il n'est bien entendu pas obligatoire de s'en servir. Par contre, pour ceux qui désirent l'exploiter, il reste quand même du travail à ce niveau, à savoir l'exploitation de Qt pour optimiser la génération.

Les règles sont relativement simples :
  • Les langages de programmation utilisables sont restreints au C++ (le langage C n'est donc pas autorisé ; par contre, le JavaScript est autorisé, grâce à QtScript) : par exemple, le développeur ne pourra pas incorporer du code Gtk parmi le code Qt ;
  • Le code devra pouvoir être compilé et exécuté sur plusieurs plates-formes (Windows, Linux, Mac...) ;
  • Les sources devront être documentées et propres.
Vous pouvez retrouver le détail des critères de notation sur la page du concours.

Le concours se terminera dans 3 mois, chaque participant aura donc le temps nécessaire pour développer le programme et le rendre aux organisateurs du concours.

71 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3 
Pseudo Discussion
3 visiteurs sur cette news (0 membre et 3 anonymes)
Page Précédente  1  2  3 
Hors ligne dourouc05 # Posté le 02/12/2009 à 19:12:38
Avatar
Flux RSS

Études : Université de Liege

Apparemment, l'interdiction du C en choque certains. Voici plus de détails sur ce point. (Bon, d'accord, c'est du réchauffé... : Le premier défi Qt !).

C et C++ ont une origine commune, c'est vrai. Mais c'est il y a quelques années. Depuis lors, les deux langages ont évolué différemment. Des incompatibilités sont apparues. Autoriser le C, ce serait ne pas l'autoriser entièrement.

Le C++ est réputé pour être un langage de haut-niveau, le C pour un langage de bas-niveau. De nos jours, il est nettement moins important de se préoccuper du bas-niveau : on préfère développer "plus haut", comme Qt. Autoriser le C, c'est aussi revenir en arrière à ce niveau.

Le C++ est nativement multiparadigmes. Le C, biparadigmes : impératif et objet (ce dernier en jouant très fort sur le langage, l'amenant dans ses extrémités - comme GTK+). Le C++ : impératif, objet (principalement), mais aussi fonctionnel et bien d'autres (même s'il n'est pas prévu pour ceux-là). Le C++ est donc plus permissif à ce niveau que le C.

On voit donc aisément que le C n'est pas le C++. Si on autorise le C parce qu'il ressemble au C++, on devra aussi pouvoir supporter des pléthores d'autres langages : le Java, qui ressemble beaucoup au C++ ; le C#, proche du Java ; l'Objective-C ; le D ; le PHP ; et bien d'autres !

Aussi, l'ancêtre C with Classes et autres préversions du C++ ne sont pas autorisées pour les mêmes raisons. De plus, il s'agit de standards plus que dépassés, qui n'apportent pas grand chose à la programmation. Ce standard est aussi très différent du C++ de nos jours : beaucoup de nouveautés qui permettent de rendre un code plus lisible ne sont pas encore arrivées, le "C++ moderne" n'était pas encore dans le jeu.

Il existe quand même une exception : l'ECMAScript. En effet, il est supporté par Qt depuis longtemps (dès l'arrivée du module QtScript dans Qt 4.3, et bien avant avec QSA).

De même, C++ for CUDA n'est pas autorisé (la question du C for CUDA et du Fortran for CUDA est déjà soulevée), même s'il utilise le C++ : personne ne s'est à présent opposé contre l'interdiction de librairies externes, et CUDA en est une.

Aussi, il est possible d'obtenir de meilleures performances grâce au GPGPU : serait-il juste de devoir mieux noter un programme qui tire parti du GPGPU qu'un autre, qui se contente du CPU, alors que le programme sur CPU a subi des optimisations plus profondes ?

J'espère avoir ainsi répondu à ces interrogations sur ces interdits.
 
Hors ligne MrKooky # Posté le 03/12/2009 à 19:44:18
10h
Avatar
Flux RSS

Ville : Paris
Pays : France métropolitaine
Études : Paris 6 - Université Pierre et Marie Curie (Jussieu)

Oui, en effet!
 
Hors ligne spider-mario # Posté le 04/12/2009 à 08:00:53
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

Citation : dourouc05
On voit donc aisément que le C n'est pas le C++. Si on autorise le C parce qu'il ressemble au C++, on devra aussi pouvoir supporter des pléthores d'autres langages : le Java, qui ressemble beaucoup au C++ ; le C#, proche du Java ; l'Objective-C ; le D ; le PHP ; et bien d'autres !

C'est un peu facile de pousser l'argument à l'extrême jusqu'à l'en rendre absurde. Quoiqu'on en dise, C++ est tout de même pas mal "backward compatible", et ce ne sont pas un ou deux casts de pointeur explicites et un comportement différent pour des "const" qui me feront penser le contraire.
Hors ligne Alp # Posté le 07/12/2009 à 00:09:51

Hmm tu dois te méprendre.

C++ ressemble plus à Java qu'à C. Il y a carrément 2 paradigmes (on va dire 1.5) en commun entre eux, pour un seul entre C et C++.
 
Hors ligne spider-mario # Posté le 07/12/2009 à 08:01:56
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

Citation : Alp
Hmm tu dois te méprendre.

C++ ressemble plus à Java qu'à C. Il y a carrément 2 paradigmes (on va dire 1.5) en commun entre eux, pour un seul entre C et C++.

C++ ressemble peut-être plus à Java qu'à C (et encore) mais C ressemble plus à C++ qu'à Java. Ça me semble un peu extrêmiste de refuser un code C qui compile tel quel sous un compilateur C++ sous prétexte que "c'est pas comme ça qu'on fait en C++".

(Et il y a bien deux paradigmes en commun en C et en C++, à savoir impératif et procédural, contre impératif et objet pour C++ et Java.)
Hors ligne mongaulois # Posté le 07/12/2009 à 11:34:58
Avatar

Études : ISTIC

Citation : spider-mario
Ça me semble un peu extrêmiste de refuser un code C qui compile tel quel sous un compilateur C++ sous prétexte que "c'est pas comme ça qu'on fait en C++".

Le but de ne choisir que le C++ , s'est aussi parce que ces deux langages évoluent chaqu'un dans leur coin depuis un bon moment. Les derniers compilateur C++ ne sont pas compatible avec C99. ET les compilateur C ne compile pas le C++. Donc autant resté sur cette philosophie. Il faut bien comprendre que le C et le C++ sont deux langages différents comme le C++ et le c# ou le C++ et le java.



Pourquoi aurais tu besoin du C pour ce défis?


 
Hors ligne spider-mario # Posté le 07/12/2009 à 18:32:58
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

Citation : mongaulois
Pourquoi aurais tu besoin du C pour ce défis?

Malgré le fait que je semble pester contre cette interdiction, en réalité, elle ne m'affecte pas et je n'ai pas besoin de coder "à la C" (j'utilise les classes de la STL ou leur équivalent Qt, etc), c'était surtout pour comprendre l'interdiction.
Hors ligne Alp # Posté le 07/12/2009 à 19:26:28

Citation : spider-mario
Citation : Alp
Hmm tu dois te méprendre.

C++ ressemble plus à Java qu'à C. Il y a carrément 2 paradigmes (on va dire 1.5) en commun entre eux, pour un seul entre C et C++.

C++ ressemble peut-être plus à Java qu'à C (et encore) mais C ressemble plus à C++ qu'à Java. Ça me semble un peu extrêmiste de refuser un code C qui compile tel quel sous un compilateur C++ sous prétexte que "c'est pas comme ça qu'on fait en C++".

(Et il y a bien deux paradigmes en commun en C et en C++, à savoir impératif et procédural, contre impératif et objet pour C++ et Java.)

Euh, l'impératif englobe le procédural. Ce ne sont pas 2 choses totalement distinctes. Et tu as oublié le paradigme générique ;)
Citation : wikpedia

"Procedural programming is imperative programming in which the program is built from one or more procedures"

Donc C et C++ ont l'impératif/procédural en commun.
C++ et Java ont l'OO et le générique en commun, bien que le générique soit moins poussé en Java, d'où mon 1.5.
 
Hors ligne spider-mario # Posté le 08/12/2009 à 18:30:50
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

Citation : Alp
Euh, l'impératif englobe le procédural. Ce ne sont pas 2 choses totalement distinctes. Et tu as oublié le paradigme générique ;)

L'inverse, non ?
Procédural => impératif
mais
Impératif =/> procédural.
Hors ligne Alp # Posté le 08/12/2009 à 19:43:00

Le procédural EST UNE FORME de programmation impérative. Procédural INCLU DANS Impératif. On est bien d'accord. C'est bien ce que je disais. L'impératif englobe le procédural.
 
Hors ligne spider-mario # Posté le 09/12/2009 à 07:35:32
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

Ah, désolé, je ne le voyais pas comme ça :D

Je voyais plutôt que le procédural consistait en l'impératif + une couche supplémentaire, d'où "le procédural englobe l'impératif".

Au temps pour moi* ;)
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news