Depende do idioma.
Por exemplo, em linguagens como C e C ++, você tem uma série de built-in tipos escalares - int
, float
, double
, char
, etc. Estes são "primitivos", no sentido de que não podem ser decompostos em componentes mais simples. A partir desses tipos básicos, você pode definir novos tipos - tipos de ponteiro, tipos de matriz, tipos de estrutura, tipos de união, etc.
Então você tem uma linguagem como o Lisp da velha escola, onde tudo é um átomo ou uma lista . Novamente, pela definição acima, um átomo é "primitivo" no sentido de que não pode ser decomposto em algo mais simples.
Editar
Para mim, os termos "primitivo", "básico" e "interno" são praticamente intercambiáveis. Se você quiser ser realmente pedante, poderá distinguir entre os tipos "internos" (aqueles explicitamente fornecidos pela definição de linguagem) e os tipos derivados dos tipos internos ainda "primitivos" ou "básicos". na medida em que não podem ser decompostos em elementos mais simples. C'stypedef
Esse recurso permite criar novos nomes de tipos para os tipos existentes. O Ada permite criar novos tipos escalares que têm restrições. Por exemplo, você pode derivar um tipo Latitude do tipo flutuante interno, com a restrição de que ele não pode assumir valores fora do intervalo [-90,0, 90,0]. Ainda é um tipo primitivo ou básico, pois não pode ser dividido em nenhum componente mais simples, mas, como é definido pelo usuário, não é considerado um tipo "interno".
Novamente, esses conceitos são um pouco confusos e realmente dependem do contexto. Por exemplo, a noção de um tipo "interno" não tem sentido para um idioma sem tipo como o BLISS.