Java
C#
C++
Python
C
Pascal / Pascal Objet / Delphi / Lazarus
Langages fonctionnels (Ocaml, Haskell, Scheme, Erlang, F#...
Visual Basic .Net
Swift
Windev
Ruby
D
Perl
Objective-C
Go
Autres, merci de le préciser en commentaires
Pas d’avis
51 392 développeurs de 213 pays ont répondu au sondage annuel de Stack Overflow, la célèbre plateforme de questions-réponses dédiée à la programmation. Les résultats du questionnaire, répété depuis 2013, donnent une bonne photographie de l’évolution des intérêts des programmeurs et des tendances technologiques.
Popularité des langages
La question sur l’usage des technologies par les programmeurs révèle sans surprise que JavaScript est le langage de programmation le plus utilisé (par 62,5 % des développeurs). Cela est le cas depuis cinq ans maintenant. Et encore une fois, SQL prend la deuxième place, Java la troisième et C#, la quatrième. Le changement de cette année est Python qui, passant de 26 à 32 %, prend la cinquième place, précédemment occupée par PHP. Au chapitre des nouveautés, on note aussi l’émergence de TypeScript qui passe de la confidentialité l’année dernière à un respectable 9,5 % en 2017. L’usage de C++ et Ruby reste stable, et celui de C connaît une embellie.
Mon choix pourrait sembler vieillot pour certains... Mais le C reste et demeurera longtemps encore une valeur sûre. Et la première chose à dire est que ce n'est pas parce que ça fait un sacré petit bout de temps que le C est là qu'il faut pour autant le renier, parce qu'après tout, ça peut être pour une bonne raison...
Mais du reste, je pense qu'il faut toujours considérer les deux points de vue qui s'opposent inévitablement en informatique : d'une part le côté abstrait, ou disons conceptuel, et d'autre part le côté concret. On a beau avoir le plus beau des algorithmes, ça ne servira pas à grand-chose tant qu'on n'en écrira pas un programme dans un langage particulier, qui fonctionne sur un ordinateur particulier. Et ce n'est un secret pour personne que rendre les choses concrètes peuvent très vite devenir très... administratives Exemple tout à fait banal qui me vient à l'esprit : l'allocation dynamique de mémoire. C'est un mécanisme purement issu de l’ingénierie, en tout cas quand on s'en sert et non pas qu'on cherche à l'implémenter, et qui ne sert aucune cause conceptuelle ; mais il faut le faire parce que nos ordinateurs ont une mémoire réelle, avec un fonctionnement précis, et surtout une taille limitée.
Ainsi... On peut être tenté de favoriser l'un ou l'autre de ces deux aspects, servant tantôt l'un des propos, tantôt l'autre. On peut dire qu'il est préférable d'utiliser des langages abstraits, comme la plupart de ceux qui proposent de la programmation orientée objet, pour n'avoir à se concentrer que sur le vrai problème que le programme doit résoudre, pas sur des tâches d'allocation de ressources ou que sais-je encore. On peut également dire qu'il est préférable d'utiliser des langages moins abstraits comme le C, pour garder un contrôle pratiquement absolument sur le fonctionnement du programme, avec tout l'administratif que ça implique.
Un des principaux arguments contre le C est justement qu'il est trop peu abstrait, et ne fournit pas beaucoup de mécanismes de programmation ; en fait, il ne fournit guère que la fonction, concept terriblement puissant mais très vite assez lourd syntaxiquement. Mais... Comme exemple, prenons le C++ et son usage plutôt répandu dans le monde du jeu vidéo. Les jeux vidéos sont assez sensibles aux performances, et notamment pour ce qui est l'allocation de mémoire, par exemple. Il est presque illusoire d'utiliser le mécanisme de base d'allocation dynamique du C++ tout au long du jeu, et c'est pourquoi les développeurs finissent en général par le remplacer... se replongeant ainsi dans l'administratif tout autant que dans le C, mais avec la syntaxe complexe et alambiquée de C++.
De fait, je ne crois pas que l'administratif réduise la qualité de la portion "conceptuelle" d'un programme donné, ce n'est pas le plus intéressant, mais c'est en général assez facile à faire, et surtout, c'est très formateur. La conclusion doit donc être... Que ça dépend des cas, bien sur. Ça dépend des performances qu'on souhaite obtenir, du niveau de contrôle qu'on souhaite avoir ; ça dépend de tout, et le meilleur moyen de comprendre les différentes options à disposition reste encore d'en tester un certain nombre.
Je trouve que dans les cours d'informatique modernes, le C est trop facilement négligé, à un point même qu'il semble prendre une mauvaise réputation, alors que tout bon programmeur pourrait devenir excellent en utilisant et comprenant le C, et même l'assembleur sous-jacent. Il ne faut pas oublier par ailleurs que le C est un langage pour ainsi dire universel, très portable, qui a bénéficié de bien des années de raffinement... Et par ailleurs, il n'est pas nécessaire d'écrire toujours tout un programme avec uniquement un langage de programmation.
Finalement, c'est assez dommage que le C perde de la place dans la programmation moderne, et je doute qu'on puisse réellement comprendre l'informatique et les ordinateurs rien qu'en utilisant des langages de trop haut niveau.
On peut résumer ton message à
- la notion de générations, même si personne n'est d'accord Le C c'est un L1G (1GL en anglais), le Java un L3G (3GL en anglais) et le Python un L4G (4GL en anglais). Programming language generations (**)
- C'est l'accroche qui était rabâchée lors de la différence entre le C++ et le C++ moderne: "Le développeur doit se concentrer sur ce qu'il doit faire et non pas sur le comment faire"
** -> En réalité, le C c'est plus un L1.5G et le C++ un L2.7G
C'est la philosophie des 4-5 dernières années en France: un développeur c'est une ressource, la grande majorité des missions sont des clients légers, et le développeur n'a besoin que de connaître les langages et 2-3 trucs pour coder une application (<- philosophie: keyboard first)
Donc le langage C et d'autres aussi, ne sont pas en perte de vitesse: ce sont les langages Web (JavaScript, Python, Go, Ruby, ...) qui ont une adoption exponentiellement.
Et le langage C vivra toujours: va faire un driver en JavaScript ou en Python voire même en C++ moderne (<- troll)
En quoi un sondage sur un forum d'entreaide donne-t-il une "bonne photographie" ? Pour moi c'est plutôt une source de biais, au contraire. Quant aux 51 392 réponses, ça ne fait même pas 0,3 % des développeurs professionnels (estimés à 21 millions dans le monde), en supposant que les répondants soient effectivement tous des développeurs professionnels...
Pas vraiment une manière saine de récompenser l'initiative des différents modérateurs et/ou contributeurs
Bonjour,
Fou des codes depuis fort longtemps, aujourd'hui mon plus grand désir est de développer un réseau social à l'image de whatsapp... Je maîtrise les langages html css php... Je suis actuellement une formation de 2ans avec Objis qui est censé me rafraichir la mémoire sur ces langages en plus de me former sur du javascript et Java...
Vu l'objectif que je me suis fixé, ces langages me seront-ils suffisants? Merci de répondre
Cordialement,
Bonjour, dans la mesure où WhatsApp existe, ainsi qu'une multitude de trucs analogues, je me demande si ça vaut la peine de le déveloper, au fond...
Quant aux langages mentionnés, ils font sans doute le job côté client, mais quid côté serveur ? Du JS ?
Mais ce n'est pas ma culture, donc...
Quand même Node Js a l'avantage des langages fonctionnelsEt c'est pas en régnant sur des désert (pour refaire allusion à l'empire mongol) que l'on peut s'offrir une place au soleil.
NodeJS sa fait beaucoup de bruit mais concrètement c'est très peu utilisé et très mal compris, il est stupide de penser qu'il peut remplacer PHP/JAVA/ASP, NodeJS n'est pas conçu dans cette optique mais pour répondre à une problématique très particulière (interaction tres fréquente entre une page web client et le serveur), cela sert à peu de monde, même les jeux en ligne en HTML5 n'en n'ont guère l'utilité, le peu de fps 3D en html5 n'en utilise pas en tous cas.
Perso, je peux pas trop donner un avis par rapport à tous les langages, mais en tout cas ce qu'on ma enseigné dans mes cours de programmation c'était le C# et le JavaScript et ça me va très bien.
Java c'est le langage du jour d'après.
Si on souhaite un langage pour faire de l'IA il faut juste regarder ce qu'utilisait SUN le jour d'avant, c.a.d. ce qui est caché
dans JAVA.
Le regretté Julian Noble disait à ce sujet que c'était probablement le secret Informatique le mieux gardé.
Cordialement
Ludwig
Salut tout le monde,
Il me semble que c'est difficile de dire que tel ou tel langage est meilleurs que tel ou tel autre. Je crois que cela dépend beaucoup de tout un chacun.
Pour ma part ce sera certainement un langage sans syntaxe ou au pire une syntaxe minimale. Pour la bonne et simple raison que mes neurones
fonctionnent comme une passoire. Donc moins il y a à retenir, mieux je me porte. Heureusement pour moi, un certain Chuck Moore, à l'époque
assistant chez McCarthy+ (MIT Lisp) a mis au point un certain concept, que Sun avait repris et installé sur toutes ses machines serveur compris.
Puis arrivèrent James Gosling et Patrick Naughton, qui ont changé la robe de la marié et ils lui ont donnée le nom de Java. En arrière plan, la machine virtuelle est évidement toujours là. Pour ma part je continue à travailler avec l'original qui est beaucoup plus puissant que tout ce que l'on peut imaginer. Et cerise sur le gâteau, pas de syntaxe.
Cordialement
Ludwig
Peux-tu preciser ce que tu entends par là ? Ça fait une grosse trentaine d'années que je pratique toutes sortes de langages (vraiment), mais je n'en ai jamais vu un qui n'ait pas une syntaxe formelle. Plus loin, je ne vois simplement pas à quoi ça pourrait correspondre. C'est un peu comme si tu estimais que la forme la plus simple d'une phrase, sujet, verbe, complément ne servait à rien, que on parler sans Yoda pourrait inconvénient.
Bref, je n'ai sans doute rien compris mais comme j'aime apprendre, tu peux développer le concept ?
Thierry
Salut,
par sans Syntaxe j'entend ceci:
Un Exemple de composant informatique autonome qui peut être installé en local ou sur un serveur quelconque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219 && Nom de l'outil: ChoixCouleur(C8A41186F4)Dlg Outil de démonstration d'une application Easywindows && Date de création: 01/08/2017 && Heure de création: 16:12:07 && Copyright: (C) 2001-2030 && Vecteur développé par: Louis Jean-Pierre SCHMITT Prof. Emérite && Email: jean.pierre@buechi-schmitt.ch && Dialogue ChoixCouleur(C8A41186F4)Dlg && ChoixCouleur(C8A41186F4)Dlg.FTH is a computer Dialog component developed && by I.C.M. it is based of Microsoft windows systems and Easywindows systems && This component is for free use and made available to users by I.C.M. && I.C.M. Assumes no responsibility && for the implementation and use of this computer component. \ ############################################################################################################ \ ############ ############## \ ############ INSTALLATION DE L'OUTIL ############## \ ############ ############## \ ############################################################################################################ /ROOT ( ChoixCouleur(C8A41186F4)Dlg.FTH )ExitIfLoaded \ On ferme tous les contextes, on regarde si le dialogue est présent dans le dictionnaire \ Si oui on quitte. Si non on installe le dialogue et on le rend contexte courant. \ On installe un Marqueur, à retirer avant la mise en service définitive du dialogue VOCABULARY ChoixCouleur(C8A41186F4)Dlg.FTH \ On Installe le Vocabulaire ChoixCouleur(C8A41186F4)Dlg.FTH DEFINITIONS \ On le rend Contexte de définition \ ############################################################################################################ \ ############ ############## \ ############ INSTALLATION DE LA CONFIGURATION DES DONNEES ############## \ ############ ############## \ ############################################################################################################ : ChoixCouleur.Datas \ ========= Installation du Texte ==================== ResetList \ ========== Installation des données ================ ( #MultiKeys1.Datas :Id.MultiKeys1 0 0 352 352 :M0 Color.Back 25 )SendTo ( #MultiKeys1.Datas :M1 EW_MATRIX 16 Lignes 16 Colonnes 22 DimX 22 DimY )SendTo ( #MultiKeys1.Datas :M2 EW_MODE Memorise ON )SendTo ( #MultiKeys1.Datas :M3 EW_LOGO Rectangle ON )SendTo ( #MultiKeys1.Datas :MX; )SendTo ( #Keys20.Datas :Id.Keys20 10 360 35 35 NOOP :M0 Color.Back 25 :MX; )SendTo \ =========== Installation des commandes ============= ; \ ############################################################################################################ \ ############ ############## \ ############ INSTALLATION DES IDENTIFICATEURS ############## \ ############ ############## \ ############################################################################################################ WARNING OFF 200 IDENT Id.MultiKeys1 IDENT Id.DlgQuit IDENT Id.Cancel IDENT Id.Keys20 DROP WARNING ON DIALOGS ChoixCouleur.Dialog \ Création de la structure de la boîte de dialogue [MODELESS " I. C. M. Choix d'une couleur dans la palette ci-dessous " 30 30 235 250 (FONT 8, MS Sans Serif) ] [DEFPUSHBUTTON " OK" Id.DlgQuit 190 230 40 15 ] [PUSHBUTTON " Cancel" Id.Cancel 145 230 40 15 ] [COMPONENT " Keys" Id.Keys20 10 360 35 35 (+STYLES EW_RECT ) ] [COMPONENT " MultiKeys" Id.MultiKeys1 0 0 20 20 (+STYLES EW_MATRIX EW_MODE EW_LOGO ) ] END-DIALOGS : ChoixCouleur.Paint S( --- ) Id.MultiKeys1 MultiKeys.Paint Id.Keys20 Keys.Paint ; : ChoixCouleur.Get S( --- ) Id.MultiKeys1 MultiKeys.Get Id.Keys20 Keys.ValueSet Id.Keys20 Keys.Paint ; : ChoixCouleur.Quit S( --- ) HWND 0 EndDialog HWND Application.Quit HWND SubKey.DestroyEX ( EWPARAM$ :M0 Color.Back TO :HWNDX :IDX :M0 )Task.Perform \ On calle le mode interprété ; : ChoixCouleur.Task S( --- ) \ Exécute la tâche ChoixCouleur.Quit Task.Perform ; : ChoixCouleur.Commands S( --- res ) CASE Id.DlgQuit OF ChoixCouleur.Task ENDOF Id.Cancel OF ChoixCouleur.Quit ENDOF Id.MultiKeys1 OF ChoixCouleur.Get ENDOF ENDCASE ; : SetDlgParam INHERIT-DIALOG$ 2 ITEM [CHAR] ( Split 2swap 2DROP (FIND) IF EXECUTE THEN ; : ChoixCouleur.Messages S( Mes --- Zéro ) \ procédure de Gestion des messages \ expédiés par Windows au travers du callback CASE WM_ACTIVATE OF WPARAM LOWORD WA_CLICKACTIVE = IF HWND EWfocus.Change THEN HWND InitDialogDlgParam ChoixCouleur.Init ENDOF WM_CLOSE OF ChoixCouleur.Quit ENDOF \ ferme la boîte de dialogue WM_COMMAND OF WPARAM LOWORD ChoixCouleur.Commands ENDOF \ Call Procédure Gestion des commandes WM_INITDIALOG OF ChoixCouleur.Init ENDOF \ Call Procédure de Création Zone Client WM_PAINT OF ChoixCouleur.Paint ENDOF \ Call App-Paint WM_LBUTTONDOWN OF HWND EWPARAM ChoixCouleur.Commands ENDOF ZERO ENDCASE ; :NONAME S( -- res ) \ Création du callback INHERIT-SEARCHORDER INHERIT-FLOAT INHERIT-DIALOG MSG LOWORD ChoixCouleur.Messages ; 4 CB: ChoixCouleur.Run \ callback \ Fonction principale : ChoixCouleur(C8A41186F4)Dlg S( --- ) \ procédure principale ConfigDialogIndirectParam ChoixCouleur.Datas ChoixCouleur.Dialog CELL- OFF ChoixCouleur.Dialog CELL- @ ?EXIT HINST ChoixCouleur.Dialog HWND ChoixCouleur.Run 0 CreateDialogIndirectParam ChoixCouleur.Dialog CELL- ! ;
Pour la petite histoire:
Il y a environ 30 ans en arrière nous avions à l'école d'Ing. de Fribourg CH département de mécanique, développé sous DOS à l'aide d'une machine virtuelle, une technologie composant ainsi qu'un langage baptisé SYNTAL pour Synthétique Machine et Algorithmique Langage. Java n'existait pas encore Seul 3.11 de MS existait. Les labos du département tournaient avec notre machine. Les composants (Interfaces graphiques) étaient installés sur les serveurs de l'école. Un étudiant pour se tailler une app. sur mesure en avait pour environ 10 minutes pour réaliser l'interface graphique Homme machine.
Il faut dire que tout ce travail n'est jamais sorti des Labos.
Puis arriva WIN 95 puis NT Etc... la maintenance sous DOS devenait de plus en plus délicate. Nous décidâmes de passer en WIN 95 - 98 etc... avec une machine virtuelle du commerce et programmation Windows classique.
Etant à la retraite, j'ai pris la décision de porter sur WIN toute la technologie développé à l'époque sous DOS.
Il faut dire également que la machine marche en mode interprété et en mode Compilé.
Comme l'IA est devenu d'actualité, le moment est venu de sortir tous ce travail, car c'est de l'IA avec un grand I, en fonction des données,
la machine construit elle-même du code puis elle l'exécute toute seule.
Comme tu peux constater ci-dessus, il n'y a pratiquement pas de syntaxe, juste des mots qui se suivent.
Cordialement
Ludwig
Bon, écoute. Pour moi, une syntaxe est en gros tout ce qui ordonne ton code et permet d'identifier les syntagmes qui le constituent. Ainsi, lorsque je tombe sur
: ChoixCouleur.Commands S(--- res)
cette formulation n'est pas du hasard mais répond à une forme stricte. Donc, à une syntaxe.
Pour le reste, dis-moi si je peux exécuter ce bidule dans un environnement disponible quelque part. Ca me rappelle la définition des blocs transactionnels ACMS, sous VMS, un peu.
Par contre, à mon sens, nous sommes très loin de l'Intelligence artificielle, ou alors explique-moi comment ce bout de code apprend, de quel type d'expérience et à partir de quoi il décide de quelque chose...
En fait, le tout me rappelle un brin un L4G que nous avions développé en dBase III+ - Clipper avec un copain (lui l'avait beaucoup développé, moi, j'étais passé ensuite pour finaliser), qui permettait vraiment une programmation dynamique à partir du masque d'écran. Conceptuellement, ça marchait bien. Mais je n'ai jamais imaginé le transposer dans les systèmes que j'ai fréquentés ensuite, où on avait 2500 postes de travail répartis dans le monde déversant des transactions critiques en continu dans une BD relationnelle... Plus tard, j'ai écrit un système de trading sur les marchés financiers, en portant tout l'effort sur l'interface utilisateur. Ca a été un succès, c'est toujours utilisé plus de dix ans après. C'était juste du Delphi, et le jour où j'ai posé la bride, mon successeur a pu reprendre le bébé pour poursuivre son développement et son adaptation aux besoins des marchés sans faire une dépression.
La morale de l'histoire est que personnellement, j'ai renoncé depuis longtemps à voir quelque chose d'autre que moi écrire le code vraiment utile. Je ne vais pas aller jusqu'à Moore et Forth, qui réécrivait son système en commençant par les routines d'addition chaque fois qu'il l'installait sur une bécane, mais garder la main sur ce qui se passe, surtout pour les systèmes critiques, c'est irremplaçable.
Et j'attache une attention toute particulière à la lisibilité du code. Pendant 25 ans j'ai joué dans le milieu bancaire, un peu à tous les postes touchant au développement et à l'architecture. Un poste est resté constant sur toute la durée : La maintenance des applications existantes. C'était d'abord du COBOL, puis Delphi, C, C++, un brin de VB, comme plateforme principale. A chaque fois qu'il a fallu entrer dans du code cryptique, ça a été la galère (le pire a été du vieux COBOL avec des noms de variables sur trois caractères et des GOTO partout, je te dis pas).
J'attends donc d'un code qu'il montre ce qu'il fait, tout droit, les yeux dans les yeux. Je sais qu'en PERL, on n'est pas digne d'attention tant qu'on a pas écrit un soft de gestion complet en une ligne. Moi, le gars qui vient me présenter un truc comme ça, je le renvoie directement à ses chères études si il ne me montre pas très rapidement quelque chose qu'un autre que moi pourra maintenir ensuite. Voilà !
Pour revenir sur le point de l'IA, si on suit les travaux actuels c'est surtout le DeepLearning qui est intéressant et offre de vrais débouchés. Mais nous sommes loin des systèmes conventionnels, puisqu'au final on créé une machine qui va calculer ses paramètres de fonctionnement. Mais pas son fonctionnement proprement dit, pour le moment en tout cas.
Allez, je t'ai assez retenu ! Dis-moi quand même si ce truc s'exécute, je suis toujours curieux de tout, m'étant trompé suffisamment de fois pour savoir que je peux le faire encore une fois...
;-)
Thierry
Salut,
A l'époque ou nous avions développé cette affaire, le contexte était bien différent de celui d'aujourd'hui. Nous avions à disposition 2 périodes de 45' sur 2 semestre pour faire passer les fondements de l'informatique aux étudiants de 1ere année semestre 2 et deuxième année semestre 3.
Ce n'était pas évident. On a fait l'inventaire des acquis (Stations Sun avec machine virtuelle, Calculatrice HP avec notation Polonaise inversée, jeux d'instruction SWAP DUP ROT etc... ça ils maitrisaient bien puisqu'ils programmaient leurs machines HP 51 pour des calculs scientifiques) les choix se sont imposés, machine virtuelle, ou plus tôt processeur virtuel et une technologie composants qui permettait de créer toute sorte d'interface
pour les besoins des labos. Chaque étudiant produisait un interface nouveau par semaine. En un rien de temps nous avions une bibliothèque très étoffée.
La réalisation d'une application consistait alors à construire à l'écran avec un éditeur Graphique (Style CAO) l'interface homme machine dont on avait besoin.
Tous ces composants étaient appelé par un chargeur qui installait les outils sur la machine puis le travail fini, ils étaient shootés et au suivant.
Le composant que j'ai posté fonctionne très bien dès lors qu'il est installé sur la machine Ad'hoc. C'est un outil comme un forêt par exemple, pour percer un trou, il te faut encore une machine. Ben là c'est pareil.
Comme on travaille en notation Polonaise Inversée, la règle est:
Préparation des données, puis appel de la procédure qui va réaliser les opérations. ( J'allais dire Usinage des données)
A titre d'exemple, ça c'est le chargeur d'outil, on lui passe le nom de l'outil et ça se débrouille pour l'installer à l'écran ou exécuter une tâche selon les besoins de la cause.
Info S( adr,len --- ) est juste un comentaire de pile pour dire que la fonction Apps.Build à besoin d'un nom pour fonctionner.
adr, pointe le début de la chaine de caractères et len est sa taille
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 : Apps.Build S( adr,len --- ) \ Installe un composant FONCTION$ $! FONCTION$ AppResource.Activ? IF GetActiveResourceEX EXIT THEN \ Test si la resource est active à l'écran FONCTION$ AppResource.Loaded? IF GetLoadedCommandEX EXIT THEN \ Test si la resource est chargée dans un dictionnaire FONCTION$ AppResource.Local? IF AppCommand.Build EXIT THEN \ Test si la resource est spécifique à l'application Fonction$ LocalResource? IF GetWindowCommandEX EXIT THEN \ Test si la resource est installée localement FONCTION$ InternetResource? IF GetInternetCommand EXIT THEN \ test si la resource est disponible sur un serveur ; : FindAndExecuteEX S( --- ) MI_IDX$ [CHAR] . SCAN ?NIL SysAbort" FindAndExecuteEX ID_ERROR_ID_NOT_FOUND" 1 /STRING Apps.Build ;
Il me semble que le texte ci-dessus est tout de même un plus facile à lire que ce que l'on l'habitude de voir.
Cordialement
Ludwig
Je ne vais pas entrer loin dans ce débat. J'ai lu beaucoup de code, littéralement des millions de lignes, en toutes sortes de langages, et je peux t'assurer qu'après les mille premières, quel que soit le langage, on comprend. Simplement, si j'avais dû commencer par ce code-ci, je pense que j'aurais aujourd'hui moins de cheveux. Pourquoi ? Parce qu'il ne dit rien sur son but, ni son environnement.
Parmi les codes lisibles, s'il est écrit correctement, je place COBOL. Le fait qu'aujourd'hui encore je connaisse des applications qui tournent et sont maintenues depuis plus de trente ans le confirme, même si ce langage est devenu obsolète. J'aime aussi Pascal, qui expose clairement les prémisses de l'approche qu'on implémente. Même chose avec C++. Dans les langages dynamiques, j'apprécie Python et je m'intéresse à TypeScript. Dans les deux cas on a une bonne économie d'expression et une grande efficacité.
Par contre je n'aime pas Swift, c'est comme ça. Pouvoir condenser en une ligne de quelques signes cabalistiques un raisonnement "pas simple" est pour moi juste contre-productif. Ca marchera toujours bien pour l'auteur original, sur trois mois. Puis le ré-apprentissage de ce qui a été fait deviendra plus coûteux que l'écriture directe d'un code explicite. A l'extrême de cette tendance on trouve PERL, et ses one-liners inextricables...
Bref, je ne suis pas fan de ce que tu me montres, j'ai toujours fui la notion polonaise, sauf lorsque j'ai dû écrire des fonds de rapports en Postscript (si, si, je l'ai fait). Et franchement, j'ai trouvé ça rigolo, mais seulement sur un court moment et parce que ça résolvait un sacré problème.
Bon, assez de bla-bla, je te souhaite un tout bon week-end. A une prochaine, tschuess !
Thierry
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager