mercredi 21 juin 2017

On me parle de Embarcadero XE5 en Langage C++ C'est quoi cet environnement ?

J'ai pratiqué le développement RAD (Rapid Application Development) à l'époque avec le produit de Borland qui s'appelait Borland C++ Builder alors Embarcadero XE5 c'est quoi ?

D'ailleurs le net est devenu tellement mauvais, il y traîne de vieux messages poubelles que personne ne supprime et qui polluent. Ainsi en tapant "borland c++ builder 6" vous tomberez sur l'un d'entre eux ... datant de 2014 ! Il me semble bien que Borland C++ Builder n'existe plus ... dans mes souvenirs il était devenu Inprise.

Alors pour "Embarcadero xe5 c++" on me propose la chaîne de développement "en solde" ICI. C'est le premier résultat qui sort, comme c'est payant pour eux je clique ça leur apprendra !

En plus on ne trouve rien sur ce site !

Le deuxième lien semble plus prometteur :

Embarcadero C++ Builder
Compilateur C++ basé sur Clang ? pour windows 32 & 64 bits iOS et Android.
Puis on me propose d'en savoir plus sur la prise en charge du C++ moderne dans C++ Builder
J'y vais ... là on est dans le vif du sujet.

On y retrouve une description de la prise en charge de la norme C++11.

Concernant les contrôles utilisateurs :
MFC vous donne des cauchemars ? Vous trouvez wxWidgets trop basique ? VCL propose une trame incomparable qui encapsule les contrôles natifs Windows et surpasse tous les autres frameworks.

J'aime bien la phrase "MFC vous donne des cauchemars" car c'est le cas. MFC a donné des cauchemars à tous ceux qui ont eu à faire à elle. C'est le librairie des contrôles utilisateur de Microsoft, Microsoft Foundation Class.

VCL c'est pour Visual Component Library, tous les contrôles utilisateurs de la VCL dérivent de TObject. VCL vient du Delphi.

Notes diverses sur embarcadero :

La VCL est incompatible avec FireMonkey (FMX) une autre librairie de composants graphiques.

Concernant les Styles, il est possible de convertir un style pour VLC en style pour FMX.

VLC extends the RTL (Run Time Library) implementation of actions

Donc c'est quoi embarcadero ?

C'est un IDE donc la palette d'objets graphiques est soit du VLC (issu de Delphi) soit du FireMonkey ou les deux combinés.

Pour finir, vous pouvez démarrer  en vous enregistrant pour débuter votre période d'évaluation gratuite :

CX C++ Builder
Maintenant, on sait ce qu'est Embarcadero ! Concernant XE5 c'est une ancienne version de cet environnement.

Et pour la suite le Tuto c'est Ici.

Have fun !



C++11 - Qu'apporte cette nouvelle norme du Langage en 2011 ?

Standard for programming language C++ approved by International Organization for Standardization (ISO) on 12 August 2011, replacing C++03,[1] superseded by C++14 on 18 August 2014[2] and later, by C++17, which is still under development.

C++11, introduit le mot-clef thread_local pour déclarer qu'une variable doit être stockée dans une zone mémoire appartenant au thread.

- Modificateur volatile

- Délégation du constructeur
En C++11 un constructeur de classe peut appeler un autre constructeur de cette même classe se qui simplifie le code.

- Héritage du constructeur

- Les Templates

- Les Templates variadiques
comme les fonctions variadiques du C (avec un nombres d'arguments non connu à l'aide de va_list et aux macros va_start(), va_arg() et va_end() de <stdarg.h>)
exemple : la classe tuple

- Assertions statiques
static_assert(sizeof(long) > sizeof(int));
permettrait à une bibliothèque d'être certaine qu'elle est compilée sur un système vérifiant cette condition (x86-64 par exemple).

- Inférence de types
le mot clef auto se voit assigner une nouvelle sémantique
- avant : variable auto : valide seulement dans l'espace où elle est déclarée (comme c'est le comportement par défaut ce mot clef était inutile)
- maintenant une variable déclarée de type auto doit impérativement être initialisée
exemple:
auto f = boost::bind(MyFunc, _1);
f(5);
trouver le type d'objet du résultat d'un bind n'est pas facile d'ou le type auto

decltype permet de typer une variable à partir du type d'une autre variable
Exemple :
int i;
decltype(i) j = 5;


- Sémantique move()

En C++, il n'y a aucun moyen de déplacer un objet sans le copier. Ainsi la fonction swap :

template <class T>
void swap ( T& a, T& b )
{
  T c(a);
  a=b;
  b=c;
}

Appelle d'abord le constructeur de recopie puis deux assignations c'est donc trois copies au total.
C++11 introduit la fonctions std::move() dont le patron est le suivant :

template <class T>
typename remove_reference<T>::type&&
move(T&& a)
{
    return a;
}

L'objet d'origine peut être modifier à partir du résultat de la fonction move() et swap peut être réécrite de façon plus concise :

template <class T>
swap(T& a, T& b)
{
    T tmp(std::move(a));
    a = std::move(b);
    b = std::move(tmp);
}

- Énumérations fortement typées

- Pointeur NULL
en C : #define NULL ((void*)0) est impossible en C++ ne peut pas servir pour un pointeur de type différent de void*
création de nullptr qui a la particularité de pouvoir être assigné à tous types de pointeurs. On pourra écrire :

T* ptr = nullptr;

- Threads
implémentation de la bibliothèque boost.

- Type Tuple
Collection de dimensions fixe d'objets de types différents

https://fr.wikipedia.org/wiki/C%2B%2B11

C++14

- Littéraux binaires préfixe 0b ou 0B
int nb = 0b11;
std::cout << nb << std::endl; // sortie de l'application : 3

- Séparateurs de chiffres 
Pour facilité la lecture :
int un_milliard = 1'000'000'000;

https://fr.wikipedia.org/wiki/C%2B%2B14

Pour aller plus loin de bons exemples avec :

Zeste de savoir - Le C++14 est arrivé

 

mardi 20 juin 2017

Visual Studio 2017 for C++

Que pouvons nous faire avec Visual Studio 2017 en Langage C++ ? C'est la question à laquelle on va essayer de répondre ...

Installation C++ pour Visual Studio 2017

Lancer l'exe d'Installation de Visual Studio 2017 les options concernant le Langage C++ sont là.
Visual Studio 2017 Installation
Choix des composants C++ :

Développement Destop en C++
Et sur le côté le résumé des options :

Développement Desktop en C++
La suite des options :

Développement Desktop en C++ - Suite des options
On y trouve encore les bonnes vielles MFC et l'ATL, ça vous manquait je vois.

To Be Continued!