Brad Cox, l’inventeur du langage Objective-C, est mort
Brad Cox est mort en début d’année à l’âge de 77 ans. Ce nom ne vous dit peut-être rien, mais vous aurez peut-être entendu parler de l’invention qui l’a rendu célèbre : Objective-C, le langage de développement d’Apple. Même s’il a désormais un successeur avec Swift, Objective-C reste massivement utilisé par Apple et tous les développeurs d’apps pour macOS et iOS, une quarantaine d’années après sa création.
Contrairement à ce que l’on pourrait imaginer, Brad Cox n’était pas un employé d’Apple et Objective-C n’est pas né à Cupertino. Le langage a vu le jour au début des années 1980, avec l’idée de s’inspirer de Smalltalk sur une base de C, le langage de développement phare à l’époque. Smalltalk est l’une des inventions de Xerox PARC, le fameux centre de recherche qui a imaginé tant de nouveautés, dont l’interface graphique qui a inspiré le premier Macintosh. Ce langage de développement objet a servi de base à de multiples langages modernes, de Java à Python, en passant par PHP et Ruby.
Objective-C a repris ses concepts et les a appliqués sur une base de C, utilisé par ITT Corporation qui employait Brad Cox à l’époque. Par la suite, il a fondé une entreprise nommée Stepstone avec Tom Love et ils utilisaient Objective-C également pour coder des apps pour leurs clients, parmi lesquels NeXT qui l’a utilisé pour coder NeXTSTEP sorti à la fin des années 1980. En avril 1995, plus de dix ans après les débuts du langage, NeXT décide d'acheter la marque déposée et les droits sur le langage de développement. Quand Apple achète NeXT l’année suivante, Objective-C devient par la même occasion le langage de développement de prédilection de macOS et des apps codées pour macOS.
Brad J. Cox n’a pas été embauché par Apple suite à cette acquisition, son entreprise Stepstone a continué d’offrir des services liés à Objective-C jusqu’à sa disparition au début des années 2000. Pour en savoir plus sur son parcours et sa carrière, vous pouvez lire la nécrologie publiée lors de son enterrement et regarder l’entretien de deux heures et demi accordé au Computer History Musem
j'aime toujours autant les idées derrière objective-C et sa syntaxe.
@oomu
L'époque NeXT-OS X avec Steve Jobs et Avadis Tevanian aux manettes… nostalgie.
Mais je suis assez satisfait de la tournure des choses prises par Craig Federighi dernièrement.
Sa syntaxe ? Bizarre ! Généralement c'est cité comme un défaut.
@vince29
c’est vrai que c’est une horreur cette syntaxe. D’où ma grande préférence du Swift. Et le Swift sera parfait le jour où il y aura enfin le Async Await.
@wataru
"c’est vrai que c’est une horreur cette syntaxe."
“There are only two kinds of languages: the ones people complain about and the ones nobody uses.”
Bjarne Stroustrup 😉
@YetOneOtherGit
entre temps sa syntaxe reste affreuse.
@wataru
"entre temps sa syntaxe reste affreuse."
A ton goût personnel c’est un propos absolument subjectif certainement issu de tes habitudes et de ton parcours. 😎
Ce type de jugement à l’emporte-pièce péremptoire 🙄🙄🙄
@YetOneOtherGit
oui et non, il y a un consensus pour dire que sa syntaxe n’est pas fameuse. Après comme tu le dis c’est au goût de chacun évidement !
@wataru
"oui et non, il y a un consensus pour dire que sa syntaxe n’est pas fameuse."
Un consensus la belle affaire dans quel milieu avec quelle légitimité.
Et déjà tu,passe à « pas fameuse » 😂
@wataru
j'apprécie la syntaxe objectiveC parce qu'elle force à nommer dans le code source les arguments.
alors oui, c'est lourdingue (mais y a la complétion), mais c'est pratique pour moi pour me rappeler le sens des méthodes.
je ne crois pas au "consensus sur la syntaxe".
ObjectiveC n'a pas une syntaxe à la java/javascript, ce qui est assez étonnant pour toute une génération d'ingénieurs.
Après, Swift est une modernisation qui manquait à ObjC.
-
je n'adhère pas non plus au propos
"Tu peux choisir d'être verbeux dans n'importe quel langage."
bien sur qu'on peut commenter, suivre une méthodologie d'écriture de code, etc
mais j'apprécie comment ObjectiveC demandait d'écrire les appels au méthodes et divers autres détails.
@ wataru : « oui et non, il y a un consensus pour dire que sa syntaxe n’est pas fameuse. »
Non.
Il y a un paquet de gusses qui ont débarqué il y a quelques années avec l’idée de de faire quelques sous en développant des applications pour iOS et qui en lisant le nom « Objective C » ont sûrement cru qu’ils allaient se retrouver à utiliser une sorte de variante de C++. Choqués de découvrir qu’il pouvait y avoir une syntaxe différente de la seule qu’ils ont toujours connue dans leur C++/JS/C♯/Java, ils ont vociféré en expliquant que c’était une horreur au lieu de simplement essayer de l’utiliser.
Mais ça ne fait pas un consensus, loin de là. Juste des râleurs bruyants.
On trouve également plein de développeurs appréciant beaucoup cette syntaxe, depuis longtemps.
Je regrette juste le sabotage qu’a représenté l’ajout dans Objective-C 2 de la notation à base de point pour l’accès aux propriétés.
@BeePotato
"Mais ça ne fait pas un consensus, loin de là. Juste des râleurs bruyants.
On trouve également plein de développeurs appréciant beaucoup cette syntaxe, depuis longtemps.
"
D’où ma citation plus haut : dès qu’un langage est un tant soit peu utilisé les critique plus où moins légitimes pleuvent.
C’est quasiment un signe de bonne santé pour un langage que son niveau de détracteurs.
Perso sorti de FORTH c’est tout de la merde 🥳😂
@vince29
S'il y a bien un consensus sur le sujet, c'est que la syntaxe d'Objective-C ne laisse personne indifférent. Mais il y a des détracteurs et aussi des fans, ce n'est pas aussi simple.
@nicolasf
ya un truc qui me chiffonne, je ne suis pas codeur du coup je demande. Comment cela se fait qu’un langage ecrit il y a 40 ans soit encore massivement utilisé ?
apres la durée de vie des langages informatiques est peut-être différente de celle des matériels (en fait c’est meme certain)
@raoolito
Ben oui, on utilise toujours C qui date des années 1970. 🙂
L’âge des langages de développement ne dit pas grand chose de leur intérêt et popularité.
@nicolasf
et donc je parie qu’il y a autant de raisons objectives que subjectives d’utiliser tel ou tel langage ?
@raoolito
"et donc je parie qu’il y a autant de raisons objectives que subjectives d’utiliser tel ou tel langage ?"
Le choix d’un langage s’impose parfois car il n’y a pas de choix : le dev natif MacOS X ou iOS c’était pendant longtemps Objectif-C
Après le choix de l’ensemble des technologies misent en œuvre sur un projet est un arbitrage entre de très nombreux paramètres.
@YetOneOtherGit
"Le choix d’un langage s’impose parfois car il n’y a pas de choix"
À UCSD, on avait un dicton qui faisait partie du folklore, et que j’ai toujours trouvé assez subversif mais juste :
« An operating system is whatever was left out of the programming language. »
Ok, ça date, et c’est plutôt hardcore comme approche, mais ça change un peu de la vision de l’utilisateur benêt, gavé d’apps, et qui ne doit surtout pas toucher à rien de rien.
@occam
"Ok, ça date, et c’est plutôt hardcore comme approche, mais ça change un peu de la vision de l’utilisateur benêt, gavé d’apps, et qui ne doit surtout pas toucher à rien de rien."
Toi es moi avons sans doute connu les générations ayant vécues sans OS ou avec des OS croupions 😜
@nicolasf
"Ben oui, on utilise toujours C qui date des années 1970. 🙂"
Un truc terriblement moderne 😉
Le premier des langages de haut niveau qu’est le vénérable Fortran du grand John Backus est toujours en usage. (1954)
COBOL porté par l’équipe de Grace Hopper est toujours derrière une part très conséquente des transactions financière, par exemple (1959)
Lisp du grand McCarty et ses variante est toujours en usage (1956)
😀
@YetOneOtherGit
Certes. 🙂
@raoolito
"apres la durée de vie des langages informatiques est peut-être différente de celle des matériels (en fait c’est meme certain)"
Absolument ne serait-ce que pour des raison de base installer de code.
On évite de tout recommencer à zéro.
Après les langage évolue dans le temps C++ 20 est fort différent de sa version originale par exemple 😉
@YetOneOtherGit
« C++ 20 » ?
pardon ?
@raoolito
"pardon ?"
C++ est un langage aujourd’hui normalisé, C++ 20 est la dernière évolution validée de la norme.
https://en.wikipedia.org/wiki/C%2B%2B20
Avec un lot conséquent de nouveautés 😋
@YetOneOtherGit
ok je crois que ca rentre. mais du coup c compatible avec le C++ V1 mais si on met quelque part un tag disant qu’on est en version 20 alors on peut utiliser les nouvelles fonctions?
en gros ?
@raoolito
Il y a eu au fil du temps des dépréciations mais en général les compilateurs savent s’en sortir avec du code hérité au pire avec quelques flag bien choisis (Les flags sont des moyens de donner des informations à une commande)
@YetOneOtherGit
bon ben voilà encore une serie de trucs appris aujourd’hui :)
merci !
@vince29
Le seul vrai problème « objectif » de la syntaxe d’Objective-C pour moi c’est ce qui a trait aux lambdas (les « blocks »), c’était proprement imbuvable.
Par contre la verbosité des noms de méthodes et des paramètres qui faisait qu’un code pouvait se comprendre tout seul sans avoir besoin de lire la doc... miam miam.
Tu peux choisir d'être verbeux dans n'importe quel langage.
@ vince29 : « Tu peux choisir d'être verbeux dans n'importe quel langage. »
Non.
Tu peux certes ajouter du bruit dans n’importe quel langage, mais faire figurer une information utile telle que l’étiquetage des paramètres n’est possible que si le langage le permet (comme Objective C).
Lire quelques appels en C++ ou Java de fonctions avec plusieurs paramètres de même type (mais au sens différent) convainc vite de l’intérêt de cet étiquetage. Encore plus si quelques uns des paramètres ont une valeur par défaut.
Et bien sûr, si on va plus loin que la syntaxe et qu’on s’intéresse au mécanisme d’envoi de messages, qui permet une implémentation si simple et pratique des délégués ou du chaînage des répondeurs, on comprend pourquoi c’est un réel plaisir d’utiliser, pour du développement d’applications (cette précision est importante), Objective C plutôt que C++ ou Java.
@BeePotato
"Et bien sûr, si on va plus loin que la syntaxe et qu’on s’intéresse au mécanisme d’envoi de messages"
Un des beaux héritage de Smalltalk 😋
@Rez2a
"Par contre la verbosité des noms de méthodes et des paramètres qui faisait qu’un code pouvait se comprendre tout seul sans avoir besoin de lire la doc... miam miam."
Ça ce n’est pas le fait du langage ;-)
@ YetOneOtherGit : « @Rez2a "Par contre la verbosité des noms de méthodes et des paramètres qui faisait qu’un code pouvait se comprendre tout seul sans avoir besoin de lire la doc... miam miam."
Ça ce n’est pas le fait du langage ;-) »
En partie, si : c’est une des caractéristiques du langage qui a permis aux frameworks bâtis dessus d’adopter cette si efficace convention de nommage. Sans l’étiquetage des paramètres, les noms auraient pu être tout aussi longs mais ils auraient été énormément moins parlants.
Swift a heureusement repris cette caractéristique. Mais en abandonnant la syntaxe à base de crochets, il a introduit une dissymétrie entre le début du nom d’une fonction et le reste, ce qui rend la recherche d’un bon nom parfois plus difficile qu’en Objective C. M’enfin, rien d’insurmontable tout de même, et ça donne toujours un résultat plus lisible que du C++ ou du Java.
@BeePotato
"En partie, si : c’est une des caractéristiques du langage qui a permis aux frameworks bâtis dessus d’adopter cette si efficace convention de nommage. Sans l’étiquetage des paramètres, les noms auraient pu être tout aussi longs mais ils auraient été énormément moins parlants."
Nous sommes d’accord, je voulais simplement dire que ce n’est pas le langages qui impose cela 😉
Il le permet mais ne l’impose pas 😎
../..
@oomu
"j'aime toujours autant les idées derrière objective-C et sa syntaxe."
Tu es toi aussi passé par Smalltalk comme premier langage objet? 🥰
@YetOneOtherGit
quand étudiant, oui. mais ça remonte à loin.
Du coup, c'est pas plus les concepts de SmallTalk que tu apprécies ?
"Du coup, c'est pas plus les concepts de SmallTalk que tu apprécies ?"
non. je pensais aussi explicitement à la syntaxe de objc
@oomu
Quelle horreur !! Vive le Swift !
Au delà du language qu'il a créer c'était un être relativement bon
Que la terre lui soit légère
@android3665
"Au delà du language qu'il a créer c'était un être relativement bon "
Tu l’as connu ?
Que tous ceux qui trouvent la syntaxe d'Objective-C bizarre aillent faire un peu de metaprogrammation en utilisant des templates en C++ :)
La syntaxe d'Objective-C est plutôt limpide dans le genre. Ensuite on a fait mieux depuis, mais aussi bien pire.
Merci pour le lien de la nécrologie!! Super intéressant!!
En fait il avait 76 ans lors de son décès car il est né en mai 1944 et décédé en janvier 2021.
J'ai adoré l'Objective-C avec lequel j'ai débuté, aujourd'hui je préfère coder en Swift mais il y a toujours des choses dont je ne suis pas fan en Swift, comme la "magie" de la gestion de la mémoire qui fait perdre aux nouveaux l'intérêt de tout de même se pencher sur le sujet. La syntaxe des block en Objective-C en effet je n'ai jamais réussi à la mémoriser mais en Swift c'est plutôt les $0 que je trouve étrange même si je sais les lire.
Je pense que niveau lisibilité du code un compromis entre Swift et Objective-C serait bien. Objective-C c'est trop mais Swift c'est parfois pas assez, typiquement avec des enchainement du genre `compactMap{$0}.filter {$0 == x}.map{Bidule($0)}`
Il faudra un jour construir un panthéon pour les pionniers de l’informatique.
Dans la victoire de C++ face à Objectif-C qui aurait rejoint la masse des langages exotiques que personne n’utilise sans le concours de circonstances de l’adoption par NeXT, du rachat de NeXT par Apple et de l’explosion du marché des app iOS, beaucoup considèrent que le « The C++ Programming Language » de Bjarne chez Addison-Wesley ne fût pas pour rien.
Un ouvrage qui fut aussi impactant pour l’avenir de C++ que le fût le K&R en son temps 😉
@YetOneOtherGit
intéressante anecdote. Peut être que cela m'aidera à faire mon deuil de la popularité de C++... ;)
@oomu
C++ reste sans doute le langage avec lequel j’ai le plus produit, il a ses charmes et a évolué de façon intéressante.
Rends toi compte que C++ 20 permet enfin de créer des modules et de se débarrasser des headers 😜😉
@YetOneOtherGit
La succès du C++ devait aussi beaucoup à sa compatibilité avec le C « pur ». Certains devaient penser que s’ils compilaient leur code C avec un compilateur C++, il devenait orienté objet!
Quand j’ai donné des cours de C++, c’était une liste de pièges à éviter. C’était la pire usine à fuites mémoire que je connaisse. Objective C, que je n’ai jamais touché, me semblait beaucoup plus propre.
Mon langage préféré, c’était Eiffel. Aucun succès, hélas.
Pages