Hur jag började med C++

Jag började programmera i språket C under första halvan av 1980-talet. Ett av mina första gig var att skriva ett plotting system på en IBM PC AT, för ett av våra stora företag som tillverkar vitvaror.
Från en textfil genererad av deras stordator byggde jag upp en graf-representation av stordator konfiguration, för att med det som utgångspunkt generera instruktioner som skickades direkt till en pen-plotter, vilken ritade ut aktuell system-konfiguration.
Under andra halvan av 1980-talet kom jag i kontakt med C++, via boken The C++ Programming Language skriven av Bjarne Stroustrup, språkets upphovsman. Jag tyckte språket var klart intressant även om det var aningen bökigt att köra cfront
. På denna tid, körde man en transpiler med det namnet, som genererade C kod för vidare kompilering till exekverbart format.
Här är ett exempel på ett dåtida C++ program och dess genererade C program.
#include <iostream>
class Account {
char* accno;
int balance;
public:
Account(char* accno_, int balance_) {
accno = accno_;
balance = balance_;
}
void update(int amount) {
balance += amount;
if (balance < 0) throw "negative balance";
}
};
int main() {
try {
Account acc("XYZ-12345", 150);
acc.update(50);
} catch (char* msg) {
cout << "failure: " << msg << endl;
}
}
#include <stdio.h>
#include <setjmp.h>
jmp_buf exception;
char* msg;
typedef struct {
char* accno;
int balance;
} Account;
Account* account_init(Account* this, char* accno_, int balance_) {
this->accno = accno_;
this->balance = balance_;
return this;
}
void account_update(Account* this, int amount) {
this->balance += amount;
if (balance < 0) {
msg = "negative balance";
longjmp(exception, 1);
}
}
int main() {
int rc = setjmp(exception);
if (rc == 0) {
Account acc;
account_init(&acc, "XYZ-12345", 150);
account_update(&acc, 50);
} else {
if (rc == 1) {
printf("failure: ");
printf("%s", msg);
printf("\n");
}
}
}
Emellertid, var jag mest sysselsatt med att programmera i C++, tills en kväll en kompis ringde. Han höll på med konsultning och utbildning och nästa dag skulle deras firma hålla en grundkurs om C++, men läraren hade just ringt in sin sjukanmälan. Så frågan var om jag kunde hoppa in. Javisst, svarande jag. Resten av kvällen hårdpluggade jag alla detaljer om språket, baserat på boken jag tidigare nämnde.
De följande tre kursdagarna gick över förväntan bra och deltagarna blev mycket nöjda och troligtvis kunnat tillämpa sina kunskaper i många programprojekt sedan dess.
Det som är poängen med denna historia är att efter kursen hade deltagarna större praktisk erfarenhet av språket än vad jag hade just då. Baserat på mina djupa kunskaper i C och hur cfront
fungerade, var det enkelt att förstå språket och kunnat besvara samtliga frågor under kursen.
Kursen blev dock startpunkten på att jag helt bytte till att programmera i C++ och det kom att bli mitt favoritspråk, vilket gäller fortfarande. Jag har en katt som har namnet C++. Han ligger här bredvid och spinner.