Jump to content
m1gu3lb4st0s

Programação básica/avançada

Recommended Posts

m1gu3lb4st0s

Boas

Recentemente tenho-me vindo a perguntar em que consiste a programação avançada , ando à volta da programação já faz alguns anos e vejo que me está a faltar algo pois quando comparo a complexidade do meu código com o código de restantes developers vejo que provavelmente ainda estou à volta da programação básica isto sendo tendo controlo sobre qualquer tipo de loop , entender as variáveis sem qualquer problema e saber onde utilizar cada uma respectivamente , saber usar ponteiros , saber usar  data structures ... no entanto o código que crio parte apenas disso e tentando fazer algum programa mais complexo vejo que me falta "mãos" , não por não saber dividir o problema mas por falta de conhecimento de certos métodos que deveriam ser usados.

Gostava de saber a vossa opinião.

 

Abraço

Share this post


Link to post
Share on other sites
M6

Boas.

O tema é interessante e pode dar uma discussão bem gira. :)

Acho, opinião minha, que a divisão se prende mais com a forma como resolves um problema usando o que tens disponível do que com qualquer outra coisa.

Passo a explicar. Imagina que tens de fazer uma ordenação de registos de chamadas telefónicas. Esta situação pode ser resolvida de várias formas.
A começar pela escolha do algoritmo, que pode ser desde um algortimo simples ou mais complexo, a passa pela forma como implementas o suporte à estrutura, que pode ser desde o simples array a listas ligadas via apontador.
Diria que usar o bubble sort com array é um tipo de abordagem básica em comparação com um quick sort implementado como uma lista ligada com apontadores.

Ambos ambos resolvem o problema, mas o resultado (esperado) será uma questão de performance com vantagem para o quick sort com listas ligadas com apontadores.
Ou seja, as variáveis aqui são a escolha da implementação (algoritmo) e as ferramentas usadas (arrays vs apontadores).

 

Outra visão desta distinção de básica/avançada pode passar também pela forma como se desenha a arquitetura da solução. Aqui não se prende unicamente com a programação, como no caso anterior, mas sim com a integração e construção de uma solução.
Imaginemos que os tais números de telefone são recebidos de outro sistema. Uma abordagem básica (e bastante comum no mundo empresarial) passa por ler um ficheiro estruturado com a informação, sendo esse o input da nossa rotina. Outra abordagem, avançada, passar por usar memória partilhada, em que uma rotina coloca toda a informação num pedaço de memória que é partilhado com a nossa rotina.

De novo, ambos resolvem o problema, mas o resultado (esperado) será uma questão de performance com vantagem para a memória partilhada.
Ou seja, a variável aqui é a escolha da implementação da solução (ficheiros vs memória partilhada).

 

A título de curiosidade, no meio disto entra o rácio custo/beneficio em ambiente real. Tipicamente, dos exemplos assim, as opções escolhidas recairiam sobre a nossa rotina receber um ficheiro que é lido para uma lista ligada com apontadores e que ordenada por um quick sort.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.