Desire to learn C# and other programming stuffs

Started by Matthiasagreen, September 26, 2014, 01:45:52 PM

Previous topic - Next topic

Matthiasagreen

on a scale of 1 to Tynan, I am probably a 5 or a 6 in general computer awareness. I have never gotten into programming or computer software, but I know my way around a computer and if something is broke on a family/friend/coworker's electronic device, they feel comfortable in coming to me. Playing this game and being part of this community has inspired me to not only learn more of the programming aspect, but to maybe go into it as a career. The one problem I have is I don't know where to start. So for those who are largely closer to the Tynan side of the scale, can can someone direct me to an awesome website or something that would be good to get started at. Personal experience is preferred, but a simple google search from some experienced eyes helps too.
Hi, my name is Matthias and I am a Rimworld Addict. It has been five seconds since my last fix...

null

A fine collection of free books can be found here: http://programming-motherfucker.com/become.html#C#
Otherwise I can't help you with C#.

stefanstr

It seems from your post that you don't know how to program at all. In that case, I would recommend that you start with a scripting language (Python or Lua) - they are easier to understand than the C-derivatives and you can get stuff working quicker.

Python has the advantage of having a ton of cool features and libraries. I can recommend this course from personal experience:
http://learnpythonthehardway.org/book/

Lua is a minimalistic, barebones language, but very enjoyable (at least for me) and very widespread in the gaming industry. I don't know any good resources on how to learn it (I picked it up from the official manual which is not beginner-friendly). If you manage to get to grips with the basics, there is a cool and easy to use gaming library for it, Love2D. Very nice to start playing around with easy concepts.

Plus Lua is used in A LOT of games (Civilization 5 for one example) so knowing it can be very useful if you are interested in modding.

And null, thanks for that link - I didn't know that website. Looks interesting.

Matthiasagreen

you are absolutely right, I wouldn't have even know that c# wasn't the place to start. It is just what people talk about most on these forums. Thanks for the suggestions, I will check those out.
Hi, my name is Matthias and I am a Rimworld Addict. It has been five seconds since my last fix...

stefanstr

Quote from: Matthiasagreen on September 26, 2014, 04:00:46 PM
you are absolutely right, I wouldn't have even know that c# wasn't the place to start. It is just what people talk about most on these forums. Thanks for the suggestions, I will check those out.

It is the language in which RimWorld has been written, that's why. Honestly, I don't know C# so maybe it is easier to pick up than C++ or Java... But I remember trying to learn Java, then picking up Python and getting more done in a week than I did in a month with Java. And once you have learnt to program in one language, it is much easier to learn another language.

Justin C

I really wouldn't recommend learning LUA as a first language because it behaves so differently from programming languages. Python is a good first language to learn, but I would disagree that it's a better first language than C#.

C# really is a great language to start with. There are a ton of resources online that you can learn from, and if your interest is in making games Unity is a great reason to choose C#. You could pick up Visual Studio Express (free) and follow along with some tutorials online. Google is pretty much all you need to learn any programming language.

As for sites, http://www.codecademy.com is a nice site where you can learn the basics of a lot of different languages. It doesn't have C#, but it does have a lot of popular web languages. If you spend a few hours doing the Javascript course you should have a good idea of whether or not you will enjoy programming as a career.

Neurotoxin

Quote from: stefanstr on September 26, 2014, 05:14:26 PM
Quote from: Matthiasagreen on September 26, 2014, 04:00:46 PM
you are absolutely right, I wouldn't have even know that c# wasn't the place to start. It is just what people talk about most on these forums. Thanks for the suggestions, I will check those out.

It is the language in which RimWorld has been written, that's why. Honestly, I don't know C# so maybe it is easier to pick up than C++ or Java... But I remember trying to learn Java, then picking up Python and getting more done in a week than I did in a month with Java. And once you have learnt to program in one language, it is much easier to learn another language.

I'd be inclined to say the exact opposite. I struggled hard with Lua and left me feeling empty. Once I started learning Java that's when things started to click for me. Going from Java to C# is easy as pie as they are EXTREMELY similar.

Everyone learns better on different languages. Read a bit into several languages and see what resonates with you the best. Here's an awesome resource similar to what null posted https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md

I suggest reading a bit and just going with the language that feels right or makes the most sense to you from the start. Once you've chosen one, don't just read about it but DO it, do the exercises. If you find yourself asking "can I do <insert something>?" Don't google it, TRY it then google it and see how you could improve. Part of learning is making mistakes and seeing where, how and why you went wrong and how to do it better. Once you have a grasp on the core ideas you can, theoretically, change to just about any language fairly easily.

Haplo

My suggestion for an easy to learn language is VisualBasic.Net. It may look really different from c#, but that is the good part on it, as it is also easier to understand for a beginner. The principles behind it are nearly the same as with c# as both are built on dotNet. Afterwards it is a bit of work to learn how c# writes the same program differently, but as I said, the underlying principles are the same as in c#

Rahjital

I mostly agree with Justin C here. While it's true that everyone has a different language they'll feel the most at home with, it does not necessarily have to be the language one begins with.

Lua is a is not a good language to start with. It's a wonderful little language, very cleverly designed to keep a fine balance between abstraction and freedom, but there are no tools to ease writing or debugging nor other features that would make learning easier.

C# is a great language to learn the ropes with. It's very easy to use. It is very close to Java and even enough to jump to C++ (which would be quite a bit more difficult from Java), one can migrate to almost any other language from it. And it is widely used, even in videogames due to XNA and Unity (and of course in Rimworld).

I wouldn't recommend Java to anyone, as personally I think it enforces bad programming habits. Some of people say it's a good for learning, though.

longbyte1

Back in 2008 when kids weren't so into programming, there were few tutorials for things like Python and Visual Basic. Now it's basically exploded, and so beginners are talked into using Python as their first language (the primary reason being that PyGame is so dang simple to teach).

My first (proper) programming language was Visual Basic .NET. Really, all I did was just tinker around sample projects like a script kiddie. Then I found something called Small Basic, which is just Visual Basic for starters (no WinForms, no WPF, no projects, nothing like that). It had a turtle, which was great. I didn't do anything big with it, but I did play around with it some more. Small Basic is still supported to this day, and it has numerous tutorials that you can look at.

Then I was enticed into Java after researching how to make Minecraft mods and looking at Notch's coding timelapse videos. I didn't know a lot about Java, but then I got the hang of it after making smaller programs and things, and soon I understood the whole notion of OOP.

I started taking a computer science class, and soon I reached the limits of Java, starting with reflection. Java's a great language to start with, but not for making a complex program since 1) JNI and Swing are garbage, 2) no anonymous functions (which means that you can't define a method within another method and pass it as an argument, although this is being addressed in Java 8), and 3) data structures are very annoying to work with (which one would you use, List, ArrayList, HashTable, HashMap, or your own?).

Recently, C# has attracted me because it has everything Java has - and more. (I think Minecraft is the sole reason Java hasn't died yet. :P) Too bad it targets .NET, which means that you have to make a completely different workflow to get it to compile to Mono so that it can be run in other platforms.

You should start with Python or Visual Basic if you're looking into modern programming. Otherwise, start with C++, Objective-C, or another "traditional" language. Then work your way up to a higher-level language. Or you can just start with C# if you're a fast learner.

PS: You don't need to know C# to mod RimWorld. You can also use any other .NET language, like Boo (similar to Python), VB.NET, or even C++/CLI (not for the faint of heart).

Rahjital

#10
Wait, Basic is still alive? That's pretty crazy, I still remember making my first game in QBasic and feeling like the next Carmac :D I would have thought that it would have made place for newer and more useful learning languages, but I guess that as long as people keep recommending it, it'll keep trucking on...

Quote from: longbyte1 on September 27, 2014, 11:24:29 AM
start with C++

NO NO NO NO. NO NO, PLEASE NO. NO.

I'm sorry, but that's about as a good way to introduce somebody to C++ as it is to aircraft piloting by shoving them into a nuclear-armed jet fighter and trying to get them fly it - you'll just end up with an atomic mushroom instead of an airborne plane. There is just too much to handle in C++ for somebody not used to coding, not without some really special talent. Once they understand the coding paradigms in a language like C#, then they can step into the world of manual reference handling, but not sooner.

C++ is like a big gun, powerful and scary, but hard to handle with its strong kick. And if you shoot yourself in the foot, it will blow off your entire leg.

longbyte1

Quote from: Rahjital on September 27, 2014, 05:55:04 PM
Wait, Basic is still alive? That's pretty crazy, I still remember making my first game in QBasic and feeling like the next Carmac :D I would have thought that it would have made place for newer and more useful learning languages, but I guess that as long as people keep recommending it, it'll keep trucking on...

Quote from: longbyte1 on September 27, 2014, 11:24:29 AM
start with C++

NO NO NO NO. NO NO, PLEASE NO. NO.

I'm sorry, but that's about as a good way to introduce somebody to C++ as it is to aircraft piloting by shoving them into a nuclear-armed jet fighter and trying to get them fly it - you'll just end up with an atomic mushroom instead of an airborne plane. There is just too much to handle in C++ for somebody not used to coding, not without some really special talent. Once they understand the coding paradigms in a language like C#, then they can step into the world of manual reference handling, but not sooner.

C++ is like a big gun, powerful and scary, but hard to handle with its strong kick. And if you shoot yourself in the foot, it will blow off your entire leg.
Okay, well C++ isn't the first first language you should ever learn. Learning C++ is like learning to ride a horse; before learning how, you should watch others do it.

BassMonroe

I made a simple game with basic last year for college, since last month i've been trying to teach myself c# in visual studio and unity. its all going well up to now, just the odd bit i still need to get my head around plus i recently bought a book off Amazon that goes over the basic programming methods to keep to in unity.
Be interesting to see if i can remember it after leaving it a week

RemingtonRyder

I'm not new to programming, but I've barely touched C# and being honest with you guys, I'm not sure where to start in terms of putting together something that I can work with.  I can do forms in VB/VB.net, and I can do a console program which does one thing automatically, and I've fooled around in NWN's script editor for so many hours, but I haven't taken a crack at much else.

I do want to write a game, though.  I blame Game Dev Tycoon for re-suggesting it to me. :P

ToXeye

http://www.ehow.com/facts_6057608_difference-between-c__-visual-basic_.html
"Visual Basic syntax more closely resembles a natural language, most of it decipherable by even a novice."

That said, there is plenty of things to do in Basic, you can even pick up a game library and make a game.
http://www.thefreecountry.com/sourcecode/games.shtml
Features everywhere!
e_  O:
/|   /|\