Hej Jesper,
"Jesper Gødvad" <Xesper@goedvad.dk> wrote in message
news:9bgbh0$ir0$1@sunsite.dk...
> Hej Mogens
>
> Jeg går dog udfra at VCL og MFC har stort set samme funktionalitet, så man
Ja stort set.
VCL er blot meget mere moderne og lettere at bruge end MFC.
Jeg vil ikke råde nogen til at lære MFC idag, hvis de ikke har en _meget_
god grund til det. Det har ikke samme markedsmæssige betydning at kunne MFC
nu da Microsoft har annonceret deres .NET initiativ.
Du vil se stort set samme design i VCL, WFC (Microsoft J++
klassebiblioteket) og WinForms i Microsoft .NET, for det er alt sammen lavet
af samme arkitet: danskeren Anders Hejlberg.
> (selvfølgelig) kan bruge WinSock og COM selvom man benytter Borland. Men
det
Ja.
> er måske så MFC bibliotekerne man benytter?
Nej. Der findes VCL componenter til socket programmering og COM er godt
understøttet.
Normalt vil jeg dog bruge tredie part produkter (som ObjectSpace
www.objectspace.com eller ACE
http://www.cs.wustl.edu/~schmidt/ACE.html) til
at lave socket programmering. De har netop som opgave at gøre mig uafhængig
af compiler leverandør og platform (Prøv at se hvor mange platforme ACE
findes til
http://www.cs.wustl.edu/~schmidt/ACE-versions-i.html.).
Distribueret programmering laver jeg dog normalt med CORBA.
>
> Den bedre implementering af STL i Builderen opfatter jeg som en mindre
> betydelig detalje hvor man i tilfælde af problemer blot programmerer en
> workaround, da man alligevel ikke kan gardere sig 100%. Din pointe med en
> dll-fri installation er sød musik i mine ører - jeg tager i betragtning at
> VBs default installationer fylder 2 mb+ med mindre man ligefrem ønsker at
> sætte sig ned og lave alting selv. Faktisk lyder det så godt at jeg kunne
> finde på at vælge Builder alene af den årsag.
>
> Kan det ikke også laves i VC?
Jo.
>
> Jeg er nemlig noget overrasket hvor mange betydelige fordele du nævner ved
> Microsoft i betragtning af du selv bruger Builderen. Den bedre
> dokumentation, større udbredelse og projektstyring er ting jeg selv lægger
> stor vægt på.
Du har også mere brug for dokumentationen :)
Projektstyring er kun _lidt_ bedre.
>
> Det jeg frygtede ved Visual C++ var, at den var en lukket MS standard a lá
> FrontPage eller Java i Internet Explorer. Det synes ikke at være
tilfældet.
Jo, det er tildels tilfældet.
Hvis ens primære kilde til hvordan man skriver C++ programmer er Microsoft,
så vil man blive sovset ind i deres biblioteker og sprogudvidelser uden at
få nogle fordele til gengæld. Effekten er at man let bliver lukket inde.
Se f.eks. Bjarne Laursen (ikke for at hakke på ham specielt, det er meget
forståeligt hvad og hvorfor han siger som han gør) inlæg i denne gruppe i
tråden "varierende størrelse på et array i C++" den 16. april.
Jeg syntes der er andre kilder, hvor man kan lære meget bedre anvendelse af
C++ - f.eks. de bøger jeg nævnte.
Microsoft kunne f.eks. let have gjort det langt nemmere at lave COM
programmering med lidt klasse-bibliotek og en bedre IDL-compiler - i stedet
valgte de at tilføje en række overflødige sprogudvidelser.
I sandhedens tjeneste skal det siges, som jeg også har gjort, at det samme
kan lade sig gøre i C++Builder - VCL er proprietært med anvendelse af C++
sprogudvidelser. Det kan køre der hvor Borland beslutter det: Windows og
snart (?) Linux.
Jeg mener at man kan få en del af forklaringen ved at kigge på baggrunden og
historien.
Hvorfor laver Microsoft en C++ compiler ? For at tjene penge ? Nej, det er
små-penge sammenlignet med hvad de tjener på Windows og Office. Deres
primære grund er at understøtte og konsolidere deres platform. De har brug
for kontrollen. De har ringe interesse i at understøtte åbne standarder.
Hvorfor gjorde de Visual Basic til deres primære programmeringssprog for
applikationer ?
Hvorfor laver Borland en C++ compiler ? For at tjene penge ? Ja, hvad ellers
? Man kan selvfølgelig sige at de ikke er lige så gode til at tjene penge
som Microsoft.
Hvad skal der til for at Borland C++Builder har nogen berettigelse ? Hvis
den punkt for punkt _netop_ matchede Microsoft Visual C++, ville den ikke
have nogen som helst berettigelse, netop for at det er et ikke Microsoft
produkt.
Der skal være og er noget andet:
* Understøttelse af åbne standarder som f.eks. C++, CORBA, SQL
* Et bedre udviklingsmiljø (smagssag)
Hvis du går tilbage i tiden (første halvdel af 90'erne), vil du se at
Microsoft altid har været meget slæbende i deres understøttelse af C++,
hvorimod Borland traditionelt var førende (STL blev oprindeligt
implementeret med Borland c++ V4.5 - det var den eneste der kunne håndtere
templates godt nok). Borland var også banebrydende (i kraft af Anders
Hejlberg) med hensyn til udviklingsmiljøer, hvor Microsoft haltede efter.
Hvis du ser på udviklingen af Visual C++ vil du bl.a. se at navnet var et
godt marketing-tricks.
Visual Basic var blevet frigivet og havde ændret opfattelsen af hvordan man
kunne lave Windows programmer, og alle _snakkede_ om C++.
Visual C++ var et direkte misvisende navn:
* Det var ikke visuelt i den forstand som man kendte fra Visual Basic
* Det var ikke C++ som det var beskrevet i ARM (med f.eks. multiple arv,
exception, templates).
Visual C++ fik først en tilnærmelsesvis anstændig C++ implementering i V5,
og den er endnu ikke Visual (det bliver den i .NET versionen).
Det den primært gav brugerne, var en (forkert) _fornemmelse_ af at de kunne
håndtere to hotte ting nemt samtidigt: Windows programmering og C++
programmering. Husk folk kæmpede med DOS og C programmering.
Se eventuelt beskrevet i bogen "Dynamics of Software Development", Jim
McCarthy, ISBN 1556158238 - Jim McCarthy var leder af udviklingen af Visual
C++ V1.0 - hvis du er historisk interesseret. Bogen er iøvrigt god i det
hele taget med hensyn til styring af software projekter.
Borland C++Builder har sine rødder i Borland Delphi. Delphi blev udviklet
med Anders Hejlsberg som arkitekt, på baggrund af Turbo Pascal. Delphi må
regnes for at være klart bedre end Visual Basic - bortset fra at det ikke er
et Microsoft produkt.
Anders Hejlsberg forlod Borland til fordel for Microsoft omkring 1996/97,
mod (ifølge søgsmålet fra Borland) at få ca. 20 mill. kr. i transfersum, en
rigtigt pæn årsløn og aktier i Microsoft.
Hvad har han så lavet siden ?
Visual J++, som skulle få skovlen under Java, ved at være det bedste
udviklingsmiljø. Det gav dog anledning til lidt retssager - resten er
historie.
I stedet lavede han så C# og Visual Studio .NET. C# ligner Java til
forveksling og Visual Studio .NET ligner Delphi/C++Builder meget.
Visual Studio .NET ser faktisk rigtig godt ud, men for at kunne lave GUI
design med C++, skal man benytte en af-art af C++ (Managed C++ - godt
marketing trick igen. Det står som modsætning til Unmanaged C++ (C++ is
unmanageable)).
Microsoft har betalt Borland 120 mill. (jeg kan ikke huske om det er kr.
eller dollars - det spiller heller ikke den store rolle for budskabet) for
at benytte noget af Borlands patenteret teknologi fra Delphi/C++Builder i
Visual Studio .NET.
Hvis ikke den historie giver dig en idee om hvordan Microsoft syntes et
udviklingsmiljø skal være: a la Visual C++ V6 eller a la C++Builder, hvad
kan så ?
Man kan i Microsoft System Journal læse hvordan garvede folk (Matt Pietrek)
er imponeret over hvor let det er blevet at lave brugergrænseflade i Visual
Studio .NET, i forhold til tidligere. Man kan ikke andet end at tænke "det
har man da kunnet i årevis".
Man kan ikke med rimelighed lave en objektiv og dækkende sammenligning
mellem to store compilere i en nyhedsgruppe - det er simpelthen for stor en
opgave. Desuden kan man ikke forlange at jeg skal være objektiv.
Fra dine kommentarer omkring Linux, tænke jeg at du ikke bekymrede dig
nævneværdig om åbne standarder og portabilitet.
Det kan sagtens lade sig gøre at skrive fornuftig protabel standard C++ i
Visual C++. Som jeg skrev tidligere er det en rimelig implementering.
Jeg compilerer ofte min kode både med C++Builder og Visual C++.
>
> Du skriver, at du selv foretrækker Builderen, men jeg har svært ved at se
> hvorfor. Jeg skal starte på noget 'nyt' og du får det jo nærmest til at
> virke åbenlyst at jeg skal vælge Visual, da det åbenbart også er de fakto
> standarden.
Visual C++ er det åbenlyse, risikofrie valg (spis lo.. 100 millioner fluer
kan ikke tage fejl).
Det kræver en aktiv bevidst stillingtagen at vælge nogen som helst andet.
>
> Mht. CodeGuard kan jeg ikke undlade at nævne at jeg jo kommer jeg fra et
> miljø hvor vi fortolker mens vi udvikler så vi kan rette fejlene on the
fly
>
Ikke forstået - vi snakker om runtime fejl, som _vil_ give alle C/C++
programører problemer af og til.
>
> Dine bogreferencer er taget til efterretning og jeg har just nu bestilt
den
> første.
Koden i "Accelerated C++", som er god rimelig banal moderne C++, kan ikke
umiddelbart oversættes med Visual C++. Der skal små ændringer til, som
findes på nettet (
http://www.acceleratedcpp.com). Jeg har ikke oplevet
problemer med C++Builder - men jeg har heller ikke oversat al koden endnu.
Et par gode råd: læs bogen (køb trøjen, se filmen :) ), skriv koden i
_hånden_ og lav alle opgaverne.
Venlig hilsen
Mogens Hansen