Xcode 4 : le ras-le-bol des développeurs

Christophe Laporte |


Présenté pour la première fois il y a deux ans, Xcode 4 est une évolution importante de l'environnement de développement d'Apple. Il change sur bien des points le quotidien des développeurs. Après, il y a ceux qui aiment et ceux qui n'aiment pas.

Par contre, il y a sans doute un point qui mettra tous les développeurs d'accord, c'est l'instabilité chronique de l'IDE d'Apple depuis la sortie de la première version définitive de Xcode 4 il y a maintenant un an.

Chaque mise à jour corrige son lot de bogues et en apporte d'autres. Les développeurs ont toujours l'impression d'utiliser des bêtas. Parmi les problèmes qui reviennent fréquemment, il y a "entre autres" le système de coloration syntaxique qui se met soudain à ne plus fonctionner, le débogueur qui refuse d'être dissocié d'un terminal iOS et qui oblige l'utilisateur à redémarrer et Instruments qui refuse parfois de donner le nom des fonctions qu'il surveille et donne à la place de simples adresses mémoires.

Qu'il y ait des bogues, c'est une chose, mais ce qui désespère les développeurs, c'est d'être engagés dans un tunnel sans fin depuis la sortie de cette version 4.0. Comme quoi, il n'y a pas que les cordonniers qui sont mal chaussés.

Sur le même sujet :
- Témoignages : Xcode 4 vu par cinq développeurs
Tags
avatar Dimitri64500 | 

Y'aura un jour la version en français ?

avatar Seccotine | 

@ Dimitri64500

Bad dum tss

L'informatique c'est de l'anglais, et la programmation encore plus. Xcode est en anglais et rien d'autre. Pourquoi voudrais-tu qu'ils prennent une langue au hasard et se décident à prendre le français pour traduire leur IDE ? :D

avatar Weeky | 

Je n'ai jamais eu le moindre bug que ce soit sur Snow Leopard ou Lion quelque soit la version. Le seul truc chiant c'est la taille des mises à jour pour ma petite connexion...

avatar DarkMoineau | 

Pour du java, j'ai trouvé Eclipse bien foutu. Alors c'est quoi le problème avec Android?

avatar kissscoool | 

J'approuve, Xcode 4 est génial et exaspérant en même temps. J'ai rarement connu un IDE aussi instable. Ça me déçoit pas mal de la part d'Apple car tous les apports par rapports à Xcode 3 en font un outil de développement merveilleux.

@ShowMeHowToLive : Eclipse n'est peut-être pas parfait, mais au moins il est stable et multi-plateforme. Par contre, j'admets que les outils de développements sur Android sont vraiment un cran en dessous de ceux sur iOS. Ne fut-ce que pour la console (LogCat) et l'émulateur (qui est lent par sa nature...).

avatar Ganzolo | 

Je dev sur Xcode 4, c'est vrai qu'il y a pas mal de soucis, mais bon en général on le restart et ça roule. Xcode est quand même un logiciel sacrement complexe! Et la quantité de nouveauté présentée avec la version 4 est tout bonnement impressionnante.

avatar oonu | 

Certes des bugs qui nécessitent un petit redémarrage de Xcode de temps a autre...
Mais comme le dit ShowMeHowToLive, Eclipse me donne envie de vomir a chaque fois que j'y pense!!!
En plus Eclipse sur windows est déjà loin d'être bon, mais alors sur mac :S
Netbeans fait mieux, mais perso je vois pas lequel arrive a la cheville de Xcode!!!

avatar marc_os | 

@Dimitri64500 :
On est en 2012, en pleine mondialisation (et ce n'est pas nouveau).
Plutôt qu'un logiciel encore plus bogué à cause de traductions aléatoires, je te conseillerais vivement de te mettre à l'anglais. De plus AMHA, un minimum d'effort est nécessaire pour être bon dans son métier, quelqu'il soit.

avatar kissscoool | 

@DarkMoineau : Pour le développement d'applications desktop, c'est parfait. Mais le développement d'app mobiles requière d'autres ressources comme un simulateur ou une connexion à un appareil mobile externe. Selon moi, c'est sur ces 2 points que ça coince. Ce n'est pas la faute d'Eclipse, mais du plug-in développé par Google.

avatar oonu | 

@ Dimitri64500

Quand toutes les docs(Javadoc, c/c++, Objective-C, et tous les autres) nécessaire seront traduites!
Bref, mets toi a l'anglais si tu comptes développer un jour!

avatar oonu | 

@ kissscoool

Ne fait pas croire que Eclipse est loin de ne pas être buggé!

Edit: Pour le Desktop java, rien de plus simple et efficace que Netbeans

avatar Yelrac | 

@kissscoool: +1

Eclipse pour du Java desktop, c'est génial, par contre le SDK de google rend le tout monstrueusement lourd. Rien que l'émulateur, quand je dév, je débug direct sur un appareil android, ça va beaucoup plus vite.
Heureusement que le Java c'est facile, sinon on abandonnerai très vite.

Quand à xcode 4, passé l'effet génial des nouvelles possibilités de l'interface, j'ai été très vite dégouté de tout les bugs, plantages et cie. Et je constate également avec désespoir que ça ne s'arrange pas avec le temps.

avatar lmouillart | 

@oonu
"En plus Eclipse sur windows est déjà loin d'être bon, mais alors sur mac :S
Netbeans fait mieux, mais perso je vois pas lequel arrive a la cheville de Xcode!!!"

Ce qui est rigolo c'est qu'une partie des développeurs de Netbeans se sont vu remercier par Oracle et travaillent désormais pour Google sur Eclipse/ADT.

avatar bigham | 

@weeky "Je n'ai jamais eu le moindre bug que ce soit sur Snow Leopard ou Lion quelque soit la version."

Ca dépend de l'usage. Si tu l'utilises comme outil de travail au quotidien, il serait vraiment incroyable de ne pas avoir rencontré un seul problème de stabilité ou de lenteur ou de comportement agaçant.

avatar niko34 | 

@bigham +1

Je l'utilise au quotidien et c'est une horreur : la roue de la mort, des crashs... des ralentissements absolument énervants lorsque l'on tape 4 lettres. Mon vieil iMac core2duo n'est simplement plus utilisable. Mon MacBook pro core2 2.8 ssd suffit tout juste. Il y a des choses sympas au niveau de l'ergonomie mais ça ne justifie pas tous les problèmes. Quand on a connu XCode 3, ben c'est énervant

avatar l3aronsansgland | 

sigabrt !!

avatar jean_claude_duss | 

pareil... c'est le soft apple que j'utilise le plus et c'est celui qui plante / bug le plus...

avatar noliv | 

L’article : «Parmi les problèmes qui reviennent fréquemment, il y a "entre autres" le système de coloration syntaxique qui se met soudain à ne plus fonctionner, le débogueur qui refuse d'être dissocié d'un terminal iOS et qui oblige l'utilisateur à redémarrer et Instruments qui refuse parfois de donner le nom des fonctions qu'il surveille et donne à la place de simples adresses mémoires.»

Pas d’accord. Je n’ai eu aucun de ces problèmes et je suis globalement satisfait d’Xcode 4. Et comparé aux IDE que j'ai dû utiliser dans le passé (Eclipse, NetBeans et JDeveloper), Xcode est celui qui a le moins l'aspect “beta” (avec NetBeans).

avatar Apple92 | 

@ShowMeHowToLive :
j'ai développé sous Android. L'environnement est très bon.

avatar tleveque | 

Je suis un développeur java qui se converti à XCode et Objective-C.
Je trouve XCode très agréable bien sûr, mais venant d'ide comme Eclipse et IntelliJ, je suis désespéré par le manque d'intelligence de XCode. Exemple: Si je déclare une méthode dans mon header file, XCode m’avertit que je n'ai pas d'implémentation correspondante. Ok d'accord, alors pourquoi ne pas me proposer de l'implémenter automatiquement? Le squelette au moins. Tout les ide java le font depuis 10 ans!!

Le language Objective-C est aussi rempli de "dinosaurisme"! Pourquoi encore aujourd'hui, déclarer qu'une variable est un pointeur ou non? Pourquoi mettre un "@" devant une string? Pourquoi encore utiliser les [] pour accéder à une méthode au lieu des "."? Le compilateur devrait être capable de gérer tout ça à notre place.

Bon excusez-moi pour avoir dévié du sujet, mais ça fait du bien!

En passant, si vous faites du java, essayez IntelliJ IDEA comme IDE. Un peu cher, mais vous ne voudrez jamais plus revenir en arrière!!

avatar adnX | 

Nous confirmons. xCode 4 est une vraie plaie ! La version 4.3 par exemple crash systématiquement quand on veut soumettre une app au Mac App Store. On a du revenir a l'ancienne version 4.2.1 qui est plus stable que la 4.3. Apple de toute façon se fout royalement de l'opinion des développeurs.

avatar kakimac | 

En même temps on a pas trop le choix. Si quelqu'un à une alternative à Xcode, je suis preneur.

avatar oonu | 

@ tleveque
"Pourquoi encore aujourd'hui, déclarer qu'une variable est un pointeur ou non? Pourquoi mettre un "@" devant une string? Pourquoi encore utiliser les [] pour accéder à une méthode au lieu des "."? Le compilateur devrait être capable de gérer tout ça à notre place."

Bien peut-être parce que c'est de l'objective-C et pas du Java! On n'oublie que les pointeurs existent a trop faire du Java, en Objective-C l'objet est un pointeur! En java, on dit qu'il est de type référence . On peut utiliser le point, mais pour de la POO c'est quand meme moins approprié. Du coup on appel une méthode de cette maniére [objet maMéthode]

Le Compilateur devrait t'apprendre l'Objective-C? Tu écris du Java et il convertit automatiquement?

avatar Rez2a | 

Je suis d'accord, Xcode dans sa dernière version est une horreur, chez moi l'auto-complétion saute à peu près toutes les 10 minutes, ce qui est assez gênant quand on utilise un langage aussi verbeux.

@tleveque : Les mécanismes que tu décris n'ont rien de "dinosauriques", ce que tu veux en fait c'est du Java.
Pour moi, "les []" comme tu dis (l'envoi de message) est une des meilleures features du langage, mais après je pense que c'est une affaire de goûts personnels.

avatar jean_claude_duss | 

"Pourquoi mettre un "@" devant une string?"

--> parce que c'est pas une string justement ! tu peux faire un "blbalbalb" mais c'est une string C
avec le @ c'est des NSString

avatar kissscoool | 

@tleveque : Objective-C n'est pas Java et inversement. Ce sont deux syntaxes différentes et deux système de runtimes différents. Le gros avantage du Objc est de pouvoir facilement l'utiliser en parallèle avec du C ou du C++. L'importance des pointeurs est évidente lorsqu'on connait un peu ces 3 langages. Ce n'est vraiment pas ce qu'il y a de plus compliqué au monde.
Le "." est utilisé pour accéder à une propriété et non pas pour faire un appel à un objet. D'ailleurs la syntaxe d'appel est vraiment la dernière chose critiquable d'Objc tellement elle est claire et lisible (comparativement à Java, C++ ou C#).
Au passage, c'est plus de l'ordre du détails, mais en Objc on appel pas spécifiquement une méthode, mais on envoie un "message". La différence est qu'un message non reconnu peut être intercepté pour réagir à la volée quant à celui-ci.

avatar Domsou | 

@tleveque :
L'accès à une méthode directement (avec le .) ou bien par l'envoi d'un message (les [ ]) ce n'est pas la même chose. Donc xCode ne peut pas choisir à ta place.
J'ai pour ma part trouvé très enrichissant de regarder des vidéos montrant des développeurs utilisant xCode. Je conseille.

Après pour les bugs, oui il y en a quelques uns plus ou moins agaçants. Je n'en ai pas un en tête qui soit ma bête noire. Après il faut relativiser car s'agit d'un outil extrêmement vaste et complexe. De plus difficile de cerner quelle est la part de « résistance aux changements » parmi les critiques.

avatar Seccotine | 

@ tleveque

- T'as compris ce que c'est un pointeur en C et toute la puissance qu'il représente ?
- Tu sais ce que c'est un string en @"" ? Tu sais que c'est un objet et il faut bien pouvoir le différencier, non ?
- As-tu compris la différence entre les properties et les methods ? Tu sais que les methods peuvent prendre des arguments, et mêmes plusieurs ?

En résumé, tu sais que l'Objective-C est un superset du C et qu'il y a toute la puissance du C qui est derrière ?

Avant de critiquer l'Objective-C, qui est certainement critiquable en certains points, apprend-le correctement et ne fait pas trop d'analogie avec le Java qui, il ne faut pas l'oublier, est à la base un langage pour émuler une machine qui n'a jamais existé.

Sinon je suis d'accord que Xcode devrait encore évoluer dans son intelligence, mais ça viendra.

avatar Aescleah | 

Je dois avoir du bol. Avec une utilisation quotidienne plutôt intensive, je n'ai jamais eu le moindre problème avec Xcode 4.
Une fois simplement, avec la MAJ 10.7.3 de Lion il ne cessait de m'avertir qu'une icône était manquante au moment de l'archivage (alors qu'elle était bien là), problème résolu en installant Application Loader (même si c'est pas grand chose, on ne devrait pas avoir à faire ce genre de truc, ceci dit).

avatar boulifb | 

fini le printf("Hello world!").
Va falloir 20,000 lignes de code pour afficher "Hello world"... La classe hein?

avatar Thuf | 

@oonu
[quote].Pour le Desktop java, rien de plus simple et efficace que Netbeans

IntelliJ IDEA est incomparable.
http://www.jetbrains.com/idea/

avatar oonu | 

@ boulifb
Ecrire NSLog sur 20 000 lignes, il faut pas être très doué...
Mais je pense meme pas que tu sais de quoi tu parles ;-)

avatar Lemmings | 

On peut ajouter la lourdeur de XCode 4 comparé au 3. Et l'obligation pour le développeur à avancer en version car Apple n'accepte plus les applications compilées sous Snow Leopard avec XCode 3...

avatar Lemmings | 

Concernant la structure de l'Objective-C, je rejoins les réponses données, venant de langages plus "simples", l'Objective-C parait assez abscons dans un premier temps. Puis on apprends à intégrer sa logique.

L'usage des [] par exemple est certes un peu lourd à relire mais permet d’enchaîner les méthodes sur une seule ligne sans avoir à utiliser de variables intermédiaires. Un sacré confort au final ! Qui reprends en grande partie l'idée du "pipe" unix.

Pareil pour les @ devant les NSString, il ne faut pas oublier que Objective-C est une surcouche de C. Dès lors, une chaîne de caractères de type C classique s'écrira sans l'@. Ce dernier permettant de voir qu'il s'agit d'une chaîne de type NSString et donc d'un objet. C'est logique finalement.

Et cela permet surtout d'intégrer du code C directement dans son code applicatif ! Ce qui parfois rends bien des services !

avatar oomu | 

Erf... Eclipse... nom d'un chien...

mais voir le marasme ailleurs ne change pas qu'Apple a besoin de passer + de temps sur Xcode.

Xcode a évolué trop vite, au rythme de ios. faut qu'Apple passe du temps à le rendre solide.

-
Quand à Objective C , ses énormes qualités ne font plus un doute pour moi.

Mais dire "20 000" lignes pour un NSLog ?!! non mais ça va pas ? et sous java c'est mettre en place JBOSS, écrire un servlent/bean pour juste un io.console.printf O_o

ce sont des frameworks applicatifs évolués. NSlog c'est COCOA, pour faire des Pages, iMovie, etc. (et puis NSLog... l'exemple basique...)

sinon, objective C, c'est du C, main() { printf(... est évidemment valide.

sigh....

Demain, cours de Cobol !

avatar boulifb | 

@ oonu:
J'ai 20 ans d'expérience en tant que professionnel dans le développent en C/C++ et toutes les saletés et autres ersatz qui tournent autour... Je sais donc de quoi je parle.
Et je plaisantais bien sur.

avatar jean_claude_duss | 

encore un truc qui me soule à l'instant : un projet avec 4 Target... il est pas foutu de me cocher la case de la targette sur laquelle je bosse depuis 2 mois... à chaque ajout de ressource il me coche celle de mon premier projet...

avatar xDave | 

Docteur SDKill et Mister IDE

avatar Ganzolo | 

Critiquer Xcode je veux bien, et j'y prends part volontiers. Mais critiquer l'objective-C...
Dieu merci, ce n'est pas du JAVA!!!

Faut savoir de quoi on parle avant de balancer des énormités sinon il faut rester aux VB, PHP, JAVA...

avatar rei_vilo | 

Sans oublier l'absence de documentation sur la partie interne d'Xcode : comment ajouter un compilateur — [i]tool-chain[/i] ? comment écrire un modèle — [i]template[/i] ?

Je rencontre les pires difficultés pour utiliser Xcode avec Arduino — voir http://sg.sg/s4uASG

avatar codeX | 

[quote]Ce qui est rigolo c'est qu'une partie des développeurs de Netbeans se sont vu remercier par Oracle et travaillent désormais pour Google sur Eclipse/ADT.[/quote]
Alors, peut-être qu'un jour, Eclipse arrivera à la hauteur de NetBeans. En attendant .....

avatar iQuest | 

Juste pour information, peut-on comparer grossièrement Cocoa et .Net ? Je n'y connais rien en prog, suis simplement curieux de l'évolution de ces 2 languages. (No war please)

@ Lonesome Boy
Non, je n'ai pas éditer mon message, mais j'aurais bin pus faire cette erreur ;-P

avatar Lonesome Boy | 

@ iQuest

.Net n'est pas un langage, c'est un framework.

avatar Lonesome Boy | 

Oops, j'avais mal lu, je pensais que tu voulais comparer Obj-C et .Net. Ou alors j'avais bien lu et tu as édité ton message ;)

avatar niko34 | 

Cocoa n'est pas un langage non plus

avatar bigham | 

@ iQuest "Je n'y connais rien en prog, suis simplement curieux de l'évolution de ces 2 languages."

Précision : ce ne sont pas des langages mais des frameworks.

Sinon, il y a/avait un blog fait par une personne qui utilisait C#/.Net et qui racontait son passage à Objective-C. Je ne retrouve pas le lien actuellement.

avatar Lonesome Boy | 

@ niko34

Oui et?

avatar tleveque | 

À tout ceux qui ont répondu à mes critiques, merci.
Sauf @Ganzolo. Franchement! Mettre Java dans la même liste que VB et PHP!!! Là, il ne faut vraiment rien connaître!!

Pour les autres, je tiens à dire que je fait du Java depuis 15 ans et que j'ai déjà fait du C et du C++ avant et que je connais tout les principes dont vous parlez. Pointeur, messages, properties, ect...

Je persiste par contre à dire, que lorsqu'on vient d'un language bien typé et protégé comme java, l'objetive-c semble bien compliqué pour rien. Je me dis que si l’interpréteur Java sait faire la différence entre une property et une méthode quand on utilise la notation par point, l'objective-c devrait être capable d'en faire autant. Et pour ce qui ai de chaîner les appels, c'est encore beaucoup plus clair avec les points! ex: instance1.methode1().methode2(param1).methode3().methodexyz(pamam1, param2). Faites donc la même chose en objective-c? Vous allez avoir toute une collection de []! Complètement illisible!
Même chose avec les pointeurs. Dans 95% des cas, quand on développe une application iOS, nos variables (ou properties) sont des pointeurs...

Apple se plaisent à nous proposer des produits toujours plus simple, toujours plus épurés. Pour qu'on se concentre sur l'essentiel, soit notre tache à accomplir.
Alors pourquoi ne pas faire de même avec le développement?
Qu'ils proposent donc un autre superset d'objective-c. L'iObjective-c!
Un language et une api épuré de C et de C++, avec une syntaxe épurée. Qui nous laisse nous concentrer sur notre vrai code, sur notre travail et sur nos interfaces sans avoir à se concentrer sur la syntaxe. Java et C# le font, pourquoi pas objective-c?

Avant de dire des conneries sur Java, n'oubliez pas que le Java fonctionnent dans une jvm avec du bytecode pour la simple raison d'être multi-plateforme. Aucun lien avec la syntaxe. Le C# produit du code natif (ok presque natif... le framework .net doit être là) et est pourtant aussi simple que le Java...

avatar bigham | 

@ tleveque

La différence entre '.' et "[]" est 1 caractère. Sacré challenge.

Pour la lisibilité, je ne vois pas bien le souci :

- il est tout de même assez rare d'empiler les appels de méthodes sauf à aimer gérer les exceptions (ce qui n'est pas l'habitude en Obj-C/Cocoa)

- les prototypes des méthodes Obj-C sont généralement plus lisible que leur équivalent C, Java du fait de l'association directe mot-clé / paramètre.

Pour la gestion des '.' en Obj-C, c'est une nouveauté qui plait à certains et pas à d'autres. Même chez Apple, certains ont des doutes sur le fait que cela ait été une bonne idée.

Sinon, je crains qu'avec ce qui est annoncé pour Mountain Lion si on en croit les posts twitter, il va falloir que tu achètes de l'aspirine et des mouchoirs.

Pages

CONNEXION UTILISATEUR