gcc компилатора е писан на C между другото, не на асемблер. Всъщност, дори не е вярно, че C програмите се компилират веднъж, с LLVM нещата стават като в java - компилират се веднъж до байткод, втори път този байткод се транслира до native машинни инструкции. Така или иначе C си има inline assembly, така че за малкото неща, за които ти се налага да ползваш асемблер, няма проблеми. Но дори и без това, спокойно може да се изпълнява код на машинен език, елементарно е да си декларираш един масив, съдържащ машинния код, да си декларираш указател към функция, която взема определени параметри и да му присвоиш адреса на масива, после да изпълниш функцията. C е ужасно мощен език. PHP е доста по-скромен език, който прощава и спестява ужасно много неща (примерно typecasting-а е доста свободен, абсолютно те лишава от memory management-а и т.н.). PHP определено си има предимства, манипулациите с низове са доста елементарни, за разлика от C, функциите за работа с бази данни са много лесни за използване за разлика от C (налагало ми се е да пиша програми, които изпълняват заявки до mysql база...УЖАСНО е, това превръщане на типове данни е кошмарно), обаче...не искам да засегна някого, но ми е трудно да си представя как някой който пише на PHP би могъл да се нарече програмист. По принцип уеб програмирането е леко ташак, всичко е малоумно нагаждане с много малко мислене. Много ама много рядко ти се налага да мислиш някакви истински проблеми, да използваш някакви сложни структури от данни или алгоритми, които оперират с тях, всичко е на принципа пляскай-мажи. В perl все още имаше списъци, хешове и масиви, можеше да се реализират доста по-сложни структури от данни базирани на тях, примерно дървета. Хората зад PHP и цялата група фенчета това въобще не им допадна щото трябва да се програмира с attitude разбираш ли демек да мажеш глупости и те някак да вървят щото някой се грижи това да става, без значение колко е субоптимално. Затва големите корпоративни уеб проекти рядко се пишат на PHP, с изключения, които потвърждават правилото. Самият интерпретатор веднъж ти спестява ужасно много неща и втори път характера на програмата (изпълнява се в рамките на един HTTP request - ОК, с ajax нещата става малко по-навързано), ти спестява още ужасно много неща. Като например да си освобождаваш паметта, която си заделил.