Le typage faible des variables est une des pires chose que l'on peut avoir dans une languague en terme de maintenance,
comment se rappeler à tous les coup le type d'une variable un ans après dans un project de 2000 classes, si elle n'est pas typé,
de plus comment avoir une auto-completion efficace sur une variable qui est une première fois utilisé en temp que int au début d'un code, puis 400 ligne plus tard utilisé comme un string ou Array ?
de plus avoir un compilateur qui lance une erreur en comme ci dessous c'est vraiment le minimum.
var Machaine:String = "10";
Machaine = 12;
col: 15 Error: Implicit coercion of a value of type int to an unrelated type String.
Pouvoir changer l'héritage d'un object déjà en cours d'utilisation est une hérésie.
Donc javascript sur un project de plus de 20 classes : non merci.
Flash player ActionScript Virtual Machine 2 http://www.mozilla.org/projects/tamarin/
fonctionnement de la machine virtuel : (ActionScript Virtual Machine 2 (AVM2)) :
http://www.adobe.com/content/dam/Ado...m2overview.pdf
le problème n'est pas dans le language, mais dans la manière dont tu écris le code. Encore un fois, quand tu code JavaScript, penses en JavaScript, pas Object à la Java. On n'est pas dans un langage compilé (et heureusement)
Encore une fois, c'est dans la manière dont tu écris le code (et commente aussi avec JSDOC) que tu trouvera la solution. Le JavaScript te permet (à raison) d'être libre de la manière dont tu architectures ton code, donc vois cela comme un avantage et non comme un inconvénient.
Si tu penses cela, alors ne fais pas de dev JavaScript, cela risque trop d'heurter ta sensibilité de dev Object "traditionnel" (attention, ce n'est pas méchant ce que je dis). Essayes de voir des présentation de JavaScript pour t'imprégner des concepts et de la philosophie du language.
Je travaille sur une app HTML5 qui doit faire maintenant dans les 150 000 lignes de code en JavaScript. Donc faire une app complexe en JavaScript c'est possible.
Flash player ActionScript Virtual Machine 2 http://www.mozilla.org/projects/tamarin/
fonctionnement de la machine virtuel : (ActionScript Virtual Machine 2 (AVM2)) :
http://www.adobe.com/content/dam/Ado...m2overview.pdf
Reformulé ça donne: javascript permet de faire tout et n'importe quoi (cf l'argumentation de ferber), et par définition il permet donc de faire des trucs corrects. Ce à quoi je répondrai "bah encore heureux, manquerait plus qu''il permette de rien faire de bon!" ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part le problème n est pas dans le language, mais dans la manière dont tu écris le code.
On peut pas juger un langage en faisant abstraction des développeurs qui vont le manipuler; et les développeurs en question ils sont humains: offrez leur le typage faible et ils n'auront aucune raison de ne pas en profiter si ça leur faire gagner du temps à court terme. Sauf qu'à moyen terme c'est le mur.
Et on en est tous conscient. Je veux dire: si les langages permissifs étaient si géniaux, pourquoi cet attrait pour GWT, ActionScript, et dans un autre genre pour Scala (programmation fonctionnelle => variables immuables dans l'idéal). Si j'osais, je dirais qu'en matière de programmation, la liberté, c'est le Mal.
un langage à typage fort n'est pas aussi la garantie de faire du code maintenable et fiable, loin de là. Je ne comprendrais jamais cette inquiétude sur le typage. Il n'y a pas de meilleur type de langage, il y a juste des langages plus adaptés que d'autre aux besoins que l'on rencontre. Et ici on parle d'un langage qui existe depuis plus de 15 ans au sein du navigateur et qui a fait ses preuves, alors pourquoi vouloir à tout pris ne pas l'apprendre ?
Tout simplement parce que les gens ont leurs habitudes. Si tu connais Java, tu préfèrera coder en Java ton appli avec GWT, même si au final tout va être transcoder en JavaScript. En allant plus loin, je dirai que c'est surtout par un manque de formation sur le sujet (il n'y a pas vraiment de cours JavaScript dans les études) qui peut provoquer un certains mépris pour ce langage.
Je suis d'accord avec toi, il faut savoir être intransigeant en matière de programmation (la dictature a parfois du bon), mais le langage doit nous apporter la liberté dont nous avons besoin pour faire un logiciel.
le js serrais mort, si il y' avait eu il y'as 15 ans un autre languague présent sur tout les naviguateurs offrant la gestion des classes.
Si js a survécut ce n'est pas grâce a ça qualité, c'est par défaut, grâce a sont manque de concurrent.
Ensuite voila un bout de code fait en as2 ou as1 je ne me souvient plus exactement, il date de 2003 c'est normalement une fonction de déplacement,
a savoir qu'as l'époque l'as2 été orienté object comme le js ( bref l'opérateur new existait, mais de class/import/extends/interface etc etc ).
Et comme il n'y avait pas de pool de constante contenant le nom des var/function etc : plus un nom de var été cours au plus le swf été légé ( comme pour le js d'aujourdhui ).
Le js à les même défaut que l'actionscript d'il y'as huit ans ! c'est ce qu'on appèle une sacré évolution !.
donc attention ca pique les yeux, c'est pas maintenable , mais c'été légé et fonctionnel.
Alors typage or not typage ?
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
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270 function deplace() { if (!_root.pause && this.__get___pv() > 0) { with (this) { var oy; var ox; var oxs; var oys; var x; var y; var s; var ds; var ob; var lim2; var spal; var smal; var px; var py; reposSouris(); ox = oux + modX; oy = ouy + modY; x = _x; y = _y; modX = 0; modY = 0; s = _s; ds = s / 2; spal = s + Al; smal = s - Al; oxs = ox + s; oys = oy + s; dessineChemin(this, x, y, ox, oy, w); var p = new Object(); p.x = _x; p.y = _y; _parent.localToGlobal(p); px = p.x; py = p.y; delete p; var havmov = false; if (x < ox) { direction = "D"; lim2 = px; if (calcPox(px + Al, spal + px, py, _t)) { x = x + s; lim2 = lim2 + s; havmov = true; } if (y < oy) { if (calcPoy(py + Al, py + spal, lim2, _t)) { y = y + ds; havmov = true; } } else if (y > oys) { if (calcPoy(py - Al, py - spal, lim2, _f)) { y = y - ds; havmov = true; } } if (havmov) { gp.gts("D"); } else { gp.gts("PD"); this.cd.clear(); } } else if (x > oxs) { direction = "G"; lim2 = px; if (calcPox(px - Al, px - spal, py, _f)) { x = x - s; lim2 = lim2 - s; havmov = true; } if (y < oy) { if (calcPoy(py + Al, py + spal, lim2, _t)) { y = y + ds; havmov = true; } } else if (y > oys) { if (calcPoy(py - Al, py - spal, lim2, _f)) { y = y - ds; havmov = true; } } if (havmov) { gp.gts("G"); } else { gp.gts("PG"); this.cd.clear(); } } else if (y < oy) { direction = "B"; if (calcPoy(py + Al, py + spal, px, _t)) { gp.gts("B"); y = y + s; } else { gp.gts("PB"); this.cd.clear(); } } else if (y > oys) { direction = "H"; if (calcPoy(py - Al, py - spal, px, _f)) { gp.gts("H"); y = y - s; } else { gp.gts("PH"); this.cd.clear(); } } else { o = this.ActionsEncours; if (o != "") { switch (o[0]) { case 0: { gp.gts("P"); this.cd.clear(); break; } case 1: { var fichier = ""; for (iobj = 0; iobj < _g.arrayDialogue.length; iobj++) { if (Number(_g.arrayDialogue[iobj].attributes.ID) == o[1]._DIAL) { if (o[1]._DIAL != "" && o[1]._DIAL != null && o[1]._DIAL != 0) { fichier = _g.arrayDialogue[iobj].attributes.FICHIER; } } } if (fichier == "") { for (iobj = 0; iobj < _g.arrayDialogue.length; iobj++) { if (Number(_g.arrayDialogue[iobj].attributes.ID) == this.__get___DIAL()) { fichier = _g.arrayDialogue[iobj].attributes.FICHIER; } } } if (fichier != "") { _root.Dialogue_xml = new XML(); _root.Dialogue_xml.ignoreWhite = _t; _root.attachMovie("MC_DIALOGUE", "MC_DIALOGUE", 2000); _root.Dialogue_xml.onLoad = function (success) { if (success) { _root.MC_DIALOGUE.affiche(this); } }; _root.Dialogue_xml.load(fichier); } o[0] = 0; gp.gts("P"); this.cd.clear(); break; } case 2: { gp.gts("P"); this.cd.clear(); var idobj = o[1].prend(); for (iobj = 0; iobj < _g.arrayOB.length; iobj++) { if (Number(_g.arrayOB[iobj].attributes.id) == idobj) { this.__get___inventaire().push(new Array(_g.arrayOB[iobj].attributes.titre, _g.arrayOB[iobj].attributes.id, _g.arrayOB[iobj].childNodes[0])); o[0] = 0; } } _root._interface.Menu.statu.texte = _root._interface.Menu.statu.texte + ("\n objet pris : " + this.__get___inventaire()[this.__get___inventaire().length - 1][0]); ++_root._interface.Menu.statu.texte.scroll; break; } case 3: { if (o[1]._pv > 0) { attaque(direction); gp.gts(direction + "A"); } else { gp.gts("P"); this.cd.clear(); } break; } case 4: { gp.gts("P"); this.cd.clear(); var oporte = o[1].ouvre(); if (oporte != "") { _g.savePerso = {}; savePerso.inventaire = _inventaire; savePerso.intPv = _pv; _root.ChargeNiveau(oporte); o[0] = 0; } _root._interface.Menu.statu.texte = _root._interface.Menu.statu.texte + "\n porte "; ++_root._interface.Menu.statu.texte.scroll; break; } default: { gp.gts("P"); this.cd.clear(); break; } } } else { gp.gts("P"); this.cd.clear(); } } _x = x; _y = y; if (this.perso) { this._parent._x = Stage.width / 2 - this._x; this._parent._y = Stage.height / 2 - this._y; } } } }
Flash player ActionScript Virtual Machine 2 http://www.mozilla.org/projects/tamarin/
fonctionnement de la machine virtuel : (ActionScript Virtual Machine 2 (AVM2)) :
http://www.adobe.com/content/dam/Ado...m2overview.pdf
Personne n'a dit que le typage fort était la garantie nécessaire et suffisante pour écrire un code fiable et maintenable. En revanche il permet de nous en approcher, en posant d'emblée des restrictions sur ce qu'il est possible de faire, et donc sur les erreurs qu'il est possible d'introduire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part un langage à typage fort n est pas aussi la garantie de faire du code maintenable et fiable, loin de là. Je ne comprendrais jamais cette inquiétude sur le typage.
Pourquoi être aussi critique envers ce langage ? Si JavaScript a survécu à Java côté client (applet, JavaFX, ...) ou encore VBScript, c'est qu'il doit bien y avoir une raison autre que la concurrence. De plus, si le langage était aussi mauvais que cela pourquoi, par exemple, son implémentation dans QTScript ?
Si tu te fais mal avec un marteau, ce n'est pas le marteau qui est responsable mais c'est celui qui tient le marteau. Le typage faible (qui ne veut pas dire que les variables ne sont pas typées) t'apporte une énorme flexibilité dans ton code (qui ne doit pas t'empêcher de faire des tests), il faut savoir l'utiliser comme il le faut, ça je suis d'accord (mais cela s'apprend).
Avant je pensais comme toi, je suis passé par pas mal d'autres langages (Java, C#, C++, ...) avant d'arriver à JavaScript, et maintenant je me dis que cette restriction n'est pas nécessaire en toute circonstance. Si c'est dans la philosophie du langage, oui, cela est nécessaire, sinon non.
Ce qui nous ramène à mon commentaire sur le fait qu'on ne peut pas faire abstraction des qualités (et défauts) des développeurs.
Infinite loop detected
Et oui les gars! JavaScript et les langages faiblement typés, c'est pour les bons, et ça permet de dev 10 fois plus vite.
Pour les autres, et bien... continuez à vous faire chier... Perso mes clients sont contents...
Flash player ActionScript Virtual Machine 2 http://www.mozilla.org/projects/tamarin/
fonctionnement de la machine virtuel : (ActionScript Virtual Machine 2 (AVM2)) :
http://www.adobe.com/content/dam/Ado...m2overview.pdf
Si on devait toujours prendre en considération le comportement humain pour évaluer la valeur intrinsèque d'un langage, on n'en serait encore à la carte perforée. Au moins, dans ces conditions, on serait sûr que le développeur ferait attention à son code (un bug, une journée de perdu).
Ça ne change en aucun cas mon opinion sur Flex, c'est pour moi le meilleur outil RIA qui existe pour n'importe quel type d'application web, complexe ou pas. en plus je ne vois pas ce qu'il y'a de nouveau dans ça du moment que Adobe garde le développement du Flash player.L'annonce de la nouvelle destination pour Flex vous rassure-t-elle sur l'avenir de la technologie ?
Encore une fois, rien de nouveau.Que pensez-vous de l'ouverture de BlazeDS, Spark et Falcon ?
Franchement je ne sais pas qu'est ce qu'ils font, mais en y pensant bien Apache ont toujours fait du bon travail.Adobe ouvre-t-il Flex pour mieux le développer ou marque-t-il le début de la fin de sa technologie ?
Pour conclure et concernant le HTML5, je penses que ça va être le même bordel qu'avec n'importe quelle technologie HTML, la compatibilité des navigateurs et des if partout (if IE6, if IE7, if Firefox, if Safari, etc.).
Bon courage, @ ciao bonsoir!
--------------
Mettre le Tag est aussi une aide aux développeurs
Je reviens tout juste d'une présentation que le groupe Sopra a réalisé dans les locaux de ma fac. A priori ils restent très enthousiastes vis à vis de Flex: ils ont choisi cette technologie pour un de leur projet majeur de reporting d'activité bancaire.
Je les ai rapidement interrogé sur les raisons de ce choix, ils ont évoqué la richesse des composants graphiques proposés, mais ne semblaient pas au courant du remous provoqué par la décision d'Adobe.
J'ai été la réunion des "tonton flexeur" à Paris. Et en faite, c'est lié à une total incompréhension du public et de la presse. Ceci, la faute à Adobe qui a complètement merdé coté communication.
En faite, Adobe n'abandonne pas Flex mais ouvre à la communauté avec Spoon. S'ils avaient (ça c'est ce qu'ils disent) Il y aurait eu que des versions de maintenance et la version 5 aurait peut être peut de chance de sortir.
Bref, ceci me rappel du cas de la soudaine découverte d'Ajax et que tout le monde disait que Flash allait mourir. Aujourd'hui on parle de HTML5 comme on parlait du Web 2.0 fût un temps. C'est prononcé à tord et à travers.
Bon nombre de personne disait qu'Adobe c'est que du code fermé. Maintenant qu'ils le mettent libre une framwork ils veulent souhaite sa mort.
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
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