OS för programmering? (unix vs. windows)

Permalänk
Medlem

OS för programmering? (unix vs. windows)

Hej, har påbörja ett seriöst försök att lära mig programmera i c++.
Jag har kommit så långt att jag känner till grunderna och har börjat känna mig bekväm i att skriva program och felsöka (om än grundläggande).

Så idag började jag läsa om nätverksprogrammering med allt vad det innebar. I den bok jag givit mig på finns det mycket historia och referenser till varför saker är som dem är. Då är det mycket prat om unix, BSD och utvecklandet av detta.

Att det inte finns En enda referens till microsoft/windows får mig att fundera på om det är ett så lämpligt programmerings-os, tankarna leder till att jag kanske begränsar mig själv på ett icke-konstruktivt sätt? (Måste anpassa mig till windows som i sig är begränsat = lär mig mindre grundläggande och måste lägga tid på fullösningar.)

Tillsammans med att högskolekurser som jag sneglat på pratar om utveckling i unix-miljö eller liknande, samt att många jobb verkar ha det som krav/merit.

Så, vad tycker ni om att lägga tid på att lära sig unix-miljön/freeBSD i stället för att fortsätta i windows-miljö?

Fast det jag egentligen undrar är om det är bättre* att gå från unix till windowsmiljö än att börja i windowsmiljö (och antagligen senare konvertera till unix)?

* Med bättre menar jag mer djupgående/lärorikt och högskole-/yrkesförberedande för framtiden.

Tack på förhand!
//pscs3

Jag tycker tråden passar i "Programmering [...]" i stället för någon av operativsystems-kategorierna då det handlar om programmering i första hand och operativsystem i andra hand.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Till att börja med så drar jag kort min bakgrund:
Datorintresserad som lekte med assemlber, qbasic och pascal till slutet på mellanstadiet, fortsatte med html, visual basic och c under högstadiet. Java och C++ under gymnasiet.
Jag läste civ.ing. teknisk matematik vid LTH och har jobbat med ett större robotprojekt inom EU, mobil interface för TAT och nu jobar jag på Cognimatics.

Jag är inte en jätteerfaren och fantastiskt duktig utvecklare enligt vad jag själv tycker, men jag har erfarenhet inom utveckling dels för windows och linux men även andra mer "exotiska" platformar som finns på mobilmarknaden och i inbygda system.

I min mening så kvittar det om du väljer windows eller *nix som ditt utvecklings-os tror att du kan få jobb oavsett vilket, men det är nog ganska uppenbart att det är mer attraktivt att anställa en som kan både och.

Om man börjar kika på produktivitet så skulle jag vilja påstå att *nix vinner.
Till exempel så vill du kanske använda dig av något gratis-lib i din utveckling. I de flesta fall så är det under *nix bara att använda den medföljande pakethanteraren och installera bilblioteksnamn-dev så är det klart att köra på.

Vidare så har man alltid dokumentationen nära till hands. Du har valfrihet gällande fönsterhanteraren så du kan få din arbetsstation att bete sig precis som du vill.

Om man ser till användarbas och att bygga sin applikation till flera system så vinner nog *nix igen.
Vi kan t.ex. kika på en applikation skriven i C eller C++, man väljer att skriva cmake-fil (kanske) där du definierar ditt bygge samt speciella avvikelser som beror på vilken platform det ska kompileras för. Sedan är det bara till att bygga eftersom du har mingw-kompilator som färdigt paket till många distar. För att testa sedan så har du Wine nära till hands för windows-bygget alternativt en virtuell maskin där du testar.
Skulle man gjort samma sak i Windows så måste man installera cygwin eller en virtuell maskin.

Ser man till tolkade språk som python, perl, ruby mfl. så spelar det mindre roll vilket system man väljer.

"Men Visual Studio då?" - ja, vad ska man säga... Visual Studio är i min mening en bra utvecklingsmiljö, skaplig editor, intellisense och massor annat... den är hyffsat snabb. Har man en arbetsgivare som har alla projekt i Visual Studio då har man inte så många val, du kan ju alltid använda en annan editor, men byggandet får man lämna till det system som finns i VS. Men man är bunden till att ha en Windows burk hur som helst.
Jag har suttit och sitter en del med Visual Studio främst för en del C#-projekt. Det jag märker är att jag är mer produktiv gällande kodandet med en snabb avskalad editor, dokumentation/datablad på en virtuell skärm, debugger/testare i en terminal (yakuake) tillsammans med ett till terminalfönster för bygge och snabbkörning av programmet.

Ptjaa .. tror det framgår att jag föredrar *nix. Men jag har inget emot Windows som miljö ... hoppas du får nått från allt svammel.

Visa signatur

weeeee

Permalänk
Medlem

Re: OS för programmering? (unix vs. windows)

Citat:

Ursprungligen inskrivet av pscs3
Så idag började jag läsa om nätverksprogrammering med allt vad det innebar. I den bok jag givit mig på finns det mycket historia och referenser till varför saker är som dem är. Då är det mycket prat om unix, BSD och utvecklandet av detta.

Att det inte finns En enda referens till microsoft/windows får mig att fundera på om det är ett så lämpligt programmerings-os, tankarna leder till att jag kanske begränsar mig själv på ett icke-konstruktivt sätt? (Måste anpassa mig till windows som i sig är begränsat = lär mig mindre grundläggande och måste lägga tid på fullösningar.)

Anledningen till att Windows inte nämns i nätverksprogrammeringsböckerna är att IP-protokollen har sitt ursprung i UNIX-miljön, men det betyder inte att de fungerar så mycket annorlunda i Windows. Historiskt sett har det nog varit lättare att skriva program för en UNIX-miljö med bara en kommandoprompt jämfört med att skriva program för Windows.

Det är väldigt lätt att ta med sig kunskaperna från UNIX-miljön till Windows-miljön eftersom samma koncept förekommer i båda miljöerna. Jag började faktiskt själv med att läsa nätverksprogrammering för UNIX, men skriver nu enbart program för Windows.

När man lär sig programmering är det viktigare att lära sig själva koncepten och inte bara syntaxen för de kommandon man använder just nu. Jag tror att det blir lättare att skriva välstrukturerade program ju mer erfarenhet man har av olika språk, miljöer o.s.v.

Edit: För att bygga vidare på det mounte säger, att rent programmeringsmässigt sett är det inte så stor skillnad på de båda miljöerna, vill jag bara tillägga att Linux och Windows har litet olika användartyper. Windows är dominerande inom företagsvärlden och hos de användare som bara vill köra sina program utan att behöva kunna så mycket, medans Linux har väl fler användare som kan litet mer och gillar att koda/tweaka o.s.v.

Om vill skriva program för andra att använda bör du fundera på var dina användare finns.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av PhodNär man lär sig programmering är det viktigare att lära sig själva koncepten och inte bara syntaxen för de kommandon man använder just nu. Jag tror att det blir lättare att skriva välstrukturerade program ju mer erfarenhet man har av olika språk, miljöer o.s.v.[/B]

Detta. Sen är det även som Phod säger att Windows har övertaget i företagsvärlden vilket betyder att det är det man ska kunna om man vill ha jobb; men att börja i *nix för att lära sig grunderna och sedan gå över till Windows för det mer Windowsspecifika är definitivt en metod kan fungera.

Permalänk
Medlem

Tack för tre mycket bra svar!
Det får bli att behålla windows som enda OS på min stationära där jag sitter mest, sedan kommer jag nog experimentera med FreeBSD på laptopen när jag har tid! Förhoppningsvis kommer jag kunna få det bästa av världarna, samtidigt som många böcker jag kikat på är inriktade på *nix.

Edit;
Ursäktar att jag inte kan svara mer utförligt på era lite längre svar. Kommer liksom inte på vad jag ska svara, det ni skriver låter mycket rimligt!

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Du kan ju alltid köra VirtualBox e.dyl. om du vill prova på andra operativsystem. Det brukar bli mindre pyssel så än om man har en dedikerad dator för det.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Om dina användare skulle befinna sig i både nix och Windows miljöer så finns wxWidget och QT (m.fl).
Själv använder jag mig utav QT, stort bibliotek, kommersiell & opensource, stabil snabb och kan köras på mobila plattformar utöver nix & win.

Sen som Phod säger, virtualbox är ett bra verktyg i detta sammanhang.

Permalänk

Såg inte om någon hade sagt det men specifikt för nätverksprogrammering är det nästan ingen skillnad mellan windows och *nix. BSD sockets är implementerat i windows och det är mycket liten skillnad att använda dom på windows eller *nix.

Där du däremot kommer märka stor skillnad är synkronisering/trådning som man ofta måste använda om man programmerar nätverk. I mitt tycke är windows mycket bättre på detta område. Även om du med lite tricks kan göra nästan allt du vill i *nix också.

Permalänk
Avstängd

Mycket av Unix koden är ju öppen. Du kan verkligen gå ned och rågrotta och se exakt vad som sker och hur man gör det i praktiken. Det är som om du ska göra ett helt nytt OS. Det finns massa Linux/FreeBSD/OpenSolaris/etc kod att lära sig av och experimentera med. Du har inte alls lika mycket att hämta bland Windows källkod.

Så om du vill se exakt vad som görs, och se alla detaljer så är det nog Unix som gäller. I Windows så kan du inte se vad som händer, allt är gömt. Vill du gå ned på lågnivå och grotta i detaljer så kan du inte göra det i Windows.

Permalänk

Jag ska säga det på ett enkelt sätt. Du kommer troligtvis aldrig komma så långt att det är operativsystemet som sätter någon begränsning för din framgång, oavsett vilket system du väljer.

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");

Permalänk

Jag lärde mig allt grundläggande i Windowsmiljö och Visual Studio. Tycker även i efterhand att det gick utmärkt att börja så. Det är först på senare tid som jag börjat arbeta mer i Ubuntu och Arch Linux, vilket jag tycker har gått bra. Just nu trivs jag bäst i Arch Linux när det gäller utveckling. På jobbet är det fortfarande Visual Studio/Windows som gäller.