[Mono-dev] Understanding mono. Fundamentals

Lorenzo Dematté lorenzo.dematte at gmail.com
Fri Oct 11 13:16:29 UTC 2013

Oh my.. there are so many things to read and learn!

It *really* depends on which part of Mono you want to learn and dig into.

Back to your question: let me divide it in two parts: theoretical
background (the answer to your "What branches of computer science would be
useful"), and books or resources ("Learning how it works internally").

First one: basically... everything :)
More specifically: if you are interested in the execution engine (the
mono.exe runtime), Computer architecture and Operating systems are the
right branches (and Univ classes) to look at: there you learn about
execution (either in a virtual machine/execution engine or on a physical
computer), memory management, I/O.

If you are more into compilers (mcs.exe, the C# compiler), Semantics
(structural operational semantics), Lexing and parsing (usually referred to
as "Compiler construction" in many courses).

Learning how it works internally: to my (limited) knowledge there are no
books on Mono internals (what a pity! Anyone is planning to write one? I
would be delighted to help/review it!)
You can however use knowledge on the MS CLR to "guide" you through Mono
In particular, I would start with the old but excellent "Essential .NET"
(Don Box).
And there is also "CLR via C#" from Ritcher.

I found also interesting to read about the SSCLI (the old and out-of-date
source code release of the CLR) internals, especially the first chapters,
you can find it online here.

Then, there is "The Common Language Infrastructure Annotated Standard"

A good book on how the CLR interfaces with the "native" world; this is
specific to MS implementation, but it is useful to understand how it can be
Customizing the Microsoft.NET Framework Common Language Runtime

There are a lot of books (good and bad) on compilation; for specific
compilation on .NET, Compiling for the .NET Common Language Runtime by John
Goug is quite good (not my fav compiler book - my favorite is Modern
Compiler Implementation by A.Appel -, but it covers .NET quite nicely).
If you want to learn C#, "C# in depth" by Jon Skeet is great.

Besides books, there are blogs, articles, stackoverflow...

Then there is ASP.NET, concurrency, security...
It's a huge world!
My advice is to focus, initially, on a specific part: the runtime, the C#
compiler, OR one of the libraries/frameworks.
And even inside that, learn the general concepts and then dig into a part
of the code (like the JITer, or the garbage collector, or the loader...)

Best of luck!



On Fri, Oct 11, 2013 at 1:33 PM, Rafael Teixeira <monoman at gmail.com> wrote:

> Look at the ECMA/ISO standards specs for C#/CLR.
> Have fun,
> Rafael Teixeira
> O..:.)oooo
> On Fri, Oct 11, 2013 at 2:35 AM, Sergey Khabibullin <x2bool at gmail.com>wrote:
>> Hello. I used Mono for some time now, and I am pretty exited about it. I
>> want to learn how it works internally (How CLR is implemented, garbage
>> collection, etc.). And before I step into the source code it would be great
>> if I'd knew the theory behind it.
>> What do I have to know before the source code makes any sense to me? What
>> branches of computer science would be useful?
>> Also, if you name some books or other resources it will make me happy.
>> Thank you.
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20131011/8c4bb1f6/attachment.html>

More information about the Mono-devel-list mailing list