<div dir="ltr"><div>Oh my.. there are so many things to read and learn!<br><br></div><div>It *really* depends on which part of Mono you want to learn and dig into.<br><br>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").<br>
<br>First one: basically... everything :)<br></div><div>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.<br>
<br></div><div>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).<br></div>
<div><br>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!)<br>You can however use knowledge on the MS CLR to "guide" you through Mono code.<br>
In particular, I would start with the old but excellent "Essential .NET" (Don Box).<br>And there is also "CLR via C#" from Ritcher.<br><br>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.<br>
<a href="http://callvirt.net/blog/files/Shared%20Source%20CLI%202.0%20Internals.pdf">http://callvirt.net/blog/files/Shared%20Source%20CLI%202.0%20Internals.pdf</a><br><br></div><div>Then, there is "The Common Language Infrastructure Annotated Standard" <br>
<br></div><div>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 done:<br>Customizing the Microsoft.NET Framework Common Language Runtime<br>
</div><div><br></div><div>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). <br>
If you want to learn C#, "C# in depth" by Jon Skeet is great.<br><br></div><div>Besides books, there are blogs, articles, stackoverflow...<br></div><div><br>Then there is <a href="http://ASP.NET">ASP.NET</a>, concurrency, security...<br>
</div><div>It's a huge world! <br>My advice is to focus, initially, on a specific part: the runtime, the C# compiler, OR one of the libraries/frameworks.<br></div><div>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...)<br>
<br></div><div>Best of luck!<br></div><div>Lorenzo<br><br></div><div><i><br><br></i></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 11, 2013 at 1:33 PM, Rafael Teixeira <span dir="ltr"><<a href="mailto:monoman@gmail.com" target="_blank">monoman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Look at the ECMA/ISO standards specs for C#/CLR.<div><br></div><div>Have fun,</div></div><div class="gmail_extra">
<br clear="all"><div>Rafael Teixeira<br>O..:.)oooo<br></div>
<br><br><div class="gmail_quote"><div><div class="h5">On Fri, Oct 11, 2013 at 2:35 AM, Sergey Khabibullin <span dir="ltr"><<a href="mailto:x2bool@gmail.com" target="_blank">x2bool@gmail.com</a>></span> wrote:<br></div>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<div dir="ltr"><div>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.<br>


<br></div>What do I have to know before the source code makes any sense to me? What branches of computer science would be useful?<br><br>Also, if you name some books or other resources it will make me happy. Thank you.<br>


</div>
<br></div></div>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com" target="_blank">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div>