Olá, Pedro! Tudo bom com você?
Desculpe a demora em responder você!
A resposta realmente estava bem formulada e as questões que você levantou são profundas em nível teórico e até filosófico. Bom, vamos lá!
Separar em blocos ou abstrair?
Você tem razão quando afirmamos que abstração é isolar determinados componentes ou características. No entanto essa afirmação é incompleta tanto para a filosofia quanto para a ciência da computação. Ok, mas então qual seria o correto?
Abstração
A competência do Pensamento computacional tem em sua essência a ideia da abstração para solucionar problemas.
Abstração, para a ciência da computação é uma habilidade que consegue isolar as características, propriedades ou componentes considerados como os mais importantes para definir um modelo e ignorar o restante. Ao aprofundarmos um pouco mais, em filosofia a abstração é uma forma de representar a realidade através de um modelo.
Um exemplo:
Temos a classe dos insetos, essa classe é uma forma de agrupar todos os atrópodes que possuem as seguintes características:
Três pares de pernas
Olhos compostos
Um par de antenas
Corpo dividido em cabeça, tórax e abdome
Os Insetos possuem outras características mas essas podem ser ignoradas no momento para agrupá-los em outras ordens.
Essa abstração de criação da classe inseto da biologia é uma habilidade, essa habilidade de agrupar elementos mais importantes para criação de modelos e solução de problemas também pode ser aplicada durante a construção de nossos códigos
Tudo bem até aqui?
É exatamente como você apontou (No entanto o comentário com // em JavaScript é apenas parte da sintaxe da linguagem e não uma habilidade), a abstração pode ser entendida como a habilidade de criar classes no contexto da programação orientada a objetos.
Abaixo temos um exemplo de definição de uma classe em JavaScript:
class Retangulo {
constructor(altura, largura) {
this.altura = altura;
this.largura = largura;
}
}
É uma forma de representar um Retângulo.
Por outro lado temos a divisão em blocos
Separar em blocos é habilidade de fragmentar ou dividir seu código em diferentes partes de acordo com sua necessidade. A criação de funções para isso é bem interessante pois funciona como uma forma de dividir responsabilidades específicas e assim deixar seu código com maior legibilidade, por exemplo.
É mais parecido com uma forma de organização que beneficia a manutenção, distribuição de responsabilidades e legibilidade do seu código.
Um Exemplo:
Durante esse curso o instrutor poderia muito bem redigir todo o código sem nenhuma função mas você acha que isso seria o ideal?
Será que seria mais difícil ou mais fácil para encontrar problemas?
Certamente o cenário seria de caos total hahaha, então a divisão de projeto em sub-rotinas é algo essencial ao ofício do programador e parte bem básica também.
Dessa forma, a letra "C" está interligada com a ideia de sub-rotinas, separação do código em blocos com funções específicas a fim de garantir a boa prática. Por outro lado, a letra "A" está mais direcionada ao conceito de construção de classes.
Fico à disposiçao em caso de dúvidas e espero que as informações tenham ajudado!
Um abraço e bons estudos!