Jump to content

C++ vs C# for Beginner software developer

Mr Robot

I want to get get into software development/programming and i've narrowed it down to C++ and C# so what would be better for a beginner and just better overall

                  CPU: Intel Core i5 6400 ~ ASUS GTX 950 OC STRIX GB ~

                           RAM: HyperX Fury DDR4 16GB dual channel 

MOBO: Gigabyte GA-H170-HD3 ~ SSD:HyperX Savage 240GB  ~  PSU: Corsair CX550M

 ~ MOUSE: Logitech G700s ~ KEYBOARD: Razer Blackwidow tournament

            HEADPHONES: Focousrite HP60  ~ MIC:Focusrite CM25 ~ A.I: Focusrite Scarlett 2i2 ~ MONITOR: Asus VC239H 23-inch IPS Monitor ~ CASE: Fractual Design define R4  ~ Corsair MM300 Medium

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

ok thanks @matzeesch

                  CPU: Intel Core i5 6400 ~ ASUS GTX 950 OC STRIX GB ~

                           RAM: HyperX Fury DDR4 16GB dual channel 

MOBO: Gigabyte GA-H170-HD3 ~ SSD:HyperX Savage 240GB  ~  PSU: Corsair CX550M

 ~ MOUSE: Logitech G700s ~ KEYBOARD: Razer Blackwidow tournament

            HEADPHONES: Focousrite HP60  ~ MIC:Focusrite CM25 ~ A.I: Focusrite Scarlett 2i2 ~ MONITOR: Asus VC239H 23-inch IPS Monitor ~ CASE: Fractual Design define R4  ~ Corsair MM300 Medium

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Just choose one and stick to it, there are plenty of online resources for both. Most people will probably recommend C# due to it being a "higher" level language. As for which is "better" it kind of depends on your goals. 

CPU: i7-4790K --- HEATSINK: NZXT Kraken X61 --- MOBO: Asus Z97-A --- GPU: GTX 970 Strix --- RAM: 16GB ADATA XPG --- SSD: 512GB MX100 | 256GB BX200 HDD: 1TB WD Black --- PSU: EVGA SuperNova G2 --- CASE: NZXT H440 --- DISPLAY3 x Dell U2414H --- KEYBOARD: Pok3r (Clears) --- MOUSE: Logitech G Pro --- OS: Windows 10

Link to comment
Share on other sites

Link to post
Share on other sites

C# is a bit easier for beginners and can make a very functional application. It's a great and faster start and should get you into other languages, as well.

 

C++, on the other hand, is great for more fundamental, lower-level programming, including dealing with things such as memory management. You will very likely make more mistakes on C++ than C#, and will end up having to learn from them, which will benefit you in the end.

Link to comment
Share on other sites

Link to post
Share on other sites

C# is my recommendation for a beginner, as you can make a functional program quicker, and you want to learn the fundamentals, practices and principles of programming at the same time. Having a language that's easier to write functional code with for beginners makes learning the underlying theory of programming that much easier. 

 

Once you feel like you've gotten to grips with the theory side of things, and you're comfortable using C# at a basic level, you can dabble a bit in C++, spend some time learning that at a basic level. It will feel harder and more confusing than C#, but if you stick with it, you'll find yourself understanding it more and more.

 

From there, make your own mind up. You've tried the both of them. You've made applications in both languages. I would say try making the same application, or three, on both, to compare the two, and which you think you can make a better application with. Not necessarily what's easier to make the application with, but what you feel you are comfortable with making a better application with. From there, you can decide which one you want to continue with. Or you might not like either of them, and you branch out to other languages. Or you just branch out to other languages anyway to try them out. Like Java, or Python, etc. There's a lot out there, and you have a lot of potential. It's just about getting your feet wet, testing the different waters, finding one you like and diving in. 

Link to comment
Share on other sites

Link to post
Share on other sites

Having written in both for game development I'd say it's a toss-up and that you should probably look into which engine/framework you want to work with.

CPU - Ryzen 7 3700X | RAM - 64 GB DDR4 3200MHz | GPU - Nvidia GTX 1660 ti | MOBO -  MSI B550 Gaming Plus

Link to comment
Share on other sites

Link to post
Share on other sites

I believe it really depends.

 

  • For a person that has no computer science base, I'd recommend with any doubt to choose C#, because of the higher level, the more complete IDE (assuming you'll be using VisualStudio and not a text editor) and the 100% assured compatibility on every Windows pc.
  • For a person that wants to learn or already knows some computer science, I'd say it depends on how hard he wants to try:
    • C++ is more "academical" I'd say, it's not so high-level as C# (I utterly refuse to say C++ is low-level programming language) and is more compatible with non-windows environments than C# is.
    • C# is more focused on market software producing. I don't mean you can't make software with C++ at all (most of today's games and programs are written in C++), I mean that it's focused on having you creating programs as soon as possible, whereas in C++ there is a higher floor-cap that you need to reach before creating decent software.

That's  my opinion anyway

Link to comment
Share on other sites

Link to post
Share on other sites

Do not do "object oriented" if you're a beginner. You'll produce crap. Start with C or a high level scripting language like python.

Link to comment
Share on other sites

Link to post
Share on other sites

On ‎10‎/‎12‎/‎2016 at 4:47 AM, MatazaNZ said:

C# is my recommendation for a beginner, as you can make a functional program quicker, and you want to learn the fundamentals, practices and principles of programming at the same time. Having a language that's easier to write functional code with for beginners makes learning the underlying theory of programming that much easier. 

 

Once you feel like you've gotten to grips with the theory side of things, and you're comfortable using C# at a basic level, you can dabble a bit in C++, spend some time learning that at a basic level. It will feel harder and more confusing than C#, but if you stick with it, you'll find yourself understanding it more and more.

 

From there, make your own mind up. You've tried the both of them. You've made applications in both languages. I would say try making the same application, or three, on both, to compare the two, and which you think you can make a better application with. Not necessarily what's easier to make the application with, but what you feel you are comfortable with making a better application with. From there, you can decide which one you want to continue with. Or you might not like either of them, and you branch out to other languages. Or you just branch out to other languages anyway to try them out. Like Java, or Python, etc. There's a lot out there, and you have a lot of potential. It's just about getting your feet wet, testing the different waters, finding one you like and diving in. 

You should do some reason on C++ 11 and 14. Most coding today is in functional style. Also, you can be as high or level as you want.

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

12 hours ago, Train27 said:

I believe it really depends.

 

  • For a person that has no computer science base, I'd recommend with any doubt to choose C#, because of the higher level, the more complete IDE (assuming you'll be using VisualStudio and not a text editor) and the 100% assured compatibility on every Windows pc.
  • For a person that wants to learn or already knows some computer science, I'd say it depends on how hard he wants to try:
    • C++ is more "academical" I'd say, it's not so high-level as C# (I utterly refuse to say C++ is low-level programming language) and is more compatible with non-windows environments than C# is.
    • C# is more focused on market software producing. I don't mean you can't make software with C++ at all (most of today's games and programs are written in C++), I mean that it's focused on having you creating programs as soon as possible, whereas in C++ there is a higher floor-cap that you need to reach before creating decent software.

That's  my opinion anyway

It can be just as high as C# and just as low as C. C++ 11 and 14 have completely changed the game.

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

12 hours ago, SSL said:

Do not do "object oriented" if you're a beginner. You'll produce crap. Start with C or a high level scripting language like python.

Why not?

 

What's wrong with OOP?

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, patrickjp93 said:

It can be just as high as C# and just as low as C. C++ 11 and 14 have completely changed the game.

Could you making a tutorial (video or an explanation in a blog) on how to make a functional windows program in C++?

 

When I say functional, I mean has a GUI and I can see and interact with it.

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to comment
Share on other sites

Link to post
Share on other sites

5 minutes ago, AluminiumTech said:

Why not?

 

What's wrong with OOP?

 

OOP is great, but it isn't intuitive, especially for a beginner. Plus, most of time time the teaching of OOP gets royally screwed up and we end up with this: http://www.yegor256.com/2016/08/15/what-is-wrong-object-oriented-programming.html

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, SSL said:

 

OOP is great, but it isn't intuitive, especially for a beginner. Plus, most of time time the teaching of OOP gets royally screwed up and we end up with this: http://www.yegor256.com/2016/08/15/what-is-wrong-object-oriented-programming.html

*sighs*

 

I would use C++ more but there's no easy way to get into making a GUI or anything for a C++ program. Also, C++ code is like an alien language.

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to comment
Share on other sites

Link to post
Share on other sites

12 minutes ago, AluminiumTech said:

Could you making a tutorial (video or an explanation in a blog) on how to make a functional windows program in C++?

 

When I say functional, I mean has a GUI and I can see and interact with it.

It's called OpenFrameworks, or Qt.

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

1 minute ago, patrickjp93 said:

It's called OpenFrameworks, or Qt.

But QT is too confusing........... :(

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, AluminiumTech said:

But QT is too confusing........... :(

???!!! The heck is wrong with you? It's exactly like ASP.Net MVC, but with C++ and not HTML

 

You can also just download a 3rd party's base project that constructs MVC in C++ for you and hands you a controller, model, and view. I know a few of them exist.

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

3 minutes ago, patrickjp93 said:

???!!! The heck is wrong with you? It's exactly like ASP.Net MVC, but with C++

What I find confusing is trying to use C++ with their Forms thing.

3 minutes ago, patrickjp93 said:

You can also just download a 3rd party's base project that constructs MVC in C++ for you and hands you a controller, model, and view. I know a few of them exist.

Why doesn't C++ have a native way to create a GUI without using stuff like QT?

 

And also, for programs which aren't performance sensitive, why use C++?

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to comment
Share on other sites

Link to post
Share on other sites

8 minutes ago, AluminiumTech said:

What I find confusing is trying to use C++ with their Forms thing.

Why doesn't C++ have a native way to create a GUI without using stuff like QT?

 

And also, for programs which aren't performance sensitive, why use C++?

There is a lengthy explanation by Bjarne Stroustrup from cppcon 2016 you should hear on that, but the short of it is this. Because 7 different groups wanted their idea to become the standard, and Bjarne wasn't willing to nuke the entire ISO C++ standard committee (this was still before the standard template library mind you, so dark times) by picking one and offending the other 85% beyond repair.

 

Today instead of 7 there are 5 major competing ideas that come from Microsoft, Canonical, Nvidia, Intel, and the company that heads up Qt which also is the primary funder of Boost and Rust development. No one wants to pull the trigger that causes so many others to abandon the study group and other efforts. The general advice is pick whatever boost framework is easiest for you.

 

Because you can get the same work done in fewer lines of code with fewer characters per line and still have code that performs better.

 

If you don't see a solution in the standard libraries, look again.

 

If you still don't, go check boost.

 

If you don't see it there, you're most likely lost or lying.

 

C++ is the most feature-rich and library-rich language in the world if you just adhere to good practices which the standards committee exhaustively keeps publishing. It has all the high-level stuff to make it easy for newbies and all the low-level stuff to make the fastest programs in the world. It also has the most tool support for compilers and environments, profilers too. It's an ecosystem no sane person would want to leave. Yes, Rust and D came up with some good stuff that the standards committee is actively pushing to get into C++ 20 (17 is now set in stone), but most of the good stuff in programming was invented by the C++ community. Metaprogramming was one of them. Static analysis was one of them. Lambdas was another. Garbage collection was invented by the C++ community too.

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

I disagree, C++14 isn't yet a standard and may cause incompatibility issues with some computers because its relative new update.

 

Plus try managing linux source code to make tweaks with C++.

 

I do believe C++' religious cult is just glorifying the language beyond its actual usefulness. Ofc you can do amazing things in C++ if you're a master, but that also applies to almost any other language!

 

C might not be as useful/easy to use on modern/general programs or applications, but it's definitely not dead. Good lord helps you if you try n break into a server using Java! (eg)

Link to comment
Share on other sites

Link to post
Share on other sites

22 minutes ago, Train27 said:

I disagree, C++14 isn't yet a standard and may cause incompatibility issues with some computers because its relative new update.

 

Plus try managing linux source code to make tweaks with C++.

 

I do believe C++' religious cult is just glorifying the language beyond its actual usefulness. Ofc you can do amazing things in C++ if you're a master, but that also applies to almost any other language!

 

C might not be as useful/easy to use on modern/general programs or applications, but it's definitely not dead. Good lord helps you if you try n break into a server using Java! (eg)

It is a standard. It's being replaced (more improved upon/expanded) by 17 as we speak. It's also fully implemented by GCC 5, Clang 3.7, and ICC 14 and beyond (We're on GCC 6.2, Clang 4.0, and ICC 17 now). Visual Studio 2015 update 2 gets most of it. Microsoft, as usual, is very behind, but it's not the only compiler that works on Windows. MinGW GCC (currently 5.4), Clang, and ICC all have Windows distributions that generate native executables.

 

It can't have compatibility issues with old computers. Nothing in the language demands radical new ways of interfacing with hardware without allowing old ways.

 

No, you can do amazing things while being a novice. You just have to not panic. C? Hell no. Java? It gets in its own way.

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

1 hour ago, patrickjp93 said:

There is a lengthy explanation by Bjarne Stroustrup from cppcon 2016 you should hear on that, but the short of it is this. Because 7 different groups wanted their idea to become the standard, and Bjarne wasn't willing to nuke the entire ISO C++ standard committee (this was still before the standard template library mind you, so dark times) by picking one and offending the other 85% beyond repair.

 

Today instead of 7 there are 5 major competing ideas that come from Microsoft, Canonical, Nvidia, Intel, and the company that heads up Qt which also is the primary funder of Boost and Rust development. No one wants to pull the trigger that causes so many others to abandon the study group and other efforts. The general advice is pick whatever boost framework is easiest for you.

 

Because you can get the same work done in fewer lines of code with fewer characters per line and still have code that performs better.

 

If you don't see a solution in the standard libraries, look again.

 

If you still don't, go check boost.

 

If you don't see it there, you're most likely lost or lying.

 

C++ is the most feature-rich and library-rich language in the world if you just adhere to good practices which the standards committee exhaustively keeps publishing. It has all the high-level stuff to make it easy for newbies and all the low-level stuff to make the fastest programs in the world. It also has the most tool support for compilers and environments, profilers too. It's an ecosystem no sane person would want to leave. Yes, Rust and D came up with some good stuff that the standards committee is actively pushing to get into C++ 20 (17 is now set in stone), but most of the good stuff in programming was invented by the C++ community. Metaprogramming was one of them. Static analysis was one of them. Lambdas was another. Garbage collection was invented by the C++ community too.

I'm guessing Nvidia's implementation is Cuda. But what is Intel's implementation? And what's canonical's implementation.

 

Alright, I'll try to give C++ a go in the future.

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, AluminiumTech said:

I'm guessing Nvidia's implementation is Cuda. But what is Intel's implementation? And what's canonical's implementation.

 

Alright, I'll try to give C++ a go in the future.

No, but they each have enormous proposals for how I/O should be handled, how errors should be handled, etc..

 

Please do.

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

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

×