Como mensurar a dificuldade de um código?

Olá a todos, eu desenvolvi um algoritmo para mensurar as atividades intelectuais dos servidores públicos federais com o intuito de gerar um sistema de feedback robusto e automatizado, que por consequência vai melhorar o serviço público prestado a sociedade.
Peço a sua ajuda para achar uma base de dados com qualquer linguagem de programação que contenha o código e sua respectiva classificação, como: fácil, médio, difícil ou ainda uma pontuação entre 0 – 100.
Vou comparar os resultados do meu algoritmo com esta base de dados para calibração e validação.
Desde já agradeço pela ajuda e caso você se lembre de algum documento equivalente ao procurado, peço a gentileza de responder a este post com suas orientações.
Obrigado!!!

1 curtida

Não entendi bem o que você quis dizer com mensurar a dificuldade de um código.

Você fala se o código é complexo ou não?

Isso é meio subjetivo, pois o que é fácil para mim pode ser difícil para outro. Não tem como mensurar, só a experiência pode dizer.

3 curtidas

Boa tarde Harold
Muito obrigado pelo contato.
Vou dividir a resposta em duas etapas:
1- a ideia é achar uma base de dados com códigos e uma indicação (mesmo que superficial) da dificuldade delas. No GitHub tem um exemplo de “problemas” e sua dificuldade, infelizmente não tem os códigos que eu preciso. Segue o link: app-ideas/Projects at master · florinpop17/app-ideas · GitHub
2- Com relação a dificuldade ser subjetiva, existem formas de aproximação numérica (matemática) para reduzir isso, basta fazer os cálculos com mais dois parâmetros, como por exemplo a quantos anos (A) você programa e quantas linguagens de programação você domina (Q). Com isso você reduz muito o erro de correlação entre os dados.
Se achar alguma base de dados de um toque ; )
Obrigado!

Olá @Alissonantonio,
Recomendo buscar informações nos seguintes site:

Você poderá achar mais informações se utilizar as seguintes palavras chaves “measurement”/“Measuring” nos buscadores tipo Google, DuckDuckGo, etc. procurar em Inglês vai te ajudar a achar mais dados/informações.

Recomendo também ler este pdf fornecido pela UNESCO:

https://unesdoc.unesco.org/ark:/48223/pf0000219213

Isto é na área de ciências sociais e estatística, então fico limitado a mais informações, boa sorte com sua pesquisa, até mais!

1 curtida

Quantidade de linguagens dominadas não é um bom parâmetro, uma pessoa que sabe 10 linguagens, todas orientadas ao objeto, provavelmente tem menos conhecimento geral do que uma pessoa que sabe 3 de paradigmas diferentes, além disso, como vc realmente define que alguém domina uma linguagem? Quantidades de projetos escritos? Quantidade de linhas escritas? Quantos livros ela leu sobre? Ela pode ter escrito bastante código não-idiomático tbm, como vc pode lidar com isso? Enfim, não é um bom parâmetro pra nada.

2 curtidas

Bom dia Fenrir
Obrigado pelo contato. Eu gostaria de melhorar e generalizar a sua indicação.
Analisando sistemicamente o problema, nenhuma variável sozinha vai conseguir resolver o problema, na verdade temos que mapear aquelas que são mais ou menos importantes e usar um conjunto baseado em um resultado comprovado estatisticamente.
Eu acredito que você entenda mais de programação do que eu, então peço um favorzinho, baseado no seu “feeling”, gostaria que você indicasse 5 variáveis que ajudariam a descrever a dificuldade de um código e 5 que não ajudariam. Fique a vontade! Vou dar um exemplo “hipotético”:

  • Ajuda: nº de linhas, nº de bibliotecas, nº de desenvolvedores;
  • Não ajuda: linguagem, nacionalidade dos desenvolvedores, tempo de execução do código.

Desde já agradeço pela ajuda.
Atte, Alisson.

Bom dia a todos
Eu gostaria de compartilhar com vocês o resultado da minha pesquisa:
1- O canal Códgio Fonte TV possui em um de seus vídeos a indicação de dois projetos do GitHub com uma lista de problema e sua dificuldade, mas sem as respostas:
A - "htt://github.com/florinpop17/app-ideas/tree/master/Projects
B- "htt://github.com/trekhleb/javascript-algorithms
2- O canal Marcelo Barros de Almeida que fala de Sistemas Embarcados deu uma dica de ouro. O site https://www.urionlinejudge.com.br possui vários problemas com uma indicação do grau de dificuldade e que podem ser resolvidos com várias linguagens. Ou seja, posso tentar usá-lo na minha pesquisa. Neste site os códigos (respostas dos problemas) não estão prontos, mas podem ser feitos e a plataforma “testa” a resposta.
Obrigado a todos pela ajuda.
Atte,
Alisson

Olha, eu não sei precisar a fórmula mas se existir dever parecida com:

     t-b
D =  --- - R
      c

D é a dificuldade do código
t é o tempo usando no código
c é a complexidade da linguagem, ou seja o quão próxima da linguagem natural ela é
b é a quantidade de bibliotecas que a linguagem fornece pra reduzir o tempo
r são os outros meios que foram usados pra reduzir a dificuldade de se chegar ao resultado esperado fornecidos pela linguagem, esse eu acho que deveria ser a soma de recursos onde cada recursos equivale a a 1 (não precisar compilar, ter meios built-in de interagir com tipos diferentes…)

Um exemplo de aplicação helloworld:

Lua:

D = [(1-0)÷3]-2
D = (1÷3)-2
D = 1÷6

Assembly:

D = [(1-0)÷1]-0
D = 1÷1
D = 1

Nesse exemplo refletiu bem a realidade