Good First Book

Hi,

My cousin who is going into 9th grade asked me for a recommendation as to a good book to learn programming. I'm thinking either c# or java as a first language, but all the books that I have read are probably a bit to advanced for someone looking for a first foray into programming. Anyone have any good recommendations? anything gears towards game design would be cool.

Java for begginers:


C# for begginers:

It is not a book but it is really nice for begginers:

He could also learn JavaScript. Why? Because it is easy to run and very portable. Just an idea, but Java or C# should be fine as well

1 Like

My only reservation to recommending JS or Python is that neither languages are compiled and type safe. While it makes learning easier it could bring up some bad habits latter on. Plus I think i'm leaning towards C# because VS is nice and there toolkit for 2d game development are pretty easy IMO

I agree that you can develop bad habits but I believe that compiled languages (ish, with C#/Java) can add difficulties to the process. Learning something like python allows you to play around with things quickly and the interpreter allows you to test things out immediately without playing around with extra steps of saving/running/testing.

Python would be my suggestion, and Learn Python The Hard Way is always a straight forward approach.

2 Likes

I don't see consistency between your cautions for Python and your recommendation of LPTHW.
By adding Linux into the mix you're adding additional hurdles, aren't you?
Unix is certainly important from a Dev POV, and I do think it should be learned earlier rather than later; however, it is not a minor hurdle.

I agree with Python being a good intro language... Automate the Boring Stuff is accessible and practical (an OS)

If Game-Dev is a future prospect, there is a decent Unity (C# & JS) course on Udemy which provides assets and gets you moving in 3d space with VS...It's by DevSlopes, if interested I can hunt it down.

Python and javascript are the glue and tape that hold the entire internet and tech world together. Learn them.

LPTHW or Python have nothing at all to do with Linux or Unix, I'm very confused.

Language is just a tool it doesn't really matter which one is your first. I started from C which is now considered as complicated and hard to learn (and no it wasn't a pain, actually I really liked it), than obviously C++, Java, JavaScript, PHP and yeah Phyton was my 5th language than also C# and basics of many others like Ruby, Delphi, Erlang, Pearl, Lua etc. I think that learning JavaScript because it's super easy or Phyton since it is easy, popular and "the best language ever" is a bad idea (sure all funboys should die in Hell!). Instead you should focus on what you like, on your passion. If you want to be a web developer JS and Phyton will be really good but if you hate this stuff and you want to be OS or drivers developer you should learn C & C++, for game development C++, C# and Java could be more interesting even if they can be a little bit more complicated for a beginner. When you will learn with passion every problem you will overcome will give you a great satisfaction and the satisfaction will motivate you much more than maybe easier but not so interesting stuff. Of course sometimes you have to learn something you don't like but when you have a choice, choose wise.
I know it is a simplification but that's basicly how it should work, at least in my honest opinion, you can hate me if you like :wink:

TL;DR: The easiest way is not always the right way.

LPTHW runs off Linux, does it not?

EDIT: I tried doing this several years ago and it was directly tied to Linux. This no longer seems to be the case - I apologize. Perhaps the version I undertook was specific to Linux.

My suggestion of learning Python and Javascript had nothing to do with ease of use and everything to do with the level of utility they provide, and exposure to them you are likely to encounter in the world of getting things done.

The fact that it's easy to jump right in and get your hands dirty with them is really just a bonus, because at the end of the day the best way to learn anything is by doing it.

Personally I would recommend starting with Java
Since it enforces good habits and it's easy to grasp.


Additional information, kinda roadmap/personal opinions

That's good and as I said Phyton and JS would be a very good choice in many cases. I just wanted to say that learning difficulty should not be primary criterion for determining the choice.

Learn C the Hard Way does, but my gf learned some python on Windows via LPTHW.

My personal suggestion nowadays, if you're not interested in Python, but rather sticking with C#/Java might actually be C#. I'm definitely seeing an increase in popularity and with the rise of Mono and Microsoft's continued interest in looking to support Linux, it looks like a good replacement for Java given how it has been managed this past decade.

That was what I was thinking to. Especially since most stuff written for windows will be in .NET and C# has allot of good tools and resources. Plus you can develop games in C# no problem.

It might be best to tailor it to their interests though. If they like playing around with stuff immediately, Javascript and Python would be good candidates. Especially for playing around with animated stuff in Javascript. But otherwise yeah C# sounds like it's making some really good design decisions as it improves, and I'm growing more concerned about Java.

I wouldn't give C# as a first language because it leaves a lot of holes. I didn't learn C first, I learned C#, and it left a lot of blanks for me.

Theres some stuff thats probably a lot better than what I'll recommend for you, but the basic Python and Lua books you can find at BnN are all pretty good. If I ever have to make a script for something to quickly execute I usually use LUA. Then if I need an app done quickly I'll do python. I'd recommend those as god first Languages.

Java seems like a good first language as most things learned, can be transferred to other languages. My first language was Java.
http://math.hws.edu/javanotes/

This is a free online book, it also has a PDF version. The book introduces content through written explanations and occasionally code.

While I took a class, we used this. For me, marking on the PDF with a PDF editor was the best way for me to fully understand the content.