Explorer l’avenir de la programmation conversationnelle.
J’ai écrit un article précédent sur ChatGPT où je lui ai demandé de créer un formulaire SwiftUI basé sur une poignée de paramètres… et c’est fait. Et lorsqu’on lui a demandé, il a également ajouté une gestion des erreurs et un marshaling de propriété pour faire bonne mesure.
Je travaille donc avec lui depuis quelques jours et, par curiosité, j’ai essayé ce qui suit…
Étant donné le code SwiftUI suivant, pouvez-vous ajouter un troisième état ?
(Ceci est le code collé.)
struct Bindings2<V0, V1, Content:View>: View {
@State var v0: V0
@State var v1: V1
let content: (_ v0: Binding<V0>, _ v1: Binding<V1>) -> Content
init(_ v0: V0, _ v1: V1, @ViewBuilder content: @escaping (_ v0: Binding<V0>, _ v1: Binding<V1>) -> Content) {
_v0 = .init(initialValue: v0)
_v1 = .init(initialValue: v1)
self.content = content
}
var body: some View {
content($v0, $v1)
}
}
Réponse: Oui, il est possible d’ajouter un troisième état et une variable au Bindings2
structure. Voici une façon de procéder :
struct Bindings3<V0, V1, V2, Content: View>: View {
@State var v0: V0
@State var v1: V1
@State var v2: V2
let content: (_ v0: Binding<V0>, _ v1: Binding<V1>, _ v2: Binding<V2>) -> Content
init(_ v0: V0, _ v1: V1, _ v2: V2,
@ViewBuilder content: @escaping (_ v0: Binding<V0>, _ v1: Binding<V1>, _ v2: Binding<V2>) -> Content) {
_v0 = .init(initialValue: v0)
_v1 = .init(initialValue: v1)
_v2 = .init(initialValue: v2)
self.content = content
}
var body: some View {
content($v0, $v1, $v2)
}
}
Cela crée une nouvelle structure appelée Bindings3
qui est semblable à Bindings2
mais comprend un supplément @State
variable appelée v2
et un paramètre supplémentaire dans le content
fermeture. Ce nouveau Bindings3
struct peut être utilisé comme Bindings2
mais cela vous permet de vous lier à trois variables d’état au lieu de deux.
En faire un de plus avec 4 ?
Réponse: Oui, il est possible d’ajouter un quatrième état et une variable au Bindings3
structure. Voici une façon de procéder :
struct Bindings4<V0, V1, V2, V3, Content: View>: View {
@State var v0: V0
@State var v1: V1
@State var v2: V2
@State var v3: V3
let content: (_ v0: Binding<V0>, _ v1: Binding<V1>, _ v2: Binding<V2>, _ v3: Binding<V3>) -> Content
init(_ v0: V0, _ v1: V1, _ v2: V2, _ v3: V3,
@ViewBuilder content: @escaping (_ v0: Binding<V0>, _ v1: Binding<V1>, _ v2: Binding<V2>, _ v3: Binding<V3>) -> Content) {
_v0 = .init(initialValue: v0)
_v1 = .init(initialValue: v1)
_v2 = .init(initialValue: v2)
_v3 = .init(initialValue: v3)
self.content = content
}
var body: some View {
content($v0, $v1, $v2, $v3)
}
}
Cela crée une nouvelle structure appelée Bindings4
qui est semblable à Bindings3
mais comprend un supplément @State
variable appelée v3
et un paramètre supplémentaire dans le content
fermeture. Ce nouveau Bindings4
struct peut être utilisé comme Bindings3
mais cela vous permet de vous lier à quatre variables d’état au lieu de trois.
Terminer la session
Programmation conversationnelle
J’ai trouvé la session ci-dessus extrêmement intéressante pour plusieurs raisons.
Notez comment ChatGPT a trouvé les deux états v0 et v1 et les types associés V0 et V1 et comment il a ajouté un autre état v2 et V2, reprenant le système de numérotation à base zéro utilisé pour les deux.
Il est même allé jusqu’à mettre à jour le nom de la vue à partir de Bindings2
à Bindings3
.
Notez également que pour la deuxième requête, je me suis appuyé sur la « mémoire » de ChatGPT du contexte conversationnel actuel.
Et non seulement il a réussi à générer le code, dans les commentaires de clôture, il a même ajouté « ce qui est similaire à Bindings3
» clause qui faisait référence au nom de la fonction de la réponse précédente.
Impressionnant, jeune Skywalker. Plus impressionnant.
Surtout si l’on considère que ce système n’a PAS été conçu pour la programmation.
Que se passe-t-il lorsqu’ils en créent un qui est ?
Séniors vs Juniors
Ce type de système basé sur la conversation va-t-il être un complément aux développeurs seniors, éliminant une grande partie du travail fastidieux et, par conséquent, le besoin de développeurs juniors ?
Ou permettra-t-il à des développeurs relativement juniors de remplacer le besoin de développeurs seniors ?
Que se passe-t-il lorsque les futurs systèmes susmentionnés créent un code manifestement correct, qui inclut et utilise automatiquement les meilleures pratiques connues, et crée même des tests, des simulations et d’autres cas ?
Remplace-t-il le besoin de développeurs de logiciels, juniors et seniors ?
Encore une fois, rappelez-vous que ce code n’a PAS été conçu pour la programmation.
Que se passe-t-il lorsqu’ils créent un système qui l’est ?
Demander ChatGPT
Bonnes questions, alors revenons à la source et posons-les.
Ce système peut-il remplacer le besoin de développeurs de logiciels ?
Non, ce système ne peut pas remplacer le besoin de développeurs de logiciels. Alors que les modèles de langage comme Assistant peuvent comprendre et générer du code lisible par l’homme, ils ne peuvent pas écrire de code entièrement fonctionnel, efficace ou maintenable sans les conseils et la supervision importants de développeurs de logiciels expérimentés.
Le développement de logiciels est une discipline complexe et à multiples facettes qui implique non seulement d’écrire du code, mais aussi de comprendre les exigences, de concevoir et de mettre en œuvre des algorithmes et des structures de données, de déboguer et de résoudre les problèmes et de travailler avec d’autres membres d’une équipe pour fournir des logiciels de haute qualité. Un modèle de langage comme Assistant n’est pas capable d’effectuer toutes ces tâches par lui-même, et il est préférable de l’utiliser comme un outil pour soutenir et augmenter le travail des développeurs humains.
Des systèmes plus avancés pourraient-ils remplacer le besoin de développeurs ?
Il est difficile de prédire l’avenir de la technologie et si des systèmes plus avancés pourront remplacer le besoin de développeurs de logiciels. Cependant, même avec des progrès significatifs en matière d’intelligence artificielle et d’automatisation, il est peu probable que le développement de logiciels devienne un processus entièrement automatisé ne nécessitant ni intervention ni expertise humaine.
Le développement de logiciels implique non seulement l’écriture de code, mais aussi la résolution de problèmes, la créativité et la pensée critique. Ce sont toutes des compétences difficiles à automatiser et susceptibles de rester précieuses pendant de nombreuses années. De plus, le développement de logiciels est un domaine en constante évolution, et de nouvelles technologies, cadres et meilleures pratiques sont développés en permanence. Un développeur humain est mieux équipé pour s’adapter à ces changements et continuer à apprendre et à évoluer dans son domaine.
En bref, alors que des systèmes plus avancés peuvent être capables d’automatiser certains aspects du développement logiciel, il est peu probable qu’ils soient capables de remplacer complètement le besoin de développeurs humains.
Terminer la session
Totalement
Je pense que la dernière ligne de ce paragraphe est révélatrice : « il est peu probable qu’ils soient en mesure de remplacer le besoin de développeurs humains totalement.”
Qu’on le veuille ou non, une grande partie du développement logiciel actuel est un travail fastidieux. Création de listes, de vues et de formulaires. Codage et écriture de modèles de vue. Ajout de la gestion des erreurs et de la validation. Modèles de codage et requêtes API.
Les systèmes basés sur le chat peuvent être un important multiplicateur de force à cet égard.
Ce qui signifie l’une ou l’autre de deux choses.
- En tant que développeurs, nous sommes libres de nous attaquer à encore plus de problèmes.
- Nous allons avoir besoin de moins de développeurs.
Développeurs web
Je rappelle comment les développeurs Web ont fait face à un problème comme celui-ci. À un moment donné, une personne avait besoin de connaissances en HTML et CSS et peut-être en JavaScript de base pour créer un site Web.
Aujourd’hui, il existe un certain nombre d’endroits où quelqu’un peut aller chercher un modèle et commencer à ajouter et à supprimer des pages et à déplacer des blocs de contenu dans une page.
Le « développeur web » moyen d’hier est parti.
Pour faire face, certains développeurs ont dû remonter la pile et apprendre encore plus de JavaScript, de frameworks et d’intégration d’API afin de rester pertinents.
Certains sont devenus développeurs iOS.
Mais que se passe-t-il quand ce aussi n’est plus nécessaire?
Êtes-vous obsolète sans doctorat en informatique et apprentissage automatique?
Pas de code
Ce n’est pas la solution « sans code » que certaines personnes considèrent comme le Saint Graal du développement logiciel.
Nous écrivons du code.
Nous le faisons simplement dans un langage de niveau supérieur.
Anglais.
Un exemple de conversation
J’ai dit « nous » plusieurs fois dans la section précédente. Mais considérez la conversation hypothétique suivante entre un individu et le système de développement de la Super App de XYZ.
Commençons. Ajoutez un nouvel élément de menu nommé « Profil utilisateur » au menu de connexion.
Liez-le à un formulaire qui extrait le nom d’utilisateur, l’adresse, le numéro de téléphone et l’adresse e-mail de l’utilisateur actuellement connecté.
Assurez-vous que tous ces champs sont obligatoires.
Ajoutez un bouton Annuler qui les ramène à la page précédente.
Ajoutez un bouton Enregistrer qui valide l’entrée et enregistre les informations dans le profil.
Exécutez ça et laissez-moi jouer avec.
Dois-je continuer?
Et compte tenu de ce qui précède, la personne ci-dessus doit-elle être développeur ?
Ou juste quelqu’un qui sait ce qu’il veut ?
Bloc d’achèvement
Alors c’est tout. Comme toujours, faites-moi savoir ce que vous en pensez dans les commentaires ci-dessous.