[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mono-devel-list
Subject:    Re: [Mono-dev] Understanding mono. Fundamentals
From:       Lorenzo_Dematté <lorenzo.dematte () gmail ! com>
Date:       2013-10-11 13:16:29
Message-ID: CALgGKdck55b6C=WzaMArB-hgPY95_QbzyZ8P=NnHOCjoFastEw () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


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
code.
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.
http://callvirt.net/blog/files/Shared%20Source%20CLI%202.0%20Internals.pdf

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
done:
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!
Lorenzo

*

*


On Fri, Oct 11, 2013 at 1:33 PM, Rafael Teixeira <monoman@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@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@lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>
>>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>

[Attachment #5 (text/html)]

<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 &quot;What branches of computer science \
would be useful&quot;), and books or resources (&quot;Learning how it works \
internally&quot;).<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 &quot;Compiler \
construction&quot; 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 &quot;guide&quot; you through \
Mono code.<br> In particular, I would start with the old but excellent \
&quot;Essential .NET&quot; (Don Box).<br>And there is also &quot;CLR via C#&quot; \
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 &quot;The Common Language Infrastructure Annotated Standard&quot; <br> \
<br></div><div>A good book on how the CLR interfaces with the &quot;native&quot; \
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#, &quot;C# in depth&quot; 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&#39;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">&lt;<a href="mailto:monoman@gmail.com" \
target="_blank">monoman@gmail.com</a>&gt;</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">&lt;<a href="mailto:x2bool@gmail.com" \
target="_blank">x2bool@gmail.com</a>&gt;</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&#39;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>



_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic