Logo Hardware.com.br
jackinabox
jackinabox Veterano Registrado
1.1K Mensagens 8 Curtidas
#5 Por jackinabox
25/02/2005 - 23:54
profeta_livre
tente começar com uma linguagem basica pois se vc pega a logica programa em qualquer coisa!

OK, profeta_livre, eu até entendo mais ou menos o que você quis dizer, mas convenhamos que não é bem verdade...

Não quero desvirtuar o tópico do goolias, mas vou fazer alguns comentários:

Apenas "pegar a lógica" não é suficiente para você sair "programando em qualquer coisa!". Se você aprender C, por exemplo, e depois for programar em uma linguagem com um paradigma diferente (Lisp ou Prolog, por exemplo), vai notar rapidinho que são mundos diferentes.

O importante é você aprender conceitos básicos e genéricos de programação. Algumas pessoas que acreditam que sabem a "lógica", têm grandes dificuldades para utilizar estruturas de dados adequadas, ou algoritmos eficientes, ou para estruturar os módulos de forma adequada.

Se perguntarmos para vários programadores qual é a alternativa correta para essa questão:


Características desejáveis de módulos de software:

A) Baixa coesão e baixo acoplamento
B) Baixa coesão e alto acoplamento
C) Alta coesão e baixo acoplamento
D) Alta coesão e alto acoplamento


muitos não saberão responder e explicar (e realmente entender o porquê).

Perguntemos também algumas questões de lógica:


1. Qual é o resultado da expressão A and (not A)?
2. A expressão not(A or B) equivale a:
A) (not A) or (not B)
B) (not A) or B
C) (not A) and (not B)
D) nenhuma das anteriores


Freqüentemente, o processo de aprendizado de programação está muito centrado nos aspectos funcionais do software, e a atenção a aspectos como estrutura e conceito fica em segundo (ou terceiro, ou último) plano.

goolias: Conforme comentou o Papito, não existe "melhor linguagem". Eu freqüentemente tenho problemas ao tentar sugerir linguagens de programação para quem está começando, justamente porque muitas pessoas querem sair "fazendo de tudo", criando interfaces gráficas "legais" ao mesmo tempo que aprendem a semântica, a sintaxe, o paradigma, a lógica, as estruturas de dados, os algoritmos, a API do sistema operacional, a API das bibliotecas da linguagem... Ufa...!

Minha opinião pessoal é que devemos tentar dar passos firmes, e não muito grandes.
Começar aprendendo a linguagem C, por exemplo, é uma possibilidade que eu sempre acho boa, mas essa é apenas a minha opinião. E devemos lembrar do seguinte: simplesmente porque você conseguiu fazer o seu programa funcionar não significa que você seja um bom programador. Há muito mais em questão do que apenas a funcionalidade, conforme já comentei.
jackinabox
jackinabox Veterano Registrado
1.1K Mensagens 8 Curtidas
#8 Por jackinabox
28/02/2005 - 13:16
sesiom
ae jackinabox
vc é p rofessor? pq vc falou igualzin um que eu tenho....

Não sou não, sesiom. Apenas acho que posso vir a colaborar com a conscientização de estudantes e profissionais de informática que ainda não se deram conta de muitas coisas e, às vezes, vivem em um mundo um tanto quanto ilusório.
Assim como não dá para ser um cirurgião realmente bom sem entender de anatomia e fisiologia (entre vários outros tópicos), na informática não dá para ser um profissional realmente bom se você não tiver uma base sólida de conhecimento. Obviamente, "ninguém nasce sabendo", e não é demérito algum não saber. Mas é fundamental progredir no aprendizado, valorizando o que realmente tem importância.

Seu_Madruga
Apesar do bla,bla,bla e ainda acho que aprender a lógica é o passo inicial e principal para se programar.

O que você considera "bla, bla, bla"? Os princípios e exemplos que citei aqui? Bem, não sei se foi a isso que você se referiu, mas, de qualquer forma, eu tenho notado que há muita gente que considera muitas coisas importantes como "bla, bla, bla". Tem inclusive algumas pessoas (que conheço) que chamam incorretamente de "lógica" características ou princípios que tem pouca ou nenhuma relação com lógica de programação.

Um exemplo, em outra área: fico impressionado com inúmeras pessoas que se dizem fotógrafos profissionais, têm cartão de visita, estúdio montado, dezenas de equipamentos, e fazem um trabalho super mal feito, freqüentemente porque nem mesmo conhecem conceitos que deveriam dominar. Em fotografia, o "blá blá blá" é diferente: latitude de exposição, reflexão direta, reflexão difusa, cores aditivas, cores subtrativas, temperatura de cor, luz polarizada, ...

Uma coisa importante a notar é o seguinte: da mesma forma como quase qualquer um é competente o suficiente para apertar o botão de disparo de uma máquina fotográfica, muitas pessoas são competentes o suficiente para escrever um programa de computador que funcione corretamente, principalmente se for um programa simples, ou um "programa de brinquedo".

Mas, obviamente, ser um bom fotógrafo é muito mais do que apertar um botão, e ser um bom programador é muito mais do que fazer um programa funcionar.

A lógica de prgramação é universal, o resto é resto.
E pode ser esse "resto" que vai fazer diferença quando você, por exemplo, for um dos responsáveis por fazer uma migração de uma arquitetura cliente-servidor, com programas escritos em linguagem procedural + SQL para uma arquitetura n-tier, com programas escritos em linguagem orientada a objeto e mapeamento objeto-relacional, cujos componentes de lógica de negócios devem ser compartilhados entre clientes web, PDAs e clientes desktop escritos, digamos, em Swing.

Obviamente, lógica de programação é fundamental. Mas não devemos esquecer do "resto", pois essa pode ser (e provavelmente será), a diferença entre ser ou não ser um profissional medíocre e/ou incompetente.
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#9 Por Kakao
01/03/2005 - 20:44
Seu_Madruga
Apesar do bla,bla,bla e ainda acho que aprender a lógica é o passo inicial e principal para se programar.

jackinabox
O importante é você aprender conceitos básicos e genéricos de programação. Algumas pessoas que acreditam que sabem a "lógica", têm grandes dificuldades para utilizar estruturas de dados adequadas, ou algoritmos eficientes, ou para estruturar os módulos de forma adequada...

E tem muita gente que acha que nem noções de lógica precisa. Acham que só a tecnologia, uma linguagem por exemplo, é suficiente.

Estou cansado de ver gente sentar na frente da minha mesa e perguntar por que eu não implementei esta ou aquela funcionalidade naquele tal sistema. E a partir daí passam a "demonstrar" como seria fácil: Era só usar o comando tal. Era só criar o arquivo tal. Era só... e a ladainha segue sem fim.

Pois um deles foi um caso didático. O especialista do "era só", depois de falar comigo, foi falar com um dos chefões e, como vocês sabem, chefe não entende de tecnologia e acredita nos milagreiros, e aí eu e minha equipe tivemos que nos virar para mostrar o custo real da solução e ainda ficamos suspeitos de incompetência, pois o milagreiro "demonstrou" que "era só" dois ou três comandos da linguagem XY, cujo marketing é arrasador.

O especialista de linguagem montou uma equipe de 3 a 4 "programadores", que também sabiam tudo, ou assim diziam, da linguagem XY, e começaram a trabalhar no projeto.

Passados uns seis meses notamos que a demanda pela tal funcionalidade estava crescendo e começava a justificar um investimento em uma solução. Do momento em que começamos, depois de analisados todos os custos e riscos, levamos 10 semanas para colocar a nova versão em produção. O sistema é um sucesso e raramente requer manutenção.

Um ano depois disso apareceu de novo o milagreiro. Desta vez ele vinha para pedir para usar o nosso sistema pois o dele fracassou, como era óbvio para quem já viu muitas vezes um milagreiro em ação. Perguntado sobre os problemas encontrados ele apresentou algumas desculpas sobre desempenho. 20 meses não foram suficientes para chegar a um bom termo, mesmo usando a espantosa e avançadíssima linguagem XY. Nós negamos o sistema e ele teve que ir pedir para outros desenvolverem.

Mas por que realmente fracassou? Na minha opinião o grupo de "informatas" não tinha noções de lógica e é óbvio que nunca ouviu falar de estruturas de dados e não imagivam que existiam conceitos que ajudam a entender e explicar o desenvolvimento de sistemas. Estimativa dos custos e benefícios? A tendência do iniciante é subestimar muito os custos e superestimar os benefícios: "É só colocar o comando XXXXX", "esta funcionalidade vai multiplicar varias vezes a produtividade do usuário".

Eu acho que tudo o que o jackinabox colocou é importante para o sucesso. E mesmo assim é pouco. Vou chutar alguns números: Se os responsáveis não conhecem lógica a probabilidade de fracasso é maior que 95%. Se tiverem sólida formação em desenvolvimento esta probabilidade cai para 40% a 50%. Com experiência e cuidadosa estimativa de custos e riscos a probabilidade cai para 20% a 30% e daí não abaixa mais. Principalmente se o projeto durar mais que seis meses.

Ah... a melhor linguagem? Eu acho que quem aprender Python terá uma ferramenta que possibilita aplicar todos os conceitos de programação de forma simples.
jackinabox
jackinabox Veterano Registrado
1.1K Mensagens 8 Curtidas
#10 Por jackinabox
01/03/2005 - 21:04
Kakao
Estou cansado de ver gente sentar na frente da minha mesa e perguntar por que eu não implementei esta ou aquela funcionalidade naquele tal sistema. E a partir daí passam a "demonstrar" como seria fácil: Era só usar o comando tal. Era só criar o arquivo tal. Era só...

Bom exemplo, Kakao. Meus ouvidos também já foram (e ainda são, mas ultimamente menos) vítimas dos especialistas do "era só", "pra quê?", "tenho mais experiência", "não é bem assim" e coisas do gênero.

O pior é que, às vezes, uma só pessoa consegue dizer tudo isso em uma frase: "pra que fazer esse monte de coisa, se era só fazer assim? Você está querendo seguir umas teorias que eu sei que não é bem assim, afinal tenho mais experiência". sml0107
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#11 Por jqueiroz
01/03/2005 - 21:14
A lógica de prgramação é universal, o resto é resto.


Desculpe ser mais um a bater em você, Seu_Madruga, depois da "surra" que vc já levou. Mas a sua afirmação está baseada em conceitos muito limitados... com certeza, em linguagens baseadas no modelo de programação estruturada, você até pode afirmar isso. Só que esse não é o único modelo existente...

Eu posso lhe citar uns 3 ou 4 exemplos de linguagens onde a chamada "lógica universal" simplesmente não se aplica.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal