Re: And if all from the beginning?
Hello, netch80, you wrote: N> This roughly incorrect comparing: N> 1. At Go simple syntax (here it it is strong in plus, they bypassed a standard rake the C-C-company), and all possibilities which compilers of any Cs ++ brake are removed. Well we speak about a stage, which already after parse. N> 2. At Go very feeble optimization - it is killed as a heap of rules of type "expression always arithmetics of integer numbers on the unit" is calculated from left to right ",", "function arguments are calculated from left to right", etc., and the execution organization - for example, now internal ABI demands to save by a call of other function all intermediate data on a stack (callee-saved registers are not present generally, short of auxiliary like SP. Therefore it plainly is not spent for it. It yes. But here in my opinion business not only in rules, and and that in respect of optimization anybody while especially also was not strained, so the optimizer there naive enough. It, truth, it is easy and without being strained is able to do some features which in Si it is impossible to make or it is very difficult. For example, and escape analyser works even for calls from one packet in another. And at it always smart if function is not necessary, it nobody . It here advantage of that at it not #include, and import, and the compiler always sees that is imported, and not just prototypes of functions. Besides, at it the compiler is able to select constructions in the text, and to compile in special way. It, generally, in my opinion, rich thought instead of spending life for creation of the high-grade static analyzer, simply to learn to select standard constructions which all use, and to invent, how they can be optimized. However, while it of such constructions selects a little. But in general, with your statement that at it optimization nasty, I will agree. N> 3. Projects of the size Firefox at it does not exist. As the compiler leads on it, whether dies under loading - as far as I know, nobody checked. And here I just assume a maximum of a rake. For example, implicit inheritance of a class to the interface only upon compatibility of methods - that at hundreds thousand classes can turn to a nightmare by correspondence search. And he also should not search anything. It has value of specific type, and the interface type to which it should be transformed. It should check up compatibility only. Other question that these here from specific type to the interface, I do not know, how they at it are called, he tries not to double them, therefore he should be convinced that such still is not present. I, by the way, am not assured that it does it statically. It precisely absolutely should do it in (for example if we transform type T at first to interface I1, and then in its subset, interface I2 will be I2-> T, instead of I2-> I1-> T, and it will be clarified only in ). But whether it here does it statically there where it is possible, I simply at all do not know Pzz>> As far as I understand, at go does approximately that here suggest to do at setting. N> I something did not see, that at it differed the compiler and as different entities. In 99.9 % of cases simply throw it to compile all dump of source codes together. The compiler does not do anything essentially artful (see above). The Intermediate language too at it is not present, all goes at once to the assembler. Also what here the general? Differ, differ, still as differ. At it the compiler leaves on itself files.a, with pair mysterious files inside. And as far as I understand, not the code, and result of parse (with all checks, it is finite) there lies. And if in the project the same packet is used some times, it only once compile. And here already screws together all it together. Note that is able to decompile already screwed together executed file, instead of these intermediate nepojmi-that-for-feature.