Tools needed for C#

Status
Not open for further replies.

FreakWave

Honorable
May 3, 2012
32
0
10,530
So I've decided that i want to be a programmer. I would like to learn c# but i don't no where to start so could could someone tell me what i need to program c# i.e notepad or visual studio and could someone direct me to a site which can teach me?
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810
A lot of people don't like Visual Studio firstly. In any case, a beginner to the .net framework can learn a lot about the compilation process, and compilers in general if they're new to programming entirely, if they compile things by hand at least at first. There are a lot of important lessons to learn along the way that should be reflected in how you write code.

A tutorial and clicking 'build' in an IDE does not make you a programmer. The OP has a long road ahead of them.
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810
It's called learning. If you don't want to work with a case sensitive language I suggest starting out with VB.NET instead. Between the two there are only syntactic differences. You can write the exact same application with both.
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810
How the .net compilation process works, which options are available and hopefully which options should be used when. For example, do you instruct it to optimize your code or not? Do you check the unsafe option? What sort of assembly signing features does it have? These are all very important to know.
 
I'm not sure that using the command line teaches you that any more than using the project options in Visual Studio does. The fact that you can set the options on the command line teaches you nothing about what they do or why you should use them; but the integrated help system in Visual Studio will far more likely help with this.

I'm with Sunius that the code completion and other help features built into Visual Studio are far more educational than simply running the compiler in a command prompt. But each to their own.
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810
It's about learning the underlying structures behind your tools. The point is to research, read and learn. Merely checking a box in a menu does nothing to teach you about what exactly it does or why it's important. There's a reason struggles teach us the best lessons: because it's not convenient. Menu options that "just do it" for you don't require a second thought. However, if you're telling a command line character-for-character which commands to pass into something you're more likely to care because you don't want to waste your own time. In the end, it's about excellence and craftsmanship.

If the OP wants to be a programmer then I have to ask myself what would I say to a potential coworker which leads me to question the kind of coworkers I want to have. The answer to that is knowledgeable ones that aren't hamstrung if they can't access a tutorial quickly and those that have a firm grasp of underlying theory as well as practice.
 
Having programmed professionally for over 20 years, I respectfully disagree with you. Taking your argument to the extreme, everyone should learn to program by typing in binary numbers, then proceed to assembler, then, ....

But it would be a sad world if we all thought the same way.
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810
I do program professionally, though only for a decade, but, I'm sorry if don't speak to your greatness. I'm tired of encountering people calling themselves programmers but they, for some reason, need a super specific set of tools in order to anything. As I said in my advice I only suggested he do it at first to get familiar with the underlying tools he's using, and no, I didn't go anywhere near "start with binary, noob" so I don't appreciate that mischaracterization. Conceptually, that advice is solid and the OP can take it and apply it anywhere and should excel if they want to. So, to say it's flawed is, frankly, wrong.

Re: binary, most people I know professionally could break an application down to IL, then assembler and then binary and understand that flow through a computer system. So, to start at binary? Absolutely even if it's only to understand how that process works. If you can't understand how that process works and other basic ones like it then you have no business trying to write software for other people. You're a hazard who knows just enough to be dangerous and is little better than being a script kiddie.

It's no different than calling yourself a chef and not understanding how the separate ingredients work and instead relying on pre-packaged units for predetermined meals. Or, calling yourself an architect without understanding how the ground your building will be on affects a structures integrity. Or, calling yourself a pilot without being able to plot a course by hand in case your instruments fail. Or, calling yourself a doctor without understanding basic cellular biology.

I guess I should point out I'm differentiating between being a programmer and being someone who writes programs. They are large differences between the two. And, frankly, from a professional perspective I'm having a hard time believing I'm getting gruff from someone who's "done it more than 20 years" for advice to start with the basics before you rely on automated tools to carry you. If you really have been a programmer that long, then you, sir, quite probably did start with binary and assembler and with little effort should be able to see how that knowledge and experience has made you a better programmer over the years as you've, hopefully, changed and grown as our profession has done. Don't deny someone else the same opportunity to actually be competent.
 
So everyone who uses IDE is not competent? Come on man, how can learning compiler tags be useful to some one who does not know what a variable is? Compiling by hand is a burder which a newcomer should not bother with. Tags will be learnt in time, there are more important things to learn first.
 



 
What happens when that fancy IDE environment breaks and the only way to get a project out is to drop down and do it by hand? Those that only know how to point-and-click become hopelessly lost and totally useless (think the ones behind the fast food counter that can't make change when the POS system crashes and no longer calculates it for them).

I'm with Majestic on this one.
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810

Neither of those equates to "everyone who uses IDE is not competent." My advice on compiling by hand was only to start with so you're not dependent on the IDE to compile for you. Even if all you learn as a result is the location of the compiler directory is enough to accomplish this. Would you advise someone go forward in ASP.NET without learning HTML? I highly doubt it and I see those two situations as very similar.
 
I think you confuse the tools with the language. As for the IDE "breaking down" you might as well ask what happens when the compiler breaks down. IDEs, like compilers, don't break down.

Great advances have been made in computer science, both in languages and in the tools to use. I wouldn't advise a user to learn COBOL (or, God help us, BASIC), and I wouldn't advise them to use edlin and a command-line compiler. The important thing is to learn the algorithms and the syntax of the language; anything that helps with that is to be applauded.

Using a command-line compiler teaches you neither of these things. At best it gives you a false sense of superiority over those who embrace the appropriate tools. I can use "vi" with the best of them, and do when absolutely forced to, but I use Eclipse to do my programming. I'd be a fool not to let the computer do what it is good at. The program is the important thing to me not the particular mechanism that converts it into assember instructions.

There are times when you do need to delve in lower-level details. In my experience, when writing an Operating System you need to be aware of the compiler and the linker and how they work. But this is not a concern for someone learning programming. When you are competent and need to delve into lower-level details by all means do so. But don't deny a beginner the framework that will teach him good algorithms and syntax without having to worry about the nuts and bolts of a particular compiler and processor.
 

majestic1805

Honorable
Oct 1, 2012
270
0
10,810

My experience tells me otherwise. In several places on separate machines and different domains, getting "studio'd" is common place and you should know how to roll with the punches in these cases. In the worst cases this requires a re-installation of VS which can take at least couple hours depending on the environment and various things you need to install with it.

Your last comment of "But don't deny a beginner the framework that will teach him good algorithms and syntax without having to worry about the nuts and bolts of a particular compiler and processor" makes me question your experience with .net, though. The .net compiler does not care about the platform you're on and is a very straightforward and easy thing to deal with. All it cares about is converting your code to IL. The JIT compiler in the .net runtime does the final conversion to assembler based on local machine conditions based on this IL (intermediate language) and is seamless.
 
Status
Not open for further replies.