Não tem como "não existir o assembly", ele faz parte da arquitetura da CPU, quando uma arquitetura é desenvolvida ela é desenvolvida com uma coisa chamada Instruction Set Architecture que define quais são as instruções, os registradores e os tipos de dados que a CPU aceita. Basicamente daí já se tira o assembly logo de cara.
Veja bem, o "assembly" não é uma linguagem de programação em si mas sim o conjunto de instruções de uma arquitetura.
Se você realmente quisesse começar do binário, isso seria equivalente a desenvolver sua própria CPU (ao contrário de desenvolver uma linguagem de programação).
Linguagens de programação são só abstrações em cima de abstrações.
Assim, tendo teu próprio instruction set, você pode, com teu próprio assembly, escrever um compilador pra alguma linguagem de programação (nova ou existente). Pode escrever um compilador pra C que vai te dar compatibilidade com o resto das linguagens, Python, etc. Ou pode criar sua própria linguagem e daí escrever um interpretador de Python na sua linguagem, e assim em diante.
É um exercício MUITO complexo, mas ao mesmo tempo muito legal. É a melhor maneira de entender como um computador funciona.
Por sinal eu adorei o nand2tetris, nunca tinha ouvido falar. Vou dar uma olhada!