Permalänk

C++ IDE

Hej!

Har haft planer på att lära mig C++ ett tag men har nu äntligen fått tid att ta tag i det.

Nu undrar jag vilken IDE jag bör använda? Vad föredrar ni och varför? Vill kunna utnyttja nya funktioner i C++11.

Jag har tillgång till Windows och Mac. Gillar Visual Studio och har suttit endel i det med C#. Däremot så upptäckte jag att det inte var bra för C då det saknade nyare funktioner i språket. Jag började då använda Eclipse med plugin men eclipse är eclipse... Så jag gick över till Vim + GCC på min mac. Nu kör jag Vim med YouCompleteMe för C programmering(har massor av andra addons ex ultisnips). Jag gillar väldigt mycket i Vim men saknar Visual Studio vid större projekt då en IDE kan vara skönare.

Vad skulle ni rekommendera? Om jag ska fortsätta med Vim kommer jag nog att skaffa en maskin med Linux då jag inte orkar fortsätta att försöka få Linux-saker att fungera på Mac'en. Att få igång YouCompleteMe tog alldeles för lång tid. Vill även kunna använda Valgrind som jag aldrig fick att fungera så om ni föredrar någonting som enbart finns för Linux så gör det inget, tipsa på!

Tacksam för svar

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Medlem

Testa Xcode om du ändå sitter på mac.
Sen är frågan vad är det specifikt du saknar från ide i allmänhet eller Visual Studio i synnerhet?

Permalänk
Skrivet av aluser:

Testa Xcode om du ändå sitter på mac.
Sen är frågan vad är det specifikt du saknar från ide i allmänhet eller Visual Studio i synnerhet?

Visual studio och C var ingen hit tyckte jag. Små saker irriterar mig såsom att man måste deklarera alla variablar i början av funktioner. Många uppdateringar i språket har ej kommit till Visual Studio och då blev jag osäker på hur de hänger med i C++.

Satt och försökte fixa detta i Visual Studio men det fungerade aldrig. Gick över till Eclipse. "output boxen" i eclipse krånglade med C så var tvungen att flusha stdout hela tiden. Bytte då till Vim och använde GCC för kompilering.

Vid varje steg fastnade jag och försökte lösa problemet vilket bara tog onödig tid. Vill inte gå igenom samma sak med C++ så tänkte kolla här först vad folk gillar att jobba i

EDIT: Något jag är väldigt förtjust i med Vim är just att man kan ändra på så mycket. Med YouCompleteMe har jag nu autocompletion på filepaths och annat trevligt. Finns såklart ingen IDE/Textredigerare som är bäst på allt. Vill bara höra med datorfolket här vad de föredrar och varför.

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Medlem

Riktiga programmerare använder inte IDE. Källfilen editeras i notepad, nano eller vi. Makefilen startas från kommandoraden.
Med ett visst mått av ironi, keep it simple.

Permalänk
Hedersmedlem

Vim med en väl vald samling plugins brukar vara poppis. Kolla upp vilka de mest populära tilläggen är och se om det är något du tycker verkar smidigt. Det finns också många guider/blogginlägg att hitta om att använda Vim som subsitut till en större IDE, med tips om tillägg och arbetsflöden.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk

Gillar Vim starkt men eftersom det var ett tag sedan jag satt i det så kommer det ta lite tid att komma igång. IDE är ju bara att tuta och köra. Men i längden är Vim + makefile nog bättre för mig. Ska ta tag i att fixa upp en bra kombination av addons

Får ta tag i att bygga en linux maskin. Vill ha nått litet och kraftfullt. Får kolla lite på pentium anniversary edition.

Tack för hjälpen!

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Medlem

Kör VS i Windows och Emacs i Linux. Mycket mer av det förra än det senare.
VC++ har det mesta från C++11 nu, men några saker saknas. Det skall dessutom gå att köra Clang som plugin, men det var något år sedan jag tittade på det och kan inte säga om det blivit bättre.

När det gäller Linux så kan jag rekommendera att köra i VM.
Mindre meckande, lätt att göra backuper, ha olika konfigurationer liggandes att byta mellan och så vidare. Eller köra samtidigt för den delen.
Dessutom så slipper man köra Linux som primärt system (huruvida det är bra eller dåligt är väl i och för sig en smakfråga).

Visa signatur

.<

Permalänk
Medlem

Code::Blocks nämner inte specifikt C++11 men stöd för clang som kompilator finns (den jag använder för C++11).

Netbeans beskriver uttryckligen stöd för C++11 och liksom Code::Blocks finns den på flera plattformar.

Visa signatur

Efter att ni har läst det här har ni insett att det inte gav något.

Permalänk
Skrivet av Tetratrio:

Visual studio och C var ingen hit tyckte jag. Små saker irriterar mig såsom att man måste deklarera alla variablar i början av funktioner.

MS fokuserar ffa på C++, men Visual C++ 2013 ska väl ha stöd för C99?

Visa signatur

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

Permalänk
Skrivet av oelrich:

Kör VS i Windows och Emacs i Linux. Mycket mer av det förra än det senare.
VC++ har det mesta från C++11 nu, men några saker saknas. Det skall dessutom gå att köra Clang som plugin, men det var något år sedan jag tittade på det och kan inte säga om det blivit bättre.

När det gäller Linux så kan jag rekommendera att köra i VM.
Mindre meckande, lätt att göra backuper, ha olika konfigurationer liggandes att byta mellan och så vidare. Eller köra samtidigt för den delen.
Dessutom så slipper man köra Linux som primärt system (huruvida det är bra eller dåligt är väl i och för sig en smakfråga).

Kanske sitter lite i VS i början för att komma igång med C++. Men tycker bättre om Vim än textredigeraren i VS så det blir att gå över till det snart.

Ska kika på VM, skulle dock vara skönt att ha allt på en liten NUC eller liknande, om det är möjligt ska jag bo nån månad eller två i Spanien i vinter (pallar inte kylan och mörkret här hemma). Är spansk medborgare också så blir rätt smidigt. Blir inte tal om att släpa med mig stationära datorn. Men har jag en liten sak med linux installerat på blir det ju smidigare!

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Medlem

Jag rekommenderar inte VIM och andra antika verktyg i dagens läge. Embarcadero har ett riktigt vasst RAD-verktyg för C++, vill du komma igång med windowsprogrammering snabbt så är det nog den bästa vägen.

Permalänk
Skrivet av Ghost_Overdoze:

MS fokuserar ffa på C++, men Visual C++ 2013 ska väl ha stöd för C99?

Försökte men fick inte alls C99 funktioner. Deklarering av variabler på annat ställe än början av varje block var vad som fick mig att skippa VS.

Det får bli Vim och typ GCC. Sedan om jag kör på VM eller separat maskin har jag inte bestämt mig för :/ Kan pilla lite med terminalen i Mac men har noll koll på Linux och de olika distributioner som finns. Är inte tillräckligt ambitiös för att köra arch..

(blir många inlägg nu då jag sitter på mobilen och allt är dubbelt så krångligt)

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Skrivet av Oldskool:

Jag rekommenderar inte VIM och andra antika verktyg i dagens läge. Embarcadero har ett riktigt vasst RAD-verktyg för C++, vill du komma igång med windowsprogrammering snabbt så är det nog den bästa vägen.

Är inte specifikt ute efter windowsprogrammering utan vill kunna skriva kod för olika plattformar. Vill inte bli låst till Windows Låter intressant dock, ska spana in det när jag kommer hem! Har suttit endel med socket.h och pthread i C och det fungerar ju inte så bra att bara porta över till Windows. Nu vet jag ju inte så mycket om standardbiblioteket i C++ men det kanske är mindre plattformsberoende?

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk

Vad är det du utvecklar för något? C och sockhet.h känns väldigt lågnivå och oldfashion. Inget fel i det, nödvändigtvis, och det är väl ett bra sätt att lära sig hur saker fungerar i grunden, men det är ju till priset av utvecklingstiden. Om du ska bygga nyare saker rekommenderar jag moderna språk eller åtminstone bibliotek/ramverk.

Visa signatur

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

Permalänk
Skrivet av Ghost_Overdoze:

Vad är det du utvecklar för något? C och sockhet.h känns väldigt lågnivå och oldfashion. Inget fel i det, nödvändigtvis, och det är väl ett bra sätt att lära sig hur saker fungerar i grunden, men det är ju till priset av utvecklingstiden. Om du ska bygga nyare saker rekommenderar jag moderna språk eller åtminstone bibliotek/ramverk.

Jag pluggar just nu. Började lära mig programmering i början av detta året. Först java, sedan C# och C. Tycker programmering är väldigt kul och gillar verkligen kontrollen man har i C. Ville lära mig grunderna i nätverksprogrammering så körde på C och lärde mig bygga clients och servrar för både TCP och UDP. Mest för att det är kul. Byggde en chattserver men blev hungrig efter mer och tänkte börja titta lite på bittorrent protokollet nu när jag kan grunderna från socket.h tillsammans med asynchronous programmering och annat som är bra vid nätverksprogrammering i C. Tittade lite på libtorrent för C++ och tänkte att jag ändå borde lära mig C++. Så jag utvecklar inget specifikt med detta. Använder C# för utveckling av applikationer för småföretag annars men det är ju inte alls lika kul

C++ känns som något man inte bara lär sig snabbt utan något man ska ge tid och gå igenom noggrant. Vill gärna sitta med samma verktyg genom inlärningen och inte behöva byta, därför jag frågar här för att se vad andra föredrar innan jag börjar

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk

Här är mina upplevelser av IDE:er för C++

VS2010 - Har aldrig känt mig så motarbetad av IDE som då jag använder denna. Går inte att göra de inställningar man vill och intellisense ljuger för en.

VS2013 - Wow...riktigt bra måste jag säga. Det känns nästan som all den ambition som 2010 hade men totalt fallerade att leverera faktiskt blev rätt här. Nu har jag inte använt den överdrivet mycket. Men jag tycker den är väldigt trevlig.

När det kommer till Linux så säger jag som många andra försök inte att mosa ihop allt i en IDE som Eclipse. Det funkar väl fint men det är inte riktigt värt det. Jag gillar att utveckla i Eclipse och ha den som texteditor men inte som IDE. Då gillar jag att använda mig av CMake och GDB på sidan av istället för integrera allt i Eclipse.

Permalänk
Medlem

Jag gillar också VS2013 men känner mig tvungen att be dig kika på Qt.
FInns bundling med Qt creator som är deras IDE där du får med mingw (bundling av GCC för windows). Det är bara att tanka hem, installera, skapa ditt första projekt.
Sedan måste du inte nyttja Qt som i sig självt är ett C++ ramverk för plattformsoberoende applikationer som stöder allt från GUI till nätverkshantering, i18n etc.
Länk: http://qt-project.org/
i skrivande stund senaste bundling: http://download.qt-project.org/official_releases/qt/5.3/5.3.1...

Visa signatur

weeeee

Permalänk
Hedersmedlem
Skrivet av mounte:

FInns bundling med Qt creator som är deras IDE där du får med mingw (bundling av GCC för windows).

Qt Creator har faktiskt blivit riktigt användbart på senare år med "intellisense", stöd för cmake-projekt och liknande samt inbyggt stöd för diverse versionahanteringssystem. Dessutom är det lika lätt att komma igång oavsett om man kör windows, linux eller osx.

Permalänk
Datavetare

Tror det är lite begreppsförvirring då överskriften till denna tråd säger "C++ IDE". Visual Studio 2013 har riktigt bra stöd för C++11, nästan lika bra som GCC och Clang (dessa två har i princip en helt komplett implementation och MSVC++ är inte långt efter).

MSVC++ har däremot uselt stöd för C efter C89 som är den sista version av C där C är en delmängd av C++. C99 divergerade från C++ och det har inte konvergerat på senare tid.

Själv föredrar jag gcc/clang (gcc producerar bättre kod, clang ger mycket bättre kompileringsfels-meddelande), gdb och Emacs.

Körde under många år VS både i hobbyprojekt och professionellt, men MS verkade helt tappa intresse för C++ efter VS7 plus att jag började köra Linux på skrivbordet. Sedan Herb Sutter kom till MS så har MSVC++ ryckt upp sig rejält, har väldigt stort förtroende för Sutter så tror han kommer fortsätta få MSVC++ att utvecklas i en bra riktning. Dock är det lite p.g.a. av Sutter som C-stödet är så uselt, han ansåg tidigare att stöd för C var meningslös då "ingen använder det idag". Tror han fått backat på detta och det ska eventuellt komma C99 stöd i MSVC++ (dock är C redan i version C11, tror alla vet detta men C99 = standard som som sattes 1999, C11 = standard som sattes 2011...).

Man ska inte sticka under stolen med att Emacs är svårt att lära sig, det är en nära nog vertikal inlärningskurva men när man lär sig denna editor så ter sig VS-editorn lite som Wordpad mot Word vad det gäller editera kod.

Ska man debugga "normala" så går det inte att säga annat än att VS debuggern är toppklass. Men ska jag ge mig på de riktigt kniviga problemen (race-conditions och andra Heisenbug's) så tar jag gdb+emacs integration+gdb-script+special-emacs-funktioner 10 gånger av 10.

Håller med de som säger att det är bättre att använda färdiga ramverk om målet är att göra något som ska användas under någorlunda normala förhållanden under drift. Språk som Go, ramverk som Node.js och program som Nginx innehåller alla ett "modernt" sätt att skriva nätverkskod som skala till långt större system än vad man kan bygga med blockande sockets + trådar.

Men det går definitivt att spöa dessa ramverk med en eller ett par heltalsfaktorer med egen C-kod + trådar låsta till specifika logiska kärnor (stöds av moderna Windows och Linux, men tyvärr inte av OSX) + egen schemaläggare + epoll (Linux) / I/O Completion Ports (Windows).

Man kan gå ännu längre och även lyfta ut nätverks drivers till applikationen (t.ex. via DPDK eller OpenDataPlane). Hade en presentation kring detta på Kista-mässan förra hösten där det kort beskrevs hur jag gått tillväga för att få prestanda som överstiger ramverk som Node.js med mer än en tiopotens på en normal 8-kärnors Xeon-server.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk

Oj, missade att kolla tråden efter svar! Tack för all information!! Finns massor av förslag som jag måste gå igenom nu.

Jag har en vän som gillar att sitta och krångla med arch-linux så jag lät honom installera det på min dator då jag själv inte orkar sitta och lära mig allt kring detta. Har nu Vim med YouCompleteMe m.m. och ska testa att köra detta ett tag. När jag lärt mig lite mer om C++ återvänder jag till den här tråden för att se om något av de föreslagna alternativen fungerar bättre för mig! Känner att jag gärna har lite mer kunskap innan jag fattar det beslutet.

Läser The C++ Programming Language 4th Edition så det kan hända att det tar ett bra tag innan jag tagit mig tillräckligt långt och återvänder. Om tråden inte är låst så skriver jag av mig lite frågor och sådant om jag undrar över något.

Kul att inställningen till VS med C++ var positiv, ska iväg till Öland snart så då kan jag ju fortsätta inlärningen på min lilla klena windows-hybrid.

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Hedersmedlem
Skrivet av Tetratrio:

Kul att inställningen till VS med C++ var positiv, ska iväg till Öland snart så då kan jag ju fortsätta inlärningen på min lilla klena windows-hybrid.

Vim är inte känt för att vara något större prestandamonster, så det går säkert också att köra på den maskinen om du fastnar för det (reserverar mig för att din maskin skulle vara låst mot extern mjukvara på något exotiskt sätt).

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Skrivet av phz:

Vim är inte känt för att vara något större prestandamonster, så det går säkert också att köra på den maskinen om du fastnar för det (reserverar mig för att din maskin skulle vara låst mot extern mjukvara på något exotiskt sätt).

Hade så stora problem att få Vim och YouCompleteMe att fungera på Mac så tänkte att det måste vara ännu värre på windows men så är det kanske inte. Måste kolla upp detta då jag annars är väldigt förtjust i laptopen (Asus vivotab tf810c). Om jag inte minns fel ska man på något vis kunna koppla vim till VS så att man får samma autocompletion i vim. Kanske drömde det dock, får söka lite.

Har börjat sitta lite i Vim nu och autocompletion för C++ fungerar perfekt. Börjar märka hur mycket snabbare jag skriver i Vim i jämförelse med VS men det kan ju vara pga att jag inte kan alla keybindings för VS.

Visa signatur

i7-7800x | ASUS Strix GTX 1080 | 64 GB RAM (for datascience stuff)

Permalänk
Hedersmedlem
Skrivet av Tetratrio:

Hade så stora problem att få Vim och YouCompleteMe att fungera på Mac så tänkte att det måste vara ännu värre på windows men så är det kanske inte. Måste kolla upp detta då jag annars är väldigt förtjust i laptopen (Asus vivotab tf810c). Om jag inte minns fel ska man på något vis kunna koppla vim till VS så att man får samma autocompletion i vim. Kanske drömde det dock, får söka lite.

Har börjat sitta lite i Vim nu och autocompletion för C++ fungerar perfekt. Börjar märka hur mycket snabbare jag skriver i Vim i jämförelse med VS men det kan ju vara pga att jag inte kan alla keybindings för VS.

Plugins i Vim är möjligen speciellt, men det är (idag) inte så många steg som man behöver få kläm på för att det ska gå enkelt framöver. Jag skrev om det i detta inlägg för inte alls länge sedan här på forumet. YouCompleteMe utvecklas på GitHub, så efter att Vundle installerats korrekt så är det bara att lägga till raden

Plugin 'Valloric/YouCompleteMe'

i `~/.vimrc` och köra `:PluginInstall` så ska det vara klart, oberoende av plattform. Det gör också att om man delar sin `~/.vimrc` mellan flera plattformar så "bara fungerar det"™ (ändå tills det inte gör det av någon anledning, men jag har inte haft några problem; har dock inte testat på något annat än Linux, men så länge som Git är installerat så bör det gå smärtfritt) och är lätt att helt och hållet inifrån Vim hålla alla plugins uppdaterade.

EDIT: Ser dock att just YouCompleteMe kräver lite extra magi för att koppla in i andra program, och att det som du säger kan kräva extra balett på Windows. Jaja, plugins i Vim är generellt inga problem .

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

MSVS 2013 har OK stöd för C99 så länge man har update 2 installerat.

Visa signatur

Assembly är ett högnivåspråk.

Permalänk
Hedersmedlem
Skrivet av Gramner:

MSVS 2013 har OK stöd för C99 så länge man har update 2 installerat.

Fast är det inte fortfarande "Stöd för c89 samt delar av senare standarder" som gäller (även om kanske mängden implementerade detaljer ökar med tiden)?

Permalänk
Datavetare
Skrivet av Gramner:

MSVS 2013 har OK stöd för C99 så länge man har update 2 installerat.

Vet inte om jag skulle kalla stödet för "OK" när det finns kända buggar i implementationen av C99 "designated initializer" samt stöd för C99 "variable length arrays" saknas.

Det första är syntaxen för att specificera vilka medlemmar i en struktur du vill initiera

struct my_struct { int a; int b; }; ... struct my_struct s = { .b = 123; // Detta fungerar i.o.f.s. };

det andra är att man inte behöver ha en konstant när man deklarerar en array på stacken

void foo(int x) { int arr_of_ints[x]; ... }

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

VLA:s anses väl vara "bad practice" dock, så det är inte hela världen. Anledningen är att de är olämpliga att använda för stora mängder data (stacken är ganska begränsad) och för små mängder data kan man lika gärna använda en fixed size för maxstorleken, vilket även ger marginellt bättre prestanda.

x264 går att kompilera med cl.exe från MSVS2013 update 2, och vi använder oss friskt av C99.

Visa signatur

Assembly är ett högnivåspråk.

Permalänk
Datavetare

VLA har samma problem som användning av rekursiva funktioner, så det finns lägen när man ska undvika detta men tror få säger att rekursiva funktioner är "bad practice" rent generellt. Som förval har Windows 1MB stack medan Linux har 4MB för 32-bit och 8MB för 64-bit, så går att göra rätt mycket innan den tar slut. Vad det gäller hastighet mot att använda statisk array-storlek på stacken så skiljer det en add <sp>, <reg> i funktionsprologen, tvivlar på att du ens kan mäta skillnaden i prestanda...

En sak som varit trasigt med "designated initializer" är att initiera medlemmar som själva är strukturer.

Men detta är ändå bra specifika detaljer, det stora problemet med att använda C99 med MSVC++ just nu är att det är ett minfält då man aldrig vet vad som fungerar och vad som inte fungerar. Kan man t.ex. använda C99 nyckelordet restrict numera? Tidigare fungerade bara __restrict.

MSVC++ implementerar också många standard C-funktioner via C++-funktioner. Man förstår varför och i de flesta fall kanske det inte spelar så stor roll, men många gånger väljer man C därför man har extrema krav (väldigt hög prestanda eller väldigt klen enhet) och då är det inte så lämpligt om standardfunktioner drar in hela C++ världen då denna äter mer resurser.

Om man verkligen vill köra C så finns ju andra kompilatorer för Windows, t.ex. ICC, clang eller minGW som stödjer C99. ICC har ju fördelen att producera riktigt snabba binärer och är gratis i privat/utbildningssyfte.

För C++ är MSVC en riktigt bra kompilator.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Inaktiv

Kör på med GCC! Vilka "funktioner" du har sitter inte i IDE:t utan i kompilatorn. Kör själv med vim och gcc exklusivt, då har jag ju trots hög vana och känner mig extremt bekväm med det. Visual studio kommer inte hjälpa dig överhuvudtaget om du inte vill köra på mycket windows apis eller .NET.