Jump to content

recommended IDEs (C++)

bobhays

Visual Studio, bar none, I would only learn in that as its the industry standard for programming with C/C++/C#/.NET 

Gaming industry perhaps. Anything enterprise and I guarantee you it's not been done in VS. The compiler is the worst of the big 5 in terms of optimization, and the lack of Linux support makes it useless.

 

Netbeans is a much more ubiquitous and multi-platform IDE which is used widely both for local and remote development.

Software Engineer for Suncorp (Australia), Computer Tech Enthusiast, Miami University Graduate, Nerd

Link to comment
Share on other sites

Link to post
Share on other sites

Gaming industry perhaps. Anything enterprise and I guarantee you it's not been done in VS. The compiler is the worst of the big 5 in terms of optimization, and the lack of Linux support makes it useless.

 

Netbeans is a much more ubiquitous and multi-platform IDE which is used widely both for local and remote development.

Define enterprise? There are a lot of companies using C# these days, and C# without VS is pretty bad.

 

 

Netbeans if you really must go with an IDE jam-packed with tabs and buttons. I personally like the more spartan and easily customized Emacs, but many in this community think I'm crazy.

I had a really easy time finding my way around VIM, but I tried to use emacs for a month and I had trouble even figuring out basic things... I really don't get it.

I ended up ditching VIM though. I wasn't feeling the mouse highlighting implementation. Still haven't found an editor I like on Linux. I'd use NotepadQQ, but it corrupts files on linux if it crashes or you lose power. SCITE is usable but not good.

Link to comment
Share on other sites

Link to post
Share on other sites

Define enterprise? There are a lot of companies using C# these days, and C# without VS is pretty bad.

 

 

I had a really easy time finding my way around VIM, but I tried to use emacs for a month and I had trouble even figuring out basic things... I really don't get it.

I ended up ditching VIM though. I wasn't feeling the mouse highlighting implementation. Still haven't found an editor I like on Linux. I'd use NotepadQQ, but it corrupts files on linux if it crashes or you lose power. SCITE is usable but not good.

C# still has its limits when it comes to web hosting, data bases, and cloud infrastructure. No virtual machine language will ever be able to match C/C++ for performance. Anything involving high-traffic or high-compute servers will be based in C/C++ and built on CentOS, Fedora, or a BSD OS. In order to build code for them, you can't use VS.

 

I find that odd, because the key combos for VIM make no sense to me. You do have to do some twiddling with the .emacs configuration file to get it nimble, but once you set your options all the standard keystrokes from Windows will do exactly what you would expect in Emacs as well, plus some extra goodies for automatic compiling and such.

Software Engineer for Suncorp (Australia), Computer Tech Enthusiast, Miami University Graduate, Nerd

Link to comment
Share on other sites

Link to post
Share on other sites

VisualStudio Community

Link to comment
Share on other sites

Link to post
Share on other sites

C# still has its limits when it comes to web hosting, data bases, and cloud infrastructure. No virtual machine language will ever be able to match C/C++ for performance. Anything involving high-traffic or high-compute servers will be based in C/C++ and built on CentOS, Fedora, or a BSD OS. In order to build code for them, you can't use VS.

 

I find that odd, because the key combos for VIM make no sense to me. You do have to do some twiddling with the .emacs configuration file to get it nimble, but once you set your options all the standard keystrokes from Windows will do exactly what you would expect in Emacs as well, plus some extra goodies for automatic compiling and such.

IIRC there's a version of Visual Studio for Linux, but that's beside the point.

 

I guess I've just never worked at a company that needed a high volume server. 

 

I really doubt that it's possible to make a JIT language that runs as fast as native code, but C# and Java are already pretty close to native code in terms of speed. If you had a language that didn't have so much overhead, you could probably get something fairly close to C, but I guess that would defeat the point of C# and Java.

 

I just had a really hard time following a lot of the tutorials for EMACS. all of the tutorials tell you key shortcuts by acronym, which I have to look up as some aren't obvious, and then there are some weird ones with keys that I don't even have on my keyboard. I just found everything to be very time consuming and unintuitive.

Link to comment
Share on other sites

Link to post
Share on other sites

IIRC there's a version of Visual Studio for Linux, but that's beside the point.

 

I guess I've just never worked at a company that needed a high volume server. 

 

I really doubt that it's possible to make a JIT language that runs as fast as native code, but C# and Java are already pretty close to native code in terms of speed. If you had a language that didn't have so much overhead, you could probably get something fairly close to C, but I guess that would defeat the point of C# and Java.

 

I just had a really hard time following a lot of the tutorials for EMACS. all of the tutorials tell you key shortcuts by acronym, which I have to look up as some aren't obvious, and then there are some weird ones with keys that I don't even have on my keyboard. I just found everything to be very time consuming and unintuitive.

Java and C# are still about 50% as fast at best. Now, for phones, Java applications are cross-compiled to C++ and then compiled natively on Android devices.

 

M-x is alt-x C-x is CTRL-x.

Software Engineer for Suncorp (Australia), Computer Tech Enthusiast, Miami University Graduate, Nerd

Link to comment
Share on other sites

Link to post
Share on other sites

If you are under Windows. Visual Studio is the best IDE you can get.

You have Visual Studio Community edition which is 100% free. It is the Professional edition, but free for personal and commercial usage for individual (up to 5 licenses for small companies)

Link to comment
Share on other sites

Link to post
Share on other sites

I really doubt that it's possible to make a JIT language that runs as fast as native code, but C# and Java are already pretty close to native code in terms of speed. If you had a language that didn't have so much overhead, you could probably get something fairly close to C, but I guess that would defeat the point of C# and Java.

 

Java and C# are still about 50% as fast at best.

 

It'll be interesting to see how this will improve performance as it matures. I don't expect it to ever match C/C++ but it seems like a nice option to have. 

Link to comment
Share on other sites

Link to post
Share on other sites

It'll be interesting to see how this will improve performance as it matures. I don't expect it to ever match C/C++ but it seems like a nice option to have.

But going native means cross-compiling to C++ and then going to assembly. You will lose a fair bit of potential than if you'd written in C++, but it will narrow that gap. Though going native for either Java or C# means a lot of flexibility and robustness is lost. Error handling on JIT deployments is much easier.

Software Engineer for Suncorp (Australia), Computer Tech Enthusiast, Miami University Graduate, Nerd

Link to comment
Share on other sites

Link to post
Share on other sites

It'll be interesting to see how this will improve performance as it matures. I don't expect it to ever match C/C++ but it seems like a nice option to have. 

Many of the performance issues with C# and Java are inherent to the way they've implemented things like Generics, memory operations. Everything's designed to reduce the possibility of programmer error, but it's at a pretty significant cost. 

 

One of the things that I'd bet gives a huge performance hit is that code in C# is full of method calls everywhere. To do a lot of fairly basic functions, there's a method call there. That seems like it would make it a lot harder to optimize.

 

But going native means cross-compiling to C++ and then going to assembly. You will lose a fair bit of potential than if you'd written in C++, but it will narrow that gap. Though going native for either Java or C# means a lot of flexibility and robustness is lost. Error handling on JIT deployments is much easier.

Why would it be cross compiled to c++?

 

IIRC NGEN just caches the precompiled binaries in a system cache, so you still maintain the ability to move the executable to another compatible system. What other flexibility would you lose?

 

Why is error handling easier with binaries that aren't precompiled?

Link to comment
Share on other sites

Link to post
Share on other sites

Visual Studio Code is looking pretty sweet. I'm a big fan of simplistic IDE's that's not bogged down with a million different features so you can get straight to coding.

 

Haven't used it yet but it looks like it's worth a try.

 

It's more of a sexy text editor than anything, but I gave it a shot for the last few weeks of this spring semester, and I enjoyed it. If I needed to move things around with git a lot, I might even prefer it over Sublime Text.

Link to comment
Share on other sites

Link to post
Share on other sites

Many of the performance issues with C# and Java are inherent to the way they've implemented things like Generics, memory operations. Everything's designed to reduce the possibility of programmer error, but it's at a pretty significant cost.

One of the things that I'd bet gives a huge performance hit is that code in C# is full of method calls everywhere. To do a lot of fairly basic functions, there's a method call there. That seems like it would make it a lot harder to optimize.

Why would it be cross compiled to c++?

IIRC NGEN just caches the precompiled binaries in a system cache, so you still maintain the ability to move the executable to another compatible system. What other flexibility would you lose?

Why is error handling easier with binaries that aren't precompiled?

Everything virtual going Native cross-compiles to C++ first because it and Care the highest performance languages on the planet. The major compilers (GCC, Clang, and ICC) are incredible at optimizing your code. It's purely for optimization and open source reasons.

Native binary errors can cause a system crash. Errors caught by the virtual machine are extremely unlikely to do this.

Software Engineer for Suncorp (Australia), Computer Tech Enthusiast, Miami University Graduate, Nerd

Link to comment
Share on other sites

Link to post
Share on other sites

Everything virtual going Native cross-compiles to C++ first because it and Care the highest performance languages on the planet. The major compilers (GCC, Clang, and ICC) are incredible at optimizing your code. It's purely for optimization and open source reasons.

Native binary errors can cause a system crash. Errors caught by the virtual machine are extremely unlikely to do this.

As far as I can tell, ngen compiles from intermediate language assemblies (judging by how this is an example command "ngen install MyApp.exe"), which are stored in assembly... Why they translate that to C++ when the CLR already has the tools to convert the language to binary?

Why would compiling one form of assembly to c++ and back to assembly? Why would that be more optimized than just compiling from one form of assembly to another?

wouldn't that have the same  Also, wouldn't Microsoft use their own compiler to compile to C++?

 

On modern processors, what kind of binary errors can cause a system crash? I thought most of them just triggered an exception interrupt and the operating system dealt with it. I don't know of any kind of F00F bug in modern processors.

I guess you have a point though. most operating system handled exceptions can't be traced very easily.

Link to comment
Share on other sites

Link to post
Share on other sites

As far as I can tell, ngen compiles from intermediate language assemblies (judging by how this is an example command "ngen install MyApp.exe"), which are stored in assembly... Why they translate that to C++ when the CLR already has the tools to convert the language to binary?

Why would compiling one form of assembly to c++ and back to assembly? Why would that be more optimized than just compiling from one form of assembly to another?

wouldn't that have the same  Also, wouldn't Microsoft use their own compiler to compile to C++?

 

On modern processors, what kind of binary errors can cause a system crash? I thought most of them just triggered an exception interrupt and the operating system dealt with it. I don't know of any kind of F00F bug in modern processors.

I guess you have a point though. most operating system handled exceptions can't be traced very easily.

Because C++'s optimizing compilers kick the snot out of every other language the world has to offer. Only Google's GO remotely stands up to it in performance.

 

Microsoft would be stupid to use MVC for its OS and native phone apps given MVC is the worst of the big optimizing compilers by a fair margin,  but that isn't to say it couldn't.

 

On a phone with minimal error handling ability in the OS (compact sizes and all that), where it's in native binary and could potentially access everything, a crash of a native program can have disastrous consequences in the right scenario.

Software Engineer for Suncorp (Australia), Computer Tech Enthusiast, Miami University Graduate, Nerd

Link to comment
Share on other sites

Link to post
Share on other sites

Because C++'s optimizing compilers kick the snot out of every other language the world has to offer. Only Google's GO remotely stands up to it in performance.

 

Microsoft would be stupid to use MVC for its OS and native phone apps given MVC is the worst of the big optimizing compilers by a fair margin,  but that isn't to say it couldn't.

 

On a phone with minimal error handling ability in the OS (compact sizes and all that), where it's in native binary and could potentially access everything, a crash of a native program can have disastrous consequences in the right scenario.

I'm not asking why would anyone do this; I'm asking how could you know microsoft would do this?

 

They could use Clang or maybe ICC if they paid Intel, but they're a company that builds compilers...

 

Don't phone run on Java? If they can afford the fairly large memory cost of a garbage collector, they can probably afford a few extra subroutines to handle exceptions. Plus, if they're running on a virtual machine that can handle all of these errors, I can't imagine why handling all these errors with interrupt subroutines would take any more space. Do you actually have some documentation for these kinds of issues?

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×