Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Attention à ne pas confondre et mélanger les opérateurs arithmétiques logiques et les opérateurs de test. Bien qu'ils s'écrivent et se nomment de la même manière (et qu'ils semblent, à priori, faire des choses similaires) se sont bien des opérateurs différents. Et ici on parle des opérateurs de tests, pas des opérateurs arithmétiques.
--- Sevyc64 ---
Parce que le partage est notre force, la connaissance sera notre victoire
re
Le probleme que tu ne vois pas c'est que dans vb.net la notion de borne dans la declaration n'existe pas et le codeur doit avoir la "borne dans la tete":Sehnsucht
Quant aux tableaux, je ne suis pas sûr d'avoir compris, si c'est le "problème" d'avoir à écrire 1 là où ça donne 2 éléments ; ce n'est pas près de changer ; il a toujours été précisé que ce qu'on donne sont les bornes des dimensions pas la taille de la dimension (après on aime ou on aime pas mais c'est comme ça et ça représenterait un trop gros breaking change pour que ça change un jour à mon avis)
compare ces 2 codes en c# et vb.net qui font le meme travail:
bon code....
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 Private arr(2) As Integer 'ce tableau n'as pas la notion de borne que tu invoques ...ressemble a l'array "fortan".... Public Sub New() For i As Integer = 0 To 2 'ici 2 n'est pas une borne ..d' ou 3 elements...un traquenard!!! Next End Sub private int[] arr = new int[2];//ici 2 est bien une borne public Exemple() { for (int i = 0; i < 2 ; i++) { } }
Je ne suis pas sûr de bien comprendre ce que tu dis... tu veux dire que & et && sont des opérateurs différents (auquel cas on est d'accord), ou que & pour des entiers est un opérateur différent de & pour des booléens ?
C'est bien le même opérateur, il génère d'ailleurs exactement le même code IL...
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int i1 = 1; int i2 = 0; int i3 = i1 & i2;
Code IL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8ldc.i4.1 stloc.0 // i1 ldc.i4.0 stloc.1 // i2 ldloc.0 // i1 ldloc.1 // i2 and stloc.2 // i3
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 bool b1 = true; bool b2 = false; bool b3 = b1 & b2;
Code IL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8ldc.i4.1 stloc.0 // b1 ldc.i4.0 stloc.1 // b2 ldloc.0 // b1 ldloc.1 // b2 and stloc.2 // b3
Tu remarqueras au passage qu'en IL, les booléens sont traités comme des Int32, donc au final, c'est la même opération qui sera exécutée par le processeur, que tu fasses un "ou" entre deux entiers ou entre deux booléens.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Tu confonds 2 choses ; une borne et une taille ; une taille c'est le nombre d'éléments ; une borne c'est la position d'un élément spécifique (position de l'élément de départ pour borne de début ; position de l'élément final pour borne de fin)
Dans le code VB.Net tu déclares un tableau de borne maximale valant 2 (donc de taille 3 conséquence de la numération en base 0 des indices) et tu itères sur chacun des indices compris entre 0 et 2 inclus ; soit sur 3 éléments.
Dans le code C# tu déclares un tableau de taille 2 (donc ayant pour indices 0 et 1) et tu itères sur chacun des indices compris entre 0 et 2 (exclus) ; soit 2 éléments.
Personnellement on m'a toujours appris que le nombre d'éléments (la taille ) d'un ensemble indicé était borne_max - borne_min + 1 (ex: pour savoir combien de chiffres sont compris entre 3 et 7 (inclus) je fais bien 7 - 3 + 1 = 5 et entre 3 et 7 il y a bien 3; 4; 5; 6 et 7 soit 5 chiffres).
Je rappelle à tout hasard (source) qu'à la base ça nous vient de VB6 qui indiçait en base 1 par défaut (et là borne_max ou taille ça revient au même visuellement) mais qui permettait surtout de pouvoir aussi choisir la borne minimale exemple :
ceci donnant un tableau dont le premier élément a pour indice 3 et le dernier élément a pour indice 7 (soit une taille de 5 éléments) [Chose que l'on peut "reproduire" au besoin en .Net avec une des surcharges de Array.CreateInstance]
Code VB6 : Sélectionner tout - Visualiser dans une fenêtre à part Dim arr(3 To 7) As Type
Au passage à VB.Net il a été décidé par ses concepteurs de ne plus permettre cela et d'indexer tout en numération 0 mais la possibilité d'utiliser cette syntaxe existe toujours (même si elle est peu utilisée 0 étant la seule possibilité valide pour la borne minimale) soit:
Je donne la source dans la documentation au cas où mais le passage intéressant est celui-ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim arr(0 To 2) As Integer
Cette possibilité a sûrement été conservée pour faciliter la transition à l'époque en limitant les modifications à apporter (dans la majorité des cas un décalage de -borne_min suffisait)Envoyé par MSDN
Après, on peut regretter qu'un autre choix n'ait pas été fait à l'époque et ça c'est un argument que je peux comprendre tout comme le fait de ne pas aimer.
Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
À quelle heure dormez-vous ?
Censément, quelqu'un de sensé est censé s'exprimer sensément.
C'est toi qui confonds ces 2 choses,parce qu' en C# on donne une taille alors qu'en vb.net on fournit la "borne superieure maximale" (en plus court Array.GetUpperBound(0) )...Sehnsucht
Dans le code VB.Net tu déclares un tableau de borne maximale valant 2 (donc de taille 3 conséquence de la numération en base 0 des indices) et tu itères sur chacun des indices compris entre 0 et 2 inclus ; soit sur 3 éléments.
Dans le code C# tu déclares un tableau de taille 2 (donc ayant pour indices 0 et 1) et tu itères sur chacun des indices compris entre 0 et 2 (exclus) ; soit 2 éléments.
Voici ce que fait observer MSDN fr sur le sujet dans la rubrique Array de visual basic :
Cette expression "longueur requise" est surement requise par un minimun de coherence de l'API.Net et non le mabrouki qui vous parles....Dim salesAmounts(4, 11, 30) As Double
Étant donné que chaque index varie de 0 à son maximum, notez que chaque dimension de salesAmounts est déclarée avec une valeur inférieure de 1 à la longueur requise pour cette dimension. Notez également que la taille du tableau augmente avec chaque nouvelle dimension. Les trois tailles dans les exemples précédents sont respectivement 31, 372 et 1 860 éléments.
&& l'original :
Note that, because each index varies from 0 to its maximum, each dimension of salesAmounts is declared as one less than the required length for that dimension. Note also that the size of the array increases with each new dimension. The three sizes in the preceding examples are 31, 372, and 1,860 elements respectively
bon code...
Bref ... on va arrêter les frais ; on ne se mettra pas d'accord même la documentation que tu cites va dans mon sens pour moi ("Étant donné que ..." signale pour moi une conséquence, et se résume à "Comme l'index varie de 0 à maximum ; il n'est pas faux de considérer que chaque dimension est déclarée comme longueur - 1")
Tu choisis d'interpréter la documentation ainsi : chaque dimension d'un tableau est définie comme longueur (ou taille) - 1 ; c'est un choix, il est valide (tant que l'index minimum est 0 [ce qui est une obligation heureusement]) et conséquemment tu estimes que c'est une aberration.
Je choisis d’interpréter la documentation ainsi : chaque dimension d'un tableau est définie comme (0 jusqu'à) borne (ou indice) maximal ; c'est un autre choix, il est tout autant valide (même si l'index minimum n'est plus 0 [ce qui n'est pas près d'arriver]) et conséquemment tout s'emboîte et est logique.
Le reste tient lieu de débat plus sémantique qu'autre chose (étant donné qu'une taille (ou longueur) n'est après tout qu'une distance entre 2 bornes (ou vice-versa)).
Je n'interviendrai plus sur cette question et ce n'est de toute façon pas le propos du sujet actuel .
Cordialement !
Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
À quelle heure dormez-vous ?
Censément, quelqu'un de sensé est censé s'exprimer sensément.
Aucune amélioration dans la création de tableaux ou d'ouverture de fichier via VB, dommage.
On reste surtout sur des améliorations de lisibilité, voir de compréhension pour les arrivants, aucun "gros" changement en profondeur en somme.
Pour les tableaux, le sujet a été largement débattu ci-dessus.
Pour l'ouverture de fichiers, je ne vois pas ce que tu veux dire : ça dépend du framework, pas du langage, et je ne vois pas grand chose à redire à l'API actuelle... tu voudrais quoi comme amélioration au juste ?
C'est des petits changements, mais il y en a beaucoup... Il faut garder à l'esprit que le gros chantier de cette version, ce n'est pas les fonctionnalités, mais le nouveau compilateur Roslyn. Ils en ont profité pour ajouter plein de petites choses qui étaient attendues depuis longtemps par les développeurs, mais c'est juste du bonus.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Je confirme, il n'est pas mort car je continue de développer en VB.NET avec WPF et WCF. Ces nouvelles syntaxes qui le rende moins "verbeux" sont les bienvenues. Longue vie au VB !
les inov signalées sont interessantes surtout le ?.
vb est encore trs evolutif et a de bons jours devant
Personnellement, je regrette toujours VB6 qui était beaucoup plus simple d'utilisation. Et s'il m'arrive de programmer en VB.NET, j'ai installé des versions 32bits des systèmes pour pouvoir continuer à utiliser VB6. Je me pose la question de savoir si cette possibilité existera encore sous W10. Il m'arrive encore de devoir booter sous XP afin de pouvoir utiliser certains logiciels ou compilateurs. Il est vrai qu'à 70ans je suis un peu vieux jeu ! De plus, à mon âge, je n'ai plus envie de réinvestir dans tous les nouveaux outils qui ne fonctionnent plus en 64bits (SQL Server, Photoshop, etc.)
Moi aussi ne suis plus si jeune et ai aussi programmé en vb6 qui il est vrai est plus simple mais n'offre pas toutes les possibilités de vb.net. Aussi la migration çà entretient les vieux que nous sommes! vous ne regretterez pas
Pour ma part, j'ai commencé la programmation par le bon vieux C-AINSI/C++ et le java à l'époque... Ce qui ne m'avait pas passionné outre mesure. (En passant plus de temps à comprendre le langage qu'à codé).
Et puis il a fallu que je travaille, et je suis comme vous tombé dans le VB, depuis je ne fais QUE ça.
Il est lisible et puissant (si on s'en sert bien). Du coup, de mon point de vue, ce langage est pratique à la fois pour apprendre et pour développer rapidement. On peut rapidement faire des choses toute bête, et petit à petit apprendre les subtilités.
La dernière chose que j'ai envie, c'est de retrouver les accolades pour faire un If, les pointeurs, les déclarations de pointeurs de variables, des pointeurs de pointeur, les & les *.... et mettre un point virgule à chaque ligne... Gérer la taille des tableaux (bien que je crois que l'allocation dynamique de mémoire ne se fait plus partie du .NET)
Puis pour déclarer une variable... en commençant par son type, j'ai jamais compris... C'est pour aider le pauvre compilateur tout ça en fait... Il arrive pas à mettre les choses dans l'ordre lol.
Comme pour les points-virgules, en fait il faut lui dire quand la ligne s'arrête, sinon il est bête il prends tout ton code et le lit comme un fichier texte ! Tout comme le type void d'une fonction... qui sert à dire qu'on ne retourne rien....
En fait le C# c'est le développeur qui assiste la machine, le VB l'inverse !
(Je suis de partie pris, vous l'aurez compris!)
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)
Pourquoi faire simple quand on peut faire compliqué ?
Depuis VB6 les "améliorations" de VB ne sont que des complications - avis tout à fait perso bien sur.
j'utilise beaucoup le Basic pour la programmation de micro-contrôleurs avec le Bascom-Basic sur µ-contrôleur AVR de chez Atmel pour faire des automates de plus en plus complexe.
La structure des programmes est claire, le compilateur rapide. si on bloque on écrit qq lignes en assembleur, rien que pour titiller les registres..
Pour les transfert de données j'utilise VBA qui jusqu'à 2010 était quasiment Du VB6
Avec Basic4android on se comprend, c'est très proche.
Mais l'usine à gaz Studio de Microsoft me dépasse... et on appelle cela un langage pour débutant ?
Atmel a sorti un "Studio" universel pour ces µ-contrôleurs, même genre d'usine à gaz.
A quand un retour à la simplicité d'un VB6 ?
Ne tuons pas Basic qui n'est pas un langage pour les nuls.
Effectivement, VB.NET est plus complexe que ne l'était VB6. Mais il est aussi et surtout beaucoup plus puissant... VB6 était un langage basé sur des objets, mais pas réellement orienté objet : par exemple, il n'y avait pas de notion d'héritage, qui est quand même la base des langages OO... VB6 est très bien pour apprendre à coder (c'est d'ailleurs un des premiers langages que j'ai utilisés) et faire de petites applications simples. Ses proches cousins VBA et VBScript sont tout à fait adaptés pour faire des macros, de l'automatisation de tâches bureautique et du scripting système. Mais pour développer de vraies applications complexes, VB6/VBA/VBS sont vraiment trop limités...
Mais c'est toi qui appelles ça un langage pour débutant... VB.NET n'est pas plus un langage pour débutant que C# (d'ailleurs les fonctionnalités sont quasiment les mêmes, ainsi que tous les concepts liés à la plateforme .NET). C'est une idée largement répandue que VB.NET est un langage "facile" (peut-être parce que VB6 l'était), et du coup les débutants se dirigent souvent vers ce langage. Mais c'est une idée fausse... Ce qui est malheureux à mon sens, c'est que beaucoup de choses dans la syntaxe de VB.NET ne sont là que pour le faire paraitre plus simple, en masquant certaines subtilités qui sont pourtant essentielles à comprendre. Du coup, quand on tombe sur un bug lié aux limites de ces "simplifications", on sait plus quoi faire parce qu'on ne comprend pas vraiment le fonctionnement du langage. Je pense par exemple aux instances par défaut de Form dans les applications Windows Forms ; c'est probablement la "feature" la plus aberrante de VB.NET, et elle n'existe que pour éviter aux développeurs d'avoir à comprendre des concepts de POO...
Quant au fait que Visual Studio soit une usine à gaz : c'est pas complètement faux, mais ça s'explique et se compense par le fait que c'est un IDE extrêmement riche et complet. Comme je le disais dans un autre topic, s'il y a bien une application qui me retiens sous Windows, c'est bien Visual Studio. Evidemment l'IDE de VB6 était beaucoup plus léger, mais il était aussi beaucoup moins riche en fonctionnalités... si je devais recommencer à l'utiliser, j'aurais l'impression de revenir à l'âge de pierre.
C'est pas demain la veille. Du point de vue de Microsoft, VB6 est mort et enterré. Il y a plein de gens qui continuent à l'utiliser, mais il n'évolue plus depuis au moins 15 ans. VB.NET, pendant ce temps, s'améliore, mais il ne va pas devenir plus "simple".
Il faudrait savoir... d'abord tu dis que c'est supposé être un langage pour débutant, et ensuite tu dis que ce n'est pas un langage pour les nuls (bon, OK, débutant n'est pas synonyme de nul, mais quand on débute, on commence forcément par être nul...)
VB6 est un peu un langage "pour les nuls" (ce qui en fait ne veut pas dire grand chose), ou du moins un langage pour ceux qui n'ont pas envie de se prendre la tête avec des concepts avancés. VB.NET est un langage avancé (bien qu'un peu bancal à mon avis), qui effectivement n'est pas "pour les nuls", puisqu'il nécessite une bonne compréhension de la POO et de la plateforme .NET.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Tu as tout à fait raison.
Je donne des cours d'informatique à des "Mme Michu", je voudrais ouvrir un atelier programmation pour des ado. Quels langages conseillerais-tu ? sachant que comme beaucoup de Basic-addict, je ne supporte pas le C c'est épidermique ! Peut-être Python ?
Merci de tes conseils.
JP
Le C, de toute façon je ne le recommanderais pas pour une initiation, c'est un trop peu ardu quand on a jamais codé... Mais une fois que les concepts de base de la programmation sont maitrisés, je pense que c'est une bonne idée d'apprendre le C pour mieux comprendre comment fonctionne l'ordinateur (gestion de la mémoire, pointeurs...)
Python, pourquoi pas. C'est un des langages les plus simples au niveau de la syntaxe, et on peut facilement démarrer de zéro, il n'y a pas vraiment de pré-requis.
Après, sur ce sujet, il y a autant d'avis que de personnes... Regarde cette discussion pour d'autres avis.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
prend des langages à la mode ça permet d'avoir plus d'attentions de la part des élèves.
après je conseillerai de prendre celui avec lequel VOUS etes le plus a l'aise.
il faut évité de demander "Quel langage conseillez vous !" puisque personne n'est jamais d'accord, et pour le prouver il n'y qu'a regarder le nombre de poste sur ce sujet.
Je donne tout de même mon avis puisque la question est posé.
Alors tout dépend des envies de réalisation et de l'envi d'apprentissage
pour ma part je conseillerais
- le C# (le meilleur ) : il donne un excellent IDE, un framework complet et pas surcharger. Mais utilisable que sur windob pour le moment
- le java : permet de développer sur tout type de plateforme, ce qui un gros avantage dans notre période de mobile, il possède aussi un excellent framework
mais il faut faire attention a la version utilisé et au prédicate
- le C++ : excellent IDE (Qt5), excellent pour apprendre, une fois que l'on maitrise ce langage, les autres ne pose plus de problème
voila ce qui est de mon avis pour la POO mais il ne fait pas oublié que le SQL est obligatoire
Cordialement
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