Jump to content
Sign in to follow this  
Ziwdon

Imperative programming VS Declarative programming

Recommended Posts

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)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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)

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • 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.