C# as a very first language? [closed]
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this questionIs it possible to learn C# as your first computer language without any knowledge of the other three languages it combines?
I learned objective-c without knowing c first, but assuming I know nothing of C# or any other language is it possible to learn as a first language?
Yes. It's possible to learn C# as a first language.
It doesn't really "combine" other languages. It takes some inspiration from other languages, but doesn't use C or C++, etc, directly. C# is its own language, with its own syntax and rules.
You can learn ANY language as a first language.. Some are easier than others, and use different concepts. Personally, I think C# is a decent choice for a first language, since it has a good development environment, a great community, and is flexible enough to provide good growth and usage in almost any environment, but easy enough to not be overwhelming.
Yes.
....also (trying not to blow Microsoft's trumpet) Visual Studio is a very good IDE so that + the language will help any newbie get into the swing of things quite quickly
“It is practically impossible to teach good programming style to students that have had prior exposure to BASIC. As potential programmers, they are mentally mutilated beyond hope of regeneration.” (E. W. Dijkstra)
IMHO, the importance of a first language is often overstated. E.g., people like to slag BASIC as a terrible first language. However, I was introduced to many fundamental concepts via BASIC (flow control, subroutines, etc.), as well as some more interesting things like:
- direct access to and manipulation of memory via PEEK and POKE
- self-modifying code! many cool things were done with this
- optimizations such as storing data at the end of the code, which taught me a bit about how interpreters work
- my first (and, oh, how I wish my last...) infinite loop (
10 GOTO 10
) - terrifying and beautiful at the same time!
That spurred interest in interrupts and soon I was doing assembly. Later I got into OO via JScript in classic ASP, and then more formally with C#.
I guess what I am saying is, is there is no one true language, and any of them is enough to open the door a crack, enough so you can see the big room filled with light beyond. So, yes, by all means, C#.
Many computer science curricula are using Java to introduce programming. C# is in many ways very similar to Java, so I would think a student could be pretty successful starting out with C#.
If your question is, "Is C# the best language to start out with?" then I think I'll leave that alone - the answer is going to be very subjective.
I learnt C# as my first "serious" language (I knew a bit of PHP and actionscript before, but nothing serious)
And while it wasn't horrible, I'd strongly recommend combining learning C# with learning C.
I learnt C# in school for 3 years, and then learnt C for a year, and came back to C# knowing how everything works MUCH better.
Especially recursion, arrays, pointers, etc. Just like assembler helped me understand C better.
To sum it up: It's not a horrible language to begin from, it's pretty noob friendly, but for deeper understading I'd learn C aswell.
You have to start somewhere. C# is as good a starting point as any.
Of course. C# does not combine languages!
It's a completely self-sufficient language that of course has roots/draws inspiration from Java, C and C++, but that does not mean you have to learn them.
Or do you need to learn Latin before you start learning Spanish?
Yes of course and IMHO it's a good choice.
Yes, C# is a perfectly valid language to learn first.
Yes it is a reasonable choice. Knowing the languages that came before it is interesting and useful, but is not a prerequisite.
See also http://portal.acm.org/citation.cfm?id=948843
It was my first, still using it 99% of the time today, 8 years later.
Certainly. But learn at least one other language too - it will make you a better programmer.
Yes, C# would be a fine first language. You can easily learn spanish/french/english without knowing latin.
C# is rather high level, so it will be easier to start with, and cuts out a lot of the crap you have to deal with with earlier languages (NOT because those langauges are bad! C# owes much of its beauty to its predecessors).
C# will also teach you Functional Programming early, which is becoming increasingly important in our industry as multi-threading becomes omnipresent.
Sure. One of the things that you learn about programming languages is that there isn't really that much difference between them. Once you learn one or two pretty well, you should be able to pick up others in a matter of hours or days - the syntax may change, but the concepts don't. What's challenging is getting the right mindset for programming in the first place and learning the API for getting things done with a particular platform and language.
C# is a perfectly good place to start because it maintains most of the features of more advanced languages while keeping away the most complex parts, and still allows you to develop full-featured GUI applications.
IMO, the ideal learning order should be:
- A wide background on Math (strong arithmetics and algebra, good formal logic (a.k.a. Boolean algebra), and optionally some set theory).
- A solid background on digital electronics.
- A good background about hardware: what a computer has, what can it do, etc.
- Machine code/Assembly, because it (machine code) is the only thing the machine really handles (and assembly is the only "sane" language close enough to it).
- Some low-level language; probably C because of it's prominence at that level (does anyone build systems with something else than C/Assembly?). This includes going down to interfacing with your platform of choice (for example, building some GUI through the Win32 APIs).
- Any OOP language, ideally C++ (because .Net languages and Java normally use intermediate bytecode).
- A good interpreted language, like Perl or Python.
- Anything you want.
While I really thing this is the best learning order (the knowledge acquired through that path always builds upon the preceding steps, and ends up covering most of the aspects relevant on modern computing), it'd be an utopia. I didn't follow that path (although I have dealt with most of the languages listed), and it's not practical to follow it on modern times: it may involve years of studying before you can take profit of your skills.
Recently, I started private classes on programming and I'm teaching maths (as needed), pseudo-code, and C#. Sincerely, I think C# is the sanest choice as the first language: it takes you quite early into nowadays' most used stuff: GUI, DB, Networking, etc, and it isn't as aberrational as alternatives like VB.
It would also be advisable to dive a bit on other languages spanning different paradigms, just to get a bigger picture about programming. I'd suggest Assembly (preferably on a virtualized system, because bad things happen) and Python or Perl.
Just my opinion.
Yes. The fact that it has syntactic roots in the C family of languages doesn't require you to know C, C++, Java or whatever: you can treat that as a historical curiosity.
Sure, just because it's like another language doesn't mean that you have to know the other language to learn C#.
Heads First C#
I'd go so far as to say that learning another language as a halfway step is more likely to leave you with bad habits than to reduce your C# learn time.
Start with Scheme ..that's what they teach in school first.
In my opinion may be it's possible to learn C# as your first programming language, but it's very difficult (I should say impossible) to learn programming using this language. Using any mainstream (may be it's better to say industrial or production) language. This languages are overloaded by different programming concepts, syntactically complex and has enough "dark places" to confuse newbies in programming...
And it's not only my opinion (of course). Take a look at what Niklaus Wirth thinks about it.
So you can choose another road and learn Component Pascal for example. The only problem on that way is the lack of books. It seems that this book is the only option.
Anyway, good luck!
I'm a C# convert and I freakin' love it when coupled with Visual Studio Intellisense and autocompletion. It's basically the nicest programming language/IDE combo.
I would say that C# is probably one of the best first languages as it teaches you some lower level, C-like programming but gives you an easier to use and manage object/memory platform.
It's a nice, clean language with good software and community support, and I wouldn't say it requires anything a beginner wouldn't have.
That said, I was faced with this question recently in helping a teenager learn to code. I decided in the end to steer him towards VB.Net instead; not because of any preference on his or my part - he didn't ask for anything specific, I use both - but I felt its increased verbosity was beneficial to a beginner. With less symbols and more words, I think most complete novices would find VB.Net a less intimidating starting point for no great difference in results.
Absolutely it is possible. I taught my son C# as his first programming language so that he could do a science fair project. He was 13 at the time.
I think C# makes a great first language for someone who will go into more serious programming or computer science. There has been a movement towards Python as a first language recently, and while I love Python, I think it's a poor choice for a first language because it lacks data abstraction. C# on the other hand, has excellent support for data abstraction (properties is one place where it shines compared to competitors like Java).
It also has a huge standard library behind it that enables beginners to write functional programs that do cool things early on (which is essential to keeping a beginner motivated).
After the student masters the basics of object-oriented programming, C# will also let them add other paradigms to their repertoire without having to learn a whole new language.
C# is a really good language to be learning first... However having learned C and VB .NET at first, in my opinion will give you significant boost :)
I think languages like: C, C++. Are the best languages for beginners - they help you understand how the system works - what is memory, how to use it, allocate, and so on. C# and its garbage collector allows you neglect this things.
精彩评论