چرا این کتاب را بخونم:
Computer languages were developed because most normal people can’t work
in machine code or its nearest equivalent, Assembler. Fortunately, people
realized pretty early in the development of computing technology that humans
weren’t cut out to program in machine code. Computer languages such as
Fortran, COBOL, C, VB, and, more recently, Java and C# were developed to
allow us to put our ideas in a human-friendly format that can then be converted
into a format a computer chip can understand.
At its most basic, it’s the compiler’s job to translate this textual representation or
source code into a series of 0s and 1s or machine code that the computer can
interpret as actions or steps you want it to perform. It does this using a series of
pattern-matching rules. A lexical analyzer tokenizes the source code----and any
mistakes or words that aren’t in the compiler’s lexicon are rejected. These
tokens are then passed to the language parser, which matches one or more
tokens to a series of rules and translates the tokens into intermediate code
(VB.NET, C#, Pascal, or Java) or sometimes straight into machine code
(Objective-C, C++, or Fortran). Any source code that doesn’t match a compiler’s
rules is rejected, and the compilation fails.
Now you know what a compiler does, but I’ve only scratched the surface.
Compiler technology has always been a specialized and sometimes complicated
area of computing. Modern advances mean things are going to get even more
complicated, especially in the virtual machine domain. In part, this drive comes
from Java and .NET. Just in time (JIT) compilers have tried to close the gap
between Java and C++ execution times by optimizing the execution of Java
bytecode. This seems like an impossible task, because Java bytecode is, after
all, interpreted, whereas C++ is compiled. But JIT compiler technology is making
significant advances and also making Java compilers and virtual machines
much more complicated beasts.
پسورد : www.android-learn.ir