My dad is currently working on a web application for the Canadian government in his work. Why does everyone say "Learn C# or Java" though? Visual Basic is a modern language, my dad want's me to learn this instead of Quick Basic because it is actually relevant today.
Going off his posts, I'm going to guess he is a time traveler from 1996.
My dad wasn't actually going to teach me Quick Basic at first, he finally did though because I kept begging him to after I got my first MS-DOS PC. He said I should learn a more relevant language like Visual Basic instead, so now I am learning a bit of that.
VB, (though moreso VB.net and VBscript, though any of the three will net you a similar standing) in the corporate/office workplace can skyrocket you so far ahead of anyone else, it's insane.
Learn C++. It's actually where microsoft is putting most of it's focus right now.
No..... It's not. Where are you getting this from?
If that's too hard for you, go for C#.
>Implying C# is 'easier' to someone with no programming experience
VB, (though moreso VB.net and VBscript, though any of the three will net you a similar standing) in the corporate/office workplace can skyrocket you so far ahead of anyone else, it's insane.
Oh, I was thinking game programming. I don't know much about the other fields. When I think programming, I think game programming :\
Again, keep in mind I'm speaking about game dev.
No..... It's not. Where are you getting this from?
XNA pretty much is done for, Visual Studio 2012 dropped it. (There are still ways aroudn this). That was what ed me off really, and stopped me from wanting to do anything game-related with C#.
Implying C# is 'easier' to someone with no programming experience
Most imply this actually. They complain that memory management is a major problem (when it really isn't at all... not to mention that smart pointers eliminate the problem almost completely), and that pointers are way too hard. (Which isn't even true, and you barely use them when writing games).
>Implying C# is 'easier' to someone with no programming experience
I would argue that it is. Better documentation, more features in the standard library, less confusing syntax, doesn't require as much knowledge about how a computer *actually* works, etc.
C# has a much lower barrier of entry than C++ when it comes to just making something which is exactly the sort of thing beginners need.
C++ was pretty much the first programming language I actually learned and, to be honest, it did me almost no good. In terms of things I've actually worked on, C++ comes in pretty much dead last of the languages I actually know (excluding brain) in terms of things I've actually made.
Python, GML (Game Maker), and C# are the languages that have been most productive for me. I really would not ever recommend C++ or C as a starter language for someone wanting to get into programming. It's probably something you're going to want to eventually learn, but I don't think it's a good starting point in general.
Rollback Post to RevisionRollBack
Never attribute to malice what can adequately be explained by incompetence.
XNA pretty much is done for, Visual Studio 2012 dropped it. (There are still ways aroudn this). That was what ed me off really, and stopped me from wanting to do anything game-related with C#.
XNA is not the end-all-be-all for C# game development. There is monogame, openTK, Unity, SFML has .net bindings, duality, netgore, gorgonlib, axiom, slimDX, just to name a few off the top of my head.
And just because XNA is no longer supported does not mean it is dead. The quake III engine was still getting games made for it well into the 2010s, long after support was dropped.
I would argue that it is. Better documentation, more features in the standard library, less confusing syntax, doesn't require as much knowledge about how a computer *actually* works, etc.
C# has a much lower barrier of entry than C++ when it comes to just making something which is exactly the sort of thing beginners need.
For someone with absolutely no experience though? The barrier to entry might be lower, but that doesn't necessarily mean they will have an overall easier time with getting used to it, especially if they still don't have a clue what they are doing.
I'm sure in the long run that is the case, but in the shorter term, I think it's a bit more up in the air.
XNA is not the end-all-be-all for C# game development. There is monogame, openTK, Unity, SFML has .net bindings, duality, netgore, gorgonlib, axiom, slimDX, just to name a few off the top of my head.
And just because XNA is no longer supported does not mean it is dead. The quake III engine was still getting games made for it well into the 2010s, long after support was dropped.
Of course there are those options, but I prefer XNA over those.
C++ was pretty much the first programming language I actually learned and, to be honest, it did me almost no good. In terms of things I've actually worked on, C++ comes in pretty much dead last of the languages I actually know (excluding brain) in terms of things I've actually made.
What did you work on?
---------------------
I would argue that it is. Better documentation, more features in the standard library, less confusing syntax, doesn't require as much knowledge about how a computer *actually* works, etc.
I don't understand how C++'s syntax is any more confusing than C#'s? I also don't understand how C++ requires knowledge on how a computer works.
I had never heard of them before this. My dad said not to use the GOTO statement because he said over use of it makes your program like a bowl of spaghetti; to hard to fallow one action because it takes you all over the place when your making a complex program. Same thing with GOSUB. That's why we have the CALL statement for calling subroutines.
What you've explained is exactly the definition of "cargo cult" programming style. Avoiding a language feature or feature(s) in some ethereal quest for 'ease of use' or readability that simply doesn't exist.
it is overuse of goto that is bad. Using it as your primary control flow statement that is bad. However, it can make code demonstrably easier to read than the equivalent that sticks to some idea of "structured language purity". There are some who go a step further and insist that every function and sub have only a single exit at the bottom. (no premature return or Exit Sub/Function statements).
I don't know how to do Java programming, or C#, or Turbo C, or really anything to do with C. I know Commodore BASIC (yes I know, the most irreverent language now), Quick Basic, and a wee bit of Visual Basic. Would you suggest I learn C# or something? My dad just does Visual Basic programming now, should I just continue with this instead? I'm, not going to stop with Quick Basic though, not until all 3 of my MS-DOS systems die.
Let's put it this way: I can use QuickBASIC. I know QuickBASIC.
The language, however, is weak, unwieldy, burdened by legacy compatibility reaching back to BASICA.COM, and weak; user-defined types are weak and require copious workarounds to create usable data structures.
I was going to make a quickBASIC implementation of an Anagrams search program, but I gave up. In trying to implement the algorithm QuickBASIC Fought me every step of the way, by not having features, not working with a given feature in some specific manner, or just plain sucking.
VB6? No. VB.NET? Maybe. However it has little in common with VB6. that's why I went from VB6 to C#; if I'm going to learn a new language, it isn't going to be a new language pretending to be like one I already know. (And that said I have no problem working with VB.NET anyway, now that I know C#.
Learn C++. It's actually where microsoft is putting most of it's focus right now. Not C, C++.
Microsoft's C++ compiler is barely compatible with the new C++ standard. Microsoft's Developer Tools division is focusing on .NET- They are in fact completely rewriting the .NET compilers (Roslyn) to allow for Compiler-as-a-service. Currently you can compile .NET assemblies from code in your own code but Roslyn will expose the Abstract Syntax Tree directly. This is powerful for implementing templating and generics features that might not otherwise be possible with the language capabilities.
I don't understand how C++'s syntax is any more confusing than C#'s? I also don't understand how C++ requires knowledge on how a computer works.
Either way, it proves my point I stated above. MS is pushing more towards C++ for games.
It proves nothing even related to your point, and certainly does not prove your point.
MS is not moving towards C++ for games, if anything they are moving far away from it given they have literally shown no development in these areas, and as BC said, they are slacking severely in terms of keeping up with C++ standards. They are putting all of their effort into .net and C# like they have been for a while now.
For the XB1, this is true as well, Unity has had XB1 compatibility for a while now, and proper indie devs get it for free.
In addition, the XB1, PS4, and PSVita all have their own C# libraries for development outside of Unity, to give the developers the option ofmoving away from C++.
Well that is disappointing. The code I posted was actually the first version of the C++ implementation which was actually made several times faster downwind. You caught the main redundancy that was Vector being instances within the if(), but you didn't discover that the if itself was in fact redundant entirely.
Which is actually part of my point: discoverability. Visual Studio is far and away the best C++ IDE, but it still sucks because the language is absolutely awful from the perspective of static analysis. the intellisense you get for things like getline() may as well just be memory garbage. eg. When I hover over the count property of the Hash map in the C++, I get this "helpful" tooltip:
For someone with absolutely no experience though? The barrier to entry might be lower, but that doesn't necessarily mean they will have an overall easier time with getting used to it, especially if they still don't have a clue what they are doing.
I'm sure in the long run that is the case, but in the shorter term, I think it's a bit more up in the air.
Yes, even for someone with absolutely no experience. C++ is confusing, even more so when you don't know anything. Higher level languages ease that burden. That's the whole point of higher level languages. Not to mention that the tools for C++ are pretty crappy, especially for a beginner. Like BC_Programming mentioned, the intellisense provided by Visual Studio in C++ is pretty much garbage. I've found that to be almost universally true; I have never found an IDE that's actually given me what I felt was useful intellisense in C++.
Compare that with the intellisense for C# in Visual Studio and it makes the C++ stuff look like a total joke (and then toss in something like ReSharper which can make even the Visual Studio built-in intellisense look like total crap).
Another problem with C++ is actually how comparatively complicated it is to build a project. Visual Studio manages to hide most of this process from you, but if you ever need to touch any part of the build process you're not going to know what the hell to do. When it comes to C++, learning how the toolchains actually worked and how to link in external libraries that aren't just header files was one of the last things I really learned about the language. Like I remember how much of a hassle it was to build against things like zlib.
Hell, managing the build process professionally is something of a nightmare. Like, when my company upgraded from Visual Studio 2005 (if you want to talk about C++ intellisense really being a joke, go check that crap out) to Visual Studio 2010, it took months to transition over the code base. It caused all sorts of problems with Boost and stlport and a number of other third party libraries.
Oh, and then there's the fantastically incomprehensible world of build errors in C++. Anything involving templates turns into a nigh-unreadable mess. And linker errors can either be trivial (unless you're a beginniner) or take significant effort to figure out. There's really not a lot of middle ground with linker errors.
Now, I'm getting pretty close to just ranting about the stuff I hate about C++, but the language does have its placee, but not really in a beginner's toolbox. The language suffers because it doesn't appear to have been designed so much as congealed. Not really what you want when you know nothing of programming.
Rollback Post to RevisionRollBack
Never attribute to malice what can adequately be explained by incompetence.
To be honest, I was just hoping someone to throw something like this together since I am unable to (and have such limited experience with the language). I pretty much straight-up agree from the first point.
Seeing so many people recommend C++ to every single beginner thread here is starting to get on my nerves a bit, but I did not have the knowledge to point out specifics as to why this is a bad idea other than the syntax being dated.
Like BC_Programming mentioned, the intellisense provided by Visual Studio in C++ is pretty much garbage. I've found that to be almost universally true; I have never found an IDE that's actually given me what I felt was useful intellisense in C++.
So you're basing a language on a single IDE?
Hell, managing the build process professionally is something of a nightmare. Like, when my company upgraded from Visual Studio 2005 (if you want to talk about C++ intellisense really being a joke, go check that crap out) to Visual Studio 2010, it took months to transition over the code base. It caused all sorts of problems with Boost and stlport and a number of other third party libraries.
See above.
Another problem with C++ is actually how comparatively complicated it is to build a project. Visual Studio manages to hide most of this process from you, but if you ever need to touch any part of the build process you're not going to know what the hell to do. When it comes to C++, learning how the toolchains actually worked and how to link in external libraries that aren't just header files was one of the last things I really learned about the language. Like I remember how much of a hassle it was to build against things like zlib.
I don't understand how the build process in C++ is complicated at all. Please elaborate.
Oh, and then there's the fantastically incomprehensible world of build errors in C++. Anything involving templates turns into a nigh-unreadable mess. And linker errors can either be trivial (unless you're a beginniner) or take significant effort to figure out. There's really not a lot of middle ground with linker errors.
I've never encountered a linker error that a quick google search or a post on a forum couldn't solve.
but you didn't discover that the if itself was in fact redundant entirely.
It was fairly straightforward actually. Nothing out of the ordinary. I could argue that the C++ version was easier to understand, but it'd probably be best if someone who doesn't know either could say such.
And that doesn't even use Pointers or References, because I managed to get away with Locals.
I don't see how a program like this would need them anyway. In modern C++, pointers are barely used.
-----------------------
I think most of that post is just biased hate.
EDIT: For the 'most vexing parse' link, isn't function declarations inside of other functions illegal? That would most likely never happen in the real world.
Do you have a better IDE that allows more access to everything? A better IDE in general you use?
I don't understand how the build process in C++ is complicated at all. Please elaborate.
He didn't say the process was complicated. He said figuring out to tweak it and tailor it to the task at hand in one of the best IDEs for the language was complex because VS goes so far to hide it.
I've never encountered a linker error that a quick google search or a post on a forum couldn't solve.
I also doubt you've worked on large, commercial projects with hundreds of thousands of lines of code.
He didn't say the process was complicated. He said figuring out to tweak it and tailor it to the task at hand in one of the best IDEs for the language was complex because VS goes so far to hide it.
No. He said C++'s build process is bad. Not a particular IDE.
I also doubt you've worked on large, commercial projects with hundreds of thousands of lines of code.
And I don't see how that helps your point in any way. Linker errors are the same for any project, big or small.
I don't see how a program like this would need them anyway. In modern C++, pointers are barely used.
Did you really just say that? Most modern programs will require sorting of some sort which will almost certainly need pointers. Pointers are kind of a big deal in C++.
Rollback Post to RevisionRollBack
Quote from TheFieldZy »
Nobody's perfect, so neither is Hannah Montana Linux, but it's pretty great.
Quote from BC_Programming on Operating Systems »
They all suck. They just suck differently. Sort of like prostitutes.
My dad is currently working on a web application for the Canadian government in his work. Why does everyone say "Learn C# or Java" though? Visual Basic is a modern language, my dad want's me to learn this instead of Quick Basic because it is actually relevant today.
My dad wasn't actually going to teach me Quick Basic at first, he finally did though because I kept begging him to after I got my first MS-DOS PC. He said I should learn a more relevant language like Visual Basic instead, so now I am learning a bit of that.
At least 86% of what I say is always correct.
Learn C++. It's actually where microsoft is putting most of it's focus right now. Not C, C++.
If that's too hard for you, go for C#.
You could not be more incorrect.
VB, (though moreso VB.net and VBscript, though any of the three will net you a similar standing) in the corporate/office workplace can skyrocket you so far ahead of anyone else, it's insane.
No..... It's not. Where are you getting this from?
>Implying C# is 'easier' to someone with no programming experience
Again, keep in mind I'm speaking about game dev.
XNA pretty much is done for, Visual Studio 2012 dropped it. (There are still ways aroudn this). That was what ed me off really, and stopped me from wanting to do anything game-related with C#.
Most imply this actually. They complain that memory management is a major problem (when it really isn't at all... not to mention that smart pointers eliminate the problem almost completely), and that pointers are way too hard. (Which isn't even true, and you barely use them when writing games).
I would argue that it is. Better documentation, more features in the standard library, less confusing syntax, doesn't require as much knowledge about how a computer *actually* works, etc.
C# has a much lower barrier of entry than C++ when it comes to just making something which is exactly the sort of thing beginners need.
C++ was pretty much the first programming language I actually learned and, to be honest, it did me almost no good. In terms of things I've actually worked on, C++ comes in pretty much dead last of the languages I actually know (excluding brain) in terms of things I've actually made.
Python, GML (Game Maker), and C# are the languages that have been most productive for me. I really would not ever recommend C++ or C as a starter language for someone wanting to get into programming. It's probably something you're going to want to eventually learn, but I don't think it's a good starting point in general.
And just because XNA is no longer supported does not mean it is dead. The quake III engine was still getting games made for it well into the 2010s, long after support was dropped. For someone with absolutely no experience though? The barrier to entry might be lower, but that doesn't necessarily mean they will have an overall easier time with getting used to it, especially if they still don't have a clue what they are doing.
I'm sure in the long run that is the case, but in the shorter term, I think it's a bit more up in the air.
What did you work on?
---------------------
I don't understand how C++'s syntax is any more confusing than C#'s? I also don't understand how C++ requires knowledge on how a computer works.
What you've explained is exactly the definition of "cargo cult" programming style. Avoiding a language feature or feature(s) in some ethereal quest for 'ease of use' or readability that simply doesn't exist.
it is overuse of goto that is bad. Using it as your primary control flow statement that is bad. However, it can make code demonstrably easier to read than the equivalent that sticks to some idea of "structured language purity". There are some who go a step further and insist that every function and sub have only a single exit at the bottom. (no premature return or Exit Sub/Function statements).
Let's put it this way: I can use QuickBASIC. I know QuickBASIC.
The language, however, is weak, unwieldy, burdened by legacy compatibility reaching back to BASICA.COM, and weak; user-defined types are weak and require copious workarounds to create usable data structures.
I was going to make a quickBASIC implementation of an Anagrams search program, but I gave up. In trying to implement the algorithm QuickBASIC Fought me every step of the way, by not having features, not working with a given feature in some specific manner, or just plain sucking.
Because they actually have value.
VB6? No. VB.NET? Maybe. However it has little in common with VB6. that's why I went from VB6 to C#; if I'm going to learn a new language, it isn't going to be a new language pretending to be like one I already know. (And that said I have no problem working with VB.NET anyway, now that I know C#.
Microsoft's C++ compiler is barely compatible with the new C++ standard. Microsoft's Developer Tools division is focusing on .NET- They are in fact completely rewriting the .NET compilers (Roslyn) to allow for Compiler-as-a-service. Currently you can compile .NET assemblies from code in your own code but Roslyn will expose the Abstract Syntax Tree directly. This is powerful for implementing templating and generics features that might not otherwise be possible with the language capabilities.
C++:
C#:
And that doesn't even use Pointers or References, because I managed to get away with Locals.
@BC_Programming
MS is not moving towards C++ for games, if anything they are moving far away from it given they have literally shown no development in these areas, and as BC said, they are slacking severely in terms of keeping up with C++ standards. They are putting all of their effort into .net and C# like they have been for a while now.
For the XB1, this is true as well, Unity has had XB1 compatibility for a while now, and proper indie devs get it for free.
http://www.ign.com/articles/2013/11/05/unity-will-be-free-for-indie-developers-on-xbox-one
In addition, the XB1, PS4, and PSVita all have their own C# libraries for development outside of Unity, to give the developers the option of moving away from C++.
Well that is disappointing. The code I posted was actually the first version of the C++ implementation which was actually made several times faster downwind. You caught the main redundancy that was Vector being instances within the if(), but you didn't discover that the if itself was in fact redundant entirely.
Which is actually part of my point: discoverability. Visual Studio is far and away the best C++ IDE, but it still sucks because the language is absolutely awful from the perspective of static analysis. the intellisense you get for things like getline() may as well just be memory garbage. eg. When I hover over the count property of the Hash map in the C++, I get this "helpful" tooltip:
Well that's cleared that up! Compared to doing the same for a equivalent dictionary...
Of course, then you have the people professing that plain-text editors are the "best way" to write C++. That's hardly even worth a response.
Yes, even for someone with absolutely no experience. C++ is confusing, even more so when you don't know anything. Higher level languages ease that burden. That's the whole point of higher level languages. Not to mention that the tools for C++ are pretty crappy, especially for a beginner. Like BC_Programming mentioned, the intellisense provided by Visual Studio in C++ is pretty much garbage. I've found that to be almost universally true; I have never found an IDE that's actually given me what I felt was useful intellisense in C++.
Compare that with the intellisense for C# in Visual Studio and it makes the C++ stuff look like a total joke (and then toss in something like ReSharper which can make even the Visual Studio built-in intellisense look like total crap).
Another problem with C++ is actually how comparatively complicated it is to build a project. Visual Studio manages to hide most of this process from you, but if you ever need to touch any part of the build process you're not going to know what the hell to do. When it comes to C++, learning how the toolchains actually worked and how to link in external libraries that aren't just header files was one of the last things I really learned about the language. Like I remember how much of a hassle it was to build against things like zlib.
Hell, managing the build process professionally is something of a nightmare. Like, when my company upgraded from Visual Studio 2005 (if you want to talk about C++ intellisense really being a joke, go check that crap out) to Visual Studio 2010, it took months to transition over the code base. It caused all sorts of problems with Boost and stlport and a number of other third party libraries.
Oh, and then there's the fantastically incomprehensible world of build errors in C++. Anything involving templates turns into a nigh-unreadable mess. And linker errors can either be trivial (unless you're a beginniner) or take significant effort to figure out. There's really not a lot of middle ground with linker errors.
Oh, also there's the most vexing parse.
Now, I'm getting pretty close to just ranting about the stuff I hate about C++, but the language does have its placee, but not really in a beginner's toolbox. The language suffers because it doesn't appear to have been designed so much as congealed. Not really what you want when you know nothing of programming.
Seeing so many people recommend C++ to every single beginner thread here is starting to get on my nerves a bit, but I did not have the knowledge to point out specifics as to why this is a bad idea other than the syntax being dated.
So you're basing a language on a single IDE?
See above.
I don't understand how the build process in C++ is complicated at all. Please elaborate.
I've never encountered a linker error that a quick google search or a post on a forum couldn't solve.
It was fairly straightforward actually. Nothing out of the ordinary. I could argue that the C++ version was easier to understand, but it'd probably be best if someone who doesn't know either could say such.
I don't see how a program like this would need them anyway. In modern C++, pointers are barely used.
-----------------------
I think most of that post is just biased hate.
EDIT: For the 'most vexing parse' link, isn't function declarations inside of other functions illegal? That would most likely never happen in the real world.
Do you have a better IDE that allows more access to everything? A better IDE in general you use?
He didn't say the process was complicated. He said figuring out to tweak it and tailor it to the task at hand in one of the best IDEs for the language was complex because VS goes so far to hide it.
I also doubt you've worked on large, commercial projects with hundreds of thousands of lines of code.
You've shown nothing to prove it wrong. Evidence.
"Programmers never repeat themselves. They loop."
And I don't see how that helps your point in any way. Linker errors are the same for any project, big or small.
There's several in my previous post.
Did you really just say that? Most modern programs will require sorting of some sort which will almost certainly need pointers. Pointers are kind of a big deal in C++.