Bjarne Stroustrup bruger både Linux og Windows og har et godt råd til nystartet datalogistuderende

I en AMA på Reddit kommer C++-skaberen blandt andet ind på, hvilket operativsystem han anvender i det daglige.

Den danske skaber af programmeringssproget C++ Bjarne Stroustrup har netop afholdt en Ask Me Anything (AMA) på Reddit. Nærmere bestemt /r/Denmark.

Her blev han blandt andet spurgt om, hvilket operativsystem, han anvender til dagligt.

»Flere Linux-distroer og Windows,« lyder det i svaret fra Stroustrup.

Den - i visse kredse - kendte dansker bliver også spurgt til, hvilken C++-compiler, han bruger.

»GCC og Microsoft, snart også Clang (igen). For at være sikker på portability, må man altid bruge mere end en. Når jeg underviser, bruger de studerende altid Linux, Windows, og Apple,« svarer Stroustrup.

Og så blev Bjarne Stroustrup også bedt om sit bedste råd til én, som lige er startet på datalogi-uddannelsen.

»Hvad ellers du gør, bliv god til “the fundamentals”: algoritmer, data structure, maskinarkitektur. Lær at bruge programmeringssprog (eller deres støttesystemer); og ikke kun ét sprog. Arbejd på et eller flere større projekter,« svarer Stroustrup og fortsætter:

»Alt the trendie stof lærer du alligevel på vejen. Når du er god til fundamenterne, bliver du god til games, graphics, web design, networking, security, o.s.v. Det er også godt at have en forståelse af noget matematik.«

Læs hele Bjarne Stroustrups AMA på Reddit her

Følg forløbet

Kommentarer (16)

Henning Mølsted Journalist

Hej Mikkel

Tak for kommentar. Kommentarer af den art sendes til journalisten eller redaktionen.

Og i øvrigt foretrækker jeg et sobert sprog, når vi kommunikerer med hinanden.

VH Henning Mølsted, redaktør.

Martin Bøgelund

NystartEDE!!!

Nej, den er god nok, det skal være "nystartet", da der kun er én:

Og så blev Bjarne Stroustrup også bedt om sit bedste råd til én, som lige er startet på datalogi-uddannelsen.

Det jeg selv plejer at gøre før jeg skriver "For hulan da!", bruger versaler og masser af udråbstegn, er at jeg rent faktisk læser den tekst som jeg skal til at kommentere.

Tippet er hermed givet videre til fri afbenyttelse.

Eskild Nielsen

I overskriften tales der om et råde til alle datalogistuderende, der lige er begyndt.

Derfor er det flertal, og derfor skal det være NYSTARTEDE.

Men i brødteksten er det et råd til en enkelt, anonym tilfældigt valgt studerende - altså NYSTARTET på det sted

Jan Rasmussen

Hej

Jeg er på hobbyplan begyndt at programmere i C++11 og SFML/SfeMovie(ffmpeg)
i Code:blocks med MinGW-W64_sj

Mit eneste kritik punkt af C++11/14 er at funktioner stadig ikke kan returnere mere ind én type og at man skal gentage de samme typer efter hinanden i funktion deklarationen..

Skulle men ikke tro at det ville være en smal sag for compileren at genkende nedenstående:

float, int foo( float x, y, z, std::string name)
{
// --
return x+y/z, name.size();
}

Tro i det ville være totalt åndssvagt at spørge halv guden om det :-) ?

Morten W. Jørgensen

Med hensyn til flere returvariable:

Nu kan du rent faktisk godt kompilere nedenstående linje, men den gør helt sikkert ikke hvad du forventer.

return x+y/z, name.size();

Ser du, komma-operatoren evaluerer venstre expression og højre expression og returnerer resultatet af den højre. Det er én grund til at man ikke kan returnere to værdier på den måde.

Husk, at komma-operatoren har absolut lavest precedence, så

#include<stdio.h>  
int main()  
{  
          int i;  
          i = 1,2,3;  
          printf("i:%d\n",i);  
          return 0;  
}

vil skrive "i:1"

Grunden til at komma-operatoren opfører sig sådan i C++, er at det er sådan den fungerer i C og Bjarne definerede at C skulle være en ægte delmængde af C++. Derfor.

Man kunne så argumentere for at der bare kunne være valgt et andet tegn til at imødekomme din forespørgsel, men hvorfor det ikke skete, ved jeg ikke.

Du kan vælge at returnere en std::tuple istedet:

#include <tuple>  
   
std::tuple<int, float> getNumbers()   
{  
  // return {42, 3.1415};  // Kommer i C++17.  
  return std::make_tuple(42, 3.1415);   
}  
   
int main(int , char **)  
{  
    std::tuple<int, float> r = getNumbers();  
    printf("Int = %d, float = %e\n",  
        std::get<0>(r),  
        std::get<1>(r));  
    return 0;  
}

Det er også sådan Python returnerer flere værdier. Det er bare mere implicit i Python.

Med hensyn til funtionsdeklarationen:
Det har jeg ikke lige et godt svar på.

Torben Mogensen Blogger

Må jeg foreslå andre sprog, f.eks. SML, Haskell og F#, hvor du uden videre kan returnere flere værdier fra et funktionskald uden, at det kræver en så omstændelig notation som C++ tupler, og hvor du ikke alene slipper for at gentage typen af argumenter af samme type, men helt kan udelade typeangivelserne og alligevel have fuld, statisk typesikkerhed (til forskel fra f.eks. Python)

Gert Agerholm

Jeg er meget enig i de ting der står, måske lige bort set fra ét punkt, web design. Det er helt rigtigt at det tekniske bag web design hører med, men det visuelle design og brug skal ikke designes af en matematiker, det skal være et samarbejde mellem en tekniker og en designer/praktiker, derfor siger jeg også at det er ude for mit kompetence område. Ellers er der risiko for at siderne bliver alt for indforstået, som mening person ikke kan finde ud af. Jeg synes at have set en hel del af den slags. For at finde ud af hjemmesiden skal man helst have været ansat i firmaet og have 25 års anciennitet, ellers forstår man ikke det indforståede sprog og logik.

Niklas Hegnelt

Gert, nu begynder man vel, strengt taget, heller ikke på datalogi med det primære formål, at blive webdesigner..
Du kan jo bruge samme argument overfor Games. Man bliver heller ikke en god level designer eller storyteller af at kunne matematik..

Jan Rasmussen

Tak for svarene.

At andre programmering sprog har klaret de udfordringer giver mig det indtryk at min undren ikke var helt så ubegrundet.

Jeg formulerede spørgsmålet lidt anderledes da jeg en time senerer skrev nedenstående i Ama tråden på redit, da der ikke var sket noget hér.


Som nybegynder til C++11 i 2015 virker det lidt underligt at funktioner ikke er kommet længere ind i 1985 på disse to områder.

  1. funktioner kan stadig ikke returnere mere ind én type som eks. vis. LUA kan iirc. jeg føler at man bliver tvunget til unødig kompleksitet som struct/classes/std::touples osv. for at returnere simple ting.

  2. Man er tvunget til at gentage typen og får meget lange funktion definitioner, selvom man godt udenfor f() kan skrive: int a,s,d,f,g,h; i et hug. Men ikke:

float, int f( float x, y, z, std::string name, int d, f, g) { // --- return x+y+z, name.size()+d; }

Jeg er vild med resten som giver en nybegynder indtrykket af noget der er udviklet i 2015

nogen bud på hvad det ville forsage af ulykker hvis en compiler understøttet ovenstående ?


Space-Being svarede på ovenstående på linje med svarene her.

Til #1. Du vil blive nødt til at opfinde nyt syntaks. Din returtype er ikke gyldig C-syntaks, og derfor tror jeg godt man vil kunne udvide parseren i C++ til den del (det vil ikke ødelægge bagudkompatibilitet). Den typiske måde funktioner implementeres på (hvis compilerne ikke optimerer det væk) er at bruge en call stack (selvom det teknisk set ikke er påkrævet af standarden) hvor returnværdierne bliver lagt. Det er simpelt for compileren at sørge for der er plads til både en int og en float. Men et klar problem er, at det bliver nødvendigt at tilføje endnu mere syntaks til et sprog som allerede er meget "stor" på det område, for at returnere værdierne. Følgende vil f.eks. ikke virke:

float, int f(int x) {
return x / 2.0, x + 1
}

Det skyldes at ',' allerede bruges til sekvensering. Udtrykket a, b; garanterer at a udføres først, og så b derefter.

Lasse Lasse

auto r = getNumbers();


Det gør det jo så temmelig ulæseligt for andre udviklere, hvis man skal hoppe rundt for at finde ud af, hvad getNumbers() returnerer. Jeg synes kun auto skal bruges de steder, hvor der ellers skulle bruges en ekstern grim typetraits hjælpe struct for at deducere typen, eller hvis erklæringen er så uendelig lang, t den er ulæselig anyway.

Log ind eller opret en konto for at skrive kommentarer

JobfinderJob i it-branchen