O dificil se abrem pra qualquer linguagem é, o que é complexo?
Comandos em assembly: MOV, MUL, ADD? As instruções são simples, mas os programas que saem daí são extremamente complexos.
E que tal isso no C++?
::operator void* new(size_t size) {
//Faz alguma coisa, como contar o tamanho e as referências
return malloc(size);
}
É uma inocente chamada de função, certo? Mas acontece que isso aí em cima redefine o operador new do C++ !!! Ou seja, sempre que alguém fizer:
MinhaClasse* x = new MinhaClasse();
O C++ vai usar o new personalizado, e não o new padrão. E isso definitivametne é um recurso complexo e extremamente avançado (ou uma potencial máquina de problemas exotéricos)… Outros recursos, como Smart Pointers, são muito simples de usar, mas se você já implementou um eficiente, é um cara de respeito. Além disso, os programadores já tem que ter um bom grau de conhecimento para identificar e esses objetos-ponteiro no lugar correto.
Agora, e a respeito do Java? A sintaxe básica é simples e existem funções complexas (e que muitas vezes deveriam ser básicas) nas classes por ali. Será que aceitariam afirmações como:
“Eu consigo colocar o texto de um JLabel sublinhado.”
“Eu consigo definir o tamanho máximo de um JTextField”
“Eu consigo escrever em console.”
Você pode sempre colocar funções do JNI, ThreadPoolExecutor, palavras chaves exóticas, como nessa declaração aqui:
public static volatile transient float x = 0;
Ou nessa:
public strictfp class Teste {
//
}
Mas isso nem sempre significa que você esteja fazendo algo de complexo…
Em resumo. A questão é até interessante, estavam no caminho certo. Mas acho que seria proveitosa se pedisse para você descrever alguma técnica ou estrutura de programação que você considera complexa (ou mesmo uma das mais complexas), que você já utilizou e por que e quando deu preferência pra um código “cabelos no peito” ao invés de algo mais simples…
Bom, chega de divagar…