(Part 3) Best microsoft programming books according to redditors
We found 763 Reddit comments discussing the best microsoft programming books. We ranked the 152 resulting products by number of redditors who mentioned them. Here are the products ranked 41-60. You can also go back to the previous section.
Excel 2003 Power Programming with VBA. Currently $4.94 on Amazon, though you might consider the latest edition. Got this when I was an undergrad, taught myself VBA and became an Excel "power user". Knowing VBA has been infinitely useful in my career and having it on my resume (along with projects and tools I've created with it) landed me my current job even though I wasn't even in the market at the time!
very, very few "gotchas". In general, in python what you read is what is meant, and nothing else. The defaults are correct and well thought. I can count 2 or 3 gotchas in python. In C++ there's a book dedicated to it.
The first book to come to mind is Beginning ASP.NET 4.5: in C# and VB by Imar Spaanjaars. It's really for teaching ASP.NET rather than C#. I read the .NET 3.5 version. It's the only programming book I've read where every piece of code actually worked. The author actively monitors the Wrox forum and answers questions. He answered a question I posted on a topic unrelated to his book.
As you've already guessed C# really rules the roost for windows programming. If your starting out to learn C# and the framework then this book is really excellent.
http://www.amazon.com/2008-NET-Platform-Fourth-Windows-Net/dp/1590598849
It's for people who can already code and skips all the 'this is a variable, this is a array' stuff and goes to a nice depth of understanding what is actually going on in the framework.
Another great book is C# in depth by Jon Skeet, http://www.amazon.com/Depth-What-you-need-master/dp/1933988363/ref=sr_1_1?ie=UTF8&s=books&qid=1267539804&sr=1-1
this is another excellent book that will get you up to speed in the latest in c# language feature in no time.
Powershell is nice because it's a scripting lanuage but it can also use .net objects so you now have all the power of the .net framework at your disposal.
Check out mono as well, they move very quickly to keep up with the MS implementation.
p.s. here is my little controversial advice, depending on what the job marketplace is like in your area, you might want to consider doing some of the MS certs. People like to crap on them but I consider it like any form of learning, You get what you put into it. If jobs in your area are all behind the recruiterwall then having the MS dev certs does make it easy to get past them unfortunately.
> I CANT LEARN C++ IN 24 HOURS???
Teach Yourself C++ in 10 Minutes
Ah, no. We also dislike its link model that makes it impossible to ship binaries without asking what compiler they'll be using to develop with. The need to ship template libraries as source code is sometimes a downer. The wacky feature interactions that are sometimes surprising. The way a + b can end up being a few thousand instructions instead of the half dozen one might expect through casual observance. The way you have to read all the code to know what any one line of code will do because you can change the meanings of the operators. The automatic object construction and type conversion that runs rampant and sometimes kills performance. The ugly syntax. The crummy type system that hinders more than helps. The truly obnoxious gratuitous overloading of already common terms like static to mean completely new things. The fragile base class problem and the annoyingly low tech dispatch system that allows it to occur. The overall lack of cohesion in vision. Everything listed in this book....
I started my summer semester with no experience whatsoever. Right now, I'm about halfway through Programming 1 (C++). I'm able to write basic programs (word counter, "day of the week" program, and other simple stuff).
As for doing something useful: I build a simple little robot recently. I did all of the mechanical and electrical work, and I had no idea how to do the programming side of it. I used a program that some people had suggested, so that kind of worked for the time being. My goal by the end of the semester is to write my own program for my robot!
I would really recommend a book like Starting Out With C++ - From Control Structures through Objects - 6th Edition by Tony Gaddis. I think it has a lot of well explained examples.
I hope that helps!
Java and C# are very very similar.
> How do you more experienced developers go about teaching yourself a new language?
Google and books. This book is pretty decent.
Not bad, considering I taught myself C++ in 10 minutes.
Because nobody would be looking for a programming bible or the juicing bible.... I could go on.
\> Would it transpile ALL of my code into JS? Wouldn’t that degrade performance?
​
If you implemented your numerical computations in the Fable app, yes, most likely. Although JavaScript can be used to write performant desktop applications - for instance, Visual Studio Code - I don't think it would be a good fit for scientific computing. The use case for Fable is in having behaviorally-sophisticated UIs without having to run through the dynamically/weakly-typed mess that is JavaScript. That said, JavaScript is not a terribly slow language - the Node.js JavaScript runtime is typically faster than Python. And Fable has Electron bindings for creating desktop apps. It could be worth trying. But I imagine a transpiled F# program would be noticeably slower than having one run in the .NET Framework or .NET Core runtime.
​
You really want to think of this as a UI layer on top of a computation layer. For a web application, the UI is typically run client-side in JavaScript (the browser sends .JS code to its JavaScript runtime, or in the very simplest case is only an HTML renderer), while the server code is some other language (F#, C++, PHP, etc) that sends user-facing data to the JavaScript. For a .NET desktop application, it'll all be bundled and run in the same place, but typically with a separate frontend project and a backend project. Unfortunately, either way it'll be a bit of work. And I think we'd need a bit more information about your code to give a good answer - for starters, is this Windows, or Linux? .NET Framework or .NET Core?
> My other question is if F# good for some scientific applications?
Yes. I started out using F# for such things. I ended up writing the book on it.
F#'s ML core is extremely simple. I think you would find it very easy to learn. Let me get you started:
There is a type called
unit
that has a single value in it called()
that can be used to convey no information, a bit likevoid
in other languages but you can use the value()
of the typeunit
anywhere.The
bool
type has valuestrue
andfalse
.Integers are written
1
,2
,3
and so on. Integer arithmetic is1+2*3
. Theint
function converts a value (e.g.float
orstring
) into anint
.Floating point numbers are written
1.2
,2.3
,3.4
and so on. Floating point arithmetic is written1.2+2.3*3.4
. Thefloat
function converts a value (e.g.int
orstring
) to afloat
.Characters are of the type
char
and are written'a'
. Strings are of the typestring
and are written"foo"
. You can append strings with"foo"+"bar"
. Thestring
function tries to convert a value of another type (e.g.int
orfloat
) into a string.Lists are written
[1;2;3]
. You can prepend onto the front in constant time with1::[2;3]
.Arrays are written
[|1;2;3|]
. You can read and write elements with random access in constant time witharr.[i]
andarr.[i] <- 3
.ML has sum types and product types. The simplest product type is the tuple. Tuples are written
(2, 3)
and(2, 3, 4)
. The types of those tuples are writtenint * int
andint * int * int
. Tuples can have as many elements as you like (greater than one, of course). Note F# uses OCaml-style syntax which lets you drop many brackets when dealing with tuples, so you can often just write1, 2
.F# also has record types which are product types where the fields have names. Record types are defined as
type MyRecord = {FirstName: string; LastName: string}
. Values of record types are written{FirstName="Jon"; LastName="Harrop"}
. Given a valuer
you can get a field with the syntaxr.FirstName
. As a product type, a value of typeMyRecord
must have aFirstName
and aLastName
.Algebraic datatypes (ADTs) are a combination of sum types and product types. A sum type allows a value to be one of several different options. The simplest example is to define your own boolean:
type MyBoolean = True | False
The values
True
andFalse
are then values of the typeMyBoolean
. Like an enum in other languages. But the really cool thing about ADTs in MLs is that those union cases can have an argument of any type you want. For example, we can define an ADT:type Glyph =
| Digit of int
| Letter of char
The values
Digit 3
andLetter 'x'
are values of this typeGlyph
.The value
()
of typeunit
was a minor diversion from other programming languages. Now comes the first major diversion: pattern matching is the only way to destructure ADTs. So the only way to extract those values3
and'x'
from the value of typeGlyph
is using pattern matching. In ML there are patterns all over the place. The most obvious place you see patterns in on the left hand side of the->
in each match case of amatch
expression. Here is a pattern match that will keep digits the same but redact all letters to'x'
:match Digit 3 with
| Digit n -> Digit n
| Letter c -> Letter 'x'
In this case the
Digit n
andLetter c
are patterns. In particular, these have the effect of binding the variablen
to the value conveyed in theDigit
case (so it can be used on the right hand side of that match expression) orc
to the value conveyed in theLetter
case.You can match
int
,float
,char
,string
and other types such as tuples, records and ADTs using the same literal syntax that you do in expressions.When you need to match a value but you don't care about its value you can use
_
to match any value of any type and not bind it to any variable name.If you want your pattern to match either something or something else you can write an or-pattern:
patt1 | patt2
.If you want to name part of a value that you're matching you can use
patt as myVar
to call itmyVar
. For example, we could have written:match Digit 3 with
| Digit as glyph -> glyph
| Letter c -> Letter 'x'
You can define variables with
let
:let x = 3
This looks mundane but that
x
is actually a pattern so you can also do:let (x, (y, z)) = (1, (2, 3))
to destructure the
int * (int * int)
pair on the right and definex
,y
andz
.You can also define functions with
let
:let redact glyph =
match glyph with
| Digit -> glyph
| Letter c -> Letter 'x'
In ML, function application is written
f x
rather thanf(x)
, e.g.redact (Digit 3)
.Here we come to our second massive departure from conventional languages: when you have tuples you don't need multi-argument functions so every function in ML accepts one argument and returns one value! Furthermore, like OCaml, F# typically writes functions in Curried form. So a function to add two numbers is written
let add x y = x+y
which has the typeint -> int -> int
rather thanint * int -> int
so this is a function that takesx
and returns another function that takesy
and returnsx+y
.Oh look, you've learned enough F# to understand this computer algebra system that can differentiate any symbolic mathematical expression composed of integers, variables, addition, multiplication, power and logarithm:
type Expr =
| Int of int
| Var of string
| Add of Expr Expr
| Mul of Expr Expr
| Pow of Expr * Expr
| Ln of Expr
let rec d x e =
match e with
| Var y when x=y -> Int 1
| Int | Var -> Int 0
| Add(f, g) -> Add(d x f, d x g)
| Mul(f, g) -> Add(Mul(f, d x g), Mul(g, d x f))
| Pow(f, g) -> Mul(Pow(f, g), Add(Mul(Mul(g, d x f), Pow(f, Int -1)), Mul(Ln f, d x g)))
| Ln f -> Mul(d x f, Pow(f, Int -1))
For example, the symbolic derivative of
x^x
computed in F# Interactive (e.g. in Visual Studio) is given as:> d "x" (Pow(Var "x", Var "x"));;
val it : expr =
Mul
(Pow (Var "x",Var "x"),
Add
(Mul (Mul (Var "x",Int 1),Pow (Var "x",Int -1)),
Mul (Ln (Var "x"),Int 1)))
Probably the next thing to understand is that
map f [a;b;c;...] = [f a; f b; f c; ...]
andfold f a [b;c;d;...] = f (f (f a b) c) d) ...
. For example, if you represent 2D coordinates as a pair you can write:let translate (x0, y0) ps = Array.map (fun (x1, y1) -> x0+x1, y0+y1) ps
To sum a list of integers you can write:
let sum xs = Array.fold (fun x a -> x+a) 0 xs
So given a file containing a list of integers on separate lines you can add them all up with:
Seq.fold (fun total line -> int line + total) 0 (System.IO.File.ReadAllLines @"Data/Numbers.txt")
F# has a handy pipeline operator
|>
so you can writef x
asx |> f
instead. For example:System.IO.File.ReadAllLines @"Data/Numbers.txt"
|> Seq.fold (fun total line -> int line + total) 0
Another mind-blowing thing you'll come to love is purely functional data structures. When you add an element to a list, set or map (dictionary) in F# you get a new collection in O(log n) time but the old collection is still perfectly valid and can be reused.
As others have mentioned, writing code is the best way to get exposure. But if you're a book guy like me then there are a lot of option out there that'll accelerate the process. You'd be insane to read all the following--these are just starting points that can accommodate different interests/tastes.
Having said that, I'll start with the one book that I think every C# developer should own:
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries
... it's a good read, and it includes a lot of direct input from the designers of the C# and the .NET Framework. Microsoft has been really good about sticking to those guidelines, so you'll immediately get a leg up on the Framework libraries if you work through this book. (Also, you'll win a lot of arguments with your coworkers about how APIs should be designed.)
General knowledge books (tons to pick from, but here are some winners):
Deep dives into specific features that'll serve you well:
Note: I've never found a good LINQ book that supported how I actually use the feature. Coming from C++, you can probably just start off by thinking of the extension methods on Enumerable as a C# version of std
<algorithm>
... a good way to avoid writing raw loops. But if you're a performance-obsessed game dev then you'll probably want to use LINQ sparingly--it does have some overhead.I don't think you don't need to use Visual Studio. This is certainly a job which VBA was created for within MS Word and will do everything that you want.
You can use the Document object that can load in a file and pull out what you need.
Ultimately, learn Office Word 365 thoroughly and VBA to extend rather than Visual Studio. Visual Studio is an IDE for programming languages, and as such you will need to learn the programming language to use and how to package and deliver the software.
Office has VBA to extend functionality in Office Applications, and as such is more suited to what you wish to do.
See : https://docs.microsoft.com/en-us/office/vba/word/concepts/working-with-word/working-with-document-objects
https://www.amazon.co.uk/Mastering-VBA-Microsoft-Office-2016/dp/1119225388/
https://mva.microsoft.com/en-US/training-courses/office-365-developer-overview-13986
I honestly don't know what the best option is these days, which is super unhelpful. I started learning Java about 12 years ago before there were all the online options we have now, then switched over to mostly C# when I started using Unity (they're basically the same language so the transition is really easy).
The most helpful book when I was starting was Sam's Teach Yourself Java in 24 Hours. Really good at teaching the language while explaining how to think like a programmer, which is a huge step when you're starting out.
It looks like they have a book for C# too. I haven't read it and it looks like it's written by a different guy, but it's probably a similar approach to teaching.
For online resources, I've used codecademy for learning a handful of new languages. Unfortunately they don't have any C# but they do have Java. It looks like some promising sites for C# are learncs.org and programmr.com, but I haven't used either of them so this is just from a quick glance.
If you want something a little more general, and you've already got a handle on how the language (and framework) work in a general sense, then I'd highly recommend Effective C# by Bill Wagner. It really helped me understand some of the idiosyncrasies of both C# and .NET in general, as well as some features I'd never before discovered. It'll really help you make anything you'd create more stable, legible, and maintainable.
Back in my university days, the standard was Dietel and Dietel, How to Program.
You can buy the latest edition for $150.
Or, you can buy and older version for 5 bucks.
http://www.amazon.com/How-Program-Harvey-Paul-Deitel/dp/0131857576/ref=pd_sim_sbs_14_22?ie=UTF8&dpID=61T8TMRB0AL&dpSrc=sims&preST=_AC_UL160_SR123%2C160_&refRID=0B0B7Z8M1TXC0VAGSWJ9
> I think if I learn how to program with an aim to work as a software developer and make games on the side, is this viable after just turning 20?
There's nothing wrong with the age of 20. I started school at 20, graduated in four years, and found work as a software engineer right out school.
What you have to figure out is how to make the best of your time left in school: should you take a class or two on programming and graduate on time, or (more dramatically) change your field of study to computer science and spend a few more years in school? That's something only you can decide. If you want to finish your architecture program and graduate in a reasonable amount of time, I can assure you that your math and physics background will be enough to get you work as a software engineer, but only if you can actually program.
Part of working as a software engineer means being able to program in multiple languages. That's because it's not really about the language, it's about the logic. All languages follow certain patterns and while syntax or wording may change, they all share ways to implement the same logic.
It also means knowing what data structures to use for what scenarios. The phrase "There's no such thing as a free lunch" comes to mind. All data structures have advantages and weaknesses and no data structure is perfect for every occasion. Know the differences, know the performance impact, and be able to speak to them. This won't just help you write better code, it will help you land a job. Interviewers love to ask questions about data structures.
As a corollary to data structures, you also need to know your algorithms. You need to know the performance impact of different ways to search and sort, traverse graphs, and find the shortest path (particularly relevant for game programming).
You said you're learning Python and that's great. Python is a great way to learn how to program. It's dynamic, it's friendly, and it has a rich library. Learn Python inside and out, then pick another language and figure out how to do the same things. C++, Java, and C# are all pretty popular in the industry, pick one of those. Once you know how to program in a few languages, you focus less on minute implementation details specific to one language and more on high level abstraction shared across multiple languages. By that point, you'll no longer be speaking in code, you'll be speaking in plain English, and that's the goal.
I don't know many good free online resources for learning languages, I learned mostly out of textbooks and lecture slides (along with lots of practice). There are some links in the sidebar to some tutorials that are worth checking out. Beyond that, I can recommend some books you may want to read.
EDIT: I added Programming Interviews Exposed because it's a good reference for data structures, algorithms, and interview questions
This book has never let me down. There are versions for each version of excel you need.
I would also say learn to use the object browser and help functions within VBA. They can be helpful in explaining what functions and objects do.
I probably learned the most by typing in google: "How do I do _____ in access VBA?"
Buy The Pragmatic Programmer, read it from cover to cover. Let it change your life. It's not a specific language reference but it's pretty much required reading for any new programmer. It's about creating maintainable code, which is more of a mindset than anything, it's also a really really EASY and relatively entertaining read.
https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=sr_1_1?ie=UTF8&qid=1520232423&sr=8-1&keywords=the+pragmatic+programmer&dpID=41BKx1AxQWL&preST=_SX218_BO1,204,203,200_QL40_&dpSrc=srch
Another more specific book to use as reference is the Effective C#:
https://www.amazon.com/Effective-Covers-Content-Update-Program/dp/0672337878/ref=sr_1_1?s=books&ie=UTF8&qid=1520232641&sr=1-1&keywords=effective+c+sharp&dpID=51ga39m0W5L&preST=_SX218_BO1,204,203,200_QL40_&dpSrc=srch
They make "Effective" books for nearly all popular languages, and they really are great references. If you don't understand everything in it like co-variance and contravariance google as a lot of good examples of these concepts in practice, as well as definitions. Believe me I understand that these things can get really confusing and frustrating coming from a non-academic background and trying to bridge that gap. But utilizing this book and understanding the lingo will also help you to find more answers to run on your own.
Now, as with anything in programming, the point is not to have to remember everything all the time in these books(despite what try-hard programmers on the internet will tell you). That comes with experience and you're human so don't set yourself up with that expectation. Read them once so you know what is in them, and keep them at your desk for reference.
When you need to construct an interface pull out the book go to the interfaces and give it a glance over to give you an idea on where to go.
If you are completely new to programming, don't worry, it's definitely not as hard as people believe it is.
The first important thing when you are learning any programming language is to be goal oriented, because this is what is going to keep you engaged and make you more likely to actually gain something from anything you read.
Think of the most tedious and repetitive task that can save you some time - that is going to be your best place to start. For instance, some formatting always has to be updated and it's time consuming, or you need to create a letter from information on a speadsheet every day etc. That's where you'll see your work pay off immediately, and that rush of having it work for you every day will really inspire you to keep going. For me, it was taking a bunch of files and porting the information to one place initially.
Once you know what your end goal is and what you want it to do, google it in every variation you can find. YouTube tutorials are actually where I started, just to see if what I was thinking of was possible. They have a lot of great resources for how to do certain things and you can find out if the concept is achievable this way really easily. Try to "steal" code or try examples that you find. (Just put a url in a comment or some indicator of where you found it from because you will forget later, and having the page it came from can significantly help when you are troubleshooting. This is attribution etiquette for programming, anyway.) Don't get discouraged if the code doesn’t work the way you imagined, this is going to allow you to see why it behaved the way it did later on and is a really important step to learning how things worked. Besides, with anything you do, you will likely have to mold it so much to your project, it will end up being more your work than anyone else's in the end either way.
[Wise Owl Tutorials] (https://www.youtube.com/watch?v=KHO5NIcZAc4&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5) are some of the most thorough and logically laid out tutorials I have seen for VBA and I heartily recommend this if you learn better through video - he's pretty much made a full course of it.
Then, I would say dive in and find out how the language itself works for a little bit. Read about variables, if statements (and variations of these), and loops.
Variables are the placeholders for your data, and using the right ones in VBA means that you can make your program run faster or slower, so it definitely helps to get an understanding of these and what they do early.
If statements and operators and their variations are the parameters that determine what happens. (If dog does not = fed, then feed dog.) These are the logic that everything runs on. You would be surprised how much coding comes down to statements like the dog example.
Loops are how your program is able to do a few things to a large data set in very little time in a structured way. (For each dog, if dog is not fed, then feed dog, then move onto the next dog.) These are also ubiquitous in all programming languages, but the syntax varies between language. This is how those if statements become really powerful.
If you are like me, and learn well from books, these two have been the best ones I've found:
[Excel 2016 Power Programming with VBA (Mr. Spreadsheet's Bookshelf)] (https://www.amazon.com/Excel-Power-Programming-Spreadsheets-Bookshelf/dp/1119067723/ref=sr_1_1?ie=UTF8&qid=1539050489&sr=8-1&keywords=john+walkenbach+excel+2016+vba)
This book is great for learning from the very beginning, especially if you don't have any previous programming knowledge. It will walk you through everything in a very easy to read way and get you dreaming about the possibilities with VBA. It also shows you why you may end up wanting to get detailed in the ways you think about variables etc with timed examples. I used the 2013 edition of this book and I was very pleased. This is a great choice as your first book covering the basics.
Mastering VBA for Microsoft Office 2016:
This book is the one I used the most out of all of the books that I bought on the subject. It has some really excellent examples of things you may not have even imagined could be done in VBA that give the language a lot of power and usefulness. I still refer to it, even though I outgrew all of my other books. It spells out a lot of the basics as well, and if I had to refer to VBA on a desert island, this would be the only book I would bring. (Although the idea of having to refer to VBA on a desert island is a special kind of nightmare, even for someone like me who loves it.)
If you can only afford one of these, definitely get this one - the first one is great for baby steps but becomes outgrown quickly. I recommend it mostly because it does an excellent job of explaining programming if you have never done it before.
The Spreadsheet Guru has some really basic things ranging to some more advanced concepts and is not a bad place to start learning some quick fixes.
Excel Macro Mastery is great for getting to know how the moving parts work, especially with some of the complex data types that it can be a little hard to wrap your head around as a newcomer. This site has some times when it will try to sell you on his program, but it's worth a little annoyance for the truly good advice:
Excel Virtuoso is excellent for advanced program structures and how to make VBA act more like an object oriented programming language. It may be good for some of the earlier stuff, but this is when I found ways to do things that most people don't seem to know it can, including ways to make custom classes for data do things that are not very well known and only glossed over in most VBA programming books. It's been a godsend for me, and is the cornerstone that a lot of my work actually hinges on as the project I took on was far more complex than the scope of most macros, which are quick and simple maneuvers primarily.
But don't limit yourself to these resources. Look everywhere when you are trying to learn and don't fret overly with whether you are doing something right or wrong. Make it, test it, troubleshoot it, and improve.
The computer will not explode if you do something wrong. VBA is meant to be like a fisher price language because the intent of providing it is more for office workers than full blown programmers. At worst, your program will shut down and you may have to end the task in task manager or reboot your computer. This is rare. Most times, the compiler will remind you that you missed some part of syntax, which is a quick and easy fix that even advanced programmers have to deal with all of the time.
Feel free to look at places like stack overflow, but take all of this advice with a grain of salt, because there are normally at least 20 ways to do something (and that is on the low end) and everyone can get a little protective of their way. I use this as more of a brainstorming effort.
And if you have any questions, feel free to reach out to you. If I haven't dealt with it already, I may be able to point you in the right direction. :)
Also, if you're interested in learning programming in general, this is an awesome list of coding courses and where to find free coding courses that freecodecamp sent out this summer:
https://medium.freecodecamp.org/500-free-online-programming-computer-science-courses-you-can-start-in-august-bc1bcac1af5e
Programming C# 4.0 is great for learning and starting out.
Once you're comfortable with the language, go through CLR via C#. This will teach you how things work in detail.
Buy a C++ book or download it in the internet, try "C++ How to Program DEITEL" (great book, $5.62 in amazon)
http://www.amazon.com/exec/obidos/ASIN/0131857576/deitelassociatin
http://www.amazon.com/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588
I always liked the Sams "teach yourself" books, I didn't use the C++ book but other languages and found them to be helpful getting a leg up, as far as cheap Amazon has them used for less than two bucks.
If you're interested in continuing programming with VBA, primarily as a background to Excel, Walkenbach has a great book:
http://www.amazon.com/Excel-Power-Programming-Spreadsheets-Bookshelf/dp/0470044012/ref=sr_1_1?ie=UTF8&qid=1289314070&sr=8-1
About 10 years ago I met a kid online who was at school majoring in something CS-ish. I don't recall the specific school or exact major, but it involved development. He seemed to be having sort of a mid-major crisis because he felt like he was only learning how to use tools without understanding the underlying concepts. To me, it felt like he was on the brink of giving up and switching to something non-technical. So, that Christmas, Santa-by-way-of-bookpool.com dropped off a box containing A Book on C and Learning Perl. It might not be a monumental gesture on my part, but I still feel pretty good about it.
Try Sam's teach yourself C++ in 21 days. The book eases you into programming and expresses concepts in a way easy to understand. It also gives you lots of code examples you can type out and compile and reviews material with questions and exercises that reinforce the material.
https://www.amazon.com/Sams-Teach-Yourself-Days-5th/dp/0672327112
Is something like Sam's Teach Yourself C# worth looking into or is it kinda gimmicky?
Don't know about migration but this book is pretty great: http://www.amazon.com/5-0-Pocket-Reference-Instant-Programmers/dp/1449320171
Other than that just Google away!
A good place to start is with http://www.amazon.com/Beginning-ASP-NET-4-5-C-VB/dp/1118311809/ref=la_B001IO8CJS_1_2?ie=UTF8&qid=1368809067&sr=1-2
I started with a 'Dummies' book as a primer followed by ...
http://www.amazon.com/Excel-2003-Power-Programming-CD-ROM/dp/0764540726/ref=cm_lmf_tit_1
This book has always been my favorite. Negligible changes between 2003 and 2010.
There are couple books that really stood out for C#. These don't touch on .NET core but the same techniques apply.
Functional Programming in C#. http://amzn.to/2Ct3q5B if you come from a functional lang, this one is a must. Great LINQ concepts as well.
Adaptive Code via C@ http://amzn.to/2CsglEP is an updated version of the original. Dependencies and layering really helped me understand the core concepts of .NET. It's a M$ Press book. Easy read and a great reference.
>Simply not true.
Maybe not in your little insulated corner of the world, but do a cursory google or check stack overflow to see the staggering amount of problems people have working in C++. Of course according to you, they must be all incompetent idiots who haven't invested years of their lives so that they can operate the language properly.
>Anonymous classes are way more unreadable than c++ local variables.
Something you clearly don't realize is that they don't need to be anoynmous classes.
>It's not. If you believe it is, show me one 'quirk'.
it's so bad there's a whole fucking book on the topic
>That's a respected personal opinion. But, it is personal. That doesn't mean C++ is not better than Java
But the opinion is based on the fact that C++ is a more complex language than Java, which does not offer enough benefits to counteract the complexity that it introduces.
Saying, that a person with years of experience writing C++, and who restricts themselves to a small subset of C++, can write clean code is not proof that the language is easy to use I'm afraid.
Books
VIDEOS
HTML/CSS
This is a good resouce. If you want to work for a company, Id suggest learning asp. net. You can still primarily work with html/css but makes it easier for other back end developers to implement working forms, log in, etc
ASP .Net
I've got that book too and I like the way it teaches things but it is definitely harder to understand initially than some other books. I suggest getting it along with another C++ book (I have SAMS Teach Yourself C++ in 21 Days) so that when you're having trouble with Accelerated C++ you can switch over to the other book and just read about a particular topic (such as pointers) and maybe go back to Accelerated C++ with a little more understanding.
Programming C# 4.0 is really excellent in my opinion. I came to it with a teenager's programming experience and still found it easy to follow. The book is huge, totaling at over 800 pages. It is mostly focused on C# itself, but in later chapters branches off into a lot of the subsets of .NET such as ASP.NET, WPF, WF, Silverlight, etc.
That is exactly what I came here to say. Learning C before going to college made all of my CS classes easier (especially when I had to learn a new language).
When I learned C I picked up K&R and The C/C++ Programmer's Bible. My only programming experience before that was BASIC (which I don't recommend as a starter language for reasons outlined here).
This book has been invaluable for me. It skips all the basic stuff and focuses on the feature set of .net and c#. Things like delegate and extension methods, LINQ, nullable types, and generics. It clocks in at only around 350 pages, too, so you can probably absorb it in a long weekend. And if you're interviewing specifically for a c# position, you should probably be able to write some code that isn't almost completely interchangeable with java.
If you already are familiar with programming I really like C++ for Java Programmers http://www.amazon.com/C-Java-Programmers-Mark-Weiss/dp/013919424X generally I usually just put C instead of C++ in my resume since I've never programmed in C++ outside of college.
I had that book!
https://www.amazon.com/C-Java-Programmers-Mark-Weiss/dp/013919424X
I had a professor recommend this book: https://www.amazon.com/C-Java-Programmers-Mark-Weiss/dp/013919424X/ref=sr_1_1?ie=UTF8&qid=1538751921&sr=8-1&keywords=c%2B%2B+for+java
Personally, I don't think the advice here is good. The best way to learn to program is to go to school for cs. Sitting around trying to build something will only teach you bad habits.
That being said, if you want to learn C++, and you don't want to go back to college, start here. Then, once you know that book forward and back, find a data structures book. Something like this.
I learned C at uni (in 1996) and the book we used was "A Book on C" by Kelley and Pohl (http://www.amazon.com/Book-Programming-4th-Edition/dp/0201183994)
got http://www.amazon.co.uk/Sams-Teach-Yourself-21-Days/dp/067232072X
did just that, twice.
is that a reasonable replacement?
Since you're studying Mathematics, you might be better off looking at functional programming,rather then OOP. F# from Microsoft offers both functional and OOP. A good introduction is F# for Scientists . As for performance, there are a number of benchmarks showing F# matching or beating equivalent C++ programs.