August 21, 2024

C# - books and resources

Some people question the need for and use of books given the resources we have on the internet. Be that as it may, I like books. A good book puts you in touch with a person, which is somewhat rare using internet resources.

The C# Players Guide is recommended by many. Some say it is the most enjoyable programming book they have ever worked with. It takes a "game" approach to learning C#. It may cover a lot of basic programming concepts, and thus not be the best fit for me, as an experienced programmer. Now out in a 5th edition (2022) covering C# 10

I tripped over another book "Learning C# by developing Games with Unity". In a 7th edition as of 2023. An interesting title and concept, but what is Unity?

A book by Mark Price, now an 8th edition "C# 12 and .NET 8" Modern Cross-Platform Development Fundamentals". This gets recommendations and the cross-platform claim in the title catches my attention.

A book by Jon Skeet, "C# in Depth" gets many recommendations. The latest edition is edition 4 (2019) making it dated compared to others above. I found a like new used copy and ordered it. ($28.22) Interestingly some people recommended going to Stack Overflow and following Jon Skeet as he posted things there as a great way to learn. This is an excellent book, but not for a beginning programmer. It is really for a veteran C# programmer who knows the language and wants to up their game.

Now something different -- a book "Functional Programming in C#, 2nd edition, 2022. I am interested, but the price is $55 -- almost twice the price of any of the above, and just to scratch a functional programming itch. But I found a used copy of the first edition on AbeBooks for $7.64 (Abebooks) and ordered it. My copy is quite dates (2011), but interesting nonetheless.

I search for .net books and I see "Adaptive Code via C#" recommended. It is in the first edition (2014). Microsoft Press. It mentions "Agile programming" -- so I will pass on this one. The book is 10 years old, and I don't think I can stomach having the "Agile" thing preached to me. Someone writing in 2023 called this "the bible of C# programming".

There is an O'Reilly book. "Programming C# 12" by Ian Griffiths. I see it has been out for C# 10 and who knows how many previous editions. This is July, 2024. But $65 makes it the most expensive book on the list. The author popped up briefly on Reddit to say that the book was targetting experienced programmers and did not spend the first 1/3 of the book covering basic programming concepts as some do. I am sort of jaded about O'Reilly books these days, after suffering through some duds, so I will pass on this one also. I will note that this book is recommended as a resource for learning .NET. I found a used copy for C# 8 for $14.90 and ordered it (AbeBooks). It is excellent and as the author says it is for an experienced programmer who is new to C#, just right for me.

O'Reilly has several other books. The usual nutshell book. A C# cookbook, and another that is interesting and gets recommendations: "Concurrency in C# Cookbook". It talks about multithreaded and parallel programming which has always been of interest to me. Given that it was mentioned in a thread on books about .NET I ordered a like new used copy.

Looking for C# books on Abebooks was tricky. I deleted the # symbol from titles, so I had to be clever and search for authors and add keywords to the search.

What the heck is Unity?

A nice name, but what does it offer? It looks to be a Microsoft thing, and I see no evidence that it is cross platform. The official words are:
Unity is a real-time 3D development platform for building 2D and 3D application, like games and simulations, using .NET and the C# programming language.

What the heck is .NET

A Microsoft hosted programmer will just blink his eyes like a frog in a hailstorm when you ask this question. At least that is how it has always worked out so far. If you are programming on a Windows platform, .NET is just part of the air you breathe apparently and you can't imagine a world without it.

In my case, coming from other programming environments and operating systems, most recently linux. I have never had dealings with .NET or anything like it. I have system calls, the standard C library, and various libraries for special purposes. The closest thing to .NET I have yet to see is the JRE (java runtime environment) in the Java ecosystem. And perhaps this is a reasonably analog. I claim that Microsoft invented C# as its answer to Java. But without the "run everywhere" claim that Java made (but which never played out) -- A nice idea but there was always hell to pay to get any system ready to run Java applications.

Interestingly, Microsoft says: ".NET is a free, cross-platform, open-source developer platform". The Mono project on linux has worked up something like most of .NET on linux. And it may be that Microsoft made .NET open source subsequent to a lot of the hard work being done on Mono. There have been standards for things like the CLR (common language runtime) since the very beginning. But here we are talking about .NET without answering the question of what it is.

I asked an experienced Windows programmer once what .NET was. He didn't actually answer the question (as usual), but he did make an important point as follows. .NET can be different things in different contexts. To the marketing people, it can be almost anything and it gets hooked onto anything and everything in that context. In a technical sense it is a definite thing -- whatever that may be.

So far a somewhat murky entity. Maybe it will all become clear - or clearer - when some of the books I ordered arrive.


Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org