Я уже довольно долгое время изучаю php и его фреймворки, также js и c# . Но так как по свой натур я чайник, стало интересно правильно ли я понимаю что такое языки и как они работают.
Если брать компилируемые языки то по сути это просто текстовый файл с необходимым расширением, а компилятор к ним это программа написанная на ассемблере которая читает этот текстовый файл и получает в нем как бы сценарий.
пример:
Программа компилятор запустилась.
Читаю текстовый файл test.c
class MyClass{
void myfunc() {
int c = 1488;
}
}
...
myfunc();
Вижу класс с названием MyClass и функцию с названием myfunc которой принадлежит локальная переменная c.
Регистрирую значение в хипе с названием Myclass;
Регистрирую фрейм в стеке с названием myfunc и помещаю внутрь него переменную с значением 1488.
Очищаю память.
Создаю программу на ассемблере исходя из того что я прочитал.
.
(если не совсем понятно что я имел ввиду, то асм читает файл и видит написанную цифру 1 и с помощью заложнных в программу кодов понимает что в готовой программе нужно поставить вместо 1 команду "пример")
И получается если это так то программа написанная на высокоуровневом языке без компилятора просто текстовый файл, а также что готовая скомпилированная программа будет написана на языке ассемблера исходя из того что написано в исходном файле на высокоуровневом языке.
А также чтобы написать свой ЯП то нужно знать ассемблер, и просто написать программу компилятор на ассемблере которая вместо одних значений подставляет заложенные значения.
Я не красноречив, поэтому не уверен что правильно описал то как это понимаю, но думаю суть изложил ясно. Правильно ли это? если нет то что не так?