what does kernel and cokernel really mean in some theorems？ Recently I am studying aluffi's algebra chapter 0.And when I came across kernel and cokernel in some theorem like snake lemma or “having left （right）inverse is equivalent to split monomorphism（epimorphism）”theorem,which are in $R-Mod$.I got lost .I understand the kernel and coker in two ways.  


*

*“standard”definition（say.$coker＝N/imφ$） 

*the definition in terms of universal property which is not unique though “unique up to isomorphism”
so in these theorem （or more that I dont come across）.what does ker and coker really mean?
if they mean standard definition，I find that the proofs of these theorem more easy,because such definition are more concrete.  while the only thing I could use about the other definition is their universal property,with which the proof could be done but harder.
 A: The point of universal properties is that it doesn't matter. Either view is correct, though I strongly recommend getting comfortable with proving things solely from their universal properties.
If you have shown that your concrete definition satisfies the universal property then: if the use of $ker$ is stated to be mean something which satisfies the universal property, then, using those "unique isomorphisms", you can translate those instances to your concrete example, and proceed (and translate back along the isomorphisms at the end if necessary). (There's a subtlety here that whatever you're asking respects these isomorphisms. This is known as the principle of equivalence in category theory, but with typical presentations it is not a priori true. That said, violations of it tend to correspond to "silly" questions along the lines of "Is $7\in\pi$?" so mathematicians largely behave as if it does hold a priori and just "understand" which questions are "silly" or not.)
Of course, if you prove the statement for anything which satisfies the universal property, then it will certainly hold for your concrete case too. So, in spirit, this is the view taken. Just like when you prove something about the integers, $\mathbb{Z}$, you usually don't bother stating which exact definition of the integers you have in mind. Your proof is likely in terms of properties that hold for any valid implementation of the integers.
There are several benefits to proving things in terms of universal properties. First, it's more general. Kernels and cokernels occur in a variety of categories. A proof of a property of (co)kernels will typically automatically apply to (co)kernels in any other category. Second, it's often more enlightening. There's a strong case to make that universal properties capture "the essence" of the constructions, e.g. the "essence" of what a kernel is. This is more transferable both between categories and within the category. For any particular (co)kernel, there may be a simpler and more direct way of demonstrating that it satisfies the universal property than expressing it as quotient. In fact (relating to the "principle of equivalence" remarks), you would technically have to say some module is not a (co)kernel unless it is explicitly equal to a quotient. Third, it can often simplify proofs. In general, generalizing can simplify proofs because it removes irrelevant detail and limits the approaches available to proof. This means that you're less likely to spend time exploring fruitless dead ends. Of course, the downside of this is that you have to think more abstractly, and you lose approaches that might significantly simplify the problem in the specific concrete case.
From a programming perspective, a universal property is like an interface for an abstract data type while an explicit construction is like an implementation of the interface. A proof with respect to a construction is like depending on implementation details. You can't transfer the proof to other implementations of the interface, and it might break if you make small changes to your implementation. In math-speak, you lose some naturality properties that you have to manually establish after the fact, and if you redefine (co)kernel via some other construction, even slightly, your proofs may no longer be valid. Mathematicians have largely been shielded from this because they work informally and so tweaks and variations of definitions are just glossed over. If mathematicians were using (mechanized) proof assistants, they'd be highly motivated to operate in terms of interfaces/universal properties, because they would not be able to gloss over these differences.
A: Kernel (of $f$) in a general category is the fibered product (if it exists) $X\times_{Y} 0$ where $0$ is the terminal/initial object and the "fibered product" construction is mentioned in the beginning of the book (not this precise construction though). To be explicit, the diagram you should think of is
$$
0\to Y\overset{f}{\leftarrow}X
$$
The cokernel, as with most co-objects, is defined by flipping the arrows, so the fibered coproduct of the diagram
$$
0\leftarrow X\overset{f}{\to}Y
$$
Universality is something that can be said if we want to apply some general statement in a general category, but for your purposes, you can explicitly construct the fibered co-product and fibered product in the category of $R$-modules, which is precisely the definitions you obtained.
