Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ziwdon

Imperative programming VS Declarative programming

Mensagens Recomendadas

Ziwdon

Boas,

Fui recentemente introduzido ao conceito de programação lógica, com Prolog. Uma vez que nunca tinha pegado em nada parecido, é tudo um pouco...diga-se, diferente daquilo a que estou habituado, ou seja, programação imperativa.

Como não frequento um curso de informática, muitas vezes são-nos introduzidas novas linguagens sem grande explicação de como as coisas surgiram, funcionam, ou que caminho levam.

Dado que nunca tinha programado com nenhuma linguagem lógica, achei a coisa bastante interessante. Contudo, ao mesmo tempo, e após me informar um pouco pela net, surgiram-me algumas questões sobre o futuro da programação dita declarativa.

Por um lado, é-me dito que este tipo de programação (declarativa) não tem grande futuro porque requer sempre alguns recursos a mais, e é bastante limitada. Por outro, é-me dito que este tipo de programação é bastante usado no que diz respeito à IA, e que é o futuro.

Uma vez que este fórum é frequentado por alguns informáticos, pedia se possível, que me esclarecessem acerca das grandes vantagens/desvantagens destes dois tipos de programação e qual acham que acabará por subir ao pódio num futuro próximo (se é que algum deles subirá).

É óbvio que são dois tipos de programação completamente distintos e que ambos têm aplicações diferentes. Ainda assim, gostava de saber o que pensam.

Peço desde já desculpa se disse alguma bacorada, mas como referi, nenhum destes conceitos me foi introduzido nas aulas. Simplesmente me falaram em Prolog. O resto fui eu que pesquisei, ou que simplesmente 'ouvi' de alguém.

Desde já o meu obrigado.

Cumprimentos.

Ziwdon


"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

A questão de eficiência mede-se mais em tempo de desenvolvimento vs tempo de execução.

Se tiveres um programa numa linguagem declarativa e o passares para uma linguagem imperativa, provavelmente obterás um melhor desempenho.

O problema é que desenvolves o mesmo programa muito mais facilmente declarativa do que imperativamente.

Assembly não é mais eficiente do que C? Então porque é que se programa em C? A questão é semelhante.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ziwdon

E isso não torna, de certa forma, a linguagem mais limitada?

Então sendo assim, as linguagens declarativas, como o Prolog, terão tendência para crescer/evoluir mais do que imperativas, certo?

E se simplifica assim tanto o desenvolvimento de uma aplicação, porque é que não se vê um maior interesse/investimento nesse tipo de linguagem? Talvez por ser algo relativamente recente? Talvez por ser um processo moroso até que as linguagens declarativas tomem o lugar das imperativas?

Prolog and other logic programming languages have not had a significant impact on the computer industry in general.

Quando o C surgiu houve rapidamente um grande interesse na linguagem. E pelo que percebi também grandes expectativas foram criadas com o surgimento do Prolog, contudo não foram muito longe.

Para além disso, e segundo a wikipedia, ambas as linguagens foram desenvolvidas em 1972, o que deixa um pouco de lado o que escrevi ainda há pouco, quando disse que seria um processo moroso até que as linguagens declarativas tomassem o lugar das imperativas.


"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Ziwdon, ambos os tipos de linguagens têm o seu espaço. São focados/orientados à resolução de problemas diferentes, daí ouvires opiniões tão dispares quanto à morte/futuro das mesmas. Tipicamente isso são opiniões de quem não conhece, ou não sabe reconhecer, a mais valia que cada um desses tipos de linguagens trás.

Para teres uma ideia, há anos que se ouve que o Cobol está morto, pois bem, posso garantir-te que não só está vivo como se continua a efectuar desenvolvimento nessa linguagem. Isto serve apenas para ilustrar que esse tipo de opiniões são ditas sem reflexão. Como tu mesmo viste, há já muitos anos que essas linguagens por cá andam e ainda nenhuma delas morreu.

O Prolog, ML/Scheme, Haskel, etc. são linguagens que se focam em paradigmas diferentes e têm o seu espaço próprio.

Não creio que o Prolog vá destronar o C no desenvolvimento de SOs, por exemplo, como não me parece que o Pascal vá destronar o Prolog em para IA.

Lá por não serem usadas em massa não quer dizer que não sejam boas nem que têm morte anunciada.


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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

Ziwdon, ambos os tipos de linguagens têm o seu espaço. São focados/orientados à resolução de problemas diferentes

Nem mais.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
renafi

Cada qual tem o seu uso/utilidade. É por isso que no VS2010, já vem a linguagem F#, que é declarativa.


Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Cada qual tem o seu uso/utilidade. É por isso que no VS2010, já vem a linguagem F#, que é declarativa.

O F# já existe há muitos anos, chama-se Python. E em parte sim, é para completar a plataforma .Net.


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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ziwdon

Penso que já estou esclarecido.

Muito obrigado a todos. :thumbsup:


"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.