O computador é basicamente processador e memória.
https://pt.stackoverflow.com/q/189180/101
Processadores e memória são basicamente feitos de transistores na configuração digital.
https://pt.stackoverflow.com/q/142289/101
Dai a necessidade do famoso codigo binário (1 ou 0).
Se a passagem de corrente elétrica é permitida normalmente é 1
Se for 0 a corrente elétrica ainda existe, mas em baixíssima voltagem, por isso é considerada 0. O importante é diferenciar a voltagem entre os dois.
Assembly
https://pt.stackoverflow.com/q/178804/101
A definição e algumas outras informações de funcionamento da postagem original pode dar uma ideia um pouco errada. Assembly não é bem o que está ali e não é assim que é feito "conversão" de outros códigos, pelo menos em boa parte dos casos.
sistema operacional
https://pt.quora.com/O-que-%C3%A9-sistema-operacional/answer/Antonio-Maniero
O SO não também não é o que está definido acima. Ele não tem nenhuma ligação com linguagem de programação, muito menos ele cria uma ou tem uma oficial (a não ser em algum casos muito específico, artificial e fora do comum).
O SO é um software, quase como outro qualquer, que ajuda a usar o computador. Ele não é absolutamente necessário, mas tão conveniente que é usado em quase qualquer caso. Ele ajuda controlar outros softwares e coordenar e facilitar o acesso ao hardware, principalmente quando roda vários softwares juntos, e por vários usuários, potencialmente.
Os softwares podem ser escritos em quaisquer linguagens e programação:
- Binária - bem chata, trabalhosa e difícil em certa medida, a tal ponto que hoje não tem razão para fazê-lo.
- Assembly - em algum dialeto de acordo com a arquitetura do processador e fornecedor de uma ferramenta montadora, que é trabalhosa e exige cuidar de muito detalhe de processamento e memória, além de acessar componentes externos de forma bem geral, e isso torna um pouco difícil porque é fácil errar no uso, mas não é difícil para aprender, ao contrário da crença popular.
- Linguagens de alto nível - que é o que a maioria das pessoas usam e permite você escrever códigos de forma parecida com um texto matemático que um humano entene, e precisa ser "convertido" de alguma forma, por interpretação ou transformação para outra linguagem que pode ser Assembly, binária ou uma outra intermediária de baixo nível ou até fazendo transpilação para uma de alto nível.
O sistema operacional fornece funções prontas para acesso ao hardware onde ele controla o acesso. Isso é chamado de API. É comum a linguagem trazer uma biblioteca padrão que entrega algumas funções prontas, inclusive algumas que acessam a API do sistema operacional, e até de outros servidores dele ou de terceiros, como GUI, file system, de rede, banco de dados, web, e diversas outras coisas.
Acho que é isso em linhas gerais, está bem superficial. Não quero esgotar o assunto, eu poderia colocar bem mais links, mas eu acho que as pessoas curiosas vão fazer pesquisas para entender mais a fundo o assunto. Eu mesmo já respondi vários aspectos que podem ter despertado interesse, muito disso foi no Stack Overflow.
Faz sentido para você?
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).