Brad Cox, l’inventeur du langage Objective-C, est mort

Nicolas Furno |

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.

Brad Cox lors d’une interview en 2016 pour le Computer History Musem (capture d’écran vidéo).

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.

Quelques lignes d’Objective-C dans Xcode.

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

avatar oomu | 

j'aime toujours autant les idées derrière objective-C et sa syntaxe.

avatar flux_capacitor | 

@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.

avatar vince29 | 

Sa syntaxe ? Bizarre ! Généralement c'est cité comme un défaut.

avatar wataru | 

@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.

avatar YetOneOtherGit | 

@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 😉

avatar wataru | 

@YetOneOtherGit

entre temps sa syntaxe reste affreuse.

avatar YetOneOtherGit | 

@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 🙄🙄🙄

avatar wataru | 

@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 !

avatar YetOneOtherGit | 

@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 » 😂

avatar oomu | 

@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.

avatar BeePotato | 

@ 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.

avatar YetOneOtherGit | 

@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 🥳😂

avatar Nicolas Furno | 

@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.

avatar raoolito | 

@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)

avatar Nicolas Furno | 

@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é.

avatar raoolito | 

@nicolasf

et donc je parie qu’il y a autant de raisons objectives que subjectives d’utiliser tel ou tel langage ?

avatar YetOneOtherGit | 

@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.

avatar occam | 

@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.

avatar YetOneOtherGit | 

@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 😜

avatar YetOneOtherGit | 

@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)

😀

avatar Nicolas Furno | 

@YetOneOtherGit

Certes. 🙂

avatar YetOneOtherGit | 

@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 😉

avatar raoolito | 

@YetOneOtherGit

«  C++ 20 » ?

pardon ?

avatar YetOneOtherGit | 

@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 😋

avatar raoolito | 

@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 ?

avatar YetOneOtherGit | 

@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)

avatar raoolito | 

@YetOneOtherGit

bon ben voilà encore une serie de trucs appris aujourd’hui :)
merci !

avatar Rez2a | 

@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.

avatar vince29 | 

Tu peux choisir d'être verbeux dans n'importe quel langage.

avatar BeePotato | 

@ 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.

avatar YetOneOtherGit | 

@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 😋

avatar 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 ;-)

avatar BeePotato | 

@ 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.

avatar YetOneOtherGit | 

@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 😎

avatar YetOneOtherGit | 

../..

avatar YetOneOtherGit | 

@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? 🥰

avatar oomu | 

@YetOneOtherGit

quand étudiant, oui. mais ça remonte à loin.

avatar vince29 | 

Du coup, c'est pas plus les concepts de SmallTalk que tu apprécies ?

avatar oomu | 

"Du coup, c'est pas plus les concepts de SmallTalk que tu apprécies ?"

non. je pensais aussi explicitement à la syntaxe de objc

avatar kiddsoso | 

@oomu

Quelle horreur !! Vive le Swift !

avatar android3665 | 

Au delà du language qu'il a créer c'était un être relativement bon

Que la terre lui soit légère

avatar YetOneOtherGit | 

@android3665

"Au delà du language qu'il a créer c'était un être relativement bon "

Tu l’as connu ?

avatar trouaz | 

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.

avatar Memnock | 

Merci pour le lien de la nécrologie!! Super intéressant!!

avatar Tibimac | 

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)}`

avatar JLG47_old | 

Il faudra un jour construir un panthéon pour les pionniers de l’informatique.

avatar YetOneOtherGit | 

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 😉

avatar oomu | 

@YetOneOtherGit

intéressante anecdote. Peut être que cela m'aidera à faire mon deuil de la popularité de C++... ;)

avatar YetOneOtherGit | 

@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 😜😉

avatar DahuLArthropode | 

@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

CONNEXION UTILISATEUR