Question

Je programme en C, C ++, C # et quelques autres langages depuis de nombreuses années, principalement pour Windows et Linux, mais également pour les plates-formes intégrées. J'ai récemment commencé à faire de la programmation pour iPhone en tant que projet parallèle. J'utilise donc les plates-formes Apple pour la première fois depuis mes journées Apple II. Je me demande ce que pensent les autres développeurs qui utilisent Mac OSX, Xcode et le SDK pour iPhone. Voici mes impressions jusqu'à présent:

  • Mac OSX: très déroutant, j'ai tendance à me retrouver avec trop de fenêtres ouvertes et je ne sais pas où se trouve. Heureusement, la vue est à vol d'oiseau, sans cela, je serais perdu. Avec la coque au moins, il y a tout ce qui est familier, alors ça m'aide beaucoup.

  • Xcode: je ne me sens pas aussi bien que VisualStudio ou Eclipse, les deux environnements que je connais bien. Je pense que je pourrais m'y habituer, mais je me demande si Apple ne serait pas mieux avec Eclipse. Avant de trouver le décor où toutes les fenêtres sont collées, je le détestais, maintenant je peux le tolérer.

  • iPhone SDK: vraiment étrange. Je comprends le désir d’Apple de contrôler leur environnement, mais de nos jours, cela semble un peu louche et ils manquent tellement en détruisant la bonne volonté des développeurs.

  • Objective-C: Je le connais depuis des années mais je n'y ai même jamais jeté un coup d'oeil. La syntaxe est déroutante mais je suis vraiment très intriguée par le langage. Je pense que c’est une troisième étape intéressante entre C ++ et C #, que j’aime beaucoup. Obj-C a-t-il une chance de sortir du bac à sable Mac en raison de la popularité croissante de la technologie Apple?

Curieux de lire dans vos pensées,

Andrew

Était-ce utile?

La solution

Je suis dans le même bateau que vous (un peu). Je développe en C # depuis 7 ans, depuis .NET 1.0. Au cours des deux dernières semaines, je me suis enseigné le cacao et Objective-C. Voici mes impressions (note pour note avec la vôtre)

  • Convenu que cet encombrement peut être un problème. J'ai tendance à utiliser fortement les espaces lors du développement en Xcode (mettre Xcode dans un espace, Interface Builder dans un autre espace, Instruments dans un troisième espace). Si vous n'avez pas Leopard (et donc pas d'espaces), utilisez Command-H pour masquer votre fenêtre active. Utiliser cela a tendance à nettoyer un peu les choses (cependant, ce serait bien si vous pouviez commander-h automatiquement la fenêtre en cours lorsque vous passez une commande à une autre application).

  • Je préfère de plus en plus Xcode. Je déteste Visual Studio. Je le trouve instable, lent et bon, c'est un peu un IDE de merde. Comparativement, j'ai trouvé XCode rapide, stable et j'aime la façon dont il organise et filtre vos fichiers. Je ne connais pas très bien mes raccourcis XCode, mais j'espère qu'il est possible de passer rapidement d'une classe à une autre (similaire au raccourci ctrl + n dans ReSharper). Intellisense pourrait être meilleur en ce qui concerne son affichage à l'utilisateur, mais j'aime beaucoup la façon dont il crée un modèle et vous pouvez ctrl + / passer à l'argument suivant dans un message.

  • Je déteste la documentation en XCode. Le système d’aide est nul, et pour une raison quelconque, il ne trouve jamais ce que je cherche. Je finis par googler pour tout ce que j'ai besoin de savoir ... J'espère qu'ils améliorent la documentation. C'est mon plus gros boeuf en ce moment.

  • Pas tout à fait là, car je passe en revue le cadre complet de Cocoa pour les ordinateurs de bureau Mac. Jusqu'à présent, j'aime vraiment ce que je vois. Une chose que je dirai, c'est que ce serait bien si le SDK de l'iPhone permettait le ramassage des ordures ...

  • Objective-C - Je ne l'ai jamais utilisé, c'est ma première incursion dans ce domaine. Au début, la syntaxe et les crochets de la messagerie me laissaient un peu perplexe, mais cela prend de plus en plus de place pour moi. C'est tellement rapide de parcourir une méthode et de voir le message que cette méthode appelle. Plus je l'utilise, plus Objective-C se sent bien ... mais des modèles / génériques seraient un ajout bienvenu au langage.

Dans l’ensemble, mon incursion dans le développement Mac a été agréable et je suis impatient de commencer à travailler (aujourd’hui! yay!) sur certains projets Mac / iPhone actuels.

Autres conseils

Je suis d’accord avec vos sentiments. Venir des outils de développement Microsoft (et Eclipse) vers XCode est assez dur. XCode se sent juste… inachevé à certains égards. Il n’a certainement pas le vernis que j’attends de VS et d’Eclipse.

Le Kit de développement logiciel (SDK) est similaire. Il est en grande partie mal documenté et il existe de nombreuses failles dans lesquelles vous savez que quelque chose devrait être, mais ce n’est tout simplement pas le cas. Essayer de contrôler soigneusement la lecture de fichiers audio / vidéo en est un exemple.

Objective-C, cependant, est excellent. J'aime vraiment le langage, malgré ses bizarreries et ses idiosyncrasies (les messages à null ne constituent pas une exception d'exécution? Vraiment?). Une fois que vos yeux C ++ se sont habitués à la syntaxe, la messagerie anonyme mal typée finit par être vraiment chouette. avec (si un peu dangereux et enclin à RTE.)

Je souhaite vraiment commencer à développer des applications pour iPhone. J'ai fait un peu de développement sur Motorola, Blackberry et Windows Mobile, qui étaient tous cool et faciles à mettre en place avec une bonne documentation, un accès facile et l'installation de SDK. Jusqu'à présent, j'estime qu'Apple est un peu élitiste dans le fait qu'il semble que son environnement de développement ne soit disponible que sur un Mac. Je n'aime pas trop leurs concepts de licence. Si vous souhaitez être en mesure de publier des applications, vous devez les consulter, et ils ont le dernier mot à savoir si vous pouvez ou non ou si votre application est jugée acceptable pour fonctionner avec leur produit supérieur. Je pense qu'ils rendent plus difficile la maintenance et la production d'applications pour la communauté open source, ou que les néophites iPhone, comme moi, commencent même à écrire des applications pour les produits. Il y a beaucoup de mauvaises choses à dire à propos de Microsoft, mais, je dois dire qu'ils publient leurs API et leurs SDK bien avant que leurs produits ne soient commercialisés et encouragent vraiment les programmeurs de tous niveaux à se lancer et à s'impliquer dans la création d'applications pour leurs frameworks et leurs applications. systèmes d'exploitation.

J'ai travaillé sur quelques petites applications pour iPhone et je suis simplement étonné qu'elles n'incluent pas les composants de la structure qui permettent aux développeurs d'accéder facilement aux services Web SOAP. Quelqu'un d'autre travaillant dans un environnement informatique d'entreprise ressent-il la douleur?

Je pense personnellement que la documentation est très bonne à ce stade. Sur n'importe quelle classe Objective C, vous pouvez utiliser option doubleClick pour afficher la documentation relative à ce terme. S'il existe des exemples de projets utilisant cette classe particulière (du moins pour de nombreuses classes spécifiques à iPhone).

Essayez également d'activer l'Assistant de recherche au tout début de votre carrière et d'activer le Code Sense (ne pensez pas qu'il est activé par défaut). La combinaison de XCode + Interface Builder est assez puissante lorsque vous vous y habituez et, franchement, depuis quelques décennies, je n’ai jamais utilisé un meilleur constructeur d’interfaces pour ce qui est de la manière dont l’intégration au code fonctionne ou la possibilité de concevoir des interfaces qui redimensionnent intelligemment sans une tonne de travail supplémentaire.

Je suis nouveau dans la programmation iPhone et XCode également, après de nombreuses années de programmation pour de nombreuses plates-formes et mon impression est plutôt proche de la vôtre (avec quelques différences):

  • Mac OSX: Je suis passé de Windows il y a environ 2 ans (à titre expérimental) et je suis resté :) - Je ne pense pas que je reviendrai en arrière. Avoir une base Unix est très cool et j'adore l'interface graphique flashy + J'aime la simplicité de base de l'interface. Il m'a fallu environ 2 mois pour m'y habituer, mais je ne peux pas imaginer y retourner. Je déteste la disposition du clavier du MacBook et certaines limitations du clavier d’OSX. C'est drôle de voir comment une entreprise si fière de ses intuitions en matière de convivialité peut prendre un ensemble de décisions aussi moche. Les meilleurs exemples ne sont peut-être pas les raccourcis clavier dans le menu contextuel (clic droit) et le fait qu'il vous faut deux touches pour accomplir des tâches telles que Domicile, Fin, PgUp, etc. Mon principal conseil est de passer le temps à apprendre autant de claviers raccourcis possibles. Je recommande également d'installer & amp; En utilisant les applications tierces suivantes qui ont considérablement amélioré mon expérience Mac: Quicksilver , Recherche de chemin , 1Password , Things , TextMate , Gestionnaire de texte & amp; Transmettre .

  • Xcode: Je suis tout à fait d’accord avec vous. Je pense que XCode est plutôt primitif . Je compare cela avec IntelliJ IDEA avec lequel je travaille beaucoup et j'ai l'impression qu'Apple est bloqué depuis au moins 7 ans:

    • La navigation dans le code est si primitive avec trop de fenêtres rebondissant
    • vous devez utiliser la souris tout le temps
    • les modèles sont très limités et sont basés sur des concepts macro naïfs sans relation avec le contexte ou la portée
    • la refactorisation est limitée à quelques actions simples
    • vous ne pouvez même pas facilement accomplir des tâches triviales comme redéfinir une méthode
    • Code Sense est bien, mais aurait pu être bien meilleur s'il comprenait taper ...

    La grande ironie est que les développeurs Mac sérieux ne comprennent même pas qu’ils ont un problème ... Ils sont tellement habitués au désordre qu’ils doivent gérer qu’ils ne peuvent imaginer un monde meilleur ... Au lieu de vous aider, XCode continue de vous gêner. Je peux donner des dizaines d'exemples sur la façon dont cet environnement est nul, comparé aux environnements de développement Java modernes (Eclipse, IntelliJ), mais je pense que c'est une perte de temps - il semble qu'Apple soit trop fier pour apprendre les autres ... ce qui C’est drôle si vous considérez le fait que les inventeurs de Java n’ont pas hésité à apprendre d'Objective-C . Mon seul conseil (à moi aussi) est de prendre une profonde respiration chaque fois que vous ouvrez XCode et apprenez le plus possible des experts qui sont plus habitués à cet environnement.

  • Kit de développement logiciel (SDK) pour iPhone: c'est encore pire - nous avons envisagé de porter notre application mobile sur l'iPhone il y a quelques mois, mais nous avons décidé de ne pas nous déranger car nous craignions qu'Apple ne le repousse à partir de l'App Store et vous ne pouvez pas le savoir à l'avance (ils ont a rejeté une application quelque peu similaire dans le passé au motif qu'elle était trop proche d'iTunes!)

  • Obj-C: Objective-C me semble plutôt sympathique et après quelques jours, vous vous êtes habitué à la syntaxe de messagerie inconfortable, mais il me manque la récupération des ordures ... Je dois gérer des allocations de mémoire et des versions un peu comme revenir dans le passé à mes débuts en C / C ++. Je commence tout juste à apprendre les nuances de cette langue, mais jusqu'à présent, j'aime ce que j'ai trouvé. Il existe de nombreux conseils disséminés sur le Web concernant les meilleures pratiques Obj-C que vous ne pouvez pas trouver dans les documents officiels et j'ai beaucoup appris d'eux (voir par exemple la discussion suivante ici sur stackoverflow )

Je viens aussi d’un milieu C # et je travaille avec le SDK pour iPhone depuis la version bêta 2. Je suis tout à fait d’accord avec Cranley pour dire que VS est un peu maladroit par rapport à Xcode. Xcode est WAY différent et totalement étranger lorsque vous commencez à l'utiliser. Ainsi était VS bien en arrière dans la journée. Une fois la courbe d'apprentissage acquise, l'expérience est merveilleuse. Les applications que je développe utilisent le côté serveur C # (service Web) et je déteste absolument devoir passer à VS pour écrire le code de service Web à partir de Xcode. Obj-C est également très amusant à utiliser une fois que vous avez appris comment il fonctionne le mieux: délégués (très différents des délégués .NET), messages, Catégories et autres curiosités présentes.

J'ai déjà programmé Java et Flex avant .NET et j'ai toujours détesté les documents .NET par rapport aux documents Java. Ils ne le coupent tout simplement pas. J'ai personnellement trouvé que la documentation et le système de recherche Xcodes étaient tout simplement incroyables. Il existe d'innombrables guides PDF liés à la documentation qui contiennent des tonnes d'exemples de code. Pensez-y: le SDK de l’iPhone n’est plus en version bêta depuis environ 2 mois. Les documents montrent un niveau de maturité de plusieurs années. Et oui, c’est parce que Obj-C existe depuis plus d’un an et que les cadres sont similaires.

Dans l’ensemble, le plus gros problème que j’ai constaté est qu’il ya BEAUCOUP de développeurs .NET qui sautent dans le train iPhone et essaient d’utiliser Obj-C comme s’il s’agissait de C # ou de VB. Ils ne parviennent pas à lire les documents de base Obj-C, sans parler des documents pour iPhone, puis ils deviennent très frustrés et finissent par échouer. Les forums de discussion sont pleins de ce scénario. La programmation iPhone n'est pas facile. Apprendre une nouvelle langue n'est pas facile. Cela prend du temps et beaucoup de try.fail.try. Ce n'est pas .NET, alors perdez cet état d'esprit avant même de commencer et les choses seront merveilleuses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top