[C] [C++] [C#] Evolution logique

scoubidou944 Messages postés 719 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 13 oct. 2004 à 02:39
scoubidou944 Messages postés 719 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 13 oct. 2004 à 13:19
Après avoir développé plusieurs années en C, puis en C++ dans le domaine du jeux video (et oui je C, j'V faire D jaloux ;p), je viens de migrer vers C# depuis quelques mois.

Depuis je revis :)
Sous C/C++, la gestion mémoire était une horreur, tout le tps des memory leak, des débordements, des effets de bords (facile sur un TP, bcp moins dans 100 000 lignes de codes reparties par 30 programmeux).
La création d'appli en Win32 ou meme en MFC relevait de l'exploit tellement CT lourd.

Maintenant en C#.NET C le bonheur. L'IHM est intégré comme sous Borland C++ builder pour ceux qui connaissent. De Plus l'environnement .NET est conçu pour C# qui reprend les bon points de C++ en virant les mauvais :
- on alloue chaque objet (les pointeurs sont masqués dans la syntaxe mais bien presents) mais plus de free, C géré par le système. C perturbant au début mais pas plus de 15j
- autre conséquence, plus de fragmentation de la RAM à force d'allouer/desallouer
- les STL comportant les hashmap, les list et tt ca, C intégré
- tout objet dérive d'un objet unique donc plus de template.
- plus de prédéfinition ou rebouclage entre les fichiers .h
- des classes au niveau permettant de downloader un fichier via HTTP en 2 lignes de codes (init, download, on peut pas faire plus c...)
- l'intégration des lib via DLL ne peut pas etre plus simple

Bref, ca fait plus de 15 ans que je programme dont près de la moitié en pro et franchement, pour ceux qui veulent commencer la prog, C la technologie du futur.

Pour les techniciens, sachez que sous .NET, on peut avoir du code C#.NET, C++.NET... mélangé.

A tester absolument.

----
Y'a des jours où il faut pas m'chercher. 
Et y'a des jours tous les jours.
A voir également:

5 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
13 oct. 2004 à 09:08
Je vais modérer cet avis sur .Net:


C# n'est absolument pas l'évolution logique du C et C++.


C++:
- est une norme international (ANSI).
- n'est la propriété de personne
- l'utilisation de la norme est libre
- on trouve des compilateurs différents (borland, watcom...)
- existe sur divers systèmes d'exploitation (Windows, Unix, Linux, MacOS, systèmes embarqués...)
- existe pour quasiment tous les processeurs (Intel, Motorola, Sparc, ARM...)


C#:
- a été inventé par Microsoft seul.
- est la propriété exclusive de Microsoft.
- seul Microsoft fourni le compilateur (si on except Mono et DotGnu)
- Microsoft tolère la création de systèmes compatibles
- fonctionne exclusivement sous Windows 2000 et XP (si on except Mono)
- fonctionne exclusivement sur processeurs compatibles Intel.


ça fait une énorme différence.

Enfin, C# fonctionne dans une machine virtuelle, alors que le C++ compile en code natif du processeur, ce qui donne un mode de fonctionnement très différent (garbage collector, cache de code, validation du bytecode, etc.)
C'est généralement intéressant (béni soit le garbage collector !), mais ça n'est pas la solution à tout (pilotes de périphériques, systèmes embarqués, systèmes temps réel...)


Les types de données sont également différents (représentation interne différente), et la syntaxe du C# est également différente du C++ (même si elle ressemble beaucoup).


C# n'est donc absolument pas l'évolution naturelle du C++.

Les markettoïdes de Microsoft ont eu le nez fin en nommant cela C#.


Cela ne retire rien à certaines qualités de C#, mais il est important de faire la distinction.



Et pour bosser depuis plus de un an sur un gros projet en C# et ASP.Net, je peux vous dire qu'on s'est arraché les cheveux.
Tout n'est pas rose dans le monde de .Net et C#.

Pour moi, même si .Net s'améliore, il n'est quand même pas assez mûr.




PS: Je crois plus à Python et aux languages à typage dynamique. Et j'ai raison. Vous savez pourquoi ?
Parceque Microsoft et Sun (Java) bossent comme des fous sur ces types de langage.
Microsoft a même été jusqu'à recruter un des développeurs Python.
5
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
13 oct. 2004 à 07:53
Salut

c'est alléchant, en effet ...

Chouba,
Pochard d'assaut .. 
0
scoubidou944 Messages postés 719 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 127
13 oct. 2004 à 11:26
Sur ton point de vue je suis d'accord (la on parle entre technicien). C# n'est pas un langage prédictible comme C++ dans la mesure ou il y a le Garbage collector et tourne derriere une machine virtuelle.

Maintenant sur sa portabilité, il est vrai que C 9x, 2K et XP 2003 only mais cela devrait bientot changer. D'ailleurs c'est tout le but puisque Krosoft veut imposer sa machine virtuelle par dessus Sun ce qui expliquerait pk Sun relancerait bcp dans le développement.

De mémoire, C# a été travaillé en collaboration avec d'autres grands nom de la prog meme si Krosoft reste tres présent.

N'oublie pas que C# n'a que 4 ans de maturité, il doit encore évoluer via Xev (ex X#) visiblement par exemple. Mais pour avoir bossé sur les 3, je trouve qu'on gagné réellement du tps en terme de dev sur mes appli en localhost.
Tu te vois coder un Photoshop en Win32 toi maintenant ? lol. pas moi.

Y'a des jours où il faut pas m'chercher. 
Et y'a des jours tous les jours.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
13 oct. 2004 à 11:52
Maintenant sur sa portabilité, il est vrai que C 9x, 2K et XP 2003 only mais cela devrait bientot changer.

Pourquoi Microsoft favoriserait-il un système d'exploitation concurrent en facilitant le portage des applications .Net sur ces systèmes ?
C'est en totale contradiction avec la politique Microsoft.
Je n'y crois pas.

PS: L'expert Microsoft qui est venu chez nous nous a fortement déconseillé de faire tourner les appli .Net sur autre chose que 2000 et XP.

Et je mettrai pas un doigt dans Mono ou DotGnu, c'est stratégiquement bien trop dangereux.
(Que se passera-t-il le jour où Microsoft décidera de taper sur Mono ?)


De mémoire, C# a été travaillé en collaboration avec d'autres grands nom de la prog meme si Krosoft reste tres présent.

Exact.

Xev (Xen ?) a l'air intéressant également.
Mais je n'ai pas assez de recul sur les bases de données objet ou les systèmes de mapping relationnel<-->objet pour en débattre.

Comme le suggère un article récent sur Slashdot, il serait temps de chercher à utiliser autre chose que nos bonnes vieilles bases de données relationnelles.
On perd trop de temps avec ça.

J'ai juste un peu lu sur Hibernate: le principe est vraiment très intéressant.


je trouve qu'on gagné réellement du tps en terme de dev sur mes appli en localhost.

mmm... variable.

On a gagné sur certains plans, perdu sur d'autres.

Par exemple, notre projet s'est pris 1 mois et demi de retard dans la tronche à cause de problème liés à la plateforme .Net elle-même.
(bug du pool de connexion, etc.)

Autre exemple: On a gagné du temps sur la construction des pages web (datagrid, etc.) , mais MSDTC n'existant pas dans l'API .Net, on a dû refaire complètement notre système de gestion des transactions.

Globalement, c'est donc variable.

Mais il faut avouer que VisualStudio.Net est agréable, surtout pour les webforms.


Tu te vois coder un Photoshop en Win32 toi maintenant ?

Non, en effet.

Mais d'un autre côté, en codant avec l'API Win32, ça tourne sous toutes les versions de Windows, et potentiellement d'autres systèmes (les différentes versions de Photoshop (MacOS, etc.) partagent du code C++).

Avec .Net, non seulement c'est réservé à un nombre limité de versions de Windows, mais le code ne sera pas réutilisable sur d'autres OS puisque C#/.Net n'y existe pas.

En matière d'investissement en temps et argent, ça ne me semble pas forcément très bon.

En comparaison, Mozilla me semble exemplaire:
Il ont essayé de maximiser la réutilisation du code d'un système à l'autre, allant même jusqu'à tenter de faire abstractions de certaines API (en particulier tout ce qui est interface graphiques avec XUL).



Les machines virtuelles nous permettent enfin de nous affranchir de la dépendance vis à vis d'un microprocesseur particulier.

Il serait temps qu'on s'affranchisse aussi des systèmes d'exploitation.

Augmentez vos dépendances, vous augmentez vos risques.
Le fait de pouvoir changer d'OS est une garantie de pérennité.



Tout ceci reste bien entendu un avis tout à faire personnel.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scoubidou944 Messages postés 719 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 127
13 oct. 2004 à 13:19
Que dire après un tel discours, y'a du pour et du contre, seul le tps nous permettra de voir les limites de .NET
En tout cas, le jour ou j'ai un pb sous C#, je sais à qui demander ;p

Y'a des jours où il faut pas m'chercher. 
Et y'a des jours tous les jours.
0