Visual Basic n'est pas encore mort
Microsoft annonce les changements apportés à la version 14 du langage

Le , par Amine Horseman, Expert éminent sénior
Le premier langage de programmation qui nous passe par la tête quand on pense à la programmation .Net c’est le C#. Cependant, Visual Basic n’a pas encore été abandonné par Microsoft et pour cause, ce langage reste encore très utilisé dans les écoles, mais aussi par plusieurs développeurs qui ne veulent pas changer de langage, d’autant plus que côté performances il n’a rien à se reprocher par rapport à C#, puisqu’il utilise le même IDE et les mêmes binaires.

Hier, Microsoft a annoncé les nouveautés apportées à Visual Basic 14 (la version 13 ayant été ignorée pour rester dans le même numéro de version que l’IDE). Parmi ces nouveautés, on peut citer l’introduction de l’opérateur « ?. » dont le but est de vérifier si une variable, une propriété ou un objet est nul avant de tenter d’y accéder, ou aussi pour vérifier si on est en train d’invoquer une méthode d’une référence qui n’existe pas. Par exemple, le code suivant :

Code : Sélectionner tout
If customer IsNot Nothing AndAlso customer.Age > 100 Then
Deviendra :

Code : Sélectionner tout
If customer?.Age > 100 Then
Lucian Wischik explique sur MSDN que l'opérateur « ?. » est plus sûr puisque dans l’exemple « l’expression "customer?.Age" lit la variable customer dans une variable temporaire, vérifie si elle n’est pas nulle, puis récupère la propriété Age de cette variable temporaire. Ce qui est thread-safe même si customer est nul ».

Un autre changement qu’on peut citer aussi est que les propriétés en lecture seule (Readonly) peuvent désormais être déclarées et initialisées directement dans la même ligne, comme montré dans la figure suivante :


Nouvelle manière d'initialiser les propriétés Readonly, Source : MSDN

Concernant les chaines de caractères, il n’est plus nécessaire d’ajouter des & à la fin de la ligne pour indiquer qu’elles s’étendent sur la ligne suivante, puisque le compilateur détecte cela automatiquement à présent. De plus, il existe une autre manière de les formater en utilisant l’interpolation de chaines (String Interpolation). Donc au lieu d’écrire :

Code : Sélectionner tout
String url = String.Format("http://{0}/{1}?query={2}", site, path, q) ;
On écrira :

Code : Sélectionner tout
String url = $"http://{site}/{path}?query={q}";
À noter que cette dernière fonctionnalité n’est pas encore disponible dans la preview de Visual Studio 2015, mais sera intégrée dans la version finale. Vous pouvez consulter ici la liste de tous les changements apportés jusqu’à maintenant et ceux qui vont venir.

Source : Blog MSDN

Et vous ?

Qu’en pensez-vous ? Quelles nouveautés voulez-vous voir intégrées au langage ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Pol63 Pol63 - Expert éminent sénior http://www.developpez.com
le 11/12/2014 à 9:01
le ? c'est bien, avec copie thread safe c'est encore mieux, bien qu'il arrive qu'on ait plusieurs propriétés à tester dans un thread auquel cas une copie de toutes à un instant T puisse rester nécessaire

le readonly property en une seule ligne je me demandais pourquoi il ne l'ont pas mis en même temps que les properties en une seule ligne, cool aussi

le string sur plusieurs lignes à la facon d'sql server c'est bien aussi

concernant la fabrication de string, je reste plus sceptique, une variable en chaine de caractère ca reste caduque en terme de vérification à la compilation
je pense que dans ce cas il n'y a pas de vérification, mais ca reste possible donc s'ils l'ont mis c'est bien, mais ca reste une syntaxe que je n'utiliserais pas

j'ai regardé un peu la liste des nouveautés, j'aime bien le NameOf() qui est aussi un point sécuritaire plutot que de compiler un string qui peut être faux

content de voir que vb continue son chemin, par contre il reste à déplorer que ce n'est pas un langage prioritaire dans beaucoup de choses
à priori si j'ai bien suivi sur .net micro framework c# est arrivé en 1er, sur xamarin c'est pareil le c# est possible, mais pas vb.net
c'est un langage qui a une mauvaise réputation, comme sa communauté de développeur considérée comme débutante, alors que bien utilisé il n'a rien à envier à c# et je trouve ca vien d'avoir une alternative sur la syntaxe en gardant les bases de .net
Avatar de Kropernic Kropernic - Membre expert http://www.developpez.com
le 11/12/2014 à 9:20
Hello,

Pareil que Pol63 concernant les changements évoqués. Autant les premiers sont les bienvenus, autant le dernier concernant les chaînes de caractères me semble douteux. Je trouve quand même l'ancienne écriture bien plus lisible !

Ou alors il aurait fallu faire changer la couleur des noms de variables qui sont entre les accolades... Enfin ce n'est que mon avis.

Sinon, concernant le débat entre VB et C#, comme cela a déjà été dit, le VB n'a rien à envier au C# et le fait que VB soit délaissé pour pas mal de choses est vraiment regrettable.

A l'école, j'ai appris le VB6, quand je suis passé à .NET par curiosité avec le framework 1, je suis logiquement passé sur VB.NET et j'ai assez vite retrouvé mes jeunes.

Dernièrement je me suis mis à C# histoire de faire un petit projet perso avec XNA et franchement, je trouve le C# bien moins clair en lecture que le VB.NET. Un reproche qui est souvent fait à VB est d'être trop verbeux. Je trouve personnellement que c'est justement une qualité et pas un défaut.

C'est quand même beaucoup plus lisible d'avoir les End If, End While, End For, etc. au lieu d'une série d'accolade fermante "}". Et quand en plus VS n'indente pas les accolades correctement*, ça devient vite le bordel.

*J'ai d'ailleurs été très étonné qu'un truc aussi basic soit mal fait pour le C#. Une chose de ce genre ne m'est jamais arrivée en VB.NET. A moins que ce soit propre à l'utilisation de XNA ??

My 2 cents...
Avatar de rdurupt rdurupt - Expert éminent sénior http://www.developpez.com
le 11/12/2014 à 9:28
Bonjour,
depuis la version 3 Microsoft nous à vendu Vb comme un langage instinctif! comme si l'instinct était de mise en programmation professionnel!

des le début Vb avait de quoi devenir un grand langage, la notion de classe était embryonnaire mais présente; le Visuel Basic Application à compliqué la donne reléguant le Vb à un rôle de bidouillage de deuxième zone pour développeur spaghettis et/ou procédural!

cette mauvaise réputation est due en partie à cela mais également au recruteur qui déroule un discourt qui ne comprenne pas.

je suis un pur produit Vb et je suis ravis de voir que vb continue moi aussi!
Avatar de tomlev tomlev - Rédacteur/Modérateur http://www.developpez.com
le 11/12/2014 à 12:13
Citation Envoyé par Amine Horseman  Voir le message
Visual Basic n’est pas encore mort

En même temps je ne crois pas avoir entendu qui que ce soit dire qu'il l'était

Citation Envoyé par Pol63  Voir le message
concernant la fabrication de string, je reste plus sceptique, une variable en chaine de caractère ca reste caduque en terme de vérification à la compilation
je pense que dans ce cas il n'y a pas de vérification, mais ca reste possible donc s'ils l'ont mis c'est bien, mais ca reste une syntaxe que je n'utiliserais pas

Si, c'est vérifié par le compilateur. En fait, le compilateur transforme l'expression d'interpolation en un string.Format équivalent. Si tu écris ça :
Code : Sélectionner tout
String url = $"http://{site}/{path}?query={q}";
le compilateur le transforme en ça :
Code : Sélectionner tout
String url = string.Format("http://{0}/{1}?query={2}", site, path, q);
et vérifie normalement les expressions "path", "site" et "q"

Tu auras même l'intellisense dans ta string
Avatar de sinople sinople - Membre chevronné http://www.developpez.com
le 11/12/2014 à 12:17
Je rejoins les avis précédent, particulièrement pour le ?. Le fameux IsNot Nothing de la variable c'était pas le top point de vue lisibilité du code.

Quand au débat c# et VB, je trouve qu'il n'a pas vraiment lieu d'être parce que c'est surtout une histoire de syntaxe.

Si c# a tendance a être plus proche de java, de faire du code condensé (d'un point de vue nombre de caractère) et en théorie d'avoir une meilleur productivité en écriture de code au kilomètre. J'aime beaucoup le coté verbeux de Visual Basic qui rend le code beaucoup plus human readable.
Avatar de Sehnsucht Sehnsucht - Membre chevronné http://www.developpez.com
le 11/12/2014 à 12:59
Je dois pas être fichu comme tout le monde parce que l'histoire du ? je suis pas 100% fan ; je comprends l'intérêt mais pour moi ça va créer des incohérences dans l'écriture pour la simple et bonne raison que ça marchera bien pour les éléments intermédiaires mais pour l'élément final on sera toujours dans la même situation qu'avant du coup on va se retrouver à faire des choses de ce style :
Code : Sélectionner tout
1
2
If customer?.Orders IsNot Nothing Then ' propriété 
If dict?(key) IsNot Nothing Then ' indexeur
le problème serait le même avec C# a priori (sauf si bien sûr j'ai loupé un détail et que ce genre de chose là est possible)
Code : Sélectionner tout
1
2
If customer?.Orders? Then 
If dict?(key)? Then
Mais dans un cas comme dans l'autre ça me laisse un brin perplexe ; dans le premier cas on se retrouve à miser les 2 façons et du coup ça peut être déstabilisant (pourquoi fait-on différemment ?) et dans le second je trouve ça peu lisible et c'est vite fait de louper ce ? final (le compilo nous le signalera vite mais quand même).

Pour l'interpolation de chaine ça me permettra au moins de ranger au placard mon FormatNamed "maison"

Quant à la productivité de l'un ou l'autre langage ; personnellement je pense que c'est plus une question d'IDE que de langage (et de ce point de vue là VS pour VB.Net complète suffisamment la "verbosité" pour éliminer totalement [si ce n'est inverser] les choses)

J'aurais quand même aimé avoir 2-3 petites choses qui n'y sont malheureusement pas (par exemple la possibilité d'activer/désactiver localement le late binding ou l'overflow check [resp. dynamic et checked/unchecked en C#] plutôt que d'avoir un réglage global au niveau du projet [à voir s'il y a quelque chose de dispo dans le principe du #pragma qui semble avoir été ajouté])
Avatar de MikeRowSoft MikeRowSoft - Provisoirement toléré http://www.developpez.com
le 11/12/2014 à 13:15
Il y a une compatibilité avec les "anciennes écriture" du code au niveau du compilateur ?
Le linker n'ayant pas besoin de savoir sa.
Avatar de ACIVE_CS ACIVE_CS - Membre averti http://www.developpez.com
le 11/12/2014 à 13:22
Bonjour à tous,

Je ne me suis pas encore documenté sur les versions à venir, mais je suis d'accord avec tout le monde, ces évolutions sont utiles et nécessaires.
Bien que je trouve que la syntaxe s'éloigne un peu du VB, mais bon, c'est pas génant et on s'y fait rapidement.

Je crois que le VB c'est comme la potion magique de Asterix, et nous sommes tous des Obelix... nous sommes tombés dedans étant petits...

Perso, j'ai commencé avec le ZX Spectrum en 86 ou 87 je crois (je sais ça ne me rajeuni pas)
si vous cliquez sur l'image vous verrez que chaque touche contient déjà des instructions en basic...

Je n'ai aucun problème à reprendre ou à faire une application en C# ou Java (notamment pour Android).
Mais à des moments donnés quand j'ai besoin de quelque chose bien spécifique, je me retrouve avec un bout de code en VB traduit en C#...

En parlant de Android, j'ai bien sur commencé en Java au début, bon, il faut se familiariser à la structure des applications etc.
Et puis, depuis quelques mois j'ai découvert Basic4android.
Un excellent travail de compilation VB/Java fait par Anywhere Software, depuis je n'utilise que ça, je viens d'équiper un amphithéâtre dans une université avec une tablette Android et une application en VB!...

Comme dit rdurupt, je suis ravis de voir que vb continue moi aussi!

A+
Avatar de Uranne-jimmy Uranne-jimmy - Membre expérimenté http://www.developpez.com
le 11/12/2014 à 13:43
Bonjour, je suis moins pro que mes camarades au dessus concernant le VB.Net mais j'utilise en majorité ce langage, et ceux pour des raisons simples : il est clair et plein d'outils très utiles.
Je suis très content de voir qu'il y a une évolution du langage qui simplifie à la fois l'écriture et la lecture du code, en espérant que l'évolution se poursuive de façon active.
Avatar de Pol63 Pol63 - Expert éminent sénior http://www.developpez.com
le 11/12/2014 à 13:51
Citation Envoyé par ACIVE_CS  Voir le message
En parlant de Android, j'ai bien sur commencé en Java au début, bon, il faut se familiariser à la structure des applications etc.
Et puis, depuis quelques mois j'ai découvert Basic4android.

merci pour l'info
Offres d'emploi IT
Ingénieur AS400 Adelia IWS h/f
ELANZ - Ile de France - Nanterre (92000)
Ingénieur support fonctionnel (informatique) h/f
CTS NORD - Nord Pas-de-Calais - Lille (59000)
Ingénieur système linux/unix H/F
Centre de Service Sogeti - Midi Pyrénées - Toulouse (31000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil