Исходный код или исходный текст - текст на языке программирования, который пишет человек (как правило, человек). Это обычный текстовый файл (как правило).
Но процессоры в компьютера/смартфонах и пр. - довольно тупые устройства, способные понимать только чрезвычайно простой машинный код.
Поэтому любая программа прямо или косвенно превращается из исходного кода в машинный и только после этого исполняется компьютером/смартфоном и пр.
Объектный код - это промежуточное представление кода. Еще не машинный, но уже не исходный. Используется на этапе сборки программы из нескольких кусков (возможно, написанных в исходном коде разными людьми и в разное время).
Машинный код - уже готов для исполнения. То есть просто берете его, ничего не нужно более. Делаете двойной щелчок мыши, к примеру, и программа запускается.
Пример исходного кода - легко:
package example
func Add(p int) int {
return p + p
}
Пример объектного кода и машинного кода - бессмысленен. Что объектный, что машинный коды этой программы
не предназначены для чтения человеком.
Это для вас будет выглядеть как абракадабра.
!<arch>
__.PKGDEF 0 0 0 644 30328 `
go object windows 386 go1.11 X:framepointer
build id "ZKpaYf_Flzmm6jns9NJp/RbNW-F32vdlI8SgqpfEX"
----
$$B
i
И это еще не весь объектный код - там большой файл.
Машинный код - еще бОльшая абракадабра, я его сюда даже вставить не смог. Текстовый редактор не пропускает эту кучу спецсимволов и т.п.
Упомянутая вами цепочка (исходный - объектный - машинный) касается языков программирования, компилируемых в машинный код:
C/С++/Go/Rust/Pascal.
Некоторые языки предназначены для компиляции в байт-код. Его нельзя назвать ни машинный ни объектным. Это Java/Kotlin/C#. Если бы этот код выполнялся непосредственно процессором (CPU) его можно было бы назвать машинным. Но он выполняется только через специальную программу.
Языки Ruby/Python/JavaScript ничего похожего на машинный код не генерят.