En dépit de Swift, "les développeurs iOS ont toujours besoin de connaître Objective-C"

Stéphane Moussie |

Swift a été très bien accueilli par les développeurs, mais ce nouveau langage signe-t-il pour autant la mort de l'Objective-C ? Les débutants qui veulent créer leur première app pour iOS peuvent-ils apprendre exclusivement Swift ? Pour Aaron Hillegass, la réponse est claire, c'est non. « Les développeurs iOS ont besoin de connaître Objective-C », estime cette pointure qui a écrit plusieurs livres de référence sur la programmation iOS et OS X.

Son argumentation, partagée par notre développeur Nyx0uf, tient en trois points :

  • si vous voulez devenir un développeur iOS, vous aurez toujours besoin de connaître Objective-C
  • Objective-C est plus facile à apprendre que Swift
  • une fois que vous connaissez Objective-C, il sera plus facile d'apprendre Swift

Aaron Hillegass considère Swift comme « un grand pas en avant » pour l'écosystème d'Apple (il dit notamment beaucoup apprécier sa syntaxe), mais à l'heure actuelle ce langage ne permet pas de tout faire. Il prend l'exemple de l'intégration d'une bibliothèque de Code C++ dans une application. Swift peut appeler des fonctions codées en C, mais il est plus naturel dans ce cas précis de le faire en Objective-C.

Autre exemple, celui des frameworks. Ces ensembles de bibliothèques sont toujours écrits en Objective-C. Mieux vaut donc comprendre ce langage pour ne pas se retrouver face à du chinois quand le débogueur souligne un problème.

De manière plus générale, c'est tout le patrimoine de l'Objective-C (blogs, documentation, extraits de code partagés...) accumulé au fil des ans qui fait que la compréhension de ce langage est encore importante aujourd'hui.

Le deuxième argument, peut-être plus discutable, c'est que l'Objective-C est plus facile à apprendre que Swift. Aaron Hillegass, qui enseigne le développement, estime que le temps d'apprentissage du nouveau langage sera plus long que celui de l'Objective-C, en raison notamment de règles supplémentaires.

Par ailleurs, pour une fonction équivalente, le code écrit en Swift est bien moins long que celui en Objective-C. D'un côté c'est bien car le développeur a moins de code à taper, de l'autre côté la compréhension d'une ligne de code demande plus de contexte.

Code Objective-C :

#import <stdio.h>
#import <Foundation/Foundation.h>
 
int main(void)
{
    NSLog(@"Hello, world!\n");
    return 0;
}
Code Swift équivalent :
println("Hello, world!")

Enfin, Aaron Hillegass explique que les deux langages partagent beaucoup de points communs. Autrement dit, si vous connaissez déjà Objective-C, l'apprentissage de Swift ne devrait pas trop poser de problème. La réciproque est également valable, mais au vu des deux autres arguments exposés par Aaron Hillegass, on a bien compris par lequel il fallait commencer encore aujourd'hui.

avatar doogy | 

C'est vrai ce qu'il dit, mais c'est aussi par crainte que tout son travail et son apprentissage de l'Objective C soit rendu caduque à cause de Swift

avatar martinx | 

Hello. Des conseils pour débuter dans la programmation? Je suppose qu'il faut connaître le C. Merci pour vos conseils, ouvrages etc....

avatar Darth Philou (non vérifié) | 

@martinx :
Commence par http://code.org

avatar FreddyF | 

@martinx :
Pour appendre Objective-C, je te recommande les excellents livres du Big Nerd Ranch écrits justement par Aaron Hillegass. Pas besoin de connaissance préalable en C.

avatar denisbook | 

Le livre de Hillegass est génial sans aucun doute, il permet de mettre un pied à l'étrier, après je dirais qu'aucun livre ne remplacera jamais la curiosité ! et le meilleur outil pour se perfectionner reste google :-)

avatar FreddyF | 

@denisbook :
Oui, et ce site fabuleux qu'est StackOverflow aussi ! (Plateforme d'entraide pour developpeurs sur tous langages)

avatar béber1 | 

voir les réponses détaillées sur ce précédent fil
https://www.macg.co/logiciels/2014/06/quatre-ans-de-developpement-pour-s...

avatar C1rc3@0rc | 

@martinx

Python pour débuter
Swift pour OS X et iOS
ADA pour l'industrie aérospatiale et les agences de sécurité.
C++ pour l'industrie en général
Java pour le monde des serveurs et Android
C#/.Net pour Windows

Et dans tous les cas un clavier Qwerty.

avatar redchou | 

- Pour apprendre le Swift, il faut connaître l'Objectif-C, qui nécessite de connaître le fonctionnement de la pile et des pointeurs et pour comprendre ce fonctionnement, il faut connaître le C.
- Bref, l'accessibilité de Swift n'est pas. Le fonctionnement du playground est accessible, pas le langage...
(Swift is friendly to new developper)

avatar Darth Philou (non vérifié) | 

Je ne suis pas d'accord. Ce qu'il faut continuer d'apprendre, ce sont les APIs des frameworks.

Un nouvel arrivant sur iOS peut tout à faut démarrer par Swift sans passer par la case Objective-C. L'outillage XCode traduit notamment à la volée le code Objective-C en Swift lorsque l'on consulte la documentation ou que l'on navigue dans les headers, donc pas besoin de connaître la syntaxe d'Objective-C pour intégrer les frameworks ou le patrimoine existant.

L'argument de l'encapsulage de code C est vrai mais qui fait ça ? Une minorité.

avatar Mithrandir | 

Son argumentaire est complètement faux.

avatar samshit | 

J'adore :)

avatar FreddyF | 

J'admire Aaron mais son deuxième argument est discutable. Pour quelqu'un qui trempe depuis 25 ans dans l'objective-C, évidemment qu'un nouveau langage est plus compliqué. Mais honnêtement, ce n'est pas vrai...
La connaissance de l'obj-C est évidemment un plus, mais c'est surtout la rigueur de programmation qui est longue à acquérir.
A mon avis, plus le temps passera et moins on aura besoin de l'obj-C. De même qu'un développeur Obj-C aujourd'hui n'a plus besoin de connaître le C.

avatar loloeroket | 

Il n'a pas tord. Le plus grand obstacle c'est justement tout Cocoa est pour l'instant de l'Objective-C ce qui rend l'apprentissage du néophyte plus compliqué. Les premiers éléments de référence que fournit Apple ce sont des informations utiles pour les développeurs qui utilisent déjà XCode et Objective-C. Le livre sur Swift est très bien fait mais il ne fait pas référence à Cocoa du coup c'est impossible de commencer à développer sur Mac sans se mettre à Objective-C. Il y a bien un pdf qui explique de manière générique comment intégrer de l'Objective-C mais c'est assez limité.

Apple ne fournit aucun élément pour démarrer une app de rien en Swift. Aucune documentation Interface builder -> Swift. Donc toute la logique y est mais rien lié à l'interface graphique. Il est donc clair que la cible numéro un c'est bien sur le développeur actuel.

Je parie que dans un an, la situation se sera inversée. Et Swift v2 corrigera également les plus gros défauts de jeunesse de Swift.

avatar FreddyF | 

@loloeroket :
C'est tout à fait vrai, ce que tu dis.
Pour l'instant Swift s'adresse aux développeurs iOS et OSX existants.
Mais ça va sûrement changer lorsque l'on trouvera les premiers tutoriels en Swift.
Et Apple a mis à jour toute sa documentation en ligne sur UIKit en Swift. C'est très fort.

avatar loloeroket | 

@FreddyF

Il faut reconnaître que l'introduction de Swift et l'engouement qu'il génère est un véritable travail d'orfèvre.

avatar Darth Philou (non vérifié) | 

@loloeroket :
Je ne suis pas d'accord avec vous, cf mon commentaire.
En plus, vous vous trompez : quand on crée un nouveau projet, l'application par défaut est totalement en Swift et bien sur le lien avec Interface Builder tout à fait pris en charge, il n'y a aucun lien avec Objective-C.

avatar loloeroket | 

@Darth Philou

Vous avez totalement raison dans ce que vous dites mais ce n'était pas ce que je disais. Celui qui débute en Swift manque d'exemples pour implémenter des éléments simples. Un menu dans OSX, détourner le NSLog dans une variable, et lier tout ca. Alors que quand vous êtes bloqué sur Objective-C un coup de Google et on trouve tout ce qu'on veut.

avatar FrantzR | 

Merci pour cet échange de commentaires constructifs, ce n'est pas si fréquent, cela mérite d'être souligné ! ;)

avatar MacClub06 | 

Il aurait été bon de mettre face á l'article de Aaron Hillegass celui de Ash F. (http://ashfurrow.com/blog/objective-c-is-not-easy-to-learn).

Les deux sont des vétérans reconnus et respectés d'Objective-C et ont des avis divergents et intéressants sur l’intérêt d’Objective-C avec l'arrivée de Swift. Cependant en y regardant de plus près il ont probablement tout les deux raisons, mais chacun dans leur domaine.

Par contre, l'article de Aaron Hillegass me semble mieux construit, argumenté et le raisonnement mieux expliqué. Mais peut-être que cela vient aussi du fait que le monsieur est également un excellent pédagogue.

avatar PiRMeZuR | 

Je suis d'accord avec son idée, mais tous ses arguments sont bancaux ou faux (ou peut-être tronqués et mal traduits).

avatar fanchig | 

Salut à tous,

je suis un peu hors sujet, mais comme j'ai hâte de tester Swift ...
J'ai un compte developer (notamment via un compte ios dev universitaire), mais je ne peux pas télécharger xcode 6, ni le sdk ios8. Celui reste grisé par exemple dans le ios dev center.

C'est normal ?

Merci d'avance.

EDIT : -> oui, apparemment, c'est normal... on n'a pas accès aux versions beta quand on est universitaire ... c'est dommage ...

avatar Darth Philou (non vérifié) | 

@loloeroket :
Ah oui bien sur.
Mais je n'ai pas d'inquiétudes sur ce sujet, ça arrivera. Et ce serait dommage de ne pas se mettre à Swift tout de suite sur la seule base de cette faiblesse.
;-)

avatar loloeroket | 

@Darth Philou

Je n'ai pas dit le contraire. Ce Swift est promis à un très grand avenir. Sur le blog d'Aaron il y a un gars qui prédit l'arrêt d'Objective-C et migration obligatoire sous 2 ans. Sans doute un peu extrême. Mais d'ici 2 ans toute nouveauté sera faite en Swift.

avatar Darth Philou (non vérifié) | 

@loloeroket :
On est en phase.

Pages

CONNEXION UTILISATEUR