I came across the following definition:

Given a ring $A$, with a unit $1 \in A$, and $A$-modules $M$ and $N$, we denote by $Hom(M, N)$ or $Hom_A(M, N)$ the space of $A$-linear maps from $M$ to $N$.

My question is: what exactly is the difference between homomorphism and a linear map? I can see that linearity is defined in terms of a vector space or module and homomorphism in terms of groups.

But every linear map is a homomorphism and when treating a group as a one dimensional vector space over itself, every homo. is also a linear map. This makes me think they are kind of the same.

Is it ok to think of it that way? Or am I confused? Because I feel confused. Thanks once again for your help!

"Homomorphism" comes from the greek homo (same) and morphus (form or shape).

So a "homomorphism" is a map that "preserves the shape" or "preserves the structure."


If you are working with groups, you want $f\colon G\to H$ to preserve the group structure: identity, inverses, and products. So a homomorphism is a map $f$ such that $f(1)=1$, $f(a^{-1}) = (f(a))^{-1}$, and $f(ab) = f(a)f(b)$ (though it turns out that the latter is enough to guarantee all of them, so we only check the latter). 
If you are working with rings, you want $f\colon R\to S$ to preserve the ring structure (addition and multiplication; if the rings have unity, then you want it to preserve unity). So you want $f(a+b) = f(a)+f(b)$, $f(ab)=f(a)f(b)$ (and if both rings have unity, you often want $f(1_R) = 1_S$).
If you are working with partially ordered sets, you want $f$ to preserve the order structure. So you want that if $a\leq b$, then $f(a)\leq f(b)$.
If you are working with graphs, you want the homomorphisms to preserve the graph structure, which is adjacency: if $v$ is adjacent to $w$, you want $f(v)$ to be adjacent to $f(w)$.
If you are working with topological spaces, you want homomorphisms to preserve the topological space structure; it turns out that the way to do this is to ask that the inverse image of an open set be open.
If you are working with "pointed sets" (sets with a distinguished object), then you want a homomorphism $f\colon S\to T$ to "preserve the structure", so you require it to map the distinguished object of $S$ to the distinguished object of $T$.
And if you are working with vector spaces over a field $F$, you want a homomorphism $f\colon V\to W$ to "preserve the vector space structure"; so you want it to preserve the additive structure, $f(x+y) = f(x)+f(y)$; and the scalar multiplication structure, $f(av) = af(v)$. 
Similarly, if you are working with $R$-modules, a homomorphism will be a map $f\colon M\to N$ that preserves "the $R$-module structure", $f(m+m') = f(m)+f(m')$ and $f(rm) = rf(m)$.


So the meaning of "homomorphism" will depend on the context. It is often clear. If I say "Let $G$ and $H$ be groups, and let $f\colon G\to H$ be a homomorphism", then it's pretty clear I'm talking about a group homomorphism. 

But sometimes it isn't clear. What if I say "Let $f\colon\mathbb{Z}\to\mathbb{R}$ be a homomorphism"? Am I talking about a homomorphism of additive groups, or a homomorphism of rings? How about "$f\colon\mathbb{R}\to\mathbb{C}$"? Am I talking about additive groups, rings, topological spaces,  $\mathbb{R}$-vector spaces, $\mathbb{Q}$-vector spaces, inner product spaces? Which?

So we often specify what kind of homomorphism we mean. This is especially important when a particular set has many different structures (such as $\mathbb{R}$, which is an additive group, a field, a vector space over $\mathbb{Q}$, a vector space over $\mathbb{R}$, etc). So we will say things like "let $f\colon M\to N$ be an $R$-module homomorphism", or "let $f\colon\mathbb{R}\to\mathbb{C}$ be an additive homomorphism" to specify which kind we are thinking about.

And, historically, some terminology precedes the generic "homomorphism." Homomorphisms of vector spaces have long been called "linear transformations", so we often call them that instead of "vector space homomorphism". When a vector space has several structures as a vector space (e.g., $\mathbb{C}^2$ can be thought of as a complex vector space or as a real vector space), we often specify the field, so we may say things like "let $f\colon\mathbb{C}^2\to\mathbb{C}$ be an $\mathbb{R}$-linear transformation" or just "$\mathbb{R}$-linear", to specify we are looking at the structure as a real vector space.

Because modules are a direct generalization of vector spaces, we often say "$R$-linear function" or "$R$-linear" to refer to homomorphisms of $R$-modules, by analogy to $\mathbb{R}$-linear or $\mathbb{C}$-linear for homomorphisms of real or complex vector spaces. Note that a module over a field is the same thing as a vector space. 
